What · 是什么
首次上手必做:选 provider/模型/API Key,按项目定制规则(rule.json)、过滤路径、调并发与预算
首次上手必做步骤:配置模型提供方与审查规则,决定审查的语言、范围与标准
ocr config provider 选择模型提供方:内置 DashScope、DeepSeek 等选项,也支持自定义端点接入任意兼容服务
ocr config model 配置具体模型,工具会自动测试连通性,失败即反馈,避免配错模型名
ocr config set language zh-CN 设置审查语言(如中文输出评论)
项目级规则文件 .opencodereview/rule.json:include/exclude 控制文件范围 + 规则内容,路径匹配用 doublestar glob(支持 ** 多级匹配)
全局规则 ~/.opencodereview/rule.json:跨项目生效的默认规则;--rule 提供临时规则,单次命令生效
ocr rules check 验证规则命中:确认规则确实匹配到了目标文件,避免规则写错而静默失效
Why · 为什么
原理 · Principle
审查质量的上限由模型与规则决定:不配置模型则无法运行,不配置规则则审查无差异化
项目级与全局级分层让『团队标准』与『个人偏好』共存:全局规则兜底,项目规则精确
连通性自动测试与 rules check 都是防『静默失败』设计:配错模型/规则当场报错而非审查时才发现
How · 怎么做
配置模型:ocr config provider 选择内置 provider(如 DashScope/DeepSeek)或按自定义端点配置 → 随后 ocr config model 指定模型并自动测连通
设置语言:ocr config set language zh-CN,让审查评论以中文输出
配置项目规则:在仓库根目录编写 .opencodereview/rule.json,include/exclude 用 doublestar glob(如 **/internal/**)限定范围,并填写规则内容
配置全局规则:在 ~/.opencodereview/rule.json 编写跨项目默认规则,新仓库自动继承
临时规则:单次命令加 --rule,如 ocr review --rule '禁止硬编码密钥',不污染仓库配置
验证规则:运行 ocr rules check,确认规则命中目标文件,输出与实际匹配一致后再正式审查
案例 · Cases
| 代表性案例 |
|---|
| 团队统一标准:项目 .opencodereview/rule.json 内置团队编码规范(如禁止 TODO 合并、必须错误处理),所有开发者共享 |
| 个人偏好:全局规则加入个人关注点(如注释语言、命名风格),跨项目生效 |
| 新成员上手:按 provider → model → language 顺序完成配置,rules check 确认规则生效后即可开始审查 |
| 多语言仓库:include/exclude 配合 doublestar glob 限定仅审查 Go/Python 目录,避免无关文件噪音 |
反模式 · Anti-patterns
- 跳过 ocr config model 的连通性测试直接使用,配错模型名/端点后审查静默失败,排查成本高
- doublestar glob 写错(如用单 * 期望匹配多级目录),include/exclude 不生效,规则范围失控
- 规则写好后不跑 ocr rules check,等审查时才发现规则从未命中目标文件
- 把全局与项目规则语义混淆:想项目内生效却写入全局文件,污染其他仓库的审查行为
正反实例论证 · Evidence
正例 · Pro
标准上手三连:provider → model → language
ocr config provider # 选 DashScope/DeepSeek 或自定义端点ocr config model # 自动测连通,失败即反馈ocr config set language zh-CN连通性自动测试当场暴露配错的模型名/端点,审查评论以中文输出,首次上手按序执行即可用。
反例 · Con
跳过连通性测试直接开跑
# 只配了 provider 就 ocr review模型未配置或配错时审查静默失败,排查成本高,且错误被延迟到审查时才暴露。
正例 · Pro
项目规则 + doublestar glob + rules check 验证
# .opencodereview/rule.json{"include": ["**/internal/**/*.go"], "exclude": ["**/*_test.go"], "rules": [...]}ocr rules check # 确认规则命中目标文件include/exclude 用 doublestar glob(** 多级匹配)精确圈定范围,rules check 在正式审查前验证规则确实生效。
反例 · Con
glob 写错且不验证导致规则静默失效
"include": ["*/internal/*.go"] # 单 * 无法匹配多级目录# 且未运行 ocr rules check规则从未命中目标文件却无人察觉,审查跑完发现规则形同虚设,返工成本高。
正例 · Pro
--rule 临时规则一次生效不污染配置
ocr review --rule '禁止硬编码密钥'# 单次命令生效,项目/全局配置不受影响临时检查场景(如发布前专项扫描)用完即走,不写入任何配置文件。
反例 · Con
把 --rule 当持久配置
# 以为 --rule 已全局生效,下次不带参数直接审查--rule 仅单次命令生效,下次审查不带则规则缺失,误判为工具 bug 而非使用方式问题。