Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DSH Codex + Codex PTC + Codex Harness

DeepSeek Harness 在真实代码库任务中具备更稳定的工程闭环,并根据任务形态在质量、速度和 token 成本之间做选择。本项目提供三个可同时安装、彼此独立的用户级 agent preset:Codex 模式Codex PTC 模式与使用 DSH 模型路由的 Codex Harness 模式

项目优势

  • 完整的工程闭环:围绕理解目标、收集证据、最小修改和验证结果组织执行,不把“写完代码”误当成“任务完成”。
  • 减少无效工具调用:使用结构化 workdir、定向搜索、证据账本和一次性收敛建议,降低重复 cd、重复读取、根目录扫描和超长工具链。
  • 按任务选择工具面:既保留直接、稳定的原生工具模式,也提供能把批量过滤、命令、修改与验证编排进一次程序的 PTC 模式;明确的小型只读任务不被迫生成程序,任何未知领域或内容形态也不会因未被列举而丢失执行能力。
  • 控制长任务 token 成本:按模型真实上下文容量提前压缩、裁剪工具结果;Codex PTC 对可证明的只读/直接回答使用精简原生 schema,对未知或可执行任务优先保留裁剪后的 run_code SDK。
  • 非阻断式控制:运行时控制器只依据真实工具结果给出一次性建议,不拒绝工具调用,也不会把正常收敛提醒制造成红色错误。
  • 模型与 provider 中立:模型、endpoint、推理档位和上下文容量始终由 DSH 会话与 provider 管理,可用于 GPT、Claude、DeepSeek 等不同路由;Codex Harness 模式也不要求 Codex 登录。
  • 轻量、可审计:两个原生模式的控制器仅依赖 Node.js 内置模块;可选 Harness 模式的适配包固定版本并在安装前检查。仓库不引入密钥或个人配置。

三个模式怎么选

模式 preset id 核心策略 更适合
Codex 模式 codex-mode 模型直接调用原生文件、搜索与 Shell 工具,控制器维护阶段和证据 重视严格输出、稳定性和通用工程控制的任务
Codex PTC 模式 codex-ptc-mode 可证明的直接回答/只读任务走精简原生工具;未知或可执行任务走任务级精简 run_code SDK 需要兼顾 token 快路径与陌生任务能力完整性的通用 Agent 任务
Codex Harness 模式 codex-harness-mode Codex 兼容的核心工具名、参数与提示层;执行和模型传输仍由 DSH 完成 希望在 DSH 插件生态里获得最接近 Codex 工具契约的体验

Codex 模式

Codex 模式以质量和稳定性为优先。persona 定义授权边界与工程原则,模型直接使用 DSH 原生工具完成探索、修改和验证;本地控制器根据真实执行结果维护 orient → decide → implement/recover → verify 阶段与证据账本。

它适合需求复杂、需要频繁语义判断、修改范围尚不明确,或者对最终验证和严格输出要求较高的通用软件工程任务。原生工具轨迹更直观,也更容易逐步检查和恢复。

Codex PTC 模式

Codex PTC 保留 Codex 模式的授权、最小相关面、最小修改和验证闭环,同时加入能力优先的自适应工具面选择器。明确的本地有界读取使用原生 read;明确的仓库检索使用受限 glob / grep / read;纯解释、翻译、提示词等直接回答使用最小原生 schema;带引用的 Web 调研保持直接工具调用。修改、Shell/测试链、大量中间结果处理,以及无法证明是这些安全快路径的未知任务,都保留 Code Mode 和 run_code

进入 Code Mode 后也不会生成全量 SDK:控制器通过 DSH 的 scope restriction 只保留当前任务需要的文件、搜索、Shell、Job、Skill,以及必要时的 Web 工具。选择依据是可证明的能力需求,不是模型名称、仓库路径、云厂商、业务名、内容类型或测试答案。陌生行业和全新架构默认拥有执行能力,后续无需为每个领域补关键词。

