dsh-codex-review:在 DSH 里用固定路由跑确定性代码审查

前言

在 DeepSeek Harness(DSH)里改代码时,常见做法是直接让当前会话里的智能体「帮忙 review 一下」。这种做法有两个结构性问题:写代码的模型也在评判自己的推理;而在按轮次路由的 harness 里,「审查这段改动」未必会落在你期望的模型上,而是由路由器决定。

DSH 本身已经支持斜杠命令直接调用 subagent 服务,并可通过 agentOptions 把子智能体的路由钉死。下面介绍的 dsh-codex-review(维护者 vitas,分类:工作流)把这件事收成一条确定性命令 /review:不自带 LLM 客户端、不持有凭证,也不依赖主会话当前跑在哪个模型上。路由固定后,还可以把审查指到订阅侧的 Codex 路由(默认 openai-codex),用 ChatGPT 订阅鉴权而不是按 token 计费的 API。

这是什么

dsh-codex-review 是一个 bundle 型 DSH 插件:安装后会挂载 codex-review 配置行和 /review 斜杠命令。它在社区讨论 Show Your Plugins! #8596 中发布;当前 package 版本为 0.4.0(MIT 许可证,Node >=22)。

一句话定位:把当前变更集交给一个路由被钉死的审查子智能体,默认走订阅支持的 openai-codex,并在每个聊天里默认维持一条可延续的审查会话,便于对比「上次指出的问题」与本轮改动。

核心功能

确定性 /review,无需额外参数

命令本身不需要参数。审查子智能体带着固定的 brief(立场:只报告、不改文件;检查顺序:正确性、失败处理、契约、安全、并发与状态;证据门槛:无法核实的断言应写成问题而非结论),并按规则选取待审内容:

  • 工作区中的变更集(含未跟踪文件);
  • 若工作树干净,则看最新一次 commit;
  • 若根目录不是 Git 仓库,则看其下有变更的子仓库(不会把整个目录里所有 checkout 都读一遍)。

你在命令后面输入的文字只用来收窄「审什么」,不会替换 brief,也不会限制审查者实际读取的范围。

三种典型输入

/review                                    审查当前变更集整体
/review focus on the cache invalidation    同一套审查流程,但聚焦 cache invalidation
/review reset                              Forget 当前审查会话,下次 /review 重新开始

/review reset 是唯一「不是审查」的输入:每个聊天默认共享一条审查会话,以便说明「相对上次有什么变化」;reset 会退役该会话并在仍在运行时停止它。注意:只有整段输入才算数——/review reset the cache 会审查 cache 相关部分,而不是 reset。退役后的会话不会被删除;若在下次 /review 之前重启 host,仍可能重新接上旧会话。

会话模式:shared 与 fresh

模式 行为
conversation: shared(默认) 每个聊天一条延续的审查子智能体:首次 /review 创建,之后把下一轮修订交给同一会话;审查报告以对话消息形式出现,命令返回值只是 receipt
conversation: fresh 每次调用启动一次性子智能体,报告作为命令结果直接返回

shared 基于 DSH 的可延续子智能体(subagents.startContinuable / sendMessage),记忆在 host 重启后仍可通过 durable session 冷恢复;后续 prompt 更短,侧重 delta:哪些已修、哪些仍 open、哪些是新的。

刻意不做的事

  • 不会自动审查:只有人工输入命令时才运行。
  • 不会自动改代码:审查者只读只报,实现仍由主智能体完成。
  • 不处理鉴权:凭证 entirely 由所选 provider 路由负责。
  • 默认 backend: spawn 时,子智能体不继承主会话对话,只看到仓库与自身既往审查;若需要相反行为,可设 backend: fork。

安装与启用

资料中的安装方式来自本地 checkout 或 link 依赖(请换成你机器上的实际路径):

# from the checkout
dsh plugin --profile web add /Users/vitas/git/dsh-codex-review
# or as a dependency
dsh plugin --profile web add link:~/git/dsh-codex-review

