前言¶
在 DeepSeek Harness(DSH)里做模型推理或复杂编码任务时,常见做法是挂官方子代理包、固定 SDK 版本,或自己拼子进程。另一条路是直接把任务交给本机已安装的 Claude Code 命令行:每次调用单独起进程,按次选模型和 effort,不绑死 SDK 版本,由用户自行 claude update 维护启动器。
本文介绍社区插件 dsh-claude-delegate(维护者 lcf2212dev,分类:模型推理)。它以独立 bundle 形式只暴露一个工具 claude_delegate,通过宿主机的 claude -p 启动无人工值守的 Claude Code 会话,不依赖 @deepseek-ai/dsh-subagent-claude-code,也不依赖固定子代理实例或钉死的 SDK。
这是什么¶
- 包名:
@dsh-burn-plugins/dsh-claude-delegate(版本 0.1.0,MIT) - 仓库:lcf2212dev/dsh-claude-delegate
- 目录页:SkillHub 插件页
插件解决的是:在 DSH 会话里需要「另开一个 Claude Code 干活」时,如何用最少依赖、可调模型与 effort 的方式委派任务,且临时目录与鉴权行为可预期。
核心功能¶
单次调用 = 一个子进程¶
每次工具调用等价于在宿主机执行一次 Claude Code 打印模式,大致形态如下(实际参数由插件组装):
claude -p <task> --model <opus|sonnet|haiku> --effort <low|medium|high|xhigh|max> \
--dangerously-skip-permissions --output-format json --no-session-persistence
要点(均来自 README):
- 默认放行权限:未设
readOnly时使用--dangerously-skip-permissions;readOnly: true时改为--permission-mode plan(不编辑、不跑需审批的命令)。 model/effort可按调用覆盖:未传时用 profile 行配置里的默认值。- 鉴权:默认
isolateCredentials: true,会去掉环境中的ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、CLAUDE_CODE_OAUTH_TOKEN、CLAUDE_CODE_API_KEY,让本机 OAuth 登录优先生效;若要用 API Key,可设isolateCredentials: false并在env里传入。 - 独立临时目录:设置
CLAUDE_CODE_TMPDIR(默认~/.cache/claude-delegate),减轻多用户下/tmp/claude-$UID归属问题。 - 工作目录:默认为会话 workspace,也可在调用参数里指定绝对路径
cwd。 - 取消:可终止子进程树(SIGTERM,约 3 秒后 SIGKILL)。
- 无内置超时:
timeoutMs为 0 时不封顶;调用会阻塞直到子进程结束或被取消。
工具参数 claude_delegate¶
| 参数 | 说明 |
|---|---|
task |
必填;自给自足的任务描述,子会话看不到父对话 |
model |
opus | sonnet | haiku |
effort |
low | medium | high | xhigh | max(模型可能 clamp 不支持的档位) |
cwd |
绝对路径;省略则用会话 workspace |
readOnly |
默认 false;true 时只读/规划模式 |
明确不提供的功能¶
- 单次执行:无续聊、resume、流式或父上下文带入。
- 父智能体需等待子进程结束(可在 UI 取消)。
- 若
claude update改了 CLI 旗标(如--effort、--no-session-persistence),需自行改插件源码中的参数数组(README 指向index.js)。
安装与启用¶
官方 README 未提供 dsh plugin add github:... 一类命令;安装方式为在 profile 里 link 本地包路径 并加入 bundles。下面步骤照 README 原文。
- 在 profile 的
package.json(例如~/.dsh/profiles/desktop/package.json)中 link 包:
"@dsh-burn-plugins/dsh-claude-delegate": "link:/path/to/dsh-claude-delegate"
将 /path/to/dsh-claude-delegate 换成本地已有源码目录的实际路径(非 git clone 步骤;你需自行取得代码目录)。
-
在
dsh.profile.bundles中加入@dsh-burn-plugins/dsh-claude-delegate。 -
在该 profile 下执行
pnpm install(会在node_modules/@local下创建 symlink)。 -
HMR 会重组 profile,下一次模型请求时工具才会出现。
依赖:peer 需要 @deepseek-ai/dsh-tools(>=0.2.2-rc.1)与 @deepseek-ai/schemastery(>=3.19.0 <4)。要求:宿主机已安装 claude 并已登录(订阅),或在关闭凭证隔离后通过 env 提供密钥;不要再装 @deepseek-ai 子代理包。
配置(profile 行 claude-delegate)¶
在 profile patch(如 ~/.dsh/profiles/desktop/cordis.patch.yml)中覆盖行配置即可,无需改插件仓库。注意:config 整块替换行配置,未写字段回落到默认。
| 字段 | 默认 | 含义 |
|---|---|---|
command |
claude |
Claude Code 启动器;若 PATH 上有 wrapper 建议写绝对路径 |
model |
opus |
调用未传 model 时的别名 |
effort |
high |
调用未传 effort 时的档位 |
tmpDir |
空则 ~/.cache/claude-delegate |
导出为 CLAUDE_CODE_TMPDIR |
env |
{} |
叠在宿主环境之上的额外环境变量 |
timeoutMs |
0 |
声明式单次上限;0 表示不限制 |
isolateCredentials |
true |
去掉环境里的 Ambient 凭证以走订阅登录 |
示例:
- id: claude-delegate
name: "@dsh-burn-plugins/dsh-claude-delegate"
config:
command: /absolute/path/to/claude
model: sonnet
effort: medium
典型用法思路¶
DSH 模型在对话中调用 claude_delegate 时,传入完整 task 字符串;需要省 token 或只读摸底时设 readOnly: true;需要 Sonnet + 中等 effort 时在参数里写 model / effort,不必改全局配置。
子进程使用 JSON 输出格式返回,父会话据此继续编排。因无会话持久化与续聊,适合「一块独立子任务」(例如单独目录下的重构草案、只读架构扫描),不适合替代同一会话里多轮协作的 Claude Code 窗口。
适用场景与注意¶
适合:本机已用 Claude Code 订阅/OAuth;希望在 DSH 里按需把任务甩给 Claude,且每次可选 Opus/Sonnet/Haiku 与 effort;不想维护官方子代理 bundle 与 SDK 版本对齐。
注意:
- 插件以当前 DSH 进程的用户与权限运行子进程;默认跳过权限确认,启用前请阅读仓库源码与 MIT 许可证,理解
--dangerously-skip-permissions的风险。 - SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系;星标与传播数据以站点为准,安装前自行核对仓库归属(lcf2212dev)。
- 阻塞式调用会占用父智能体等待时间;长跑任务依赖 UI 取消或自行设置
timeoutMs(若配置生效语义以插件实现为准)。 - 仅 link 安装时,路径与 patch 由你本地 profile 管理,团队复现需共享同一套 profile 约定。
结尾¶
dsh-claude-delegate 把 DSH 里的「委派给 Claude Code」收成 一个工具、一次进程、按次选模型与 effort,直连宿主 claude -p,避免钉死 SDK。若你的环境已经习惯本机 Claude Code 更新节奏,又要在 Harness 里偶发 offload 子任务,可以按 README 的 link + bundles 方式接入。
- 目录页:https://www.skillhub.cn/plugins/lcf2212dev/dsh-claude-delegate
- GitHub:https://github.com/lcf2212dev/dsh-claude-delegate