DeepSeek Harness Hub
← 返回列表

katsos/dsh-claude-cli

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
⚠ 装前注意

将你已安装的 Claude Code CLI 用作 DeepSeek Harness 的 LLM 提供方。

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/8/16 · 已提供中文文档

DeepSeek Harness LLM 提供程序,将你已安装的 Claude Code CLI 作为模型后端运行——无需 API 密钥。

综合分
33.1
GitHub 分
33.1
用户评分
★ Stars
5
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add katsos/dsh-claude-cli
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-claude-cli(未发布到 npm,仅可源码安装)
Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 16:59:58

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-llm
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-claude-cli

将你已安装的 Claude Code CLI 用作 DeepSeek Harness 的 LLM 提供方。

无需 API 密钥。该插件以子进程方式运行 claude,并通过 harness 的 LLM 接缝将其输出流式传回,因此请求会以 claude 当前已登录的身份进行认证——在自动化之前,你应当对照你套餐的使用条款检查该登录身份。

harness 仍然是智能体。CLI 自身的智能体循环、工具、设置、记忆文件和 MCP 服务器全部关闭;剩下的就是模型调用,由 harness 的系统提示、历史记录和工具驱动。

安装

需要在 PATH 上有可用的 claude(Claude Code)、Node ^22.19 || >=24,以及一个带有 @deepseek-ai/dsh-llm 的 harness。

将其安装到你实际运行的 profile 中,并指向本仓库的检出目录。该包声明了 dsh.bundle,因此它会加入该 profile 的层栈,并且 anthropic-claude-cli 路由会在每次启动时被组合进来:

dsh plugin --profile web add ../dsh-claude-cli

此处使用相对于你运行命令所在位置的路径即可。该插件不在 npm 上,因此目前只能通过目录来安装它。

之后重启 harness——profile 的层栈在启动时读取,因此正在运行的服务器会保持它启动时的组合。随后这些模型会出现在模型选择器中的 Claude Code CLI 下。

调用 dsh

这里的命令假设 dsh 可以解析。你如何访问它取决于 harness 的安装方式:

| Harness 安装方式 | 命令 |
| --- | --- |
| 全局 | dsh … |
| 源码检出 | pnpm dsh … |
| 两者皆非 | npx @deepseek-ai/dsh … |

与 npx 一起使用时请使用带作用域的名称。npm 上不带作用域的 dsh 是一个无关的 JavaScript shell,最后一次发布于 2022 年。

话虽如此,第三行是个例外:这是为 harness 准备的插件,因此要安装它的 profile 必须已经存在。如果你从未运行过 dsh,请先安装 harness,而不是直接使用 npx。

不安装 — 从 --patch 覆盖层运行一次

cordis.yml 是一个独立的 --patch 覆盖层,用于在一次运行中试用该插件,或用于你不想修改的 profile。将其中的占位路径替换为本目录的绝对路径——补丁中的插件路径必须是绝对路径,因为补丁贡献的是配置,而不会改变加载器解析模块路径时所依据的目录。

dsh --profile headless --patch /absolute/path/to/dsh-claude-cli/cordis.yml "your task"

与 bundle 层不同,该覆盖层还会将 agent-default-model 重新指向 anthropic-claude-cli,因此一次性运行无需模型选择器即可使用它。

工具调用如何工作
CLI 没有“这里有一些工具,把它们的调用交还给我”这种模式,因此插件将 harness 的工具作为 MCP 服务器声明给它(bridge.mjs)。模型随后会发出带有提供商验证参数的真正 tool_use 块,插件将其转换为 harness 的 tool-call 块。

桥接器从不执行任何操作。工具执行由 harness 负责。插件在模型消息结束的那一刻就结束请求,因此 CLI 进程在它能够自行派发调用之前就已经消失了。

harness request ──▶ claude --print ──▶ model
│                │
bridge.mjs ◀──────────┘  (tool schemas only)
│
harness chunks ◀─────────┘  tool_use → tool-call → the harness runs the tool

配置

| 字段 | 默认值 | 含义 |
|---|---|---|
| providers | ['anthropic-claude-cli'] | 此适配器所服务的提供商路由。 |
| executable | 'claude' | CLI 的路径或命令名。 |
| cwd | harness cwd | CLI 进程的工作目录。 |
| streamIdleTimeoutMs | 300000 | CLI 输出行之间的最大间隔,超过则请求以 TIMEOUT 失败。 |
| unsupportedFields | 'error' | error 会拒绝 CLI 无法满足的请求字段;ignore 会丢弃它们。 |
| defaultEffort | — | low \| medium \| high \| xhigh \| max,当请求未选择任何值时使用。 |
| extraArgs | [] | 用于此插件未建模的 CLI 标志的额外参数。 |

extraArgs 会在插件自身的标志之前传入,而命名了其中某个标志的条目会在插件加载时被拒绝。这两点都很重要:CLI 会保留重复标志的最后一次出现,因此否则追加的参数会胜出。仅一个 --tools default 就足以在 harness 的工作目录内恢复 CLI 的完整工具集——包括 Bash 和 Edit。对于插件不干预的标志(例如 --betas),请使用 extraArgs。

模型可以是 CLI 接受的任何内容:别名 fable、opus、sonnet、haiku,或完整 id,例如 claude-sonnet-5。目录仅供参考——未列出的 id 会原样传递给 --model。

限制

这些限制源于驱动 CLI 而非 HTTP API,在将长会话切换到它之前值得了解。

- 轮次之间没有提示缓存。 harness 是历史的唯一事实来源——它会压缩、编辑和重放 CLI 从未见过的消息——因此每个请求都会将 harness 历史渲染为一个全新的轮次。模型的视图始终等于 harness 日志,代价是每一轮都要重新读取对话。预计这会在长会话中产生影响,并计入你的 Claude 使用限制。
- temperature、maxTokens 和 stop 无法被满足。 CLI 没有为其中任何一个暴露标志。默认情况下它们会被报告为 UNSUPPORTED,而不是被静默丢弃;如果你的 agent 预设为每条路由都设置它们,请设置 unsupportedFields: ignore。
- 不发送图像。 图像块在记录中渲染为可见的占位符。
- 不重放先前的推理。 提供商会丢弃历史中未签名的思考内容,因此将其作为文本重放只会消耗上下文。
- 没有应用归属标头。 测试框架的 attributionHeaders() 无法触及 CLI 代表自身发出的请求。
- 速率限制属于该账户。 订阅登录与你的交互式 Claude Code 会话共享。参见使用条款。

使用条款

此处没有任何内容绕过身份验证。请求通过官方 CLI 运行,以 claude 已登录的身份,使用 Claude Code 为非交互式使用而提供的同一套有文档记录的 --print 模式。

此插件所添加的内容在性质上有所不同:它使订阅登录成为另一个智能体框架的模型后端。Anthropic 的消费者条款将程序化访问保留给 API 密钥,称你不得“通过自动化或非人类手段,无论是通过机器人、脚本还是其他方式”访问服务。以这种方式驱动 CLI 是否属于该句子的范围,是 Anthropic 的判断,而非本 README 的判断。

请以你自己计划的条款和使用政策作为此处所写任何内容的权威依据。特别是:

- 对于无人值守、高流量或生产流量,优先使用 API 密钥和 HTTP 提供商。此插件适合你原本会在 Claude Code 中手动运行的工作。
- 转售访问权限、为他人请求提供服务,以及评估模型以构建竞争产品,无论你使用何种凭证,均分别被禁止。

开发

npm test          # 单元测试,无需 CLI 或令牌
npm run test:e2e  # 真实 CLI,消耗真实令牌
npm run typecheck
npm run build     # 生成 lib/,以便插件在已发布的 dsh 下加载

src/ 是源码启动(pnpm dsh,通过 tsx 运行)所加载的内容;lib/ 是已发布的 dsh 在纯 Node 下运行时所加载的内容。npm run build 从前者生成后者,prepare 在安装时运行它。

当未安装 claude 时,e2e 测试套件会自动跳过。它涵盖带使用顺序的文本流式传输、带有效 JSON 参数的原生工具调用、调用方中止,以及不支持字段的拒绝。

| 模块 | 职责 |
|---|---|
| src/index.ts | 插件入口:配置 schema、适配器注册。 |
| src/adapter.ts | LlmAdapter 实现、调用组装、模型元数据。 |
| src/cli.ts | 进程生命周期:行分帧、空闲看门狗、中止、拆除。 |
| src/protocol.ts | CLI 的 stream-json 词汇表,在进程边界处解析。 |
| src/translate.ts | 线路事件 → 测试框架 StreamChunk 协议。 |
| src/render.ts | 测试框架历史 → 一个 CLI 用户轮次。 |
| src/tools.ts | 工具 schema → MCP 桥接规范,以及工具名称还原。 |
| src/models.ts | 建议性模型目录和推理努力级别。 |
| src/failure.ts | CLI 失败 → 提供商中立的 LlmFailure 代码。 |
| bridge.mjs | CLI 启动的 stdio MCP 服务器。 |

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群