xIPnexxIPnex

案例:全分支审 — 重索引 vs 零索引

背景

客户拿 Gitee 上一个 Kotlin 仓库(uu5208/simpler-robot,分支 v4-dev)做代码审核试水, 同一份仓库跑了两条路径对照:

  • A. 重索引深审:建 KB(code-awareindex_tier=heavy)→ 仓库导入 → 解析 → audit 模式批量扫 → 抽样语义 / navigate 验证 → HTML 报告
  • B. 零索引快查:不建 KB,直接 gitee_get_tree + gitee_get_file_contents 读源码 → 按 code-review skill 的审核维度逐文件审 → 输出 JSON / MD / HTML

这是平台两种最典型的代码审核形态——适合放进选型决策时拿出来对照看


对照结果一张表

维度A. 重索引深审B. 零索引快查
覆盖范围整个 simbot-cores/ 子目录(97 文件 / 529 KB)4 个核心 .kt 文件(约 31 KB)
初始化建 KB + 导入 + 解析(分钟~十几分钟)凭据 + tree 拉取(秒级)
检索能力audit / hybrid / navigate / semantic 全开仅 LLM 直读
典型问法"全仓有哪些 high finding?""这个符号被谁调用?""这 4 个文件有什么问题?"
可复用KB 建完,后续每次评审都用同一份索引(增量同步即可)每次都要重新拉一遍
产出HTML 可视化看板 + audit 命中清单 + 关键调用链JSON + Markdown + HTML 三件套
真实跑出来的 finding(以 audit 全扫 + semantic 抽样为主,跨文件命中)17 条 — fatal:0 / severe:3 / general:8 / minor:6
Top 风险点(B 案例实跑)① 协程作用域泄漏;② 事件调度器安全校验缺失;③ 接口契约依赖方向不一致

A 路径会跑更深,但前置时间更长;B 路径几乎零等待,但只能看你"明示 LLM 去读"的那几个文件。 业务诉求决定走哪条——见下方"选型".


什么时候选 A,什么时候选 B

你的诉求推荐路径
大版本发布前,整仓深度盘点A
接管一个新仓库,要做合规体检A
长期维护、要建立"审核-反馈"闭环(findings 要进 LTM)A
临时评估外包提交、看一眼几个文件B
仓库太大或私部网络受限,建 KB 成本不划算B
不带 PR/MR,想快速产 HTML 报告交差B(最低成本)

A. 重索引深审 — 提示词模板

用于场景 C(全分支审)。全自动跑完不打断——重索引初始化要 10~15 分钟,agent 自己轮询,不要中途回应"继续"。

请对 Gitee 仓库做一次全量代码审查(自建 KB → 导入 → 解析 → L2 审核 → HTML 报告)。

仓库: https://gitee.com/<your-org>/<your-repo>.git (branch=<your-branch>)
Token: <REDACTED — manage_credential 注入,不要写在提示词里>

执行链路(不要中途暂停问我"继续",全自动跑完):

1. manage_credential store gitee token (如未绑)

2. kb_create 创建知识库:
   - name: "<repo>-review-<当前时间戳>"
   - parser_id: "code-aware"
   - parser_config: {"index_tier": "heavy"}
   返回 kb_id 后, 立刻用这个 kb_id 跑后续步骤.

3. import_from_gitee dryrun → execute 一气呵成:
   - url=仓库 URL, kb_id=上一步, mode="dryrun"
   - values={"ref":"<branch>", "sub_path":"<sub-path>"}
   - file_globs=["*.kt"], limit=50
   报 dryrun 文件数 + dryrun_id 后, 立刻同参数 mode="execute" 跟上,
   parse_intent="auto".

4. 等解析完成(约 10-15 分钟, 这是正常速度, 不要 bail):
   - kb_doc_status 每 30s 轮询一次, 不要 tight loop
   - 完成判定: kb_doc_list 看 docs[].status, 全部 done 才算 ready
   - hierarchy 验证: 看 location 字段(不是 name), 应带 "<sub-path>/..." 前缀

