ACP で DeepSeek Harness を Zed につなぐ
Agent Client Protocol を 3 ステップで:ルートを選び、サーバーをつなぎ、Zed の Agent パネルで動かします。
最終更新: 2026-09-29
ACP(Agent Client Protocol)は、エディタとコーディングエージェントをつなぐプロトコルです。片側がエージェントのプロセスを起動してプロンプトを送り、もう片側がメッセージ・思考・ツールカード・権限リクエストを JSON-RPC でストリーミングして返す。Zed の Agent パネルはこれをネイティブに喋りますし、プロトコルは公開されているので、そのパネルの向こうに dsh エージェントを座らせられます。
最初に正直に言うと、ルートは 2 本あります。公式の `@deepseek-ai/dsh-acp` パッケージは automation-only に位置づけられていて、対象はスクリプト・テストランナー・プロセス外サブエージェント。エディタでの完全な対話体験は、コミュニティの editor-facing サーバーが Zed へ投影します。このガイドでは両方を歩き、最後にインタラクティブ版を実際に Zed へつなぎます。
要点まとめ
- ▸ACP は「エディタ ⇄ エージェント」、MCP は「エージェント ⇄ ツール」をつなぐ線です。両方欲しくなるはずなので、まず下の ACP vs MCP セクションをどうぞ。
- ▸公式の dsh ACP サーバー(`dsh --profile acp`)は自動化専用:プランカードもセッションタイトルもターミナルビューも、意図的に持ちません。
- ▸Zed で使うならコミュニティの `deepseekharness-acp-interactive` npm パッケージを。このガイドが接続するのはこれです。
- ▸手順は 3 つ:グローバルインストール、`dsh-acp-interactive --setup` を一度実行、Zed の settings.json の `agent_servers` へ登録。
2 つのルート、それぞれ 3 ステップ
パート 1 — ルートを選ぶ
- 1
ACP に何をさせるか決める
dsh を駆動するのがプログラム——CI ジョブ、テストランナー、別のハーネス——なら公式サーバーが正解です。標準の ACP v1、再起動をまたいで残る永続セッション、1 接続で複数セッション、認証ステップなし。一方、人が Zed の Agent パネルから dsh を使いたいなら、必要なのはコミュニティのインタラクティブサーバーです。公式版は設計上、プラン・タイトル・ToDo・ターミナルビューを持たないと明言しています。
- 2
ルート A:公式の automation-only サーバー
リポジトリのチェックアウトでは、ACP サーバーは `packages/acp` にあり、プラグイン名は `@deepseek-ai/dsh-acp` です。構成設定で各セッションの provider とモデルを指定し、acp プロファイルで起動します——stdout は JSON-RPC フレーム専用です。クライアント側はセッションの作成・一覧・再開・終了、stdio / HTTP の MCP サーバーのアタッチ、モデルと推論強度の切り替え、権限プロンプトへの応答ができます。別のハーネスからプロセス外サブエージェントとして同じサーバーを起こす公式クライアントが `@deepseek-ai/dsh-subagent-acp` です。
$pnpm dsh --profile acp- name: '@deepseek-ai/dsh-acp' config: provider: deepseek-official model: deepseek-v4-pro - 3
ルート B:インタラクティブサーバーを入れる
dsh-acp-interactive(コミュニティプロジェクト、MIT ライセンス、DeepSeek や Zed とは無関係)は、公開済みの `@deepseek-ai/dsh-*` パッケージをエディタ向けプロファイルに組み上げ、Zed にメッセージ・思考・ツールカード・権限プロンプト・プラン・セッションタイトル・使用量を届けます。グローバルインストールしたら `--setup` を一度だけ実行。`DEEPSEEK_API_KEY` をハーネスのクレデンシャルストアに、画面に出さず保存します。`--setup` を飛ばしても大丈夫で、鍵のない新規スレッドには同じ流れを走らせる Configure DeepSeek API key アクションが表示されます。
$npm install --global deepseekharness-acp-interactive$dsh-acp-interactive --setup
パート 2 — Zed につなぐ
- 4
Zed の settings.json に登録する
コマンドパレット(Ctrl+Shift+P / Cmd+Shift+P)を開いて `zed: open settings` を実行し、サーバーを `agent_servers` の下に追加します。Windows では `command` に `where.exe dsh-acp-interactive` が出力する絶対パス(スラッシュ区切りか二重バックスラッシュ)を、macOS と Linux では `which dsh-acp-interactive` の出力を指定してください。あとはファイルを保存するだけです。
{ "agent_servers": { "dsh-acp-interactive": { "type": "custom", "command": "dsh-acp-interactive", "args": [] } } } - 5
Agent パネルからスレッドを開く
Ctrl+? / Cmd+? で Zed の Agent パネルを開き、ドロップダウンから dsh-acp-interactive を選んで最初のプロンプトを送ります。ツール呼び出しは dsh のサンドボックス内で走ります。read-only プリセット下での書き込みは Allow once / Reject 付きの ACP 権限リクエストとして戻り、承認された編集はツールカードとして描画されます。`/` パレットには構成済みプラグインが登録した人間用コマンドが並び、composer には権限プリセットと推論強度セレクター——どちらも ACP のセッション設定オプションです。
- 6
Zed の外へ:他クライアントとアダプター
ACP v1 を喋るクライアントなら、どれでもこのサーバー群と会話できます。下のディレクトリには Paseo と BitFun のアダプター、素朴な ACP サーバー実装、そして Martty——それ自体が ACP クライアントである TUI——を収録。dsh-acp-interactive のセッションは `.dsh` ホームの `acp-sessions` 配下に JSONL で保存され、作業ディレクトリごとに区分されるので、エディタの外からも監査できます。ストリーミングの粒度はクライアントごとに差があるので、既知の 2 つの粗い部分は FAQ をどうぞ。
ACP vs MCP:それぞれが担う範囲
2 つの略称はエージェントを挟んで反対側にあり、dsh は両方を喋ります。
ACP — エディタ ⇄ エージェント
Agent Client Protocol(agentclientprotocol.com)が標準化するのは「クライアントがコーディングエージェントをどうホストするか」です。セッションの作成と再開、プロンプト送信、メッセージ・思考・ツール呼び出し・プランのストリーミング受信、権限の折衝、モデルと推論強度のセレクター提供。Zed の Agent パネルはその代表クライアントです。
MCP — エージェント ⇄ ツール
Model Context Protocol が標準化するのは「エージェントがどうツールに手を伸ばすか」です。MCP サーバーは地図・検索・データベースといったツール、リソース、プロンプトをモデルに公開します。dsh はセッションごとに MCP サーバーをアタッチでき、フィールド対応と mcpServers ブロックは MCP セットアップガイドで解説しています。
競合ではなく重ね合わせです。ACP セッションは MCP サーバーをアタッチできるので、Zed を ACP でつなげても MCP の設定が不要になるわけではありません。 dsh で MCP サーバーをセットアップする
dsh ACP アダプターディレクトリ
以下のサーバーは 2026-09-29 時点で実在を確認済み。スター数はその日のスナップショットです。先頭行がこのガイドで Zed に入れたもの。
| プロジェクト | スター | こんな時に |
|---|---|---|
| ClickPM/dsh-acp-interactive | ★99 | 上で Zed につないだエディタ向けサーバー——メッセージ・思考・ツールカード・プラン・タイトル・使用量。ACP v1 を基準線にする |
| openma-ai/Martty | ★78 | それ自体が ACP クライアントである統合ハーネス TUI——エディタなしでターミナルからセッションを開く |
| openma-ai/deepseek-harness-acp | ★36 | Martty チームによる素朴な dsh ACP サーバー実装(dsh-acp) |
| Pheobe-Southwood/dsh-acp-paseo | ★11 | Paseo 統合パッケージ——自動検出のモデルカタログ、plan/execute モード、dsh ネイティブのスラッシュコマンド |
| bobleer/dsh-acp-for-bitfun | ★10 | BitFun ⇄ dsh アダプター。BitFun エディタ側との接続用 |
| grunmin/dsh-acp-enhanced | ★7 | ブロックレベルのストリーミング、使用量テレメトリ、モデルと推論強度の切り替え、権限プリセットを備えた Zed ブリッジ。プラグインとしてインストール |
いずれもコミュニティ管理のプロジェクトで、DeepSeek との関係や推奨はありません。公式 npm パッケージは automation-only のままです。実行前に各リポジトリの README でインストールコマンドを確認してください。
ACP セットアップ FAQ
サーバーが動きはじめてからよく聞かれる質問。
dsh の ACP と MCP の違いは何ですか?
向きが違います。ACP(Agent Client Protocol)はクライアント——Zed の Agent パネル、TUI、スクリプト——を dsh エージェントにつなげる線で、セッション・プロンプト・ストリーミング応答・権限リクエストが流れます。MCP(Model Context Protocol)は dsh エージェントを外側のツール——地図、検索、データベース——につなげる線です。ACP セッションは MCP サーバーをアタッチできるので、2 つのプロトコルは競合ではなく積み上げです。
公式の dsh ACP サーバーはありますか?
あります。リポジトリの `packages/acp` にある `@deepseek-ai/dsh-acp` で、`dsh --profile acp` で起動します。npm の説明文がそのまま答えで、JSON-RPC stdio 上の automation-only ACP サーバーです。セッション、モデル選択、MCP アタッチ、プロンプト、権限プロンプトは扱いますが、dsh のプレゼンテーション層——プラン、タイトル、ToDo、ターミナルビュー、フォーム入力——は意図的に外されています。
公式サーバーを使うと、Zed にプランや ToDo カードが出ないのはなぜ?
不具合ではなく設計です。公式の設計ノートは ACP を automation-only プロトコルと位置づけており、対応しない表面はプロトコル層で省略されるか拒否されます。プランカード・セッションタイトル・使用量まで含む完全なエディタ体験には、dsh-acp-interactive のようなコミュニティのインタラクティブサーバーを使ってください。これらは dsh の更新を ACP のコンテンツへ投影します。
返信がひとかたまりで届いて、タイピング表示にならないのはなぜ?
既知の粒度問題で、0.1.7-rc.2 時代のディスカッション #8244 に報告があります。agent_message_chunk 更新がメッセージ全体を一度に運ぶことがあり、ターンが終わるまで Zed のタイピング表示は動くことがありません。インタラクティブサーバーはより細かいセッションイベントを投影することでこれを緩和します。クライアントが必ずストリーミングすると思い込まず、アダプターの互換性情報を確認してください。
モデルの思考内容が返信本文に混ざるのはなぜ?
ディスカッション #8235 の件です。dsh-acp は同じアシスタント応答の思考チャンクとメッセージチャンクに同じ messageId を振るため、messageId でグルーピングするクライアントは両方を 1 つにまとめてしまいます。Paseo から @deepseek-ai/dsh-acp 0.2.0-rc.1 および 0.1.7-rc.2 に対して再現報告があります。上流修正までは、2 つのストリームを分けて投影するインタラクティブサーバーで回避できます。
Zed 以外のエディタでも使えますか?
ACP v1 を喋れるクライアントなら可能です。プロトコルはクライアント非依存で、Paseo と BitFun には専用アダプター、ターミナルには Martty、VS Code の ACP 対応を狙うコミュニティゲートウェイもあります。差が出るのは各クライアントの投影力——ストリーミング・プラン・権限の面をどこまで描画するか——なので、アダプターの互換性マトリクスを基準にしてください。
関連ガイド
この構成の周辺にあるプロトコルとプリセット。
dsh で MCP サーバーをセットアップする
ツール側の半分。フィールド対応、mcpServers ブロック、実際の MCP 呼び出しセッション——ACP と補い合う面です。
ガイドを読むMCP マネージャー系プラグインコレクション
ACP セッションが MCP サーバーをアタッチしはじめた後に、それらを可視化するパネル群。
ガイドを読む厳選 MCP サーバーコレクション
ACP や dsh のセッションにアタッチする価値が高いとコミュニティが選んだサーバー群。
ガイドを読むサブエージェント:並列エージェントチーム
dsh 内部のタスク委託と、公式のプロセス外 ACP サブエージェントバックエンドの位置づけ。
ガイドを読むカスタムエージェントプリセット
プリセットがセッションのツール類を決めます。ACP セッションもその下で走ります。
ガイドを読む