DeepSeek Harness ACP 插件:把外部 Agent 注册成模型提供方

前言

在 DeepSeek Harness(DSH)里对话,默认走的是内置或 HTTP 形式的模型提供方。如果你已经在本机装了 Codex、Claude Code、Gemini CLI 等通过 Agent Client Protocol(ACP)对外提供能力的 Agent,再单独为 DSH 配一套等价后端,往往意味着重复维护启动命令、认证和模型列表。

下面介绍的 deepseek-harness-acp(npm 包名 dsh-tauri-acp)走另一条路:用 ACP 的 stdio JSON-RPC 拉起这些 Agent 子进程,在 DSH 模型选择器里把它们登记成 provider。选中对应路由后,本轮对话由该 Agent 处理,而不是 DSH 自带的工具链与 MCP。

这是什么

  • 维护者:Fleey
  • 分类:模型推理(SkillHub 目录:fleey/deepseek-harness-acp)
  • 源码:github.com/Fleey/deepseek-harness-acp(README 标题为 dsh-tauri-acp;许可证 MIT,当前 package 版本 0.2.0)
  • 定位:DeepSeek Harness 桌面插件,用 ACP 把外部 Agent 注册为 dsh 的模型提供方。

插件与 DSH 宿主以标准 bundle 形式集成(dsh.bundle.patch → cordis.patch.yml),并面向 DSH NEXT(0.2 核心)提供设置页 ACP Agents。

核心功能

Provider 与子进程

每个配置项对应一条 provider 路由。按需启动该 Agent 子进程(stdio JSON-RPC),进程常驻复用。每个 dsh 会话映射一个 ACP 会话;后续轮次只发送新增用户消息。若历史对不上(例如切换过模型或发生过压缩),插件会新建 ACP 会话,并把历史压平为 <conversation_history> 一次性带给 Agent。历史中的图片在原位置以 image 块重发,不会被压成纯文本。

模型与元数据

模型列表来自 Agent 的 configOptions(category: "model"),并兼容旧版的 models 与 session/set_model;default 表示使用 Agent 自己的默认模型。

在设置页或通过配置可控制是否自动发现模型(discoverModels,默认 true)。未手动声明 models 时,会启动 Agent 读取其公布的列表。推理等级、图片输入能力、上下文窗口等元数据按 README 所述从 Agent 握手与会话上报中解析,并配合本地缓存(如 $DSH_HOME/cache/dsh-tauri-acp/ 下的能力与会话窗口记录)。

流式映射方面:agent_message_chunk 为正文;agent_thought_chunk、工具调用与计划进入推理块;usage 按会话累计值做差分。工作目录优先取当前 dsh 会话的 workspace,否则回退到 cwd 配置或用户主目录。Agent 的权限请求默认走 dsh 原生审批(ctx.approval)。

设置页与导入

设置 → ACP Agents(排在官方「模型」页之后)支持添加、编辑、删除 Agent,无需手写 YAML。表单覆盖路由名、显示名、启动命令、参数、环境变量、认证方法、权限策略、图片输入、模型列表等;未展示的字段(如 cwd、systemPrompt、超时)在保存时原样保留。

支持粘贴标准 ACP 配置 JSON 批量导入,识别 Zed 的 agent_servers(或 agentServers)、本插件的 agents 段,或直接的 { "名称": { "command", "args", "env" } } 映射。提供预览、勾选与覆盖策略。另提供「发现模型」:按已保存的命令启动 Agent 并追加其公布的模型到列表(新 Agent 须先保存)。

配置经 ctx.configForms 原子写入档案的 cordis.patch.yml;agents 为 volatile 字段,修改后触发路由重新注册,下一次请求即可生效,无需重启插件。

安装与启用

插件未提供 dsh plugin add github:... 一类的一行安装命令;官方 README 要求本地构建后以 link 方式挂进桌面档案。

1、克隆仓库并构建(需 Node ≥ 22.13;档案安装步骤中提到的 pnpm 为 11.8.0):