安装 bundle 后会挂载配置行与命令;配置行本身不必重启,但斜杠命令要等 profile 重新 compose 后才会出现。

插件目录页:https://www.skillhub.cn/plugins/vitas/dsh-codex-review
源码与 README:https://github.com/vitas/dsh-codex-review

路由与依赖

/review 不会替任何 provider 做登录。你需要一个由配置项 provider 命名的、且能正常工作的 LLM 路由。订阅路径下通常是 openai-codex,例如:

  • pi-ai 自带的 openai-codex:用 ChatGPT Plus/Pro OAuth 登录;
  • dsh-codex-auth:从 ~/.codex/auth.json 注册 openai-codex,复用 Codex CLI 已有登录;
  • dsh-subagent-codex:以名为 codex 的 subagent backend 在外部跑 codex exec;需设 backend: codex 并由 CLI 解析路由。

调用失败时,错误信息来自 provider 本身(例如路由未配置凭证、未知 model id),会出现在命令结果里。

配置

Web UI 路径:Plugins → dsh-codex-review。设置卡片可选路由、审查模型(列表来自当前 running composition 的 model catalog)、memory 模式、reasoning effort、命令名等。同一批字段也可写在 profile 的 cordis.patch.yml 中;仓库内 cordis.patch.yml 提供默认值与注释说明。

注意:patch 里的 config 会整段替换该行的 config,不是 deep merge。 只改一项时,需要把仍要保留的字段一并写回。

field default meaning
backend spawn subagent backend:spawn(进程内新子体)、fork(继承当前对话)、或插件提供的如 codex
provider openai-codex 审查子智能体钉死的 LLM 路由
model gpt-5.6-sol 该路由上的 model id
conversation shared shared 每聊天一条延续会话;fresh 每次一次性子智能体
reasoningEffort null off…max,或 null 由路由决定
childMaxDepth null 0 禁止子智能体再委派;null 不传(适合无 depthLimit 能力的 backend)
persona null 若 backend 支持,可设 per-child persona
command review 斜杠命令名
instruction, diffCommand, statusCommand 见 patch 审查 brief 与优先执行的命令
maxOutputChars 40000 返回审查文本长度上限

审查 brief 对应行上的 instruction;profile 可整段替换,与设置卡片写入的字段并列。

典型用法

  1. 在 Web profile 安装插件并完成 compose,确保 openai-codex(或你配置的 provider)已可用。
  2. 在 Plugins 卡片里确认 provider、model、conversation 等是否符合预期。
  3. 改完代码后在聊天里输入 /review;若只想强调某块逻辑,可追加说明,例如 /review focus on the cache invalidation。
  4. 默认 shared 模式下,阅读对话里子智能体返回的报告;主智能体按报告改代码后再次 /review,会收到相对上次的 delta 说明。
  5. 想丢弃跨轮记忆时执行 /review reset,或临时把 conversation 设为 fresh 做一次性审查。

适用场景与注意

适合谁: 希望在 DSH 工作流里把「写代码」和「审代码」分到不同模型/路由上的开发者;尤其已配置 Codex 订阅或 openai-codex 路由、又希望审查立场固定(只报不改、带证据门槛)的团队。

运行与信任边界: 插件以当前 dsh 进程权限运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认命令与子智能体在你环境中的行为可接受。SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,不宜当作官方应用商店。

与「让主智能体自审」的对比: 本插件的价值在于路由可控、审查会话可延续、且不增加插件自身的运行时凭证面;代价是需要你维护可用的 provider 路由,并理解 shared 下报告出现在消息里而非命令返回值这一交互差异。

结尾

dsh-codex-review 把 DSH 里已有的 subagent 与路由钉死能力,收成一条可配置的 /review:默认 Codex 订阅路由、每聊天一条审查记忆、以及 /review reset 清空会话。若你在 harness 里既要改代码又要独立视角的审查,可以按 README 的安装与 cordis.patch.yml 字段接入。

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

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

小夜