5. 用 code-review skill 做 L2 审查(场景 C 全分支审, 跳过 gitee_get_tree, 直接用 KB):
   a. unified_search code_search mode=audit, kb_ids=[新建 KB], top_k=50
      → 列全部 high/medium finding, 按 rule_id 聚类
   b. mode=hybrid top_k=10 抽样以下 5 个 query:
      - 硬编码 password token secret 密钥
      - SQL 拼接 注入
      - 随机数 加密 弱算法
      - 未关闭资源 leak close
      - 线程安全 并发 race
   c. audit 命中的关键 symbol → mode=navigate query="refs:<symbol>" 看影响面
   d. 跳过 KB 需求检索(没绑需求文档)、跳过 LTM 检索

6. 生成 HTML 报告 write_file 到 outputs/code_review_visual_report.html:
   - 总览: 文件数 / 语言分布 / 新建的 kb_id 和 name
   - audit findings 表: rule_id × severity × count
   - Top 10 风险点: 文件:行 / 代码片段 / 修复建议 / confidence
   - 关键调用链 (navigate 结果)

约束:
- 解析全程不要重复调 kb_parse 去 trigger 已入队的 doc, 那会插重复任务
- LLM 主观判断必须用 code_search 验证, audit findings 是 ground truth
- 全程不要中途生成 "进度报告", 完成所有 6 步再总结
- 不修改原仓库

B. 零索引快查 — 提示词模板

适合"我就想看这几个文件,不要建 KB 那么重"。
不调 kb_create / kb_upload / kb_parse / import_from_gitee,全程 gitee_get_* 读源码。

请用 code-review skill 对 Gitee 仓库做一次代码审查(场景 C 全分支审,不走 KB 上传)。

仓库: https://gitee.com/<your-org>/<your-repo>
分支: <branch>
范围: <sub-path>/<...> 下的 .kt 文件
Token: <REDACTED — 用 manage_credential 存一下 scm/gitee/tenant>

执行步骤:

1. gitee_get_tree(owner="<owner>", repo="<repo>", ref="<branch>", recursive=True)
   过滤出目标目录下的 .kt 文件,最多取 10 个

2. 对每个文件 gitee_get_file_contents(...) 读全文

3. 按 code-review skill 的 Step 3 审核维度逐文件审:
   - code_standard: 命名/注释/职责单一
   - security: 鉴权/敏感信息/异常吞咽
   - performance: 阻塞 IO / N+1 / 并发问题
   - design_consistency: 接口契约/依赖方向

4. 跳过 Step 2 (KB 需求检索) 和 Step 4 (LTM),因为没绑 KB

5. 输出 JSON + Markdown + HTML 报告到 outputs/,每个 finding 必须有 reasoning + confidence

要求:
- 不要调 kb_create / kb_upload / kb_parse / import_from_gitee — 全程 gitee_get_* 读文件
- 报错原样贴出,不要美化
- 全部完成后给我 finding 的 severity 分布 + top 3 finding 的标题

实跑数据(B 路径完整产出)

项目数值
审核文件数4
Findings 总数17
Severity 分布fatal: 0 · severe: 3 · general: 8 · minor: 6
Top 3 finding① 协程作用域泄漏风险
② 事件调度器安全校验缺失
③ 接口契约依赖方向不一致
产出JSON / Markdown / HTML

A 路径仓库导入 97 文件 / 529 KB,重索引初始化中——长尾 audit / navigate 数据可在 KB 解析完成后从 unified_search 实时拉取,HTML 看板也会自动更新(这一档的好处就是索引建一次,后续每次审核复用)。


安全提示(重要)

提示词里永远不要直接写 PAT / 密码 / API Key。
正确姿势:

  1. credential 工具 一次性 manage_credential store
  2. 后续 prompt 只引用 purpose / scope(如 scm/gitee/tenant),平台运行时自动注入
  3. token 永不进 LLM 上下文、永不进会话记录

上面两份模板里的 Token:只是指引位置——真实使用时改写为"已通过 manage_credential 存储"即可。


相关文档

On this page