
1. 为什么要在 rc.8 里折腾子代理DeepSeek Harness 的dsh-v0.1.0-rc.8是一个预发布版本它把 Codex 和 Claude Code 做成了可按需安装的 Profile Bundle再通过dsh-tool-subagent暴露成模型能直接调用的子代理工具。简单说你可以在一个父会话里把「扫代码结构」和「复核权限边界」这两类活分别丢给两个独立进程去干父 Agent 只收最终结论。适合谁适合本地多代理协同开发、想让 Codex 和 Claude Code 各管一段、又不想让它们互相污染上下文的开发者。我试过把同一个仓库任务拆给两个子代理最大的感受是它们不会继承父对话也不会自动把过程日志、推理或工作区 diff 复制回来。每个子代理都在父会话的工作目录里启动一次全新的产品进程和独立上下文只把最终答案或安全失败诊断交回父 Agent。这意味着配置骨架必须写对否则第一次委派就会安全失败而不是悄悄回退到宿主 CLI。rc.8 于 2026 年 8 月 19 日发布GitHub 标为 prerelease。Release Notes 里三项变化和本教程直接相关Claude Code 与 Codex 子代理可作为 Profile Bundle 按需安装Codex 增加非交互权限模式和多个命名实例子代理的reportDelivery会及时反馈并唤醒父任务。下面按「前置准备 → config.toml 骨架 → 启动验证 → 排障」的顺序落地。2. TaoToken 前置统一 Key 与 API 通道子代理要跑起来模型入口和子代理运行时得分开管理。我的做法是用 TaoToken 做统一 Key/API 通道Profile 只负责绑定 Codex 或 Claude Code 子代理。这样换模型、换 Key 不用动子代理配置。先拿到统一 Key。打开官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册后在控制台创建 API Key。控制台地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteKey 管理页在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite。API 基址用https://taotoken.net/api注意这个地址不加 UTM 参数。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里面有各语言的调用示例。如果你只是想先验证模型通不通可以直接用模型对话页https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite发一条消息试试。注意密钥应由启动环境注入不要写进提交到 Git 的 YAML。rc.8 的配置只把运行时环境变量显式传给子进程不会替你登录、创建CODEX_HOME或修改 Claude 设置。长期跑编码和 Agent 任务的话Coding Plan 更划算入口在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite。Claude Code 相关的接入说明在https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-codeutm_campaignrewrite。3. 可复制的 config.toml 配置骨架3.1 启动指定 Profile先确认 Node.js 可用然后启动 Harness。官方 README 给出的本地启动命令是npx deepseek-ai/dsh web默认会打开http://127.0.0.1:3080。在服务器或 SSH 环境中用npx deepseek-ai/dsh web --no-open如果你要从源码跑 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 pnpm dsh webProfile 是子代理可用性的边界。Bundle 被安装到哪个 Profile只有哪个 Profile 会注册对应的 provider安装动作本身不会启动 Codex 或 Claude Code 进程。3.2 安装两个 Profile Bundle在目标 Profile 中分别安装两个 Bundle然后重启该 Profiledsh plugin --profile name add deepseek-ai/dsh-subagent-codex dsh plugin --profile name add deepseek-ai/dsh-subagent-claude-code dsh --profile name把name换成你的 Profile 名称不要把尖括号原样复制进命令。卸载时用dsh plugin --profile name remove deepseek-ai/dsh-subagent-codex dsh plugin --profile name remove deepseek-ai/dsh-subagent-claude-codeBundle 会带入经过锁定的平台载荷。Codex provider 不解析 PATH 中的宿主codexClaude Code provider 也不回退到宿主claude缺少当前平台载荷时第一次委派会安全失败而不是悄悄调用另一份 CLI。3.3 先配置安全实例在 Profile 的 patch 或cordis.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这段配置只把运行时环境变量显式传给子进程。如果你用 TaoToken 做统一通道把对应的 Key 注入到启动环境即可Profile 侧不用改结构。3.4 把 provider 暴露成工具Provider 只是休眠的运行后端模型真正看到的是dsh-tool-subagent创建的静态工具。每个工具必须有独立的toolName- id: tool-subagent-codex-safe name: deepseek-ai/dsh-tool-subagent config: provider: 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: claude-safe toolName: subagent_claude_safe backgroundMode: one-shot maxDepth: provider-managedbackgroundMode: one-shot的含义是省略run_in_background或传入false时父 Agent 等待最终答案传入true时调用立即返回 Job ID之后由job_output、完成通知或job_kill管理任务。maxDepth: provider-managed表示递归深度由产品提供方负责Harness 不把自己的上下文强行塞进产品子代理。3.5 Codex 与 Claude Code 怎么分工同一个仓库任务可以按证据类型拆给不同子代理子任务Codex 子代理Claude Code 子代理代码结构扫描快速读取仓库、列出入口和测试结合项目设置做深度分析实现与测试修改文件、运行命令并返回最终摘要在已有 Claude 设置和工具授权下执行计划评审使用never只允许报告风险使用plan只返回完整计划文件编辑使用独立acceptEdits实例并限定目录使用acceptEdits其余权限仍由无人值守回调拒绝推荐的父任务提示词要包含输入、边界和交付格式请把当前仓库的登录流程拆成两个独立检查 1. 用 subagent_codex_safe 找入口、调用链和现有测试只读不改文件 2. 用 subagent_claude_safe 复核权限边界和失败路径只读不运行外部写操作。 等待两个结果后合并为一份 Markdown 报告列出文件路径、证据、风险等级和下一步建议。父 Agent 只会收到每个子代理的最终文本。不要期待父会话直接看到子代理的推理、工具活动、原始 stderr 或工作区 diff需要这些证据时应让子代理把路径、命令和验证结果写进最终答案或让父 Agent 重新检查工作区。4. 启动验证与子代理调用检查配置写完后按这个顺序验证别跳步。第一步确认 Profile 已加载 Bundle。重启 Profile 后在 Harness 的 Web UI 里看工具列表应该能看到subagent_codex_safe和subagent_claude_safe两个工具名。如果看不到说明 Bundle 没装到当前 Profile或者平台载荷缺失。第二步发一个只读任务试水。用上面那段父任务提示词观察两个子代理是否都返回了非空最终文本。Codex 侧应该给出入口文件和调用链Claude Code 侧应该给出权限边界和失败路径。第三步检查 Job 状态。如果用了run_in_background: true调用会立即返回 Job ID用job_output查状态和 detail。reportDelivery会在子代理完成时唤醒父任务所以父会话不会一直卡着。第四步验证工作区。子代理共享父会话 cwd但结果边界只传最终文本。让子代理在最终答案里列出修改文件和验证命令再由父 Agent 检查git diff。这一步能确认「文件改了但父 Agent 不知道」是不是预期行为。如果你在验证模型通道本身可以先用模型对话页发一条简单请求确认 Key 和 API 基址没问题再回到 Harness 里跑子代理。5. 本篇常见错排查第一次委派就失败。先检查 Bundle 是否安装到当前 Profile、当前平台的 optional dependency 是否存在以及环境变量是否在启动dsh前注入。rc.8 不会回退到 PATH 中的宿主 CLI所以宿主装了codex或claude也没用。结果为空或只有错误摘要。子代理必须返回非空的最终文本。把「请只返回最终报告不要只写过程」写进任务并让父 Agent 检查job_output的状态和 detail。文件改了但父 Agent 不知道。这是预期行为。子代理共享父会话 cwd但结果边界只传最终文本。让子代理在最终答案中列出修改文件和验证命令再由父 Agent 检查git diff。升级后会话打不开。rc.8 的 SQLite 数据结构不兼容。先备份数据再按官方迁移说明处理不要直接覆盖旧数据目录。权限模式选错。Codex rc.8 provider 支持never、approve-for-me和dangerously-bypass-approvals-and-sandboxClaude Code provider 支持dontAsk、acceptEdits、auto、plan和bypassPermissions。评审、扫描、规划用 Codex 的never、Claude Code 的dontAsk或plan需要改测试或文档用acceptEdits把工作目录限制在临时分支只有在隔离容器、临时凭证和可丢弃工作区中才考虑 bypass 模式。approve-for-me和auto都不是人工审批通道而是无人值守决策未知权限请求会被拒绝并转为安全失败。工具名重复。每个dsh-tool-subagent必须有独立的toolName否则模型看到的工具会冲突调用时行为不可预期。6. 继续跑通你的子代理链路在 rc.8 中DeepSeek Harness 负责 Profile、工具和 Job 生命周期Codex 与 Claude Code 负责各自的原生执行环境。最稳妥的落地方式是先安装 Bundle、配置只读实例再用命名工具分派互不依赖的子任务只有在权限、凭证和工作目录都隔离后才逐步开放编辑能力。如果你还没配好统一 Key先去 API Keys 页创建https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite。接入细节看文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。想先验证模型通道用模型对话页https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite。长期跑编码和 Agent 任务直接上 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite。Claude Code 接入说明在https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-codeutm_campaignrewrite。本文基于 2026-08-19 发布的dsh-v0.1.0-rc.8预发布版本仍可能发生兼容性变化。跑通之后建议先把两个只读实例稳定用一周再考虑给 Codex 开acceptEdits做小范围文件编辑。