# アシスタント (/ja/docs/ai/assistant)

アシスタントは、Echolotに組み込まれたAIエージェントです。「Create orderが失敗するのはなぜ？」「このリクエストのチェックを書いて」のように普通の言葉で頼むと、
外部エージェントと同じツールを使ってワークスペースを扱います。リクエストの一覧表示と読み取り、送信、レスポンスの読み取り、チェックの作成、
仕様の編集、モックの開始、フローの実行ができます。実行した呼び出しはパネルにその場で表示され、データを変更する可能性のある操作は、先にあなたに確認します。

<Shot id="ai-assistant-panel" alt="リクエストページの右側にドッキングされたアシスタントパネル。質問、アシスタントが行ったツール呼び出し、その回答が表示されている" />

## アシスタントを開く [#open-the-assistant]

アシスタントは、すべてのページの右側にドッキングされたパネルです。次のいずれかで開閉できます。

- <kbd>⌘</kbd><kbd>J</kbd>
- <strong>表示 › アシスタントを表示</strong>（または<strong>アシスタントを非表示</strong>）
- ページヘッダーの最後にある、杖のボタン

アシスタントはウインドウごとに独立していて、そのウインドウのワークスペースで動作します。

パネルを広げるには、左端を左へドラッグします。ページの最小幅まで、ページから幅を譲り受けます。右へドラッグすると狭くなり、端をダブルクリックすると
通常の幅に戻ります。

## モデルプロバイダを選ぶ [#choose-a-model-provider]

パネルを初めて開くと、<strong>モデルを選択</strong>と表示されます。<strong>アシスタント設定を開く…</strong>を選ぶか、<strong>設定 › アシスタント</strong>を開いて、<strong>プロバイダを追加</strong>の下でプロバイダを追加します。

| プロバイダ | 入力する内容 | 補足 |
| --- | --- | --- |
| <strong>Anthropic</strong> | <strong>APIキー</strong> | Claudeのモデル。アカウントごとに<strong>推論の強度</strong>を設定できます：<strong>モデルのデフォルト</strong>、`low`、`medium`、`high`、`xhigh`、`max`。 |
| <strong>OpenAI</strong> | <strong>APIキー</strong> | |
| <strong>Google Gemini</strong> | <strong>APIキー</strong> | |
| <strong>OpenAI互換</strong> | <strong>アドレス</strong>と<strong>APIキー（オプション）</strong> | OpenAIのChat Completions APIに対応するサーバならどれでも使えます：Ollama、LM Studio、OpenRouterなど。アドレスを入力しなければ `http://127.0.0.1:11434/v1`（このMac上のOllama）になります。 |
| <strong>CLIエージェント（ACP）</strong> | <strong>エージェント</strong>と<strong>コマンド</strong> | Agent Client Protocolに対応する、Mac上のコーディングエージェント。直接ダウンロード版のみです。下記を参照してください。 |

<strong>追加</strong>を選びます。Echolotがプロバイダのモデルを読み込み、最初のモデルを選択します。別のモデルにするには、アカウントの<strong>モデル</strong>メニューで選ぶか、
<strong>モデルを読み込む</strong>でリストを取得し直します。プロバイダがモデルの一覧を返さない場合は、<strong>モデル</strong>フィールドにモデル名を入力します。

アシスタントを無料かつオフラインで試すには、[Ollama](https://ollama.com)でモデルを動かし、デフォルトのアドレスのまま<strong>OpenAI互換</strong>プロバイダとして追加します。

### キーはキーチェーンに保存される [#keys-stay-in-the-keychain]

APIキーは、このMacのログインキーチェーンに保存されます。ワークスペースには保存されず、送信先はプロバイダ自身のアドレスだけです。アカウントの横の<strong>削除…</strong>を押すと、
そのキーがキーチェーンから削除されます。

### プロバイダを切り替える [#switch-between-providers]

プロバイダが複数ある場合、<strong>設定 › アシスタント › プロバイダ</strong>でチェックが付いているものが、アシスタントが使うプロバイダです。パネルからも切り替えられます。
パネルのヘッダーにあるモデルメニューには、すべてのアカウントが*プロバイダ · モデル*の形式で並び、その一番下の<strong>アシスタント設定…</strong>で設定を開けます。

### ローカルのコーディングエージェント（CLIエージェント） [#local-coding-agents-cli-agent]

<Edition only="direct">
  ローカルのCLIエージェントは直接ダウンロード版のみです。Mac App Store版は、Macにインストールされたプログラムを起動できません。その場合は、
  APIキー、Ollama、またはほかのOpenAI互換サーバを使ってください。
</Edition>

CLIエージェントは、独自のモデルとサインインを持ち込みます。Echolotはワークスペースのフォルダでエージェントを起動し、EcholotのMCPサーバを通じてワークスペースを渡します。
そのため、先に<strong>設定 › エージェント › 開いているワークスペースの使用をエージェントに許可</strong>をオンにしてください
（[外部エージェント](/docs/ai/agents)を参照）。プロバイダに<strong>CLIエージェント（ACP）</strong>を選び、次に<strong>エージェント</strong>を選びます。

| エージェント | コマンド | 必要なもの |
| --- | --- | --- |
| <strong>Claude Code</strong> | `npx -y @zed-industries/claude-code-acp` | Node.js。Claudeのサブスクリプションまたは `ANTHROPIC_API_KEY` を使用 |
| <strong>Codex</strong> | `npx -y @zed-industries/codex-acp` | Node.js。ChatGPTのサインインまたは `OPENAI_API_KEY` を使用 |
| <strong>Gemini CLI</strong> | `gemini --experimental-acp` | Gemini CLIがインストール済みであること |
| <strong>その他</strong> | 入力したコマンド | 標準入出力でACPに対応する任意のエージェント |

コマンドは、あとからアカウントの<strong>コマンド</strong>フィールドで変更できます。会話ごとに専用のエージェントプロセスが起動し、ウインドウを閉じると終了します。
エージェント自身の権限リクエストも、あなたに確認されます。

## 初回の許可 [#the-one-time-permission]

プロバイダへの最初のメッセージを送る前に、Echolotが確認します：<strong>*プロバイダ*に送信しますか？</strong> 確認の内容には、送信されるもの
（あなたのメッセージ、アシスタントが読み取るワークスペースのデータ、ツールの結果）、送信先、そしてシークレットの値は送信されないことが書かれています。
<strong>キャンセル</strong>がデフォルトのボタンなので、<kbd>↩</kbd>を押しても誤って送信されることはありません。続けるには<strong>許可</strong>を選びます。

確認はプロバイダごとに1回です。Anthropic、OpenAI、Geminiで各1回、OpenAI互換サーバはサーバ（ホスト）ごとに1回、CLIエージェントはエージェントごとに1回です。
このMac上のサーバ（`localhost`、`127.0.0.1`、`::1`）は、Macの外に何も出ないため確認されません。ネットワーク上のほかの場所にあるサーバは確認されます。

<strong>設定 › アシスタント › データの受け取りを許可</strong>には、許可したすべてのプロバイダが一覧表示されます。<strong>許可を取り消す</strong>を押すと許可が取り消され、
次のメッセージでもう一度確認されます。

## 質問する [#ask]

パネル下部の<strong>アシスタントに質問…</strong>に入力します。<kbd>↩</kbd>で送信、<kbd>⇧</kbd><kbd>↩</kbd>で改行、<kbd>⌘</kbd><kbd>.</kbd>でアシスタントの動作を停止します。

新しい会話では、表示中のページに合わせた候補が表示されます。クリックすると、テキストフィールドに入力されます。

| ページ | 候補 |
| --- | --- |
| リクエスト | <strong>このワークスペースのすべてのリクエストを送信して、失敗したものを教えてください。</strong> · <strong>開いているリクエストが失敗するのはなぜですか？最後のレスポンスを確認してください。</strong> · <strong>開いているリクエストの最新のレスポンスからチェックを作成してください。</strong> · <strong>このリストの全ページを取得して、項目をCSVとして保存してください。</strong> |
| MCPサーバ | <strong>このMCPサーバをチェックして、提供している内容を要約してください。</strong> · <strong>このサーバの読み取り専用ツールをそれぞれ1回呼び出して、返ってきた内容を報告してください。</strong> |
| 仕様 | <strong>この仕様でリンターが報告している問題を修正してください。</strong> · <strong>このワークスペースのリクエストをOpenAPI仕様としてドキュメント化してください。</strong> |
| モック | <strong>この仕様のモックを開始して、新しい環境がそのモックを指すようにしてください。</strong> · <strong>最新の実際のレスポンスを例として仕様に保存してください。</strong> |
| フロー | <strong>サインインしてリストの全ページを書き出すフローを作成してください。</strong> · <strong>このフローの前回の実行が失敗したのはなぜですか？</strong> |

### 開いているものも一緒に送られる [#what-you-have-open-goes-along]

テキストフィールドの上のチップには、開いているものが表示されます：開いているリクエスト、テストページとその失敗したチェック、ランナーの前回の実行、
開いている仕様、モック、フロー、MCPサーバ。各チップはメッセージとともに送られるので、「このリクエスト」や「前回の実行」と言えば通じます。
チップをクリックすると、次のメッセージから外せます。もう一度クリックすると戻ります。チップにポインタを重ねると、モデルが受け取る文が表示されます。

### アシスタントにできること [#what-the-assistant-can-do]

アシスタントは、[外部エージェント](/docs/ai/agents#toolsets)に与えられるすべてのツールグループを持っています。設定 › エージェントでオンにしているかどうかは関係ありません。
リクエストとレスポンス、チェック付きのフォルダの実行、履歴、環境、ワークスペースのフォルダと変数、仕様、モック、MCPサーバ、フローです。
そのすべてに、承認の仕組みが引き続き適用されます。

エージェントのポリシー、プロキシ、証明書、ワークスペースの認証、スクリプトを変更するツールは、アシスタントには提供されません。

ツール呼び出しは、入力と結果とともにカードとして会話に表示され、実行中、完了、失敗のどれかも示されます。テキストフィールドの下の行には、
これまでに使ったトークン数と、モデルの料金がわかる場合はおおよその費用が表示されます。

## 変更を承認する [#approve-what-changes]

ポリシーで確認が必要な操作をアシスタントが行おうとすると、ウインドウにシートが表示されます：<strong>*エージェント*が*データを変更する可能性のあるリクエストを送信*しようとしています</strong>。
呼び出しの内容と、送信されるとおりのリクエストが表示され、シークレットの値はマスクされます。

<Shot id="ai-assistant-approval" alt="承認シート。エージェントがデータを変更する可能性のあるリクエストを送信しようとしており、送信されるPOSTリクエストと、拒否、このセッションでは許可、1回だけ許可のボタンが表示されている" />

- <strong>1回だけ許可</strong>は、この呼び出しだけを実行します。
- <strong>このセッションでは許可</strong>は、この呼び出しと、同様の呼び出しを、ウインドウを閉じるまで確認なしで実行します。ワークスペースへのすべての変更が対象で、
  どのツールによるものかは問いません（リクエストの作成、フォルダの認証の保存、環境など）。送信の場合は、同じホストへの同じメソッドが対象です
  （`demo.echolot.dev` へのすべてのGETなど）。削除は引き続き確認され、保護された環境、新しいホスト、通常の変更より限定的なもの（フローのバージョンなど）も同様です。
  これらについては、同じ呼び出しだけが対象になります。対象の範囲はシートに表示されます。
- <strong>変更と送信の前に確認しない</strong>は、変更と、データを変更する送信のシートにあるチェックボックスです。チェックを付けて許可すると、下記の
  <strong>設定 › アシスタント › 確認するタイミング</strong>がオンになります。削除、新しいホスト、保護された環境では表示されません。
- <strong>拒否</strong>は操作を拒否し、アシスタントにもその旨が伝えられます。

新しいホストへの送信、保護された環境への送信、削除では、<strong>1回だけ許可</strong>がデフォルトのボタンではないため、<kbd>↩</kbd>では承認できません。5分以内に誰も答えなかった確認は
拒否されます。複数の呼び出しが待機しているときは、シートに残りの数が表示されます。

何を確認するかは、ワークスペースのエージェントのルールで決まります。ルールがない場合は次のとおりです。

| アシスタントの操作 | ワークスペースのルールがない場合 |
| --- | --- |
| <strong>リクエストと環境の読み取り</strong> | 実行 |
| <strong>安全な送信（GET、GraphQLクエリ、MCPの読み取り）</strong> | 実行 |
| <strong>その他の送信</strong>（POST、PUT、PATCH、DELETE、ファイルのボディ） | 確認 |
| <strong>保護された環境への送信</strong> | 常に確認 |
| <strong>新しいホストへの送信</strong>（ワークスペースのどのリクエストも環境も使っていないホスト） | 常に確認 |
| <strong>ワークスペースへの変更</strong> | 確認 |
| <strong>削除</strong>（項目はゴミ箱に入ります） | 確認 |

### 確認を減らす [#ask-less]

<strong>設定 › アシスタント › 確認するタイミング › 削除、新しいホスト、保護された環境の前にのみ確認</strong>をオンにすると、送信と変更についての確認がなくなります。
アシスタントは、リクエスト、環境、仕様、モック、フローを作成し、POST、PUT、DELETEのリクエストを、確認なしで送信します。すべての呼び出しは引き続き会話に表示されます。
ゴミ箱への移動、アシスタントの開始時にワークスペースが使っていなかったホスト、保護された環境は引き続き確認され、エージェント向けに公開されていないフローの実行も同様です。
オンにするまではオフで、対象はアシスタントだけです。外部エージェントはワークスペースのルールに従います。

これらを緩めたり厳しくしたり、ホストや送信を制限したりするには、<strong>ワークスペース設定 › エージェント</strong>を使います。
[エージェントのワークスペースのルール](/docs/ai/agents#workspace-rules)を参照してください。同じルールが外部エージェントにも適用されます。
そこで<strong>エージェントにこのワークスペースの使用を許可</strong>がオフの場合、アシスタントもそのワークスペースでは動作しません。

### 保護された環境 [#protected-environments]

[保護された環境](/docs/workspaces/protected-environments)が有効な間は、メソッドやルールにかかわらず、アシスタントのすべての送信が事前に確認されます。
<strong>このセッションでは許可</strong>を選んでも、対象はその同じ呼び出しだけです。

## モデルに見えないもの [#what-the-model-never-sees]

- <strong>シークレットの値。</strong> Echolotは、モデルに何かを渡す前に、すべてのシークレット変数の値を置き換えます。メッセージ、ツールの結果、エラーのどれでも同様です。
  モデルに見えるのは、シークレットの名前だけです。
- <strong>独自のパターン。</strong> <strong>設定 › アシスタント › モデルに見せない</strong>には、1行につき1つの正規表現を入力します。ツールが返す内容のうち一致した部分は、
  モデルに見える前に `[hidden]` に置き換えられます。シークレット変数ではないデータ、たとえば顧客IDやメールアドレスに使えます。
  正規表現として正しくない行は赤く表示され、除外されます。
- <strong>レスポンスボディ全体。</strong> レスポンスは、要約（ステータス、ヘッダー、所要時間、概要、ボディの先頭部分、チェックの結果）とハンドルとして
  モデルに渡されます。ボディの続きは、そのハンドルを通じて、JSONPathや検索によって少しずつ読み取られます。

次のメッセージとともに送られる内容を正確に確認するには、パネルのヘッダーにある目のボタン、<strong>モデルに見える内容</strong>を選びます。指示、ツール、会話、コンテキストが、
トークン数の見積もりとともに表示されます。

## 会話を保存する [#keep-a-conversation]

会話はこのMac上に、ワークスペースごとに保存されます。パネルのヘッダーには次のボタンがあります。

- <strong>新規会話</strong>（鉛筆）は、新しい会話を始めます。
- <strong>以前の会話</strong>（時計）は、<strong>このMac上</strong>の会話と、<strong>このワークスペースで共有</strong>された会話を一覧表示します。クリックすると開きます。
- 保存メニュー（矢印付きのトレイ）は、会話を残るものに変えます。

| コマンド | 動作 |
| --- | --- |
| <strong>テストとして保存</strong> | *アシスタント · 会話のタイトル*というフォルダを作成し、アシスタントが行った送信ごとに1つのリクエストを順番に番号を付けて入れます。それぞれに、得られたステータスのチェックが付きます。 |
| <strong>フローとして保存</strong> | 同じフォルダに加えて、それらのリクエストを順に送信するフローを作成します。 |
| <strong>ワークスペースで共有</strong> | 会話を、ワークスペースの `assistant/` フォルダにMarkdownの書き起こしと記録として保存します。シークレットは置き換えられ、チームメイトはGitのpullのあとに読んだり、<strong>このワークスペースで共有</strong>から開いたりできます。 |
| <strong>呼び出しを再実行</strong> | 会話のツール呼び出しを、モデルを使わずに順番に再実行し、結果を新しい会話として表示します。承認は通常の呼び出しと同様に適用されます。 |

<strong>テストとして保存</strong>と<strong>フローとして保存</strong>は、会話でリクエストを1回送信したあとに使えます。

## このMacのApple Intelligence [#apple-intelligence-on-this-mac]

macOS 26でApple Intelligenceがオンの場合、Echolotは、Appleのオンデバイスモデルも小さな作業に使います。Macの外に出ることはなく、プロバイダも許可も必要ありません。

- レスポンスペインのApple Intelligenceメニュー：<strong>レスポンスを要約</strong>、<strong>エラーを説明</strong>（エラーのレスポンス用）、<strong>チェックを提案</strong>
  （Echolotが実行できるチェックを追加するボタン付き）、<strong>名前を提案</strong>（リクエストの名前を変更するボタン付き）。
- 失敗したフロー実行の<strong>失敗の理由を説明</strong>と、実行中のモックのログの<strong>ログを要約</strong>。
- オンにしたときの[Echoのコメント](/docs/ai/echo#ai-comments)。

回答にはそれぞれ<strong>このMacで回答しました。どこにも何も送信されていません。</strong>と表示されます。モデルが使えない場合、これらのボタンは表示されません。
アシスタントパネル自体は、常に設定 › アシスタントのプロバイダを使います。

## サーバのツールをモデルで試す [#try-a-servers-tools-with-a-model]

[MCPサーバ](/docs/mcp-servers/tools-and-quality)ページの<strong>モデルで試す</strong>カードでは、サーバのどのツールをモデルが選ぶかを確認できます。
<strong>このサーバを使って、エージェントにどんなことを頼みますか？</strong>に、エージェントに頼みそうなことを入力して、<strong>試す</strong>を選びます。設定 › アシスタントで選んだモデルが
サーバのツールを見て、どれをどんな引数で呼び出すかを答えます。実際には何も呼び出されません。ツールの入力スキーマに合わない呼び出しは、何が問題かが表示されます。
ツール名や説明がわかりにくいと、そこに表れます。

プロバイダでの最初の試行では、アシスタントと同じ初回の許可が確認されます。CLIエージェントはここでは使われません。

## トラブルシューティング [#troubleshooting]

- <strong>「まず「設定 › アシスタント」でモデルプロバイダを選択してください。」</strong> チェックされているプロバイダがありません。プロバイダを追加するか、
  <strong>設定 › アシスタント › プロバイダ</strong>でチェックを付けてください。
- <strong>「このワークスペースではエージェントがオフです」</strong>：<strong>ワークスペース設定 › エージェント › エージェントにこのワークスペースの使用を許可</strong>がオフです
  （`workspace.toml` の `[agents] enabled = false`）。アシスタントを使うにはオンにしてください。
- <strong>追加やモデルの読み込みのあとにプロバイダにエラーが表示される。</strong> キーを確認してください。OpenAI互換サーバの場合は、そのアドレスでサーバが動作していることも確認してください。
  メッセージには、プロバイダ名と問題の内容が表示されます。
- <strong>CLIエージェントが起動しない。</strong> コマンドがターミナルで実行できることと、<strong>設定 › エージェント › 開いているワークスペースの使用をエージェントに許可</strong>がオンであることを確認してください。
