dsh-multi-acp:讓 DSH 會話由外部 ACP agent CLI 驅動

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>

核心功能

  1. 引擎數據層:引擎是數據行,新增引擎只需配置一行。
  2. ACP 客戶端 / 進程宿主:封裝 ACP 客戶端與進程宿主邏輯。
  3. 插件接線:替換 factory + 註冊 preset。
  4. 會話真由引擎驅動:會話流轉由外部 ACP 引擎接管。
  5. preset 原生工具面:修復前是 164 個工具、零原生工具,現在包含 read/write/edit/glob/grep/pwsh/skill 等。
  6. MCP 隨會話注入:默認把 <DSH_HOME>/storages/mcp_connector.json 裏 enabled !== false 的連接映射成 ACP McpServer。
  7. 引擎工具調用回顯:滿足 DSH 會話格式契約,在軌跡裏顯示 tool/call + tool/result。
  8. 引擎命令/技能發現回顯:通過 acp.available_commands 暴露命令列表。
  9. 引擎管理 UI:覆蓋啓動方式、環境變量行編輯、四態過濾+搜索、兩列信息網格 + 語義化診斷膠囊。
  10. 時長與超時可控:通過 promptTimeoutMs 配置,<=0 表示不超時。
  11. 歷史文件修復工具:修復會話日誌中的契約問題。

配置

配置位於 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']    # 排除這些

典型用法

  1. 啓動前:在 <DSH_HOME>/multi-acp/engines.json 中配置引擎定義。
  2. 會話前:新會話請先讀 AGENTS.md,瞭解證據等級與驗證命令。
  3. 配置預設:設置 presetTools 爲 true 或數組,啓用原生工具面。
  4. 控制超時:配置 promptTimeoutMs 以控制超時,長任務推薦設爲 0。
  5. MCP 注入:確保 <DSH_HOME>/storages/mcp_connector.json 中的連接配置正確。

注意事項

  • 配置陷阱:非 insert 的 patch 行按 id 定位後是整體替換。修改配置前務必覈對實際生效的配置。
  • 權限運行:插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
  • 數據脫敏:trace 日誌會自動脫敏敏感字段(如 token, secret),但會話日誌中仍可能包含敏感信息,請勿直接上傳。

相關資源

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