前言¶
在 DeepSeek Harness(DSH)里用 Agent 做编码或改仓库时,常见做法是让主模型直接调工具、读写文件。另一种路径是:主代理只负责理解需求、拆任务和汇报,真正改代码、跑命令交给专用子代理——例如本机的 Claude Code。
dsh-claude-code-delegate(维护者 lidaqi001,SkillHub 目录,GitHub)是分类为「工作流」的 Agent preset 插件:新建会话时选 Claude Code 委托,主代理只做调度,每个实际任务通过 subagent_claude_code 交给 Claude Code 子代理执行,再把结果汇报给你。
数据流可以概括如下:
你 → 主代理(调度器) → subagent_claude_code → Claude Code(真正干活) → 主代理汇报 → 你
下面介绍它解决什么问题、装了什么、以及如何安装与验证。
这是什么¶
插件全名 dsh-claude-code-delegate(包版本见仓库 package.json,当前资料为 1.2.0)。官方简介:DeepSeek Harness agent preset,会把每个任务委派给 Claude Code 子代理,主侧只调度与汇报。
许可证 MIT;DSH 引擎要求 >=0.2.1 <0.3.0-0。依赖 @deepseek-ai/dsh-subagent-claude-code,dsh plugin add 时会一并安装,无需再单独启用全局 Claude Code bundle(手动启用也不冲突:本插件使用专用 provider 名称)。
核心功能¶
preset 里的工具¶
preset 只向 Agent 注册两个工具:
| 工具 | 作用 |
|---|---|
subagent_claude_code |
唯一执行入口,走本插件注册的专用 provider |
ask_user_question |
需求有关键歧义时先问用户 |
profile 级全局工具(如 working_directory、MCP、插件管理)对 preset 中的 Agent 仍可见;当前主要靠 persona 约束主代理不去用它们。若需要硬隔离,需另做 Agent 级的 ctx.tools.restrict() 类插件,且在 preset 作用域调用 restrict() 会连 preset 自注册工具一起隐藏,gate 须按 Agent 作用域实现。
主代理角色¶
系统提示词(complete: true)把主代理定义为调度器:判断是否该动手、写自包含任务说明、一次只派一件事、等待完成、汇报结果,并区分「子代理报告完成」与「已验证」。纯寒暄或对结果的简短追问可直接回答,其余一律委派。同时挂了 compaction 组,长会话会压缩上下文。
Claude Code 子代理是一次性外部子代理:看不到会话历史、不能追加消息、结束后不能恢复,因此任务说明必须自包含;persona 已要求主代理按此书写。
如何挂进 Cordis¶
cordis.patch.yml 插入两行:
- Host 行
subagent-claude-code-delegate:专用 Claude Code provider(providerName: claude-code-delegate,默认permissionMode: auto),不注册全局工具。 - preset 行
preset-claude-code:声明 presetclaude-code;preset 内的subagent_claude_code与全局同名工具按 Agent 作用域遮蔽全局项,从而落到专用 provider。
安装与启用¶
前置条件¶
- 本机 Claude Code 已完成登录;认证与原生设置以 Claude 的
settings.json/~/.claude.json为准,本插件不会代登录或改写这些文件。 - DSH 版本满足包的
engines.dsh。 - 依赖子包会随
dsh plugin add安装,本插件 patch 自注册专用 provider。
安装命令¶
CLI(将 <profile> 换成你的 profile 名):
dsh plugin --profile <profile> add dsh-claude-code-delegate
或在 Web/Desktop 的 插件 页面安装(plugin_manager 的 install_bundle,target 为 dsh-claude-code-delegate)。
安装后新建会话,在模式列表中选择 Claude Code 委托。
配置¶
在本机 profile 的 cordis.patch.yml 里按行 id 覆盖,不必改插件包内文件:
- id: subagent-claude-code-delegate
name: '@deepseek-ai/dsh-subagent-claude-code'
config:
providerName: claude-code-delegate # 改了必须同步下面 preset 里的 provider
permissionMode: auto # dontAsk | acceptEdits | auto | plan | bypassPermissions
# model: '<claude-model-id>' # 固定 Claude Code 使用的模型,省略则用 Claude 原生设置
permissionMode 含义简述:
| 值 | 行为 |
|---|---|
dontAsk |
不弹提示,未预授权操作直接拒绝(最保守) |
acceptEdits |
自动接受文件编辑,其余权限拒绝 |
auto |
由 Claude Code 原生分类器逐项裁决(默认;不是沙箱,仍可能读写与执行命令) |
plan |
只出计划,不执行 |
bypassPermissions |
跳过所有权限检查,风险最高 |
修改后重新应用配置层(重启应用,或 profile 启用 HMR 时热重载);preset 变更只影响之后新建的会话。
典型用法与验证¶
三层检查¶
任意一层不对就停在该层排查:
- 行激活:
plugin_manager→list_plugins,确认subagent-claude-code-delegate与preset-claude-code均为enabled: true、fiberPhase: active。 - preset 已注册:
cordis_inspect_query→Config.listConfigs(name 过滤@deepseek-ai/dsh-agent-preset),应能看到preset-claude-code。 - 真实委派:新建会话选「Claude Code 委托」,派一个无害任务(例如在临时文件写一行再读回),确认存在
subagent_claude_code、子代理有返回且主代理完成汇报。
常见故障¶
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 模式列表无「Claude Code 委托」 | 插件未启用或 preset 行挂载失败 | 重做第 1、2 步 |
主代理称无 subagent_claude_code |
provider 包未解析或 Host 行未激活 | list_plugins 查 subagent-claude-code-delegate |
| 委派失败,诊断指向 query-start | Claude Code 未登录 / SDK 缺失 / 平台不支持 | 终端执行 claude 确认可登录 |
| 能读不能写、跑不了命令 | permissionMode 过保守 |
改为 auto 或接受限制 |
适用场景与注意¶
适合谁:你已经在 DSH 里用 DeepSeek 等主模型对话,但希望编码与仓库操作统一交给本机 Claude Code,由主代理只做任务分解与结果汇总;且能接受子代理单次、无历史的一次性调用模型。
安全与权限:插件随当前 DSH 进程权限运行;子代理实际能力受 Claude Code 与本机 permissionMode 约束。安装前建议浏览仓库源码与 MIT 许可证。bypassPermissions 不建议日常使用。
卸载:
dsh plugin --profile <profile> remove dsh-claude-code-delegate
或使用 plugin_manager 的 remove_bundle。
官方包版本变化后,建议先派无害任务做一次冒烟验证。开发侧可用 npm test 做静态 smoke test。
结尾¶
dsh-claude-code-delegate 把 DSH 会话收成「调度 + Claude Code 执行」两层:主代理少碰工具,实活交给 subagent_claude_code。安装用官方 bundle 名 dsh-claude-code-delegate,选模式 Claude Code 委托 即可试用。
- 目录页:https://www.skillhub.cn/plugins/lidaqi001/dsh-claude-code-delegate
- 仓库:https://github.com/lidaqi001/dsh-claude-code-delegate
SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;星标与版本以各站点页面与 package.json 为准。