clioo/dsh-claude-agent:在 DeepSeek Harness 里跑你自己的 Claude 登录

前言

做智能体应用的开发者通常会遇到一个问题:harness 的界面、工具和历史记录都做好了,但模型通道还要自己接。接 Claude 有两条路,一条是自己写客户端去读订阅凭据,另一条是不做客户端,直接驱动用户已经登录过的 claude 二进制。clioo 维护的 dsh-claude-agent 选了后者。

它给 DeepSeek Harness(以下简称 DSH)增加了一个名为 claude-agent 的模型 provider,实现方式沿用 opencode 自己的 claude-agent provider 设计:通过 Anthropic 官方 Claude Agent SDK 调用用户本机安装的 claude 程序。Claude Code 继续使用自己的认证、客户端和请求方式,插件只是在外面套上 harness 的 UI、工具和历史。

这个做法的直接收益是提示缓存命中率。按作者测量,稳定状态下缓存命中超过 90%,单轮工具调用中多数步骤在 96% 到 100% 之间。

下面介绍这个插件的定位、安装方式和配置项。

定位:为什么不做第三方客户端

插件的设计前提只有一句话:不要成为订阅凭据的第三方客户端。

具体约束如下:

1、插件不读取 ~/.claude/.credentials.json,不跑 OAuth 流程,没有登录界面。
2、每一个模型请求都由用户自己安装并登录的 claude 程序在用户机器上以用户账号发起。
3、插件不收集、不存储、不代理、不重放任何内容,只传递 SDK 文档中记录的选项和环境变量。
4、claude 二进制不做修改,也不禁用任何认证方式;插件反而会清掉会跳过登录的 CLAUDE_CODE_SIMPLE。
5、命名上遵循 Agent SDK 的品牌规范:产品名是 Claude Agent,不使用 Claude Code 作为产品名。

依据是 Anthropic 当前的 Legal and compliance 页面:OAuth token 只用于 Claude Code 和其他原生 Anthropic 应用的常规使用,开发者不得把 Claude.ai 登录放进自己的应用,也不得替用户用 Free、Pro、Max、Ultra 计划凭据转发请求,或收集、存储、中间代存凭据与会话 token。同一份文档明确允许终端用户用自己的订阅登录未经修改的 Claude Code 二进制。插件实现的就是这后一种情况。

付费路径也因此没有被强制:订阅、API key、Bedrock、Vertex、Foundry 或企业网关都可以,因为插件不决定计费路由。如果要做一个向第三方提供 Claude 的托管产品,应该走 API key 或商业协议,那是另一种情况。

核心功能

以下能力均来自仓库 README。

1、用自己的登录使用 Claude 模型:Opus、Sonnet、Haiku,以及 Claude Code 运行时报告出来的显式模型 id,运行时发现并缓存。
2、harness 工具通过 MCP 暴露:Claude Code 自带工具被关闭,harness 的工具通过进程内 MCP server 暴露,JSON Schema 原样发送。
3、工具轮次不丢进程:一个 Claude turn 停在工具边界,等 harness 返回结果后恢复,而不是重启进程重来。
4、历史可恢复:harness 历史是唯一事实来源,只发送 Claude 还没看过的消息;Claude 的会话记录在重启后恢复。
5、隔离:不使用 Claude Code 的配置文件、hooks、skills、CLAUDE.md、MCP server、auto-memory、auto-compaction、advisor、tool search,也没有非流式或拒答的回退路径。
6、用量上报准确:按每次调用上报 token 用量,包含 cache reads 和 cache writes,harness 可以据此显示真实的缓存命中率。
7、SDK 懒加载:SDK 在首次使用时加载,也可以换成 PATH 中的版本或配置指定的可执行文件。

运行要求

- DeepSeek Harness 0.2.1 或更高版本(该 provider 是 Host bundle)
- 已安装并登录的 Claude Code 2.1.248 或更高版本:

先确认本机环境:

claude --version
claude auth login

claude 二进制必须在 PATH 上,或者在插件配置里显式指定 executable。插件不会使用 SDK 自己下载的那份二进制,它运行的就是你自己装的版本,CLI 版本和登录状态以你的为准。

安装与启用

在 DeepSeek Harness Desktop 里打开 Plugin Manager,从目录页安装 bundle。bundle 只插入一行 claude-agent,不会禁用其他任何东西。

对于 Electron 不管理的 profile,使用命令行:

dsh plugin --profile <profile> add /path/to/dsh-claude-agent

替换文件后要重新加载插件或重启 DSH,Host 才会加载新的模块生成结果。

然后在模型选择器里选 Claude Agent,或者直接设为默认模型:

- id: agent-default-model
  config:
    provider: claude-agent
    model: opus          # 或者 sonnet、haiku、claude-opus-5-5 等
    reasoningEffort: high