git clone https://github.com/Fleey/deepseek-harness-acp.git
cd deepseek-harness-acp
npm install && npm run build

2、在 ~/.dsh/profiles/desktop/package.json 中加入依赖与 bundle,将 link: 路径改为你本机仓库位置,然后重启桌面端:

{
  "dependencies": {
    "dsh-tauri-acp": "link:/path/to/deepseek-harness-acp"
  },
  "dsh": {
    "profile": {
      "bundles": ["dsh-tauri-acp"]
    }
  }
}

3、在档案目录执行安装以建立链接(须与桌面端使用相同版本的 pnpm):

cd ~/.dsh/profiles/desktop && npx -y pnpm@11.8.0 install --prefer-offline --config.minimum-release-age=0

link 模式下插件从本仓库的 node_modules 解析 @deepseek-ai/dsh-llm,改代码后执行 npm run build 并重启桌面端即可生效。也可将包放入 dsh-desktop 仓库的 packages/ 并纳入 dsh-tauri-bundle 随包内置。

安装前请自行阅读源码与 MIT 许可证;插件以当前 dsh 进程权限运行子进程,启动命令与环境变量会作用于本机。

配置示例

除设置页外,可在 ~/.dsh/profiles/desktop/cordis.patch.yml 中覆盖插件配置。README 示例:

- id: dsh-tauri-acp
  name: dsh-tauri-acp
  config:
    agents:
      codex:
        displayName: Codex (ACP)
        command: /Users/you/.nvm/versions/node/v22.12.0/bin/codex-acp
        authMethod: api-key
        env:
          OPENAI_API_KEY: sk-...
      claude-code:
        displayName: Claude Code (ACP)
        command: /usr/local/bin/npx
        args: [-y, '@agentclientprotocol/claude-agent-acp']
        permission: ask

常用字段包括:permission(默认 ask,可走审批框)、imageInput(auto / force / off)、discoverModels、contextWindow(默认 200000)、startupTimeoutMs、idleTimeoutMs 等;完整表格见仓库 README。

DSH 0.1 核心上也可在用户设置的 llm-acp 段使用相同结构;0.1 无图形化 ACP Agents 页。

典型用法与冒烟测试

1、在 ACP Agents 或 YAML 中配置 Agent 的 command / args / env,保存后于模型选择器中选择对应 provider 与模型。
2、从 Dock/Finder 启动的桌面端可能拿不到 shell 的 PATH,command 建议写绝对路径,或在 env 中补全 PATH。
3、仓库提供仅握手与模型发现的冒烟脚本(不消耗额度);末尾加问题会真正发一轮对话:

npx tsx scripts/smoke.mts "$(command -v codex-acp)"

可用环境变量 ACP_MODEL、ACP_AUTH_METHOD 指定模型与认证方式。

适用场景与限制

适合:已在本机部署 ACP Agent(如 Codex、Claude Code、Gemini CLI),希望在 DSH 里用同一套 Agent 完成编码类对话,并接受 Agent 自带工具与权限模型。

需注意(摘自 README):

  • Agent 使用自己的工具;dsh 的工具(含 MCP)不会传给 Agent;插件每轮不产出 tool-call,由 Agent 自行跑完。
  • 文件在 dsh 侧常以文本占位进入适配器,ACP 的 resource / embeddedContext 用不上;Agent 不支持图片时图片也会变成文本占位。
  • 重试策略固定为不重试,避免有副作用的操作被重复执行。
  • 官方「模型」页的 HTTP 型 provider 编辑器不适合编辑 ACP 路由;应在 ACP Agents 或 cordis.patch.yml 中配置。

结尾

deepseek-harness-acp 把 ACP 生态里的外部 Agent 接到 DSH 模型选择器上,用子进程与会话映射复用你已有的 Agent 安装与认证,并辅以设置页导入、发现模型与 volatile 配置热更新。社区目录页:SkillHub — Fleey/deepseek-harness-acp;源码与完整配置说明:GitHub — Fleey/deepseek-harness-acp。

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

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

Xiaoye