dsh-open-code-review:在 DSH 里按需跑 OpenCodeReview 代码评审

前言

在 DSH(DeepSeek Harness)里改代码,模型写完一轮 diff 之后,你往往还要自己扫一遍:规则是否遵守、有没有明显疏漏。把评审交给外部 CI 可以,但本地会话里缺一个「我想审就审、结论能落到文件与行号」的入口。阿里 OpenCodeReview(ocr CLI)本身提供规则、文件列表与 unified diff 组成的评审规格,以及按文件返回的结论格式;dsh-open-code-review 由维护者 xinyangGL 开发,把这套能力接进 DSH:注册模型工具与斜杠命令,默认不自动打扰,回合尾部可点按钮或说一句「跑一次评审」,也能配置自动评审或独立只读评审子 agent。

这是什么

dsh-open-code-review 是 DeepSeek Harness 的代码评审插件,底层规格与 diff 始终来自本机已安装的 ocr 可执行文件;插件不负责替你安装 ocr,也不会替你把代码发到除你所配置 LLM 以外的任何地方。评审结论以「路径:行 [严重程度] 说明」的形式逐条展示,并区分「真正无问题」与「输出不可解析、超时、未完成」等失败态(不会把半成品伪装成「没问题」)。

分类上在 SkillHub 目录中归为「模型推理」:默认引擎 ocr 会走 OCR 自带 LLM 流水线(按 token 计费);也可选 delegate 由当前会话模型按 ocr 解析出的规则审 diff(无额外 review token),或启用 reviewer.agent = spawn 时 spawn 独立只读评审子 agent。

  • 目录页:https://www.skillhub.cn/plugins/xinyangGL/dsh-open-code-review
  • 源码与文档:https://github.com/xinyangGL/dsh-open-code-review

核心功能

下面介绍插件在资料中明确登记的能力,便于对照 README 自行验证。

模型工具与命令

插件向 DSH 注册两个模型工具:

  • ocr_review:执行一次评审
  • ocr_status:诊断可执行文件路径、版本、LLM 路由与配置来源

同时提供斜杠命令 /ocr-review。点击回合尾部的「启动代码审核」(v0.11.0 起仅在检测到本回合有文件改动时出现;若宿主无法提供该信号则回退为始终显示)时,会向会话投递指令:模型先跑 ocr_status 检查接线,再跑 ocr_review;进度出现在会话与 Jobs 面板。

三档执行方式(engine)

评审规格(规则 + 文件列表 + diff)一律来自 ocr;差异在于谁执行:

取值 行为概要
ocr v0.10.0 起为出厂默认;走 OCR 自带 LLM 流水线。资料实测约 176–600 秒/文件,按 token 计费(单文件扫描约 $0.16 量级);跑前会给出本次可审文件数与时间量级预估。
delegate 把 ocr 解析出的规则、文件列表与 diff 交给当前会话模型评审;ocr 内部不调 LLM,无额外 review token,秒级返回规格;无 LLM 后滤,覆盖度依赖 receipt 规则是否被遵守。
auto 先尝试 ocr,无 LLM 端点时回退 delegate;因「已审」与「半结果」外观可能相同,不是出厂默认,需显式选择。

另:reviewer.agent = spawn 时,每轮可 spawn 独立只读评审子 agent(自有上下文与模型,仅 read / grep / glob),返回结构化 findings,编码 agent 修复或说明后进入下一轮。

按需、自动与「先评审再测试」

  • 按需:默认不自动评审;回合改动了文件时出现尾部按钮,或手动 /ocr-review。
  • 自动:可在配置中让「写了文件的回合」结束时自动触发(出厂默认不自动)。
  • preTest:preTest=remind/gate 可把评审接到「跑测试之前」(提醒或门禁),详见仓库内设计文档。

结论形态与可核对承诺

资料强调四条可自检承诺:三种触发时机与三种 engine 下,结论来源与成本在 ocr_status(engine、configSource、stats.byEntry、llm 等)中可见;仅 退出码 0 且 findings 为空 才算干净;delegate 规格带 coverage-receipt,ocr 侧信任其声明的 partial 信号;ocr 运行前首条说明会给出本次规模与时间量级(探测失败则该句缺失)。

