Zed の AI エージェントまわりの設定を整理する

Zed の AI エージェントまわりの設定を整理する

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

Agents | Zed

  1. Zed Agent
  2. External Agents
  3. 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 | Agent settings

ここに記載のあるプロバイダーについては、Zed がネイティブでいい感じに連携する仕組みをサポートしてくれています。

一覧に表示されているものを選択し、その後案内された認証を行うことで、Zed から AI エージェントを利用できるようになります。

たとえば ChatGPT Subscription を選び、Sign in ボタンを押してログインを行うと連携が完了します。

Zed | Agent settings

この「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 を検索してインストールします。

Zed | Agent settings

Zed | Agent settings

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

Zed | Agent settings

連携後、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 コマンドを実行するなどして、ターミナルで操作するときと同様にエージェントを呼び出して操作します。

Zed | Agent settings

この「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 経由で呼び出すことができるようになります。

Zed | Agent settings