路由器还会保留连续任务的必要能力。上一回合正在修改、验证、修复或部署时,下一句“继续”“开始吧”、错误日志或图片跟进会继续使用 Code Mode;明确提出独立的本地只读、Web 调研或直接回答任务时可以降回原生工具面。任何实际查询、获取、调用、连接、同步或部署任务都不要求目标预先出现在名单里,模型也不应要求用户另外切换模式或启用 exec_command

Codex Harness 模式

Codex Harness 模式面向“在 DSH 中使用 Codex Agent 工作方式,但继续调用 DSH 已配置模型”的场景。它通过 @shuind/dsh-codex-harnessexec_commandwrite_stdinapply_patchupdate_plan 与 Codex 风格提示层映射到 DSH 的 Shell、文件系统、沙箱、会话和 todo 服务。

该模式不运行 Codex CLI/app-server,不读取 ~/.codex,不要求 Codex/ChatGPT 登录或额外的 OpenAI API key。为确保 provider 边界,preset 固定关闭兼容层的 hosted Responses 搜索与 /responses/compact;本地搜索和上下文压缩继续使用 DSH 服务。具体边界见 Codex Harness 模式说明

三个模式拥有不同的目录 id 和显示名称,可以同时安装,不会互相覆盖。安装后新建空白会话,即可分别选择「Codex 模式」「Codex PTC 模式」或「Codex Harness 模式」。

在插件市场或 GitHub Topic 中搜索

仓库已经带有 dsh-plugin topic。在 DSH 的插件市场页面可以搜索:

  • dsh-codex-mode
  • xiaosu19
  • Codex PTC

市场可以发现这个仓库,但只接受 dsh.bundle.patch 的市场实现会把它标为“不可作为 profile 插件安装”。请按本 README 的 install.sh / install.ps1 安装 preset。若市场使用缓存索引,新发布或更新后的仓库可能要等下一次索引刷新才出现。

v0.6.0 实测摘要

2026-08-21 在 DSH 0.1.0-rc.6 上使用 5 个模型、4 种模式、统一 Max 跑了一轮受控只读基准。Codex PTC 的输入 token 合计比 Codex 少 34.2%、比 Standard 少 43.0%、比 PTC 少 51.9%;中位耗时为 13.45 秒,与 Codex 的 13.54 秒接近。严格输出成功率为 4/5,Standard 与 Codex 为 5/5,因此它是“更省输入的混合工程模式”,不是每个模型上都绝对最快或最稳。

测试期间开启了 VPN/代理。耗时会受首 token、provider 负载和传输重试影响,尤其 Sonnet 5 出现明显网络长尾;输入/输出 token、工具调用路径和严格成功率更适合作为稳定比较依据。完整逐模型数据、前后原因、code-only 对比和限制见 Codex PTC v12 多模型 Max 基准报告,机器可读数据见 benchmarks/2026-08-21-max-vpn.json

v13 路由优化实测

2026-08-24 使用 gpt-5.6-sol Low 对同一组跨文件只读题和最小修复题进行 v12/v13 前后对比。两题均正确,修复题独立重跑 4/4 通过;v13 输入 token 合计从 109,982 降到 57,056(-48.1%),总 token 从 114,439 降到 61,229(-46.5%),总回合耗时从 50.566 秒降到 48.480 秒(-4.1%)。只读题改走受限原生 glob / grep / read,修改题继续使用裁剪后的 Code SDK。

这也是 VPN/代理环境下的单次方向性样本,不能当作稳定 P50/P95。完整前后数据、固定上下文差异、原因和限制见 Codex PTC v13 通用路由优化实测,机器可读数据见 benchmarks/2026-08-24-v13-sol-low-vpn.json

v14 连续任务与外部能力回归

2026-08-25 从两条真实 DSH 会话日志确认,v13 会把 AWS 账号查询、错误修复以及“继续部署”等跟进错误切成 readglob / grep / read,导致模型反复要求用户切换 Code Mode。v14 增加外部执行意图与连续工作流状态,修复后 29/29 项确定性测试通过;使用 gpt-5.6-sol Low 的无副作用新会话检查中,虚构 AWS/AKSK 查询、随后“继续”和测试环境 SP 数据获取三种输入都保持 run_code,且没有发出工具调用或使用真实凭据。完整脱敏证据见 Codex PTC v14 能力连续性回归报告

