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),但会话日志中仍可能包含敏感信息,请勿直接上传。

相关资源

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

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

小夜