新增一个 DeepSeek Harness Agent 预设:把实际工作交给 Codex 子代理执行(自动审批、工作区可写),会话主代理只负责拆分任务、委派与汇总结果。需 DSH 0.2.2-rc.1+、已装 @deepseek-ai/dsh-subagent-codex,且本机已安装并登录 Codex CLI。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-codex-delegate
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:lidaqi001/dsh-codex-delegate
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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 委托模式 —— 一个把「所有处理都交给 codex 子代理」的 DeepSeek Harness Agent 预设(bundle)。
装上它之后,新建会话时在「Agent 预设」里选 Codex 委托:主代理不再自己读写文件、跑命令、
搜网页,而是理解需求、拆任务、把每个任务派给 subagent_codex(Codex 子代理)执行,最后汇总
结果。实质工作全部在 codex 里做。
- npm:
dsh-codex-delegate - DSH Agent 预设 id:
codex - 纯 YAML 配置 + 一个很小的 Host 插件(
index.js,约 1 KB),无需编译
模式怎么工作
| 组成 | 作用 |
|---|---|
persona(complete: true) |
该会话唯一的系统提示词:只做调度,不直接动手;委派必须自包含(子代理看不到会话、一次性、不接受追问);异步等待不轮询;多阶段先派第一步;结果先核对验收再汇报 |
subagent_codex(scoped,遮蔽全局同名工具) |
唯一的"干活"工具,maxDepth: provider-managed;指向 bundle 自带的专用 provider codex-delegate(permissionMode: approve-for-me),同名遮蔽全局工具,其它会话配置不受影响 |
ask_user_question |
需求有歧义时向用户确认 |
todo_write |
多步委派的进度跟踪(只写会话日志) |
codex-only-guard |
工具级硬限制:preset 层注册执行期 guard,除上面三个工具外,任何工具调用都被拒绝 |
compaction |
长会话里委派结果会持续累积,自动压缩 |
预设里只挂载了委派/澄清/进度/压缩四类工具,没有 bash / 文件 / 搜索工具。profile 里 Host 级注册的全局工具(MCP、Agent Teams 等)仍会出现在工具列表里,但 codex-only-guard 会在执行时直接拒绝它们,返回"本模式下不可用,请改为委派"。
为什么用 guard 而不是 ctx.tools.restrict(可见性遮罩):restrict 会把 preset 层注册的工具也一起过滤,连 ask_user_question、todo_write 都会被隐藏;guard 只按工具名拒绝调用,不会误伤,也不会影响其它预设/其它会话。
安装
# 在 DSH 会话里直接说:
帮我安装 dsh-codex-delegate@1.0.2
代理会调用 plugin_manager 的 install_bundle,target 写 dsh-codex-delegate(装 latest)
或带版本号都行。
装完验证:
plugin_managerlist_plugins:出现preset-codex,enabled: true、fiberPhase: active;cordis_inspect_query→Config.listConfigs(name =@deepseek-ai/dsh-agent-preset)能看到include:preset-codex;- 新建会话 →「Agent 预设」选 Codex 委托 → 给一个需要动手的任务,确认它只派发、不自己执行。
前置条件
- DeepSeek Harness
^0.2.2-rc.1(见peerDependencies)。 - profile 里已安装 codex 子代理 bundle
@deepseek-ai/dsh-subagent-codex。本 bundle 在 Host 层 插入自己的 provider 行(providerName: codex-delegate),该插件包必须能被解析,否则 provider 与委派工具都不会注册。 - codex CLI 已安装且已登录(
codex login status显示已登录,或已配置等效的认证方式;凭据与~/.codex/config.toml配置是两回事)。子代理用哪个模型/provider、是否免审批, 由目标机器自己的 codex 原生配置决定。 - 本 bundle 通过
link:或 registry 安装均可;若是link:,目录不要移动或删除。
本地开发
# 装进当前 profile(目录形式,改完即时生效)
# 在 DSH 里:帮我安装 /abs/path/to/dsh-codex-delegate
npm pack # 打 tarball(install_bundle 也直接吃 .tgz)
改 cordis.patch.yml 后重新 install_bundle 即可(profile 配了 patchReload: live,新会话生效)。
发布
npm version patch # 或手动改 version
git push && git push --tags
# 打 v* tag 会触发 .github/workflows/publish.yml(用仓库 Secrets 里的 NPM_TOKEN,带 --provenance)
# 规则:tag 必须等于 v<package.json 里的 version>,同一版本不可重发,需先 bump
# 也可以本地直接发布:
npm publish # publishConfig 已指向 registry.npmjs.org、access public
上架 awesome-dsh-plugin:条目草稿在仓库根目录 awesome-entry.yml;正式 PR 需把它提交到对方仓库的 data/plugins/lidaqi001__dsh-codex-delegate.yml(一个 PR 只加这一个文件)。
兼容性
peerDependencies把用到的 9 个 DSH 包钉在^0.2.2-rc.1。DSH 大版本升级后先核对 patch 里的包名/字段,再放宽范围并重新发布。- codex 大版本变更可能影响
permissionMode映射,升级后跑一次连通性验证(派一个echo任务)。
可调项
- 硬限制的允许列表:
codex-only-guard的allowed可改(默认subagent_codex、ask_user_question、todo_write); 想去掉澄清/进度工具就同时删掉对应插件行。若想让主代理连"看到"都要更干净,只能在没有 preset 层 工具的前提下改用ctx.tools.restrict,但会一并隐藏 preset 自己的工具,需要实测后再上。 - codex 权限与沙箱:
permissionMode写在 provider 行(subagent-codex-delegate),不是工具行:approve-for-me(当前默认):approvalPolicy: on-request+ 自动审批 +sandbox: workspace-write→ 工作区可写,无人值守也能跑;需要越界的操作走 codex 自动审批。never:approvalPolicy: never,沙箱不显式指定,实测拿到的是只读沙箱——工作区内也写不了文件 (operation not permitted),只有读/检索/联网可用。dangerously-bypass-approvals-and-sandbox:无审批、全盘可写,慎用。 另外 codex 原生配置(~/.codex/config.toml)仍会叠加,例如network_access、模型选择等。
- 只保留委派:去掉
tool-todo、tool-ask-user,同时删掉 persona 里对应的规则。
卸载
plugin_manager remove_bundle,target dsh-codex-delegate;或设置 → 插件里停用/移除。
变更记录
1.0.2
- 新增
codex-only-guard(preset 层执行期 guard):除subagent_codex、ask_user_question、todo_write外的工具调用一律被拒绝,把"只能把活交给 codex"从提示词约束升级为运行时强制。 - persona 增加一句:其它工具即使可见也会被系统拒绝,不要尝试。
- 包结构从"纯声明式"变为带一个 Host 插件(
index.js),exports增加.。
1.0.1
- 新增专用 provider
codex-delegate(permissionMode: approve-for-me):修复默认never下 codex 沙箱为只读、工作区内也无法写文件的问题(实测);委派工具改为指向该 provider。 - persona 重写:明确"子代理不能中途提问,决策要提前写进任务"、完成通知到达前不得声称结果、 区分成功/部分完成/失败/阻塞、后续任务必须附上前次结果、汇报只能陈述子代理明确报告过的改动与验证。
- 移除
includeRuntimeContext: false(complete: true已限定提示词范围,这一项只是重复抑制)。 peerDependencies补上@deepseek-ai/dsh-subagent(dsh-tool-subagent依赖的服务包)。- CI 加固:action 固定 commit SHA、
--provenance、tag 与版本一致性校验、只在 404 时发布、并发组。 - README 修正:不再声称"主代理没有工具"、认证说明改为
codex login status、awesome 投稿路径修正。
1.0.0
- 首个版本:
preset-codex(persona + scopedsubagent_codex+ask_user_question+todo_write+ compaction)。
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 账号。