v15 通用 Agent 能力回归

v15 不再根据 AWS、CRM、订单或其他领域名判断能力,而把原生模式限制为可证明的直接回答、本地只读、仓库搜索和 Web 调研快路径;其余未知或含糊任务以 Code Mode 作为能力保底。30/30 项确定性测试覆盖未知标识、未知领域、内容架构、跨业务动作及原生反例。gpt-5.6-sol Low 三回合无副作用实测依次得到 run_code → read → run_code,对应未知领域任务、明确只解释和未知内容架构设计,工具调用均为 0。完整证据见 Codex PTC v15 通用 Agent 能力回归报告

v16 通用意图作用域

v16 在能力优先路由上加入通用意图作用域:否定动作不会覆盖后续正向要求,引号与翻译正文中的操作词按内容处理,“如何安装”等过程说明与“立即安装”分开,纯图片分析和根据图片修改也使用不同工具面。旧鲁棒性集从 31/38 提升到 38/38;68 条新样本首轮 65/68,修复三个通用表达缺口后为 68/68,首轮失败仍保留在报告中。gpt-5.6-sol Low 的真实 DSH 新会话分别将“只解释”挂载为 read、将“直接修复”挂载为 run_code;完整 Agent 验收还真实读取了未知标记、查询了 Git 分支,并把失败项目从 1/3 修到公开与隐藏检查全部通过。完整证据见 Codex PTC v16 意图识别回归报告

这是什么

DSH 的一个 agent preset 就是一个目录。本仓库的三个 preset 都包含组合与界面元数据;两个 DSH 原生模式另带独立控制器,Harness 模式把 Codex 工具运行层交给固定版本的兼容插件:

文件 作用
agent.cordis.yml 组合定义:persona 提示词 + 挂载哪些工具行(必需)
preset.yml 界面上显示的名字、描述、排序(可选)
presets/codex-mode/controller/runtime-v6.mjs Codex 模式的阶段/证据控制器
presets/codex-ptc-mode/controller/runtime-v16.mjs Codex PTC 的阶段/证据控制器、意图作用域、能力优先路由、连续任务保持和任务级工具面裁剪
presets/codex-harness-mode/agent.cordis.yml Codex 工具契约到 DSH provider、Shell、文件、压缩和 Skills 的组合边界

目录名就是预设 id。DSH 启动时扫描 $DSH_HOME/.agent-presets/(默认 ~/.dsh/.agent-presets/),发现的预设会出现在会话的模式选择器里。

组合只使用 DSH 的公开插件行和公开事件钩子。Codex 与 Codex PTC 的本地控制器仅依赖 Node 内置模块;只有可选的 Codex Harness 模式需要固定版本的 DSH 兼容插件。仓库不含任何密钥或个人配置。

安装

macOS / Linux:安装三个模式

git clone https://github.com/xiaosu19/dsh-codex-mode.git
cd dsh-codex-mode
./install.sh
./install.sh --preset codex-ptc-mode
./install.sh --preset codex-harness-mode

Windows (PowerShell):安装三个模式

git clone https://github.com/xiaosu19/dsh-codex-mode.git
cd dsh-codex-mode
powershell -ExecutionPolicy Bypass -File .\install.ps1
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Preset codex-ptc-mode
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Preset codex-harness-mode

只安装 Codex PTC 混合模式

仓库同时包含独立的 codex-ptc-mode preset。默认安装行为仍是上面的 codex-mode;只有显式传参才安装混合模式:

./install.sh --preset codex-ptc-mode

Windows PowerShell:

powershell -ExecutionPolicy Bypass -File .\install.ps1 -Preset codex-ptc-mode

