AI エージェントの登場によってコーディングの方法が大きく代わりました。これまでは手作業でコードを書いていましたが、いまや AI エージェントに指示を出しそれをレビューするという開発フローになりました。
このような開発フローが基本となると、エディタに求められる要件も変わります。これまでわたしはメインエディタが VSCode で、VSCode では動作が重くなるような巨大なリポジトリのコードを読むときだけは Zed という使い分けをしてきました。
コードライティングの体験については依然として VSCode のほうが優れていると感じていますが、コードリーディングが中心となる開発フローでは、より軽快に動作する Zed が優れる部分も多いです。
今後は AI エージェントへの指示出しを含めてすべて Zed で行おうと思っています。
ということで、Zed の AI エージェントまわりの設定しようと思ったものの、少しややこしかったので自己整理しておきます。
Zed は AI エージェントを3つの経路で呼び出せる #
たとえばあなたが ChatGPT のサブスクリプション契約をしていて、Zed で GPT-5.5 を使えるようにしたいとします。
このとき、Zed から GPT-5.5 を使うためには、以下の3つの経路があります。
https://zed.dev/docs/ai/agents

- Zed Agent
- External Agents
- Terminal Threads
それぞれの経路で対応しているプロバイダー(AI エージェントの提供会社)が異なりますが、基本的に 最優先 1 > 2 > 3 の順で選択するのが良いです。
Zed Agent #
参考:https://zed.dev/docs/ai/zed-agent
Zed Agent と聞くと、Zed が提供している AI エージェントを指すように思えますが(わたしはこれで混乱しました)、実際には Zed がネイティブでサポートしている「AI Agent を呼び出すための仕組み」のことです。
Zed のコマンドパレットから agent: open settings を実行すると、LLM Providers の一覧が確認できます。

ここに記載のあるプロバイダーについては、Zed がネイティブでいい感じに連携する仕組みをサポートしてくれています。
一覧に表示されているものを選択し、その後案内された認証を行うことで、Zed から AI エージェントを利用できるようになります。
たとえば ChatGPT Subscription を選び、Sign in ボタンを押してログインを行うと連携が完了します。

この「Zed Agent」経由の呼び出し方だと、Zed 上で Agent が実行されます。作成したスレッドや、使っているプロバイダーやモデルの設定、tools や skills などの設定は Zed のエディタ上で一元管理されます。
External Agents #
参考:https://zed.dev/docs/ai/external-agents
External Agents は ACP(Agent Client Protocol)経由で Zed から外部 の AI エージェントを呼び出す仕組みです。
Zed のコマンドパレットから agent: open settings を実行すると、External Agents から + Add Agent を選択します。その後、たとえば codex を検索してインストールします。


チャット画面から Codex を選択すると、認証が求められます。ChatGPT を押すと、OpenAI のログイン画面が表示されますので、そこでログインを行うと連携が完了します。

連携後、Zed は codex コマンドを実行して Codex を呼び出すことができるようになります。(あなたのローカルに codex コマンドがインストールされている必要はありません。Zed が内部的に codex コマンドをインストールしていて、Zed 側からは呼び出すことができるようになっています。)
この「External Agents」経由の呼び出し方だと、エージェントは Zed とは別のプロセスとして実行されます。Zed はユーザからの入力、エージェントから出力結果の表示といったインターフェースを担当し、それ以外の処理はすべて外部のエージェントが担当するという役割になります。
スレッドやモデル、tools や skills などの設定はエージェント側で管理されます。Codex の例でいくと ~/.codex/ ディレクトリに保存されるということです。
Terminal Threads #
参考:https://zed.dev/docs/ai/terminal-threads
エージェントの CLI を Zed から呼び出すものです。「External Agents」との違いは ACP ではなくコマンドを直接実行する点です。
Zed の Agent パネルから、新規スレッドを作成する(+)際に Terminal を選択するとターミナルスレッドが作成されます。
Agent パネルという表示エリアに配置されたターミナルであり、要するに単なるターミナルです。あとは自分で codex コマンドを実行するなどして、ターミナルで操作するときと同様にエージェントを呼び出して操作します。

この「Terminal Threads」経由の呼び出し方は「External Agents」と同様で、エージェントは Zed とは別のプロセスとして実行されます。Zed はユーザからの入力、エージェントから出力結果の表示といったインターフェースを担当し、それ以外の処理はすべて外部のエージェントが担当するという役割になります。
それぞれの経路の設定(settings.json)の例 #
settings.json
{
"agent": {
// Zed Agent 経由で呼び出す場合の、デフォルトのモデルを指定する設定
"default_model": {
"effort": "medium",
"provider": "openai-subscribed",
"model": "gpt-5.5"
},
// Terminal Threads を開いたときにデフォルトで実行したいコマンドを指定する設定
// これを書いておくと Terminal Threads を開いたときに自動的に `codex --model gpt-5.5` が実行されます。
"terminal_init_command": "codex --model gpt-5.5"
},
// External Agents 経由で呼び出す場合の設定
"agent_servers": {
"codex-acp": {
"type": "registry"
}
}
}language_models に設定することで Zed Agent 経由で呼び出すことができるようになります #
Zed Agent にデフォルトでは表示されないエージェントであっても、settings.json の language_models に設定することで Zed Agent 経由で呼び出すことができるようになります。
たとえば「Sakana AI のサブスクリプション契約をしていて、Sakana Fugu を使いたい」なら以下のように定義を書きます。
settings.json
{
"language_models": {
"openai_compatible": {
"Sakana Fugu": {
"api_url": "https://api.sakana.ai/v1",
"available_models": [
{
"name": "fugu",
"max_tokens": 1000000
},
{
"name": "fugu-ultra",
"max_tokens": 1000000
}
]
}
}
}
}その後、コマンドパレットから agent: open settings で確認すると、Zed Agent の一覧に Sakana Fugu が表示され、認証を済ませると Zed Agent 経由で呼び出すことができるようになります。
