CodeNomad/docs/help/ja/providers.md
Pascal André 5bc483d08d
feat(ui): toggle several rows at once by dragging across toggles (#1221)
Setting many rows of the same kind (Message content eyes, session
selection checkboxes, model visibility) took one click per row. Image
editors let users drag across a column of layer eyes instead; CodeNomad
now does the same.

Pressing a toggle and dragging out of it flips it, and every toggle of
the same column or list the pointer then crosses takes that new state;
toggles already in that state stay as they are. Releasing the button
clicks nothing, including the first toggle when the drag returns to it.
It works for mouse and pen; touch drags keep scrolling, and a touch
landing during a mouse drag leaves the sweep going.

Implementation: `lib/toggle-sweep.ts` installs one capture listener on
first use. Toggles opt in with `data-toggle-sweep={toggleSweepGroup(...)}`,
one group per column or list, so the Message content eyes and chevrons
sweep separately and exclusive selectors (tabs, presets) never sweep.
Each toggle changes through its own click, so its handlers, disabled
state and accessibility are unchanged; state is read from `checked`
(labels stand for their checkbox) or `aria-pressed`/`aria-checked`. The
drag is sampled every 4 px so fast moves skip no row, text selection
and native drag are blocked during a sweep, the trailing click is
swallowed, and a sweep whose release went elsewhere ends at the next
move without the button. `afterSweep` defers costly work until the
sweep ends.

Groups: Message content visibility and expansion columns, session
selection checkboxes, right-panel customization (built-in tabs and
Status sections; extension activation is a trust decision and stays
out), notification routing, model visibility, and the multi-select
options of agent forms and provider sign-in forms.

Message content dropped clicks made while a save was pending and showed
a row only once the server confirmed it, re-rendering the transcript
for each. Rows now show their requested state at once; a sweep saves
once, on release, so the transcript re-renders once. Saves run in
order and each batch of rows is sealed as it joins the queue, so a
later click never jumps ahead of a preset change nor rides along with a
sweep still held.

Notification routing shows each box at once, writes the whole table
once per sweep, runs its writes one after another so an older table
never lands last, and asks for System permission once per gesture.
Model visibility already showed pending changes and wrote them in
order.

Validation: browser regressions in transcript-presets (a single jump
across four eyes with slow saves, shown during the drag with nothing
saved, then one write on release; a hidden row that stays hidden; a
release back on the origin; the chevron column alone; a held sweep not
persisted by queued saves; a row clicked after a preset applying after
it), session-search (both directions, a release over a row title
opening no session, a lost release leaving no sweep, a touch mid-drag)
and notification-routing (one write per sweep, serialized writes with
the last winning, one permission request). Each fails with its part of
the fix removed. Two gatekeeper rounds ended with no P0-P2 finding; the
user validated the behaviour in a separate Electron dev instance.
dev-docs/UI_CONVENTIONS.md and dev-docs/TRANSCRIPT.md record the
convention, and the help describes the gesture in all ten languages.
2026-10-31 00:49:50 +01:00

15 KiB
Raw Permalink Blame History

プロバイダーとアカウント

プロバイダー認証は、ブラウザー端末や 1 つの CodeNomad プロジェクトではなく、接続先の OpenCode サービスに属します。モデルの表示設定、サブスクリプションの割り当て量、ウェブ検索の選択は、それぞれ適用範囲が異なります。

モデルまたは検索プロバイダーを接続する

  1. ワークスペースを開き、設定 → プロバイダー を開きます。モデル は展開された状態で始まります。検索プロバイダーには ウェブ検索 を展開します。画像 には画像の設定があります。
  2. そのグループで プロバイダーを選択、続けて 接続 を選びます。
  3. モデルプロバイダーでは、提供されたネイティブの 認証方法(API キー、OAuth、コマンド)を完了します。OAuth では 認可ページを開く を使用し、求められた場合にのみ認可コードを送信します。検索プロバイダーは API キーで接続します。
  4. 完了後、設定済みプロバイダーの行を確認します。モデル は接続、アカウント変更、再接続の後に読み直します。ウェブ検索 には 更新 もあります。

検索専用の連携は モデル ではなく ウェブ検索 に表示されます。認証を保存しても、モデルの選択や既定の検索プロバイダーの変更は行いません。API キーと OAuth 認証情報は、アクティブな OpenCode サーバーが保存します。ブラウザーが受け取るのは接続のメタデータであり、保存済みの秘密情報ではありません。環境変数由来の接続は、この UI では読み取り専用です。ここで切断しようとせず、管理元の環境を変更してください。

認可ウィンドウがブロックされた場合は、フロー内の 認可ページを開く、このタブで開く、リンクをコピー を使用します。認可リンクやコードを診断情報に公開しないでください。

アカウントを選択・管理する

  1. プロバイダーの行で 有効なアカウント を使用し、保存済み認証情報を選びます。
  2. 別の接続を認証するには アカウントを追加 を使用します。
  3. 別の保存済みアカウントを管理するには、先に選択してから アカウント名を変更 または アカウントを削除 を使用します。名前変更では アカウント名 と 保存 を使用します。アカウントを削除 は確認なしで直ちに実行されます。

選択、名前変更、削除は、他のプロジェクトやクライアントを含む OpenCode サービス全体のその連携に影響します。認証情報を削除すると、それらのクライアントが認証できなくなる場合があります。会話履歴の削除や、プロバイダーのリモートアカウントの失効は行いません。環境由来の接続を、書き込み可能な保存済み認証情報として選択したり、ここで削除したりはできません。操作に失敗すると CodeNomad はアカウントを読み直すので、再操作の前に 有効なアカウント をもう一度確認してください。

自動選択の制限

対応する連携に保存済み認証情報が複数ある場合、アカウントを自動選択 で、CodeNomad 経由の次のプロンプト/カスタムコマンド受け付け前に、割り当て量に基づく選択を有効にできます。設定は CodeNomad 設定内の連携ごとですが、結果のアカウント選択はサービス全体に適用されます。

対象の連携 対象のアカウント種別
OpenAI / Codex Codex のブラウザー/デバイス OAuth サブスクリプションアカウント。OpenAI の従量課金キーや、OpenAI が使用量を提供しない ChatGPT のサインイン方式は対象外です。
OpenCode Go Go キー、または Go プロバイダーのみ に使う OpenCode Console のログイン/キー。Zen の従量課金クレジットは対象外です。
Anthropic OpenCode の Claude Pro/Max OAuth ログイン。Claude Code のログイン ではありません。
GitHub Copilot プレミアムリクエストの割り当て量を読み取れる OAuth。エンタープライズエンドポイントの認証情報は読み取り可能な候補ではありません。
コーディングプラン キー方式の zai-coding-plan、zhipuai-coding-plan、kimi-for-coding、minimax-coding-plan、minimax-cn-coding-plan。

現在のアカウントが上限に達した場合にのみ切り替えます。別のアカウントの余裕が大きいだけでは切り替えません。候補を有効化したり更新トークンを交換したりせず、明示的な保存済み認証情報を読み取ります。Codex、Copilot、コーディングプランは、利用可能と実証された候補が必要です。Go、Console、Claude は、最近のネイティブな割り当て量エラーで使い切ったと記録されていない限り、割り当て量不明の候補を使用する場合があります。OpenCode Go の使用量エンドポイントと Console OAuth の使用量は、上流で未検証のため、利用可能性は保証されません。

これは 実行途中のフェイルオーバーではありません。失敗したリクエストの再試行や、プロンプト、コマンド、変更操作の再実行はしません。環境由来の接続、任意のプロバイダー、従量課金残高、外部の Claude Code ログインはローテーションしません。選択準備中の手動アカウント変更を尊重しますが、クライアント間のアカウントロックはありません。割り当て量/認証エラー時は、有効なアカウント を確認し、使用量を更新し、必要に応じて認証情報の管理元でログインしてから、意識的に再送信します。

モデルの表示、お気に入り、思考

  1. モデルプロバイダー横の モデルを管理 を選びます。
  2. 名前/ID で検索して表示を変更します。すべて表示 と すべて非表示 は、そのプロバイダーのセレクター一覧に影響します。チェックボックスの上をドラッグすると、複数のモデルをまとめて変更できます。
  3. 会話の モデル セレクターで お気に入りに追加 または お気に入りから削除 を使用します。すべてのモデルを表示 は、お気に入りのみの絞り込みを解除します。
  4. 選択したモデルのバリアントには、入力欄の 思考 を使用します。

表示とお気に入りは CodeNomad のセレクターを整理するもので、モデルのアンインストール、認証情報の削除、他の OpenCode クライアントによる利用の禁止は行いません。モデルを隠すことは、アカウントの切断ではありません。思考は、次の送信のモデルバリアントを選ぶもので、会話欄に既にある推論の表示設定ではありません。隠したモデルは モデルを管理 → すべて表示 で戻せます。

使用量、トークン数、ログイン期限切れ

右パネルの 使用量 で、アクティブな会話のプロバイダープランの期間、リセット時刻、対応する残高を確認します。これらのプロバイダー測定値は、メッセージごとの トークン や費用見積もりとは異なります。サブスクリプションの割り当て量は、表示中の会話から計算した請求額ではありません。欠落、古い、不明な測定値は、使用量ゼロや残容量の証拠ではありません。設定 → 詳細設定 の プロバイダーのクレジット残高 は、補足残高の表示を制御します。

OpenAI は、ChatGPT のサインイン方式の 1 つについて使用量を提供していません。その場合、使用量 は割り当て量の期間を表示する代わりにその旨を示します。チャットは引き続き利用でき、同じログインで再接続しても測定値は戻りません。

使用量は選択されたネイティブ認証情報に従います。anthropic/claude 経由の Claude は OpenCode の Anthropic OAuth を使用します。OpenCode の Claude Agent プロバイダー(claude-agent)と claude-code プロバイダーは、WSL ディストリビューションを含むデーモンホストの Claude Code ログインを使用します。CLAUDE_CODE_OAUTH_TOKEN、次に保存済みログインの順で、CLAUDE_SECURESTORAGE_CONFIG_DIR/CLAUDE_CONFIG_DIR または ~/.claude がファイル保存場所を決めます。ローカル macOS では Keychain を使用できます。CodeNomad は、一方の Claude ログインを他方の代わりにしません。

プロバイダーログインの期限が切れたら、管理元である OpenCode、Claude Code、Codex CLI で更新/ログインし、その後 CodeNomad を更新します。CodeNomad は外部管理の更新トークンを交換しません。CodeNomad のサーバーログイン期限切れは別です。失敗したプロバイダーリクエストが再送されると思わず、CodeNomad へ再接続/ログインしてください。トラブルシューティングを参照してください。

任意の使用量用環境変数

起動前に、CodeNomad バックエンドプロセス の環境に設定します。使用量リーダーの認証情報であり、ブラウザー設定やモデル選択コントロールではありません。セッションの 環境変数 エディターを変更しても、これらのリーダーが使う稼働中バックエンドの process.env は更新されません。変更時は意図した環境でバックエンドを再起動します。使用量リーダーの変数だけのために共有 OpenCode サービスを再起動しないでください。

使用量の連携 環境変数
Cursor CURSOR_ACCESS_TOKEN、なければ CURSOR_TOKEN
Ollama Cloud OLLAMA_CLOUD_COOKIE
OpenCode Go の補足使用量 OPENCODE_GO_WORKSPACE_ID と OPENCODE_GO_AUTH_COOKIE を両方指定
ZenMux ZENMUX_PLATFORM_API_KEY — 推論キーとは別のプラットフォームキー
exe.dev EXE_DEV_USAGE_TOKEN
Command Code ネイティブ認証情報がない場合の COMMAND_CODE_API_KEY

トークン/Cookie をシェル履歴、スクリーンショット、レポートに残さないでください。任意のリーダーはプロバイダー API と認証情報の有効性に依存します。変数の設定は、使用可能な割り当て量データを保証しません。

  1. 設定 → プロバイダー で ウェブ検索 を展開し、必要なら API キーで検索連携を接続します。
  2. グローバル設定には 既定の検索 を選びます。
  3. 現在のプロジェクト用 で、アクティブな Location の設定を上書きします。そのセレクターにカーソルを合わせるかフォーカスすると、実効結果を示す このプロジェクトの検索 が表示されます。

変更は自動保存されます。既定 / 継承 は継承設定または保存済みネイティブ選択を使用し、プロジェクトの上書きはグローバルより優先します。無効 は選択範囲の検索をオフにし、自動プロバイダー はネイティブの自動プロバイダー選択を要求します。ウェブ検索 は、展開している間だけ接続と選択を読み込みます。切断 は保存済みの検索キーを削除します。環境変数で提供される接続は読み取り専用と表示され、切断 はありません。

プロバイダー選択がプロジェクト範囲でも、検索の認証情報はサービス全体で共有されます。キーを保存しても検索の既定には選ばれません。読み取り/保存に失敗したら、無条件で設定を置き換えず、更新してから再試行します。ネイティブ設定の詳細は、OpenCode ドキュメントと OpenCode のセットアップを参照してください。

画像の生成と保存

  1. 設定 → プロバイダー で 画像 を展開します。
  2. 画像生成 は、変更しない限り オン(モデルは自動) です。代わりに接続済みプロバイダーが提供する画像モデルのいずれかを選ぶか、オフ を選んでグローバル設定で無効にします。
  3. 画像を一度だけ保存 をオンにすると、添付または生成された画像を、それを使う各メッセージ内ではなく一度だけ保存します。

変更は自動的にグローバルの OpenCode 設定に保存され、すべてのプロジェクトに適用されます。どちらも OpenCode の実験的機能です。画像 には接続中の OpenCode バージョンが対応する設定だけが表示されます。エージェントが画像ツールを使えるのは、接続済みプロバイダーが画像モデルを提供している間だけです。画像はバックグラウンドで生成され、ファイルとして保存されます。エージェントがそのパスを伝えます。画像を一度だけ保存 は新しいメッセージに適用されます。プロジェクト独自の OpenCode 設定ファイルが 画像を一度だけ保存 を決めている場合、チェックボックスにはそこで適用される値が表示され、保存するとそのファイルにも書き込まれます。それ以外で、プロジェクト独自の設定など、別の OpenCode 設定が代わりに設定を決めている場合、画像 はその設定の下にそれを表示します。保存すると別の OpenCode 設定ファイルの実験的設定が隠れてしまう場合、画像 は読み取り専用になり、その旨を表示します。代わりにそのファイルでオプションを変更してください。

専用の会話で画像を作成、比較、改良するには、Design 拡張機能で画像を作成する を参照してください。