前言¶
DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在 IDE 中直接控制 dsh 智能體通常需要編寫適配器或修改源碼。dsh-acp 通過提供 Agent Client Protocol (ACP) 服務器,利用 JSON-RPC 2.0 stdio 機制,讓 Zed 等編輯器能夠直接驅動 dsh 智能體。它掛載在 dsh 的 stdin/stdout 上,無需修改 DSH 本身即可工作。
是什麼¶
dsh-acp 是由 cnctem 維護的一個 DSH 插件。它基於官方 @deepseek-ai/dsh-acp 骨架,作爲 dsh-base 的 profile bundle 運行,並參考了 pi-acp 的編輯器體驗設計。插件採用 MIT 許可證。
核心功能¶
通過 JSON-RPC 2.0 stdio 通信,dsh-acp 將 DSH 的能力映射到編輯器界面。
- Token 與思考流式傳輸:通過
agent_message_chunk和agent_thought_chunk事件,實時展示模型輸出和思維過程。 - 工具調用卡片:提供
tool_call和tool_call_update事件,展示工具類型、文件位置和行號。 - 結構化 Diff:展示 edit/write hunks 以及修改前後的快照。
- 會話管理:支持
session/list、session/load、session/delete,並提供會話選擇器(寫入權限 3、模型、思考強度)。 - 終端模擬:將 Bash 命令輸出渲染爲終端內容,並附帶退出代碼。
- 上下文使用環:通過
usage_update(used / size) 更新,反饋給 IDE 的上下文指示器。 - 待辦清單:將 DSH 的
todo_write快照渲染爲 IDE 的計劃清單 (planupdate),在回合開始時自動清除。 - 圖像理解:支持 ACP
imageprompt blocks(如截圖)。通過 dsh 0.1.1 的dsh-attachment接縫,將圖像作爲ImageBlock傳入模型。 - 斜槓命令:通過
available_commands_update廣告 DSH 的/命令,並在命令平面執行(圖像可傳遞給支持圖像的命令)。 - 用戶提問:通過 ACP 表單引導回答
ask_user_question工具,對於不支持表單的客戶端提供解釋性回退。
安裝與啓用¶
安裝前需滿足 Node.js ≥ 20、dsh (建議 0.1.1-rc.2) 和 pnpm。
dsh plugin --profile acp add github:cnctem/dsh-acp
配置與用法¶
插件默認使用 DSH 的默認模型。通過環境變量可覆蓋。
- 模型覆蓋:使用
DSH_ACP_PROVIDER或DSH_ACP_MODEL環境變量。 - 預設選擇:使用
DSH_ACP_PRESET環境變量。該值直接對應預設 ID。未設置或空值使用standard;未知 ID 會導致會話創建失敗。有效 ID 包括內置的standard/minimal,以及用戶在$DSH_HOME/.agent-presets/下創建的自定義預設。 - Zed 集成:在 Zed 的
settings.json中添加自定義服務器配置。
{
"agent_servers": {
"dsh": {
"type": "custom",
"command": "dsh",
"args": ["--profile", "acp"],
"env": {}
}
}
}
- 多預設共存:Zed 支持配置多條記錄,不同預設可作爲獨立選項出現在 “+” 菜單中。
注意事項¶
- API Key:插件複用 DSH 的憑證,即
$DSH_HOME/.credentials.yaml或DEEPSEEK_API_KEY。 - 特殊預設依賴:
code和cordis預設需要安裝全局插件code-runtime和cordis-host-runner才能使用。 - 權限:插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
結尾¶
dsh-acp 提供了一套完整的編輯器集成方案,通過 ACP 協議將 DSH 的智能體能力可視化。配合 Zed 等編輯器,開發者可以獲得流式輸出、結構化 Diff 和終端交互等增強體驗。