前言¶
DeepSeek Harness(DSH)把智能体能力拆成可注册的插件工具。若你已经在本机用 OpenAI Codex CLI 做编码任务,常见做法是另开终端手动 codex exec,再把输出贴回对话——DSH 里的 agent 无法直接「派活」给 Codex,也谈不上续接会话或在运行中追加指令。
下面介绍维护者 Dobo233 发布的 dsh-codex-pilot(GitHub:Dobo233/dsh-codex-pilot)。它把本机已登录的 codex 接成 DSH 原生工具(codex_run / codex_resume / codex_queue / codex_probe),并提供不依赖 DSH 的独立桥(HTTP + 文件信箱)。插件分类为工作流;不代理模型、不处理凭据,只是 CLI 的一层薄封装。
这是什么¶
一句话:DSH plugin: drive the Codex CLI from DeepSeek Harness (run/resume/queue/probe) + standalone bridge。
同一套操作语义有两种入口:
| 形态 | 入口 | 需要什么 |
|---|---|---|
| DSH 插件(推荐) | lib/index.js,注册 codex_* 工具 |
已装 DSH + 本机 codex |
| 独立桥 | standalone/bridge.cjs,HTTP + 文件信箱 |
只要 Node ≥ 20(README 中桥说明;插件 engines 要求 Node ^22.19.0 \|\| >=24.0.0) |
插件声明 inject: ["tools"],仅通过 ctx.tools.register 注册工具,不扩展文件系统之外的宿主能力。许可证 MIT,当前 package 版本 0.1.0。
核心功能¶
四个 DSH 工具¶
| 工具 | 作用 | 底层 |
|---|---|---|
codex_run |
开一次性会话跑整块任务,同步返回输出 | codex exec [--skip-git-repo-check] -C <cwd> [-s <mode>] [-m <model>] "<prompt>" |
codex_resume |
续接已有会话或最近一个会话 | codex exec resume <id> "<prompt>"、codex exec resume --last |
codex_queue |
往正在运行的会话投一条消息,不打断当前回合 | codex queue --thread <id> --message <text> |
codex_probe |
体检:可执行文件、版本、子命令是否可用 | codex --version / exec --help / queue --help |
codex_probe 是排错第一站:codex_* 报错时先跑它,能区分「找不到 codex」「版本太老没有 queue」「cwd 不存在」等。README 注明 Codex CLI 0.163.x 实测;queue 需要较新版本,老版本 probe 会报 queue 子命令: 不可用。
独立桥(不用 DSH)¶
不装 DSH 时,可用本地 HTTP 或文件信箱调用同一语义:
node standalone/bridge.cjs # 默认 http://127.0.0.1:8787
node standalone/bridge.cjs --config my.json
- HTTP:
GET /health、GET /probe、POST /run、POST /resume、POST /queue(别名POST /codex、POST /start) - 文件信箱:请求写入
mailbox/inbox/<id>.json,结果落到mailbox/results/<id>.json;坏 JSON 进mailbox/quarantine/ - Windows 上
.\standalone\ask.ps1 "任务描述"为最短路径(桥未启动时会自动拉起)
请求体字段:{ prompt, cwd?, model?, sandbox?, timeoutMs?, sessionId?, last? };/queue 用 { thread, message }。
安装与启用¶
从 GitHub 安装(README 原文,注意 --profile web):
dsh plugin --profile web add github:Dobo233/dsh-codex-pilot
本地开发时可指向目录:
dsh plugin --profile web add E:\path\to\dsh-codex-pilot
装完后重启 DSH(或让 patchReload 生效),工具面板里应出现 codex_run / codex_resume / codex_queue / codex_probe。
兼容性(来自 README / package.json):
- DSH:0.2.x(
engines未锁死,patch 走dsh.bundle清单) - Node:
^22.19.0 || >=24.0.0 - peer:
@deepseek-ai/dsh-tools若干 RC 区间(见 package.json)
配置¶
在 cordis.patch.yml 的 config 字段,或 profile 里对应条目的 config 中设置:
codexPath: null # 显式路径;null = 自动探测(LOCALAPPDATA\OpenAI\Codex\bin\*\codex.exe 按 mtime 取最新,再退 ~/.codex/.sandbox-bin/codex.exe,再退 PATH)
codexHome: null # CODEX_HOME;null = ~/.codex
defaultCwd: null # 默认工作目录;null = DSH 进程 cwd
timeoutMs: 600000 # 单次调用超时
maxOutputChars: 20000 # 返回给模型的输出上限,超长保留尾部(Codex 的结论在末尾)
skipGitRepoCheck: true # 是否给 codex exec 加 --skip-git-repo-check
extraEnv: {} # 追加给子进程的环境变量
自动探测是刻意的:Codex 升级会换 bin/<hash> 目录,写死路径容易失效。
典型用法思路¶
- 先 probe:在 DSH 对话里让 agent 调用
codex_probe,确认本机codex路径与queue是否可用。 - 派活:用
codex_run传入 prompt 与 cwd(或使用defaultCwd),一次性拿到同步输出;输出超过maxOutputChars时插件保留尾部。 - 长任务续接:记下会话 id 后,用
codex_resume继续;若 Codex 仍在跑同一 thread,用codex_queue追加说明而不打断当前回合。 - 无 DSH 环境:起
standalone/bridge.cjs,对127.0.0.1:8787发POST /run等,或走 mailbox JSON 流程。
收紧权限时,可在桥请求里传 sandbox: "read-only",或在插件侧通过 execArgs 自行加旗标(README 安全边界说明)。
适用场景与注意¶
适合谁:已在 DSH 0.2.x 上编排 agent,且本机 Codex CLI 已登录;希望 agent 把整块编码任务交给 Codex,并支持 resume / queue,而不是手工复制终端输出。
安全边界(README 原文要点):
- 只驱动本机已登录的 Codex,不读取、不转发、不存储 token。
codex exec具备写文件与执行命令能力;需要只读时可设sandbox: "read-only"。- 独立桥只绑定
127.0.0.1,无鉴权:不要改为0.0.0.0,不要暴露到公网。
安装前:插件以当前 DSH 进程权限启动子进程,安装前应阅读仓库源码与 MIT 许可证。社区目录 skillhub.cn 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文不将其描述为官方应用商店。
结尾¶
dsh-codex-pilot 把本机 Codex CLI 的 run、resume、queue 与探针能力原样暴露给 DSH agent,并可选 standalone 桥供无 DSH 场景使用。经过上面的步骤安装、probe 与配置后,即可在工具面板里用四个 codex_* 工具编排工作流。