它会安装到 $DSH_HOME/.agent-presets/codex-ptc-mode/(默认 ~/.dsh/.agent-presets/codex-ptc-mode/),显示为「Codex PTC 模式」。该模式保留 Codex 模式的授权、最小相关面、最小修改、验证闭环、软步骤预算、证据账本、非阻断检查点和提前压缩。运行时会在每个用户回合开始前选择紧凑工具面:明确本地读取只暴露 read;明确仓库检索暴露 glob / grep / read;直接回答和 Web 调研使用相应的最小原生工具。修改、命令/测试链、大范围聚合、实际操作以及所有无法证明安全降级的未知任务使用 run_code,SDK 仍限制到任务所需能力;这条能力保底不依赖业务或内容名称。它不使用固定 both,因此不会让每一步同时承担原生工具 schema 和 SDK 的双份上下文。覆盖更新使用 --force / -Force,安装器会先保留时间戳备份。

工具编排规则也按当前工具面动态注入:原生回合只携带简短的有界直接调用契约;Code Mode 回合携带 SDK、失败恢复和验证规则,但 SDK 本身仍按任务裁剪。多个调用或调用之间存在依赖,并不会单独触发 PTC;未知任务进入 Code Mode 是为了保留通用能力,不代表模型必须调用工具——纯回答仍可直接完成。

只安装 Codex Harness 模式

Harness 模式需要把 DSH 适配层安装到 Web profile。选择该 preset 时,安装器会先检查并在 dsh 命令可用时自动安装固定版本:

dsh plugin --profile web add @shuind/dsh-codex-harness@0.1.13
./install.sh --preset codex-harness-mode

这只安装 DSH 插件和 preset,不安装或登录 Codex CLI。兼容插件是首次加入 Web profile 时需要重启一次 DSH Web;以后只覆盖 preset 不需要重启。

手动安装

把 preset 目录分别复制到预设根目录;复制 Harness 模式前仍需执行上面的 dsh plugin 命令:

mkdir -p ~/.dsh/.agent-presets
cp -R presets/codex-mode ~/.dsh/.agent-presets/
cp -R presets/codex-ptc-mode ~/.dsh/.agent-presets/
cp -R presets/codex-harness-mode ~/.dsh/.agent-presets/

如果设了 $DSH_HOME,就换成 $DSH_HOME/.agent-presets/

安装完在 DSH 里新建一个空白会话,模式选择器中会出现三个独立模式。正式版本会在控制器行为变化时提升 runtime-vN.mjs 的文件名,绕过 Node 的 ESM URL 缓存,因此从正式版本升级后通常不用重启 DSH;如果直接原地修改同一个本地控制器文件名,则需要重启 DSH 或同时提升文件名。已经打开的会话会继续使用创建时的预设代际和历史上下文,不会在中途换成新文件。

覆盖已有安装

install.sh 默认拒绝覆盖。要更新已装的版本:

./install.sh --force

旧目录会先备份成 codex-mode.bak.<时间戳>,不会直接删掉。

卸载

rm -rf ~/.dsh/.agent-presets/codex-mode
rm -rf ~/.dsh/.agent-presets/codex-ptc-mode
rm -rf ~/.dsh/.agent-presets/codex-harness-mode

这些预设装了什么

以下是 Codex 与 Codex PTC 两个 DSH 原生模式的公共组合。Codex Harness 模式使用更窄的 Codex 工具契约,详见其单独说明

agent.cordis.yml 挂载的行,都是 DSH 公开的组合插件:

  • persona — 授权判定、执行循环、步骤经济和工具纪律(这是这个预设的核心)
  • runtime controller — 按 turn 观察真实工具与结果,维护 orient → decide → implement/recover → verify 阶段、证据指纹和最近目标;正常执行时保持静默,同一阶段的漂移检查点只注入一次
  • repository-instructions — 读取仓库里的 agent 说明文件
  • 无状态 Bash / PowerShell + 后台任务 — 每次调用用结构化 workdir 指定目录;长任务可由 job_output / job_list / job_kill 管理
  • 文件工具read / write / edit / read_image
  • skill 目录 + 加载器 — 本地 skill 发现
  • plan mode — 只读调研,通过专用工具退出
  • 结构化搜索glob / grep 使用 DSH 随包提供的 ripgrep,不依赖宿主机 PATH
  • 上下文管理 — 小窗口和未知路由默认在真实容量的 72% 压缩并保留最近 18%;已验证的百万上下文路由约在 16 万 token 提前压缩并保留最近 4 万;另带 /compact 命令和工具结果裁剪
  • 重复调用刹车 — 同一个工具和参数连续重复时在第 2、4、6 次提醒
  • todo / ask-user — 任务计划、必要时提问
  • web 搜索 — 联网检索(不含 fetch)

