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