DeepSeek Harness 的 dsh-v0.1.0-rc.8 是一个预发布版本,它把 Codex 和 Claude Code 做成可按需安装的 Profile Bundle,并通过 dsh-tool-subagent 暴露为可调用的子代理工具。两种子代理都会在父会话的工作目录中启动一次全新的产品进程和独立上下文,只把最终答案或安全失败诊断交回父 Agent;它们不会继承父对话,也不会自动把过程日志、推理或工作区 diff 复制回去。本文以 rc.8 的官方配置为准,演示安装、权限选择、命名实例和前台/后台调用。

rc.8 到底新增了什么

rc.8 于 2026 年 8 月 19 日发布,GitHub 将其标为 prerelease。Release Notes 明确列出三项与本教程直接相关的变化:Claude Code 与 Codex 子代理可以作为 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

默认 Web UI

http://127.0.0.1:3080

这些版本号是 rc.8 Bundle 的兼容性证据,不代表你在系统中单独安装的产品版本。rc.8 还提示 SQLite 存储格式发生不兼容变化,升级前应备份会话数据。

第一步:启动指定 Profile

先确认 Node.js 可用,然后启动 Harness。官方 README 给出的本地启动命令是:

默认会打开 http://127.0.0.1:3080。在服务器或 SSH 环境中可以使用:

如果你需要从源码运行 rc.8 对应的仓库版本:

Profile 是子代理可用性的边界。Bundle 被安装到哪个 Profile,只有哪个 Profile 会注册对应的 provider;安装动作本身不会启动 Codex 或 Claude Code 进程。

第二步:安装两个 Profile Bundle

在目标 Profile 中分别安装两个 Bundle,然后重启该 Profile:

是你的 Profile 名称,不要把尖括号原样复制进命令。卸载时使用:

Bundle 会带入经过锁定的平台载荷。Codex provider 不解析 PATH 中的宿主 codex,Claude Code provider 也不回退到宿主 claude;缺少当前平台载荷时,第一次委派会安全失败,而不是悄悄调用另一份 CLI。

第三步:先配置安全实例

在 Profile 的 patch 或 cordis.yml 中,先只挂载两个安全实例。Codex 的 never 会拒绝无人值守权限请求;Claude Code 的 dontAsk 会拒绝尚未在设置中允许的操作。

这段配置只把运行时环境变量显式传给子进程,不会替你登录、创建 CODEX_HOME 或修改 Claude 设置。密钥应由启动环境注入,不要写进提交到 Git 的 YAML。

第四步:把 provider 暴露成工具

Provider 只是休眠的运行后端,模型真正看到的是 dsh-tool-subagent 创建的静态工具。每个工具必须有独立的 toolName:

backgroundMode: one-shot 的含义是:省略 run_in_background 或传入 false 时,父 Agent 等待最终答案;传入 true 时,调用立即返回 Job ID,之后由 job_output、完成通知或 job_kill 管理任务。maxDepth: provider-managed 表示递归深度由产品提供方负责,Harness 不把自己的上下文强行塞进产品子代理。

Codex 与 Claude Code 怎么分工

同一个仓库任务可以按证据类型拆给不同子代理:

子任务

Codex 子代理

Claude Code 子代理

代码结构扫描

快速读取仓库、列出入口和测试

结合项目设置做深度分析

实现与测试

修改文件、运行命令并返回最终摘要

在已有 Claude 设置和工具授权下执行

计划评审

使用 never,只允许报告风险

使用 plan,只返回完整计划

文件编辑

使用独立 acceptEdits 实例并限定目录

使用 acceptEdits,其余权限仍由无人值守回调拒绝

推荐的父任务提示词要包含输入、边界和交付格式:

父 Agent 只会收到每个子代理的最终文本。不要期待父会话直接看到子代理的推理、工具活动、原始 stderr 或工作区 diff;需要这些证据时,应让子代理把路径、命令和验证结果写进最终答案,或让父 Agent 重新检查工作区。

如果团队需要统一模型入口,可以把七牛云AI大模型广场作为一个事实性的 API 来源,再由 Profile 负责绑定 Codex 或 Claude Code 子代理;模型入口和子代理运行时仍应分开管理。

权限模式怎么选

Codex rc.8 provider 支持三种模式:never、approve-for-me 和 dangerously-bypass-approvals-and-sandbox。Claude Code provider 支持 dontAsk、acceptEdits、auto、plan 和 bypassPermissions。实际选择可以遵循下面的顺序:

  1. 评审、扫描、规划:Codex 用 never,Claude Code 用 dontAsk 或 plan。

  2. 需要改测试或文档:使用 acceptEdits,把工作目录限制在临时分支。

  3. 只有在隔离容器、临时凭证和可丢弃工作区中,才考虑 bypass 模式。

approve-for-me 和 auto 都不是人工审批通道,而是无人值守决策。rc.8 的提供方没有用户交互路径;未知权限请求、MCP elicitation 或阻塞式询问会被拒绝并转为安全失败。

常见故障排查

第一次委派就失败: 先检查 Bundle 是否安装到当前 Profile、当前平台的 optional dependency 是否存在,以及环境变量是否在启动 dsh 前注入。rc.8 不会回退到 PATH 中的宿主 CLI。

结果为空或只有错误摘要: 子代理必须返回非空的最终文本。把“请只返回最终报告,不要只写过程”写进任务,并让父 Agent 检查 job_output 的状态和 detail。

文件改了但父 Agent 不知道: 这是预期行为。子代理共享父会话 cwd,但结果边界只传最终文本。让子代理在最终答案中列出修改文件和验证命令,再由父 Agent 检查 git diff。

升级后会话打不开: rc.8 的 SQLite 数据结构不兼容。先备份数据,再按官方迁移说明处理,不要直接覆盖旧数据目录。

结论与参考资料

在 rc.8 中,DeepSeek Harness 负责 Profile、工具和 Job 生命周期,Codex 与 Claude Code 负责各自的原生执行环境。最稳妥的落地方式是先安装 Bundle、配置只读实例,再用命名工具分派互不依赖的子任务;只有在权限、凭证和工作目录都隔离后,才逐步开放编辑能力。本文基于 2026-08-19 发布的 dsh-v0.1.0-rc.8,预发布版本仍可能发生兼容性变化。