控制器怎样工作

控制器不是第二套大提示词,也不读取或要求模型暴露隐藏思维过程。它只使用 DSH 已经产生的可审计事实:当前模型步骤、工具名、参数、成功/失败、结果指纹和目标路径。

  • 第 4 个 discovery 模型步骤仍未形成交付方向时,注入一次 orientation 检查点;第 7 个注入一次 decision 检查点。相同 decision 不会在第 12、16、20 步反复进入历史。
  • 检查点只要求模型利用现有证据选取最短下一步;正确性确实需要时,定向 read / grep / glob 仍可继续执行。第 24 步的 convergence 也只是一次建议,不是强制停止。
  • 第 3 次可由 glob / grep / read 覆盖的 shell 文件搜索会收到一次路由建议。后续同类调用仍可执行;构建、测试、Git、CLI/运行时检查不受影响。
  • 第二次内嵌 cd 时给一次 workdir 建议;第二次文件系统根扫描时给一次范围建议。它们都不会安装 tools/pre-execute 拒绝器。

这些阈值位于 agent.cordis.ymlcodex-controller 配置中。默认且唯一的运行姿态是非阻断建议:控制器观察和记录,模型决定下一步,真实工具失败才显示为错误。

工具集是刻意精简的:保留文件读写与结构化 glob / grep,不再重复挂载另一套编辑器,也没有长期目标工具。搜索工具使用 DSH 自带的 ripgrep 二进制;Bash/PowerShell 主要负责构建、测试、Git、脚本和运行时检查。Shell 的目录由 workdir 参数承载,不依赖会话间残留状态。压缩阈值比默认更早触发,用来压住长会话的重复输入成本;provider 本身不支持 prompt cache 时,DSH 仍会正常执行,只是统计里的输入会保持未缓存。

步骤控制优先依靠 persona 的可执行规则,而不是工具拦截:用户明确给出的步骤上限必须为最终答复预留一步;只读审计通常一批发现加一次定向补充后就交付;现有定向测试已经覆盖某项不变量时,不再同时用源码正则、内联测试程序和第二条分发链重复证明。复合命令只有一部分失败时,只修正并重跑失败部分。

聊天中直接附加的图片由支持视觉的当前模型直接读取,不需要本地路径。read_image / modlens_read_image 只用于消息里明确给出的本地路径或 URL;预设禁止把聊天附件猜成工作区里的 image.png。对于纯文本模型,仍可使用 modlens 的粘贴转路径或 (modlens vision) 路由,规则不绑定某个模型名。

模型是会话自己的设置,预设不锁定模型。

兼容性

codex-harness-mode 固定使用 @shuind/dsh-codex-harness@0.1.13 作为 DSH 适配层。它不要求 Codex 登录;真正的模型可用性只取决于当前 DSH provider。适配层的远程 GPT 搜索和远程压缩在本 preset 中关闭,因此不会绕过 DSH 模型路由。

@deepseek-ai/dsh 0.1.0-rc.6 / Node v24 上验证过。预设目录、插件行以及 agent/pre-steptools/post-execute 都使用 DSH 的公开约定。控制器刻意不注册 tools/pre-execute,因为 DSH 会把 guard denial 持久化为红色工具错误。如果后续 DSH 更改了插件名或事件协议,组合阶段会失败并暴露原因,不会静默退化成只有 persona 的模式。

不需要额外安装 ripgrep。@deepseek-ai/dsh-tool-fs-search 自带支持 macOS、Linux 和 Windows 的 ripgrep 二进制,并通过结构化 glob / grep 工具调用它;即使终端里的 rg 不在 PATH,代码检索也能正常工作。

