dsh-codex-pilot:在 DSH 里驱动本机 Codex CLI

前言

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> 目录,写死路径容易失效。

典型用法思路

  1. 先 probe:在 DSH 对话里让 agent 调用 codex_probe,确认本机 codex 路径与 queue 是否可用。
  2. 派活:用 codex_run 传入 prompt 与 cwd(或使用 defaultCwd),一次性拿到同步输出;输出超过 maxOutputChars 时插件保留尾部。
  3. 长任务续接:记下会话 id 后,用 codex_resume 继续;若 Codex 仍在跑同一 thread,用 codex_queue 追加说明而不打断当前回合。
  4. 无 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_* 工具编排工作流。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye