dsh-codex-agy-preset
DeepSeek Harness(DSH)的插件 bundle:给 Agent 挂上 Codex 和 AGY(Antigravity CLI)
两个一次性子代理,再加一个 codex_imagegen 出图工具,并声明一个名为 Codex + AGY
的 Agent 预设。
它把三个原本要手写进 profile 补丁的能力打包成可安装、可升级的 bundle:
| 能力 | 形态 | 说明 |
|---|
subagent_codex | 子代理工具 | 把任务交给 Codex CLI(codex app-server --stdio,JSON-RPC),一次性执行,可在会话工作目录里自己读写文件 |
subagent_agy | 子代理工具 | 把任务交给 Antigravity CLI(agy --print 非交互模式),强制走本机代理 |
codex_imagegen | 工具 | 包装 Codex 自带的 imagegen 技能,用 GPT Image 生成/编辑位图;支持参考图、指定输出路径、一次生成网格母图并自动裁块 |
codex-agy | Agent 预设 | 在标准能力(bash/fs/search/goal/plan/compaction/workflow…)之上启用上面三个工具 |
非官方项目:与 DeepSeek、OpenAI、Google 均无隶属关系,只是作者在自己的
DSH Desktop 环境里验证可用的一套插件。
目录结构
.
├── package.json # bundle 清单:exports + dsh.bundle.patch
├── cordis.patch.yml # bundle 的 patch:2 个 Host 后端行 + 1 个预设行
├── codex.mjs # subagent_codex 后端(re-export 官方包 + 本地 reasoning effort 垫片)
├── agy.mjs # subagent_agy 后端(Antigravity CLI print 模式适配器)
├── imagegen.mjs # codex_imagegen 工具
└── docs/
└── DELIVERY-REPORT-2026-10-10.md # 首次交付/验证报告(含实测数据)
工作原理
DSH 的扩展分成两层,这个 bundle 两层都占了:
- Host 平面(共享服务):
subagent-codex-backend 与 subagent-agy-backend 两行在
进程级 ctx.subagents 注册表上注册 codex / agy 两个 provider。provider 名全进程唯一,
所以只在这里注册一次,任何想用它们的预设共用。
- 预设平面(工具):
preset-codex-agy 声明预设,在标准工具集里启用
tool-subagent-codex、tool-subagent-agy 和 tool-codex-imagegen 三行。
package.json 里的 dsh.bundle.patch 指向 cordis.patch.yml,安装时由 DSH 的 loader
把这几行插进 profile 的模块树,因此可以随插件管理器安装/卸载,也能在 GUI 保存设置后存活。
三个 .mjs 都是自包含的 ESM 插件(只用相对导入和 node: 内置模块),不引入裸包依赖,
避免 profile 里出现第二份依赖树。
前置条件
- DeepSeek Harness Desktop 0.2.0-rc.2(本 bundle 只在这个运行时线验证过)
- Codex CLI 已安装并登录(ChatGPT 账号);
codex_imagegen 走 PATH 上的 codex,
subagent_codex 走单独安装的后端包(见下)
- Antigravity CLI:
agy 在 PATH 上;subagent_agy 默认强制走
http://127.0.0.1:12450 代理(可用配置覆盖)
- python3 + Pillow:只有使用
grid 批量裁块时才需要
- Node.js 18+(bundle 本身不装依赖,由 DSH 运行时加载)
安装
方式一:插件管理器(推荐)
把本目录作为本地 bundle 安装:
plugin_manager install_bundle target=/absolute/path/to/this/bundle
安装成功后 profile 的 package.json 会多一条 link: 依赖,并把它加进
dsh.profile.bundles。重新加载/重启 DSH 后,在 GUI 的预设选择器里能看到
Codex + AGY。
方式二:手工接入 profile
编辑 ~/.dsh/profiles/desktop/package.json:
{
"dependencies": {
"@local/dsh-codex-agy-preset": "link:/absolute/path/to/this/bundle"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@local/dsh-codex-agy-preset"
]
}
}
}
然后在该 profile 目录执行 pnpm install(或 npm install),重启 DSH。
codex 后端包的安装
subagent_codex 依赖 @deepseek-ai/dsh-subagent-codex,它不随发行版分发,需要单独装到
DSH 配置目录下(版本与运行时对齐):
cd ~/.dsh/subagent-backends
npm install --omit=dev --ignore-scripts @deepseek-ai/dsh-subagent-codex@0.2.0-rc.2
配置
全部配置都在 cordis.patch.yml 对应的行里,改完重新激活 bundle 即可(见“已知限制”):
subagent-codex-backend
model:传给 Codex 每个 thread 的模型(默认 gpt-5.6-sol)
reasoningEffort:本地垫片,注入为 -c model_reasoning_effort="<value>",只作用于子进程,
不改 ~/.codex/config.toml(默认 max)
env、disposeGraceMs
subagent-agy-backend
env:默认把 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY 指到 http://127.0.0.1:12450,
NO_PROXY 清空;子进程环境是净化的,所以必须在这里显式给
verifyProxy:spawn 前先探测代理端口(agy 会把不可达代理报成含义模糊的
“Eligibility check failed”);确认代理常开可设 false
command、outputArgs、disposeGraceMs
tool-codex-imagegen
model(默认 gpt-6-astra)、reasoningEffort(默认 xhigh)
- 设为
null 可退回 Codex CLI 自己的默认值
- 另有
command、codexHome、env、timeoutMs(默认 15 分钟)、pythonCommand
换一台机器要改的地方
这个 bundle 是作者在本机验证的工作副本,有几处机器相关配置,复用到别的机器前请检查:
codex.mjs 第 56 行:用绝对路径 re-export 已安装的 codex 后端包
(~/.dsh/subagent-backends/node_modules/@deepseek-ai/dsh-subagent-codex/lib/index.js),
改成你的路径。
agy.mjs 的 PROXY_URL 常量与 patch 里的 env:默认 127.0.0.1:12450,
改成你可用的代理地址;没有代理就把 env 留空并关掉 verifyProxy。
cordis.patch.yml 里的模型 slug(gpt-5.6-sol、gpt-6-astra):
换成你账号实际可用的模型。
~/.dsh/subagent-backends 里的后端包版本要与 DSH 运行时同步。
使用
在 GUI 新建会话,预设选择器选 Codex + AGY(老会话沿用启动时的预设,必须新建会话)。
然后就可以:
subagent_codex : 把一段自包含任务交给 Codex,它在当前会话工作目录里自己改文件
subagent_agy : 把任务交给 Antigravity CLI(print 模式,走代理)
codex_imagegen : { prompt, out?, refs?, grid?, cwd? } → 返回成图路径
codex_imagegen 的批量用法:需要一组相关图片(图标集、卡片/插画变体、sprite sheet)时,
不要一张一张调,而是让模型生成一张排成网格的母图并传 grid: { rows, cols },
工具会用 python3 + Pillow 裁成 <stem>-r{行}c{列}.png;不传 grid 则只产出母图。
已知限制与注意点
- provider 名全局唯一:
codex / agy 已在 Host 层注册。不要在 profile 补丁或其它
bundle 里重复注册同名 provider,否则第二次注册会抛错并导致整个挂载失败。
- 改完插件代码要重新加载模块:bundle 以软链形式安装,文件改动立刻落盘,但已加载的
ESM 模块在进程内有缓存。用插件管理器把 bundle 关→开一次,或直接重启 DSH。
- 不要手改 profile 的
cordis.patch.yml 来加这几行:GUI 保存设置时会重写该文件;
preset 走 bundle 安装才能存活。
codex_imagegen 认的是 PATH 上的 codex(登录 ChatGPT 的那个),subagent_codex
用的是后端包自带的 @openai/codex,两者不是同一个二进制;升级时注意区分。
subagent_agy 走 argv 传 prompt,超大任务(>256 KB)会被提前拒绝并给出明确报错。
- AGY 能否使用取决于账号/地区资格——适配器接线正确不代表服务端放行(实测记录见报告)。
验证记录
首次交付时的实测结论(完整数据见
docs/DELIVERY-REPORT-2026-10-10.md):
- patch 能被 loader 正确组合(
--dump-config exit 0,三行按预期追加)
node --check 三个 .mjs 全部通过
codex_imagegen 真跑出图(默认模型与 gpt-6-astra + xhigh 各一次)
grid: {rows:2, cols:3} 真跑:一张母图裁出 6 块,逐像素校验覆盖正确
- Codex 后端 app-server 握手 +
initialize + thread/start 成功
- AGY 链路:代理端口可达,但服务端返回账号地区资格拒绝(账号侧问题,非适配器问题)
许可
本仓库暂未附开源许可证。如需复用、转载或商用,请先联系仓库作者。