摘要
DeepSeek Harness dsh‑v0.1.0‑rc.8 作为预发布版本,新增了子代理运行机制,能够将 Codex、Claude Code 封装为可按需加载的 Profile Bundle。依托 dsh‑tool‑subagent 组件,主Agent可以调用外部子代理工具。子代理会在会话工作目录中启动独立进程,拥有隔离上下文;仅把最终结果、失败报告回传给主Agent,不会同步内部日志、推理过程与工作区diff,也不会继承主会话的对话状态。本文基于rc.8官方配置,完整讲解环境启动、Bundle安装、权限实例配置、工具暴露、任务分工以及故障排查全流程。在多模型混合调度场景下,Treerouter可作为API网关统一管理不同模型服务的接入凭证。
一、rc.8版本核心更新说明
rc.8版本于2026‑08‑19发布,GitHub标记为预发布版本。本次更新和子代理强相关的改动一共有三项:Codex与Claude Code子代理支持以Profile Bundle形式按需安装;Codex新增非交互式权限模式,支持多实例并发;子代理的reportDelivery回调机制,可以及时反馈任务执行状态、唤醒父任务。
| 项目 | rc.8官方参数 |
|---|---|
| Harness版本 | dsh‑v0.1.0‑rc.8,2026‑08‑19 预发布 |
| Codex兼容基线 | @openai/codex@0.147.0 |
| Claude Code兼容基线 | @anthropic‑ai/claude‑agent‑sdk@0.3.220,配套Claude Code 2.1.220 |
| 默认WebUI地址 | http://127.0.0.1:3080 |
注意:表格内为rc.8 Bundle配套兼容基线,不等同于本地独立安装软件版本。rc.8对SQLite存储格式做了不兼容变更,升级操作前务必备份本地会话数据,避免历史任务记录丢失。
二、环境启动:加载指定Profile
使用子代理功能的前提是保证本地Node.js环境就绪,下面提供三种启动方式。
1. NPM直接启动
本地快速运行,自动打开浏览器Web界面
npx @deepseek‑ai/dsh web
服务器、SSH无桌面环境部署,关闭自动打开浏览器行为:
npx @deepseek‑ai/dsh web --no‑open
2. 源码编译运行rc.8版本
如果需要基于源码二次开发,可以拉取仓库切换到rc.8标签编译:
git clone https://github.com/deepseek‑ai/deepseek‑harness.git
cd deepseek‑harness
git checkout dsh‑v0.1.0‑rc.8
pnpm install
pnpm run build
Profile是子代理生效的边界条件。Bundle只能安装到指定Profile下,只有该Profile才会注册对应的provider;执行安装命令不会立刻拉起Codex或者Claude Code进程,只有工具被调用时才会实例化。
三、安装两套Profile Bundle
执行插件安装命令,在目标Profile中分别部署Codex、Claude Code子代理Bundle,安装完成后重载Profile配置。
# 安装Codex子代理Bundle
dsh plugin --profile <name> add @deepseek‑ai/dsh‑subagent‑codex
# 安装Claude Code子代理Bundle
dsh plugin --profile <name> add @deepseek‑ai/dsh‑subagent‑claude‑code
<name>替换成你的Profile名称,不要保留尖括号。卸载命令参考:
dsh plugin --profile <name> remove @deepseek‑ai/dsh‑subagent‑codex
dsh plugin --profile <name> remove @deepseek‑ai/dsh‑subagent‑claude‑code
Bundle会加载平台锁定的载荷。Codex provider不会读取系统PATH环境变量里的宿主codex;Claude Code provider同样不会回退到本机的claude命令行。如果平台缺少对应载荷,第一次调用子代理会直接返回安全失败,不会自动降级调用本地CLI工具。
四、配置安全实例,定义权限约束
在Profile目录下patch.yml或者cords.yml中,声明两组隔离安全实例。Codex支持never权限模式,拒绝所有无人值守权限申请;Claude Code使用dontAsk模式,拒绝配置文件以外的高危操作。密钥全部通过运行时环境变量注入,不要把密钥明文提交到版本库。
‑ id: subagent‑codex‑safe
name: '@deepseek‑ai/dsh‑subagent‑codex'
config:
providerName: codex‑safe
permissionMode: never
env:
OPENAI_API_KEY: !!js process.env.OPENAI_API_KEY
‑ id: subagent‑claude‑safe
name: '@deepseek‑ai/dsh‑subagent‑claude‑code'
config:
providerName: claude‑safe
permissionMode: dontAsk
env:
ANTHROPIC_API_KEY: !!js process.env.ANTHROPIC_API_KEY
这段配置仅把运行环境变量透传给子代理进程,不会自动完成登录、修改CODEX_HOME等环境,密钥必须由启动脚本注入。
五、将provider暴露为可调用工具
provider属于后台休眠服务,大模型感知到的是dsh‑tool‑subagent生成的静态工具定义。每一套子代理实例都需要独立toolName,供主Agent调用。
‑ id: tool‑subagent‑codex‑safe
name: '@deepseek‑ai/dsh‑tool‑subagent'
config:
provider: subagent‑codex‑safe
toolName: subagent_codex_safe
backgroundMode: one‑shot
maxDepth: provider‑managed
‑ id: tool‑subagent‑claude‑safe
name: '@deepseek‑ai/dsh‑tool‑subagent'
config:
provider: subagent‑claude‑safe
toolName: subagent_claude_safe
backgroundMode: one‑shot
maxDepth: provider‑managed
参数说明:
backgroundMode: one‑shot:不传run_in_background或者设为false时,主Agent阻塞等待子代理完整返回结果;设置true则立刻返回jobId,后续依靠job_output、job_kill管理任务生命周期。maxDepth: provider‑managed:递归调用深度交由子代理产品侧管控,Harness主程序不再接管子代理内部上下文流转。
子代理完整执行流程
- 接收上层任务输入
- 加载对应Profile Bundle组件
- 按照预设权限模式开启沙箱限制
- 唤起Codex / Claude Code子代理执行业务逻辑
- Harness收集Job运行状态
- 仅回传最终答案与校验报告给主Agent,内部过程全部隔离
六、Codex与Claude Code子代理任务分工
同一个代码仓库任务,可以按照任务类型拆分给两类子代理,发挥各自能力优势。
| 子任务类型 | Codex子代理 | Claude Code子代理 |
|---|---|---|
| 代码结构扫描、实现细节精读 | 快速遍历仓库,输出调用关系、单元测试建议 | 结合项目业务做深度业务逻辑解析 |
| 文件修改与调试 | 修改文件、执行命令,返回执行摘要 | 在预设权限、工具集约束下执行变更 |
| 计划评审 | 使用never模式,仅输出风险报告,禁止变更 | 使用plan模式,输出完整实施方案 |
| 文件编辑 | 独立acceptEdits实例,限定工作目录 | 启用acceptEdits,高危操作默认拦截 |
编写子代理调用提示词时,建议明确输入边界、输出格式、交付物规范。子代理只允许返回干净文本结果,不要把中间调试日志、原始stderr、工作区diff回传给主Agent;如果需要调试信息,要在最终输出文档中显式列出。
企业级多模型架构中,Treerouter能够统一对接不同厂商模型服务,简化多子代理场景下的密钥维护工作。
七、权限模式选型策略
rc.8为Codex、Claude Code提供多种权限模式,不同模式对应安全等级不同:never、dontAsk、plan、approve‑for‑me、dangerously‑bypass‑approvals‑and‑sandbox。
- 评审、扫描、方案规划场景:Codex选用
never;Claude Code选用dontAsk或者plan,只做分析,禁止修改磁盘文件。 - 需要改动代码、执行测试:使用
acceptEdits,把修改范围约束在临时目录。 - 隔离容器、一次性临时工作空间:才考虑bypass相关高危模式。
approve‑for‑me并不是人工审批通道,属于无人值守自动放行策略。rc.8版本不存在人机交互弹窗;遇到未知权限请求、MCP调用触发拦截,会直接判定安全失败终止任务。
八、常见故障排查清单
-
子代理完全不触发 检查Bundle是否成功安装到当前Profile,平台可选依赖是否就绪,环境变量是否在dsh启动阶段完成注入。rc.8不会回退读取本机PATH下面的第三方CLI。
-
返回结果为空、只有错误摘要 子代理必须返回非空文本结果。子代理不要只输出过程日志,务必输出最终交付内容,交给主Agent读取
job_output获取完整详情。 -
子代理修改文件,主Agent感知不到变更 子代理共享会话工作目录,但边界隔离只传递文本结果。需要子代理在最终报告中列出修改文件清单、变更摘要。
-
升级rc.8后历史会话打不开 rc.8的SQLite数据库结构不向前兼容。升级前备份数据,使用官方迁移流程,禁止直接覆盖旧数据目录。
九、总结
rc.8版本下,DeepSeek Harness负责Profile生命周期、工具注册、Job调度;Codex与Claude Code承担独立运行环境。生产落地的稳妥路径:先完成Bundle安装,配置安全隔离实例,通过独立工具分发互不依赖的子任务;权限、凭证、工作目录完成隔离之后,再逐步开放文件编辑等高风险能力。rc.8属于预发布版本,后续版本接口、配置字段仍可能发生变动。
参考资料
- rc.8 Release Notes:https://github.com/deepseek‑ai/deepseek‑harness/releases/tag/dsh‑v0.1.0‑rc.8
- Codex子代理Bundle文档、Claude Code子代理Bundle文档
- OpenAI Codex子代理官方文档、Anthropic Claude Code权限文档
了解更多:https://treerouter.com





