ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

open-code-review 的 Plan 阶段耗时很长但文件很小,原因是什么?

open-code-review 的 Plan 阶段耗时很长但文件很小,原因是什么? open-code-review 的 Plan 阶段耗时很长但文件很小原因是什么【免费下载链接】open-code-reviewFast, efficient, battle-tested at Alibabas scale. Hybrid architecture code review tool: deterministic pipelines LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI Anthropic compatible.项目地址: https://gitcode.com/GitHub_Trending/op/open-code-review在跑ocr review时你会看到某个 group 的 Plan规划阶段占了明显时间但被评审的那个文件本身只有几行改动。这不是 bug。open-code-review 的 Plan 阶段不是按单个文件触发的而是按语义 group触发而且触发条件有两个阈值不是只看“文件小不小”。一个小文件只要被和别的改动编进同一个 group、让这个 group 的累计变更行数跨过阈值就会整组走一次 Plan 调用于是“文件很小却 plan 很久”。本文给出判断顺序先确认是不是 group 行数触发了 Plan再用--preview和 telemetry 验证最后给出文档支持的几种处理方式。前提是你已经配好 LLM 端点~/.opencodereview/config.json或OCR_LLM_*/ANTHROPIC_*环境变量之一能正常跑ocr review。Plan 阶段由哪两个阈值控制一个 group 是否走 Plan取决于下面任一条件成立来自 FAQ 与 Architecturegroup 里最大的那个文件变更行数 ≥PLAN_MODE_LINE_THRESHOLD默认50或group 含2 个及以上文件且这些文件的累计变更行数lines.changed达到PLAN_MODE_GROUP_LINE_THRESHOLD默认100。组阈值是两者中更大的那一个目的是避免多文件 group 无条件走 Plan见 architecture.md。只有当“最大文件不足 50 行”且“2 文件 group 累计不足 100 行”同时满足时Plan 才会被静默跳过直接进入 main loop。所以“文件很小”本身不决定 Plan决定它的是这个文件被编进的那个 group 的行数。小文件为什么会触发 Plan语义分组是关键ocr review不会逐文件评审。评审前会先用一次“只看文件元数据路径、状态、增删行数不看 diff 内容”的GROUPING_TASKLLM 调用把相关改动归到一个 group例如 handler service 测试同一个 group 的多个文件共享一段对话。每个 group 最多 10 个文件如果模型漏掉某个文件那个文件会单独成组见 architecture.md 的语义分组一节。这正是小文件“中招”的机制一个几行的改动可能因为语义上和邻近的若干文件相关被编进一个累计变更超过 100 行的 group。此时整个 group 触发 Plan哪怕你只关心那个小文件。文档对此的原话是“一个很小的文件只要它被和别的改动归到一组、而加起来够大仍然会走一次 plan。”另外Plan 本身是每个触发它的 group 额外多一次 LLM 调用它会发起一次只读、不带工具的PLAN_TASK调用模型不能调用工具返回一份清单作为{{plan_guidance}}注入主任务 prompt见 architecture.md 与 tools.md 的工具可用性表task_done和code_comment在 Plan 阶段不可用。也就是说Plan 的额外开销 触发它的那个 group 多一次 LLM 往返再叠加 main loop 的轮次。如何验证确认行数是否跨了阈值先用不花 LLM 成本的方式确认范围再用 telemetry 精确验证阈值。1. 用--preview看这个文件被归到哪ocr review --preview--preview只跑过滤管线、不调用 LLM会列出每个候选文件以及它被保留或排除的原因modified、added、excluded: user_exclude/default_path/unsupported_ext等。它能直接告诉你这个“小文件”是否还在评审范围内以及和它一起出现在这次评审里的还有哪些改动。如果你的小文件确实和另外若干改动一起构成一个累计超过 100 行的集合那 Plan 被触发就是符合设计的行为而不是异常排除原因含义见 faq.md 的 “My file isn’t being reviewed”。注意--preview不会打印每个 group 的具体lines.changed它确认的是“评审范围与排除”具体行数要靠下面第 2 步。2. 用 telemetry 事件看每个 group 的实际行数与阈值精确判断“到底哪一行把 Plan 触发了”靠event.plan.skipped事件携带的属性见 telemetry.md属性含义lines.changed该 group 累计变更行数lines.changed.max_filegroup 里最大文件的变更行数thresholdPLAN_MODE_LINE_THRESHOLD50threshold.groupPLAN_MODE_GROUP_LINE_THRESHOLD100group.file_count该 group 文件数启用 telemetry默认关闭用 console exporter 直接在终端打印 spanocr config set telemetry.enabled true ocr config set telemetry.exporter console ocr review对照这几个属性如果lines.changed≥threshold.group或lines.changed.max_file≥threshold说明 Plan 真的被触发了反之若两个都没跨telemetry 会记录plan.skipped事件见 telemetry.md 的事件表plan.skipped表示“该 group 同时低于两个阈值”。如果你看到 plan 被触发、但group.file_count 1就能确认是“小文件 同组其他改动”凑过了 100 行——这正是标题描述的现象。如果怀疑 Plan 报错导致 main loop 没拿到 plan 指引可看event.plan.failedplan 出错时 main loop 会在没有 plan 的情况下照常运行telemetry.md。想逐事件回看某次会话用 Session Viewerocr session list找到会话ocr session show session-id查看其中该 group 的事件。怎么处理让这个小文件不再走 Plan按影响从小到大在更小的 diff 上跑缩小本次评审的范围让这个 group 的累计行数回落到 100 以下。文档对“单次评审”给出的直接做法就是换更小的 diff。按提交拆开如果你是在 workspace 模式下一次评审一串小提交改用--commit sha逐个提交评审单个提交的 group 行数通常不会达到 100见 cli-reference.md 的 Range/Commit 模式。接受它如果该 group 的变更“本来就大”累计确实跨过 100 行Plan 属于设计内的预期开销——大或宽的 diff 确实受益于一次规划。改内嵌模板进阶文档说明“临时编辑内嵌模板进阶需要用--tools覆盖”来跳过 Plan。需要强调模板不是CLI 覆盖项——改 prompt 要编辑 task_template.json 并重新构建而--tools只是替换工具注册表它换的是internal/config/toolsconfig消费的 JSON不是模板本身。这条门槛较高仅在确认要长期调整 Plan 行为时再走。小结“Plan 很久但文件很小”的根因几乎都是这个文件被语义分组编进了一个累计变更 ≥ 100 行的 group或组内某文件 ≥ 50 行于是整组触发了一次只读 Plan 调用。排查顺序固定为——先确认 group 行数是否跨阈值--preview定范围telemetry 定行数再决定是缩小 diff、按提交拆开还是接受这次预期的规划开销。判断依据始终是lines.changed、lines.changed.max_file与threshold、threshold.group的对比而不是“文件看起来小”。【免费下载链接】open-code-reviewFast, efficient, battle-tested at Alibabas scale. Hybrid architecture code review tool: deterministic pipelines LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI Anthropic compatible.项目地址: https://gitcode.com/GitHub_Trending/op/open-code-review创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表