DSH 的一個會話由外部 ACP agent CLI 作爲根 agent 驅動。DSH 內置的 @deepseek-ai/dsh-acp 是反方向,本插件不復用它。插件通過替換 factory 和註冊 preset,讓 DSH 的引擎數據層驅動外部進程,而非代碼。
這是什麼 / 不是什麼¶
| 是 | DSH 當 ACP 客戶端,驅動外部 CLI(omp / opencode / command-code)當根 agent |
| 是 | 把 DSH 的 MCP 服務器隨 session/new 下發給引擎(引擎因此能用 DSH 裏配好的知識庫等) |
| 不是 | DSH 當 ACP 服務端。DSH 內置的 @deepseek-ai/dsh-acp 是反方向,本插件不復用它 |
| 不是 | provider 路線(外部 CLI 只當”大腦”,loop 仍屬 DSH) |
| 不是 | 子代理路線(官方 @deepseek-ai/dsh-subagent-acp) |
| 注意 | ACP 注入給引擎的 MCP 是全量可用(無審批/授權字段) |
| 注意 | 鍵名(如 token, secret)會被脫敏爲 <redacted> |
核心功能¶
- 引擎數據層:引擎是數據行,新增引擎只需配置一行。
- ACP 客戶端 / 進程宿主:封裝 ACP 客戶端與進程宿主邏輯。
- 插件接線:替換 factory + 註冊 preset。
- 會話真由引擎驅動:會話流轉由外部 ACP 引擎接管。
- preset 原生工具面:修復前是 164 個工具、零原生工具,現在包含
read/write/edit/glob/grep/pwsh/skill等。 - MCP 隨會話注入:默認把
<DSH_HOME>/storages/mcp_connector.json裏enabled !== false的連接映射成 ACPMcpServer。 - 引擎工具調用回顯:滿足 DSH 會話格式契約,在軌跡裏顯示
tool/call+tool/result。 - 引擎命令/技能發現回顯:通過
acp.available_commands暴露命令列表。 - 引擎管理 UI:覆蓋啓動方式、環境變量行編輯、四態過濾+搜索、兩列信息網格 + 語義化診斷膠囊。
- 時長與超時可控:通過
promptTimeoutMs配置,<=0表示不超時。 - 歷史文件修復工具:修復會話日誌中的契約問題。
配置¶
配置位於 cordis.patch.yml。注意非 insert 的 patch 行按 id 定位後是整體替換,該 Entry 的 config 不會與 profile 深合併。
基礎配置項¶
| 字段 | 默認 | 說明 |
|---|---|---|
defaultEngine |
'' |
沒有顯式 preset 的會話走哪個引擎;留空 = 走官方 DSH agent loop |
stateDir |
<DSH_HOME>/multi-acp |
引擎定義、會話映射、trace.log 落地位置 |
verboseStartup |
true |
啓動時打印宿主符號自檢結果 |
presetTools |
true |
acp-* preset 掛哪些原生工具組:true / false / 數組 |
unsandboxedFs |
false |
true = 用 entry-local dsh-fs-local 遮蔽宿主沙箱 fs |
mcp |
{enabled:true, include:[], exclude:[]} |
MCP 隨會話下發策略 |
promptTimeoutMs |
300000 |
一次 session/prompt 的超時;<=0 = 不超時 |
trace |
true |
診斷追蹤 <stateDir>/trace.log;false/'off' = 關閉 |
新增引擎示例¶
引擎定義優先級:內置 BUILTIN → <stateDir>/engines.json → 插件 config.engines。按 id 整體覆蓋。
// <DSH_HOME>/multi-acp/engines.json
{
"engines": [
{
"id": "mytool",
"label": { "zh": "我的工具", "en": "My Tool" },
"command": "mytool",
"args": ["acp"],
"cwdPolicy": "session",
"mcp": "inherit",
"promptTimeoutMs": 0,
"enabled": true,
"sortOrder": 40
}
]
}
MCP 下發策略¶
默認把 <DSH_HOME>/storages/mcp_connector.json 裏 enabled !== false 的連接映射成 ACP McpServer。隨 session/new 與 session/load 下發。
mcp:
enabled: true
include: [] # 只下發這些(按 name / serverName / serverKey 匹配)
exclude: ['dingtalk'] # 排除這些
典型用法¶
- 啓動前:在
<DSH_HOME>/multi-acp/engines.json中配置引擎定義。 - 會話前:新會話請先讀 AGENTS.md,瞭解證據等級與驗證命令。
- 配置預設:設置
presetTools爲true或數組,啓用原生工具面。 - 控制超時:配置
promptTimeoutMs以控制超時,長任務推薦設爲 0。 - MCP 注入:確保
<DSH_HOME>/storages/mcp_connector.json中的連接配置正確。
注意事項¶
- 配置陷阱:非
insert的 patch 行按id定位後是整體替換。修改配置前務必覈對實際生效的配置。 - 權限運行:插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
- 數據脫敏:
trace日誌會自動脫敏敏感字段(如 token, secret),但會話日誌中仍可能包含敏感信息,請勿直接上傳。