dsh-claude-cli:把本机 Claude Code CLI 接成 DSH 的 LLM provider

前言

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,例如 fableopussonnethaiku,以及完整 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 计数。
  • temperaturemaxTokensstop 不能被 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 仓库确认最新文档和配置。

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

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

小夜