配置项

插件配置块如下,未写的项都有默认值:

- id: claude-agent
  name: 'dsh-claude-agent'
  config:
    # 可选。默认使用 PATH 上的 claude。
    executable: /usr/local/bin/claude
    # 可选。Claude 进程的工作目录。
    cwd: /home/you/project
    # 可选。输出上限,对应 CLAUDE_CODE_MAX_OUTPUT_TOKENS。
    maxOutputTokens: 32000
    # 进程在多少分钟无活动后停止(默认 5)。
    idleMinutes: 5
    # 一个处于等待状态的工具轮次保留多少分钟(默认 30)。
    parkedMinutes: 30
    # 连接设置,映射方式与 opencode 完全一致。
    baseURL: https://api.anthropic.com
    apiKey: sk-ant-...
    # authToken、headerTimeout、chunkTimeout、headers、body

连接类配置项与 Claude Code 环境变量的对应关系:

Plugin config Claude Code setting
baseURL ANTHROPIC_BASE_URL
apiKey ANTHROPIC_API_KEY
authToken ANTHROPIC_AUTH_TOKEN
headerTimeout API_TIMEOUT_MS
chunkTimeout CLAUDE_STREAM_IDLE_TIMEOUT_MS
headers ANTHROPIC_CUSTOM_HEADERS
body CLAUDE_CODE_EXTRA_BODY
maxOutputTokens CLAUDE_CODE_MAX_OUTPUT_TOKENS

不显式配置连接项时,插件沿用当前环境,把决定权交给 claude 的登录状态。配置优先级高于 shell 环境。

提示缓存的实际表现

缓存命中率高不是靠调参,而是靠保持前缀稳定。README 里列了四条机制:

1、每个 harness 会话只用一个长驻 claude 进程,工具轮次停在进程内等待,而非重启。
2、系统提示、工具列表和连接设置会被哈希,只有其中某一项真正变化时才重启进程。
3、harness 历史被打指纹。只追加 Claude 还没看过的消息;如果历史本身变了(编辑、撤销、切换模型),就发送一次 <conversation-checkpoint> 重建,而不是假装旧前缀依然有效。
4、用量从每个 API 消息上报,不使用 SDK 的整轮汇总值,这样命中率统计不会失真。

README 记录了一个真实 turn 的逐步骤数据,模型为 claude-haiku,Claude Code 2.1.317。完整 28 步的总量是 3,348,680 cached input、161,101 次 cache write、110 个未缓存输入,整体命中率 95.4%,从第 6 步起稳定在 97% 到 99.8%。这些数字是作者单次会话的测量结果,不同负载下会有差异,但机制本身是可核查的。

顺带一提,会话日志里记录的 cached input 比逐消息汇总要大,原因是最后一个步骤携带了整轮的聚合值。这也是为什么要按消息上报而不是按 SDK 汇总。

适用场景与注意

适合的场景:你本人已经用 Claude 订阅(或 API key、Bedrock、Vertex、Foundry、企业网关)登录了本地 claude,想在 DSH 的界面、工具链和历史管理下做开发,同时不想把凭据暴露给任何第三方客户端。README 的完整分析见仓库里的 docs/opencode-approach.md。

不适合的场景:要做一个向第三方提供 Claude 能力的托管产品。那种情况应该用 API key 认证或商业协议,插件的本地登录方案不适用。

需要留意的地方:

1、插件以当前 DSH 进程的权限运行,能读到该进程能读到的文件和环境。安装前应先检查源码和许可证,仓库根目录有 LICENSE 与 SECURITY.md。
2、README 声明插件与 Anthropic、opencode、DeepSeek 没有隶属、背书或赞助关系。
3、仓库为社区个人项目,包名为 dsh-claude-agent,当前 package.json 版本 1.0.0,依赖 @anthropic-ai/claude-agent-sdk 0.3.318 与 @modelcontextprotocol/sdk 1.32.2,要求 Node.js 18.14.0 以上。目录页显示星标 0,属于很新的项目,接入前值得自己跑一遍冒烟测试。
4、配置里的 idleMinutes 和 parkedMinutes 决定进程何时被回收,长任务场景需要留意默认值。

小结

这个插件的价值不在于多提供了一种模型,而在于换了一种接 Claude 的方式:不碰凭据、不重启进程、保持前缀稳定,从而拿到稳定且可观的缓存命中率,同时让 harness 的工具链和历史成为事实来源。如果你本来就在用 Claude Code,想在 DSH 里继续用同一套登录,这是目前实现上最省事的一条路径。

  • 目录页:https://www.skillhub.cn/plugins/clioo/dsh-claude-agent
  • 源码:https://github.com/clioo/dsh-claude-agent

(社区目录是独立站点,与 DeepSeek 无官方从属关系。)

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

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

小夜