DSH 会用路由返回的 contextWindow 计算压缩阈值。默认策略适合小窗口和未知路由:20 万上下文约在 14.4 万 token 触发并保留 3.6 万;13.1 万上下文约在 9.4 万触发并保留 2.36 万。预设为已验证的百万上下文目标提供精确策略:100 万上下文在 16 万触发,GPT 5.6 的 105 万上下文在 16.8 万触发,两者都保留最近 4 万。这样既避免小模型过早反复摘要,也能控制长 Agent 会话重复发送百万窗口历史的成本。

自定义 provider 的模型必须在 DSH settings.yaml 中显式声明真实容量;只写 idname 会让适配器使用通用猜测值,从而令百分比计算失真。例如:

models:
  - id: gpt-5.6-sol
    name: gpt-5.6-sol
    contextWindow: 1050000

contextWindow 应填写该具体上游路由实际允许的总上下文,而不是期望值;同名模型如果被网关裁成更小窗口,应填写裁剪后的有效容量。动态 auto 路由无法保证固定模型时不要硬编码容量。可以用 /compact 随时手动建立检查点;自动压缩会先裁剪大型旧工具结果,压力仍高时才调用当前路由生成摘要,并用摘要替换旧历史而不是再追加一份副本。

模型与推理档位仍由会话选择器控制,预设不会改写它们。普通编辑、打包和发布任务建议从 High(或模型的默认档)开始;只有复杂架构判断或困难调试再选 Max。步骤经济和工具选择不绑定 provider/model;压缩仅按已声明的容量档位区分,已列出的百万窗口目标使用同一套提前压缩策略。

验证

本仓库的确定性控制器测试:

npm test

测试覆盖原生快路径证明、未知任务能力保底、跨领域实际操作、连续任务能力保持、同 presentation 下的工具面切换、SDK allowlist、工具分类、阶段迁移、一次性检查点、根扫描建议、shell 搜索渐进纠偏、cd/workdir 分流,以及运行时不存在 tools/pre-execute 拒绝器。发布包还应执行 scripts/pack.sh,从 zip 与 tar.gz 各自解压安装,并由 DSH agentPreset.list 和新会话实际 mount 验证。

开发时用同一个失败测试 fixture 分别跑过 Claude、GPT 和 DeepSeek 路由:三者都完成了一行最小修改并通过 2/2 测试。真实长任务也暴露过旧硬保护的反例:“给共享记忆插件增加 GUI 面板”在 24 步内收到 7 次控制器上下文和 9 次控制器制造的工具错误,其中 decision 在第 8、12、16、20 步重复注入。v6 因此移除了 discovery lease 和所有 pre-execute denial;这个失败轨迹已固化为“一次注入、零拒绝”的运行时回归条件。

已有会话和迁移会话

预设升级不会重写已有消息、工具调用或压缩摘要。迁移自 Codex 的旧会话如果已经包含大量 cd /路径 && ... 工具轨迹,模型可能继续模仿这些历史示例,即使新 persona 已经加载。日志测试中,同一模型在旧迁移会话里仍反复使用 Bash,而在全新会话里能在 3–4 步内只用 glob / grep / read 完成相同只读任务。

因此验证新版时应新建空白会话,不要只在旧会话里续跑;分支会话会继承历史,也不适合作为干净基线。需要延续旧任务时,把仍有效的目标、已改文件和待验证事项简要带入新会话即可。

改成你自己的

复制 presets/codex-mode/ 到一个新目录名(这就是新的预设 id),改 preset.yml 里的 name/description/order,再按需调 agent.cordis.yml 里的 persona 文字和插件行。order 决定它在选择器里的位置。


English: Three DSH agent presets: provider-neutral Codex, adaptive Codex PTC, and Codex Harness Mode. The first two use DSH-native tools and advisory controllers. Harness Mode maps the Codex-compatible exec_command, write_stdin, apply_patch, and update_plan contract onto DSH while leaving model access, reasoning effort, context capacity, plugins, filesystem, sandbox, and sessions under DSH ownership. It does not start Codex CLI/app-server or require a Codex login. Hosted Responses search and remote compaction are disabled so requests never bypass the selected DSH provider.

License

MIT

About

Codex, adaptive Codex PTC, and optional Codex Harness agent presets for DeepSeek Harness, with published benchmarks

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages