前言¶
DSH 做 agent 时,通常需要一个可以持续调用的 LLM provider。如果你本机已经安装了 Claude Code CLI,并且已经登录可用,这个插件可以把本机 claude 直接接成 DSH 的 LLM provider。
它不额外要求 API key。插件把 claude 作为子进程运行,并把 CLI 的输出通过 harness 的 LLM seam 流回 DSH。DSH 仍然负责 agent 流程、会话历史和工具执行,插件只负责把模型调用接过去。
这是什么¶
- 插件名:
dsh-claude-cli - 维护者:
katsos - 许可证:MIT
- 仓库地址:
https://github.com/katsos/dsh-claude-cli - 运行依赖:PATH 中可用的
claude、Node^22.19 || >=24、带@deepseek-ai/dsh-llm的 harness
这个插件目前不在 npm 上,安装时直接指向本仓库目录。
核心功能¶
这个插件解决的是一个很具体的问题:想用本机 Claude Code CLI 的模型能力,但不希望 CLI 自己跑 agent loop、自己管工具、自己读设置、内存文件或 MCP servers。
它的主要行为包括:
1、把本地 claude 作为子进程启动,并把输出流回 DSH 的 LLM seam。
2、保持 DSH 作为 agent。CLI 自己的 agent loop、tools、settings、memory files 和 MCP servers 都被关掉,只保留由 DSH 驱动的模型调用。
3、通过 bridge.mjs 把 harness 工具声明为 MCP server,并让模型输出真实的 tool_use blocks。
4、把模型返回的 tool_use blocks 转成 harness 的 tool-call chunks。
5、工具执行仍然由 harness 负责。bridge.mjs 不执行工具。
6、模型名直接透传给 CLI。CLI 接受的 alias,例如 fable、opus、sonnet、haiku,以及完整 id,例如 claude-sonnet-5,都可以传入。
安装与启用¶
安装前确认三件事:
claude在 PATH 中可用;- Node 版本满足
^22.19 || >=24; - 当前 harness 带有
@deepseek-ai/dsh-llm。
下面是官方给出的安装命令:
dsh plugin --profile web add ../dsh-claude-cli
这里的 ../dsh-claude-cli 是相对运行命令位置的仓库路径。因为插件不在 npm 上,当前只能通过目录安装。
安装后需要重启 harness。原因是 profile 的 layer stack 在启动时读取,已经运行的 server 会继续使用启动时的组合。
重启后,模型会出现在 model picker 的 Claude Code CLI 分组下。
如果你不确定当前 dsh 命令从哪里来,可以按 harness 的安装方式选择:
- Global:
dsh … - Source checkout:
pnpm dsh … - Neither:
npx @deepseek-ai/dsh …
使用 npx 时要用 scoped 名称 @deepseek-ai/dsh。npm 上未带 scope 的 dsh 是一个不相关的 JavaScript shell。
典型用法¶
如果只是想临时跑一次,不想改动某个 profile,可以用 --patch 方式加载插件目录里的 cordis.yml:
dsh --profile headless --patch /absolute/path/to/dsh-claude-cli/cordis.yml "your task"
这里的 patch 路径需要写成绝对路径。这个方式适合快速验证,或者用于不想直接修改 profile 配置的场景。
插件支持这些配置字段:
providers
executable
cwd
streamIdleTimeoutMs
unsupportedFields
defaultEffort
extraArgs
其中 extraArgs 适合传插件自己没有建模的 CLI flags,例如:
--betas
extraArgs 会在插件自己的 flags 之前传入。如果某个条目命名了插件自己的 flags,插件加载时会拒绝。这样设计是为了避免参数顺序影响 CLI 最终解析结果。
限制与注意¶
这个插件依赖本地 CLI,而不是 HTTP API,所以有一些明确限制。
- 没有跨轮 prompt caching。每次请求都会把 harness history 渲染成一个新 turn,然后发给 CLI。这会按 Claude usage limits 计数。
temperature、maxTokens和stop不能被 CLI 原生支持。默认情况下它们会被报告为UNSUPPORTED。如果 agent preset 总是设置这些字段,可以把unsupportedFields设为ignore。- 图片不会被发送。image block 会在 transcript 中显示为一个可见 placeholder。
- 先前 reasoning 不会被重放。provider 会丢弃 history 中未签名的 thinking。
- 没有 app-attribution header 可以覆盖 CLI 自己发出的请求。
- Rate limits 跟随当前账号。订阅登录会和 interactive Claude Code sessions 共享。
这个插件不会绕过认证。请求通过官方 CLI 发出,身份就是当前 claude 已登录的身份。使用前应查看你的使用条款和 plan 限制。
对于无人值守、高吞吐或生产流量,更建议使用 API key 和 HTTP provider。这个插件更适合你本来就会手动在 Claude Code 中运行的本地工作。
另外需要注意:reselling access、为其他人提供服务、以及评估模型以构建竞争性产品,都是被禁止的。
由于插件会在当前 dsh 进程可访问的本地环境中启动 claude 子进程,安装前应检查仓库源码和 MIT 许可证,确认你信任其中会执行的逻辑。
结尾¶
dsh-claude-cli 的价值在于:它把已有本机 Claude Code CLI 的登录态,接成 DSH 可调用的一组模型 provider,同时保留 DSH 对 agent、工具和工具执行的控制权。
它适合本地调试、本地 agent 任务,或者不想再申请 API key 的临时场景。对于生产或高流量任务,仍应优先选择 API key 和 HTTP provider。
仓库地址:https://github.com/katsos/dsh-claude-cli。当前给出的资料里没有目录页 URL,建议先查看 GitHub 仓库确认最新文档和配置。