一个 Agent 预设:先让 Codex 子代理分析任务并拆出工作项,再交给 Claude Code 子代理逐项执行,会话只负责调度、核对与汇报。需要本机已安装并登录 Codex、已登录 Claude Code。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-codex-claude-pipeline
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:lidaqi001/dsh-codex-claude-pipeline
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
Codex 规划 + Claude Code 执行 —— DeepSeek Harness 的 Agent preset 插件。新建会话时选择这个模式, 会话主代理只做调度:先让 Codex 子代理分析任务、拆出工作项,再把每个工作项交给 Claude Code 子代理实际执行,最后核对结果并向你汇报。
你 → 主代理(调度器)
├─ 1. subagent_codex ──────→ Codex(只读分析、拆工作项)
└─ 2. subagent_claude_code ─→ Claude Code(逐项改文件、跑命令、自验证)
← 主代理核对、补派、汇报
它和另外两个委托模式有什么不同
| 模式 | 谁负责分析和拆解 | 谁负责执行 |
|---|---|---|
| Codex 委托 | 主代理 | Codex |
| Claude Code 委托 | 主代理 | Claude Code |
| 本模式 | Codex | Claude Code |
本模式把「想清楚」和「动手做」分给两个各自擅长的外部代理:Codex 只读分析、出计划,不碰工作区; Claude Code 拿着计划逐项执行。主代理不参与任何实际工作,只负责写清楚任务说明、在两者之间传递 信息、核对验收标准。
安装
# registry(发布后)
dsh plugin --profile <profile> add dsh-codex-claude-pipeline
# 本地开发版:直接指向目录,profile 会用 link: 依赖它,改完 patch 立即生效
dsh plugin --profile <profile> add /abs/path/to/dsh-codex-claude-pipeline
或在 Web/Desktop 的 插件 页面安装(plugin_manager 的 install_bundle,target 为包名或本地目录)。
安装后新建会话,在模式列表里选择 Codex 规划 + Claude Code 执行。已有会话不会自动切换模式;
link: 安装时不要移动或删除该目录。
前置条件
- 本机 Codex 已安装并登录(DSH 的 Codex 子代理走原生 Codex,认证与
~/.codex/config.toml都是权威来源)。 - 本机 Claude Code 已登录(原生
settings.json/~/.claude.json是认证与其它原生设置的权威来源, 本插件不会替你登录或改写这些文件)。 - DSH 版本满足本包的
engines.dsh(见package.json)。
@deepseek-ai/dsh-subagent-codex 与 @deepseek-ai/dsh-subagent-claude-code 已声明为本包的依赖,
dsh plugin add 会一并装好;本插件的 patch 自己注册专用 provider,所以不需要额外启用这两个官方
bundle。你若已经启用了它们也不冲突:它们注册的是全局 codex / claude-code provider 与全局工具,
本插件用的是另两个名字的专用 provider。
这个模式里有什么
preset 只注册两个委派工具、一个澄清工具、一个进度工具:
| 工具 / 插件 | 作用 |
|---|---|
subagent_codex |
规划入口,指向本插件注册的专用 provider codex-planner |
subagent_claude_code |
执行入口,指向本插件注册的专用 provider claude-code-executor |
ask_user_question |
需求有关键歧义时先问用户 |
todo_write |
多工作项的进度跟踪(只写会话日志) |
compaction |
长会话压缩:规划与执行结果会持续累积,避免上下文溢出 |
注意:profile 级的全局工具依然存在(例如
working_directory、MCP 工具、插件管理工具), 它们对 preset 里的 Agent 仍然可见。本插件目前只靠 persona 约束主代理不去使用它们。 需要硬隔离(把这些全局工具从该 preset 的 Agent 里隐藏)要额外的 Agent 级ctx.tools.restrict()插件;在 preset 作用域调用restrict()会连同 preset 自己注册的工具一起藏掉,所以这类 gate 必须 按 Agent 作用域实现。
系统提示词(complete: true,只有这一段)把主代理定义成调度器,并固定了工作流:
- 判断请求类型;纯寒暄或对已有结果的追问直接回答,有歧义先澄清;
- 派
subagent_codex做只读分析,要求按「结论 / 工作项 / 不确定处」固定结构输出,工作项要小到 一次能执行完,并标出依赖与可并行项; - 等完成通知后才派执行任务,把 Codex 工作项原文完整转交(执行子代理看不到会话历史和规划结果);
- 一次只派一个工作项,无依赖的可以同轮并行;结果对照验收标准核对,失败就补派聚焦的修正任务, 计划不可行就交回 Codex 重新规划;
- 汇报时区分「子代理报告完成」和「已验证」,不声称自己执行过命令或改过文件。
两个子代理都是外部一次性会话:看不到会话历史、不接受追加消息、结束后不能恢复。所以任务说明 必须自包含;persona 已经要求主代理这样写。
两个子代理的权限
| provider | permissionMode | 为什么 |
|---|---|---|
codex-planner |
never |
规划只需要读文件、检索、看 git 历史。never 是无人值守下最保守的档位:不请求审批,沙箱由 Codex 原生配置决定(未改 ~/.codex/config.toml 的默认配置下实测为只读,工作区内也写不了文件)。persona 另外明确要求 Codex 只读分析、不执行有副作用的命令。 |
claude-code-executor |
auto |
执行要真正改文件、跑命令。auto 由 Claude Code 原生分类器逐项裁决,不需要人工审批;被拒绝的操作会让执行子代理报告出来,而不是卡住等人。第三方网关环境下需要 Claude Code ≥ 2.1.318,见下文。 |
两者都是提示词级约束:如果你把 Codex 原生 sandbox_mode 配成可写、或把 Claude Code 的
permissionMode 改成 bypassPermissions,模式本身不会阻止对应代理越界,这是配置责任。
关于 auto 与第三方网关
auto 的分类器有两条路:
- 服务端检查:不额外发请求,随会话自己的模型请求通过
safeguards/safeguard_results字段往返; - Claude Code 自己的分类器请求:一条独立的模型调用,走
ANTHROPIC_BASE_URL,单独计费。
第三方网关/中转(CC Switch、各类 API 代理)通常会丢弃不认识的请求与响应字段,服务端检查就拿不到
verdict。Claude Code 2.1.318 起能识别不兼容网关,并自动回退到自己的分类器请求(可能打印一条
提示),auto 正常工作;更早的版本没有这个回退,会直接拒绝 Bash/Write,报
The server-side auto mode classifier gave no verdict。
DSH 的 Claude Code 子代理用的是 @anthropic-ai/claude-agent-sdk 内置的 CLI。旧版 DSH
(SDK < 0.3.318 / 内置 CLI < 2.1.318)在 relay 环境下需要先升级,否则执行子代理什么都干不了:
# ~/.dsh/profiles/<profile>/pnpm-workspace.yaml
# pnpm 11 不再读取 package.json 的 pnpm.overrides,必须写在这里
overrides:
'@anthropic-ai/claude-agent-sdk': 0.3.318
# 按平台换成 darwin-x64 / linux-x64 / linux-arm64 / win32-x64 等
'@anthropic-ai/claude-agent-sdk-darwin-arm64': 0.3.318
改完在该 profile 目录跑 pnpm install,然后重启 DSH 应用。直连官方 Anthropic API 的环境不受影响;
实在不想升级时,可把执行端改成 bypassPermissions(全权限)或 acceptEdits(只改文件、不能跑
命令)绕过分类器。
它怎么接进去
cordis.patch.yml 插入三行:
- Host 行
subagent-codex-planner:规划用 Codex provider(providerName: codex-planner)。 - Host 行
subagent-claude-code-executor:执行用 Claude Code provider(providerName: claude-code-executor)。 - Preset 行
preset-codex-claude:声明 presetcodex-claude,两个委派工具与全局工具同名、 按 Agent 作用域规则遮蔽全局工具,从而落到上面两个专用 provider 上。
两个 Host 行都不注册任何全局工具,所以其它模式里由官方 bundle 提供的全局 subagent_codex /
subagent_claude_code 完全不受影响。
配置
在本机 profile 的 cordis.patch.yml 里按行 id 覆盖即可,不需要改本插件的文件:
- id: subagent-codex-planner
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-planner # 改了必须同步 preset 里的 provider
permissionMode: never # never | approve-for-me | dangerously-bypass-approvals-and-sandbox
# model: '<codex-model-id>' # 固定 Codex 使用的模型
- id: subagent-claude-code-executor
name: '@deepseek-ai/dsh-subagent-claude-code'
config:
providerName: claude-code-executor # 改了必须同步 preset 里的 provider
permissionMode: auto # dontAsk | acceptEdits | auto | plan | bypassPermissions
# model: '<claude-model-id>' # 固定 Claude Code 使用的模型
Codex permissionMode |
行为 |
|---|---|
never |
永不请求审批;sandbox 走 Codex 原生配置(默认实测只读)。规划用,推荐。 |
approve-for-me |
自动评审权限请求,sandbox: workspace-write。规划任务本身不需要写,一般没必要改。 |
dangerously-bypass-approvals-and-sandbox |
跳过审批与 sandbox,全盘可写。慎用。 |
Claude Code permissionMode |
行为 |
|---|---|
dontAsk |
不弹提示,未预授权的操作直接拒绝(最保守) |
acceptEdits |
自动接受文件编辑,其余权限请求拒绝(能改文件,基本跑不了命令) |
auto |
由 Claude Code 原生分类器逐项裁决(默认) |
plan |
原生规划模式:只出计划,不执行 |
bypassPermissions |
跳过所有权限检查,风险最高;无人值守流水线里确实需要放开时再用 |
修改后重新应用配置层(重启应用,或 profile 启用了 HMR 时的热重载)即可;preset 的改动只影响之后 新建的会话。
装完怎么验证
按顺序检查三层,任意一层不对就停在那层:
- 行激活:
plugin_manager→list_plugins,确认subagent-codex-planner、subagent-claude-code-executor、preset-codex-claude都是enabled: true、fiberPhase: active。 - preset 已注册:
cordis_inspect_query→Config.listConfigs(name 过滤@deepseek-ai/dsh-agent-preset),应能看到preset-codex-claude。 - 真实流水线:新建会话选「Codex 规划 + Claude Code 执行」,先给一个小任务(例如让它在临时
文件里加一行再读回来)。确认:主代理先只派
subagent_codex;规划结果到达后才出现subagent_claude_code调用;最后汇报里写清了改动的文件与验证结果。
常见故障:
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 模式列表里没有「Codex 规划 + Claude Code 执行」 | 插件未启用 / preset 行挂载失败 | 回到第 1、2 步看诊断 |
有模式,但主代理说没有 subagent_codex |
Codex provider 包解析不到或 Host 行未激活 | list_plugins 看 subagent-codex-planner |
有模式,但主代理说没有 subagent_claude_code |
Claude Code provider 包解析不到或 Host 行未激活 | list_plugins 看 subagent-claude-code-executor |
规划任务失败,诊断指向 process / initialize |
Codex 未登录、app-server 载荷缺失、平台不支持 | 先在终端跑一次 codex login status |
| 执行任务能读不能写、跑不了命令 | Claude Code permissionMode 过于保守 |
保持 auto;确实被拒的操作改用 bypassPermissions(风险自负) |
执行时报 The server-side auto mode classifier gave no verdict |
DSH 内置的 Claude Code CLI < 2.1.318,auto 的服务端检查被第三方网关丢弃,旧版又没有回退逻辑 |
升级 DSH 的 @anthropic-ai/claude-agent-sdk 到 ≥0.3.318(见「关于 auto 与第三方网关」);或暂时改用 bypassPermissions / acceptEdits |
| 规划完成后不派执行任务 | 用户只要求分析;或计划被判为不可执行 | 看主代理汇报里的「遗留问题」,必要时让它补派 |
限制与已知问题
- 只有提示词级隔离:全局工具仍对该模式的 Agent 可见(见上文)。要硬隔离需要 gate 插件。
- 子代理是一次性的:不能追加消息、不能恢复会话、看不到父会话历史,任务说明必须自包含。
- 异步返回:委派调用只返回任务 id,结果通过完成通知到达。persona 明确要求等待期间不轮询、 不重复派单。
- 没有独立验收:主代理只能核对子代理报告的结果,不能自己运行测试确认验收标准。
- 网络与模型:Codex / Claude Code 使用各自原生配置与认证,本插件不管理登录、模型或网络策略。
可调项
- 更硬的约束:加一个 gate 插件,用
ctx.tools.restrict(...)把全局工具也屏蔽掉。当前版本 未包含:restrict要求调用方处于 scoped context,preset 作用域下注册与遮蔽的交互(是否会 把 preset 自己挂的工具一起挡掉)只有真实会话能验证,未验证前不发布硬隔离。 - 不想要进度工具:删掉
tool-todo行,同时删掉 persona 里对应规则。 - 只想 Codex 规划、不做任何改动:本模式天然支持:分析类请求只走 Codex,不派执行任务。
- 换工具名:改
toolName后同步改 persona 里的两个名字。
卸载
dsh plugin --profile <profile> remove dsh-codex-claude-pipeline
或 plugin_manager 的 remove_bundle。
兼容性
engines.dsh 见 package.json(>=0.2.1 <0.3.0-0)。依赖 Harness 的 Agent preset、
dsh-tool-subagent、dsh-subagent-codex 与 dsh-subagent-claude-code 接口;官方包版本变化后
建议先跑一次新模式的小任务验证。
开发
npm test # 无依赖的静态 smoke test:patch/package/locale/文件清单一致性
npm pack --dry-run
变更记录
1.0.1
- 文档:新增「关于
auto与第三方网关」——旧版 Claude Code(< 2.1.318)在 relay/中转环境下auto会因拿不到服务端分类器 verdict 而拒绝 Bash/Write;给出升级 DSH 的@anthropic-ai/claude-agent-sdk(≥0.3.318)的方法(profile 的pnpm-workspace.yamloverrides),以及bypassPermissions/acceptEdits兜底方案。 - 文档:「常见故障」补充上述报错的排查条目。无功能变更。
1.0.0
- 首个版本:
preset-codex-claude(persona + scopedsubagent_codex+ scopedsubagent_claude_code+ask_user_question+todo_write+ compaction)。 - Host 层注册两个专用 provider:
codex-planner(只读规划)与claude-code-executor(auto执行)。
License
MIT
链接
同类插件
loopx-project/loopx#dsh-loopx-plugin★ 6537
LoopX——面向长周期 Agent 的提供商中立、本地优先状态内核与控制平面:在 DeepSeek Harness 执行层之上持久化 Goal、Todo、门禁、证据、配额、恢复与交接状态;插件负责引导安装 CLI 与技能、准入有界的同会话续跑,并为精确绑定的工作循环提供本地 GoalBar。
Q00/ouroboros#integrations/dsh-plugin★ 6308
通过 DSH MCP 客户端挂载 Ouroboros 的纯配置包,在 DSH 中提供 36 个涵盖需求访谈、Seed、执行、评估与演化流程的工具。
chuspeeism/dashi-taskboard#deepseek-harness★ 3434
把当前已安装并运行中的 Codex Taskboard 嵌入 DeepSeek Harness 侧边栏,并通过 Launcher 运行时描述文件连接,而不是使用固定端口。
NanmiCoder/dsh-agent-teams★ 2647
AgentTeams 多智能体团队。
EthanYoQ/AI-Novel-Writer#dsh-ai-novel-writer★ 2265
安装专用 AI 小说创作预设与工作台:提供带修订号的本地项目资产、紧凑侧边工作台,以及需要原生审批的逐文件变更。
Miaotofu01/Study-Mate★ 1307
你的AI学习搭档:定计划、讲知识、做项目,学透一门科目。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。