失败码示例:OCR_NOT_FOUND、OCR_OUTPUT_UNPARSABLE、OCR_LLM_MISSING、OCR_TIMEOUT 等,并附「下一步」指引。

安装与启用

环境要求:Node ≥ 20、本机已安装 ocr CLI(Windows 需指向原生 opencodereview.exe,.cmd / .bat shim 会因无 shell spawn 报 EINVAL)、已安装本插件的 DSH,以及可用模型(llmMode = dsh 为默认时,DSH 可向 ocr 出借模型、密钥与配额,无需额外填 endpoint)。

1、安装 OpenCodeReview CLI

node -v
npm i -g @alibaba-group/open-code-review
opencodereview --version

第一步确认 Node 版本不低于 20;第二步全局安装后,opencodereview --version 应输出版本号。

2、安装 DSH 插件并重启

dsh plugin --profile <profile> add github:xinyangGL/dsh-open-code-review

安装后重启 DSH。用模型调用 ocr_status 或设置页查看:应报告 ocr 可执行文件与版本、LLM 路由,且不应出现 no valid LLM endpoint configured(在 llmMode = dsh 且 DSH 模型可用时)。

若出现 OCR_NOT_FOUND,按 ocr_status 打印的平台相关安装说明操作,不要猜测路径;必要时在配置中设置 ocrPath。

典型用法

手动跑一轮评审

在会话中执行 /ocr-review,或在「本回合已改文件」时点击 Start code review / 启动代码审核。按钮副标题会按当前 engine 提示成本量级:ocr 为按 token、分钟级/文件;delegate 为无 LLM 调用、秒级出规格。

用工具自检

让模型调用 ocr_status,确认 engine、配置来源与 LLM 路由;再调用 ocr_review 执行评审。结论分层包含:裁决行、本次规模与成本、按 [高][中][低][未分级] 分组的 findings、下一步、溯源等(以 0.12.x 行为为准)。

控制成本

若不想为 review 单独消耗 token,在配置中将 engine = delegate。需要 OCR 流水线后滤与覆盖收敛时,使用默认 engine = ocr,并在跑前阅读首条规模/时间预估,必要时中止;不要在未评估耗时的前提下把 ocr 或 auto 原样接进 CI。

配置示例与字段说明见仓库 config.example.json 与 README.zh.md。

适用场景与注意

适合:已在 DSH 里用模型改代码、希望评审规格与业界 OCR 规则对齐、且能接受「本地 shell 出 ocr、结论可审计」的团队;需要在提交前或跑测试前多一道可重复、可点到文件行号的检查。

不适合当作:更准/更强/找全 bug、CI 级门禁、安全审计或全仓扫描的替代品;资料明确不承诺这些。

权限与安全:插件以当前 dsh 进程权限运行,会调用本机 ocr 并可能把 diff 与规则上下文交给所配置的 LLM。安装前请阅读源码与 LICENSE,确认 ocr 与模型 endpoint 符合你方合规要求。插件不替你跑测试、不替代 CI。

外部依赖:「无 npm 运行时依赖」指的是 Node 包层面;每一条代码路径仍会 shell 到 ocr 二进制,包括 delegate(仅跳过 ocr 内部的 LLM 调用)。

结尾

dsh-open-code-review 把 OpenCodeReview 的评审规格与 DSH 会话接在一起:默认少打扰,需要时用 /ocr-review 或回合尾部按钮即可;结果落在「文件:行 [severity] 问题」,engine 在成本、速度与责任主体之间切换。社区目录(与 DeepSeek / 幻方无官方从属):

  • https://www.skillhub.cn/plugins/xinyangGL/dsh-open-code-review

源码、中文 README 与变更记录:

  • https://github.com/xinyangGL/dsh-open-code-review
羽毛球分组比赛记分
小程序二维码

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

Xiaoye