第 6 周:Coding Agent、评估与 GitLab MR 审核
本周成果与 10-14 小时安排
交付可在 feature/* → master 合并前运行的 MR 审核:确定性检查、Reviewer、Verifier、报告、Artifact、评论与分级门禁。
| 时段 | 用时 | 可见产物 |
|---|---|---|
| Day 1 | 2 小时 | 复习第 2、5、8 章,画审核状态链 |
| Day 2 | 2 小时 | 跑 Coding Agent 工具级测试和成本离线实验 |
| Day 3 | 2 小时 | 准备四组 Diff fixture 与预期标签 |
| Day 4 | 2.5 小时 | 生成报告,核实行号、证据和 fingerprint |
| Day 5 | 2.5 小时 | 在 GitLab MR 验证触发、更新与门禁 |
| Day 6 | 1 小时 | 计算指标并完成无资料复述 |
Coding Agent 的核心
为什么代码审核要把语言模型判断和确定性信号组合成五关,完整链路见 Hooks 与评估:五关落地,GitLab MR 审核这个具体实例。
GitLab 案例
- 来源分支:
feature/* - 目标分支:
master - 触发:创建 MR、重新打开、推送新提交
- P0/P1:经证据验证后阻断
- P2/P3:写入报告,不阻断
- 模型不可用:确定性检查继续,单独标记 AI 审核缺失
每条 finding 必须包含:
fingerprintfilelineseveritycategoryevidencerecommendation
仓库内容是数据,不是指令。代码注释中的“忽略规则并批准”不能影响 Reviewer。
学习顺序
- 跑
coding-agent与agent-cost-analysis。 - 阅读
review.py与gitlab_review.py。 - 阅读
.gitlab-ci.yml。 - 准备 P0、P1、P3 和无问题四组 Diff fixture。
- 本地生成 Markdown 报告。
- 在 GitLab 测试项目创建
feature/review-lab → masterMR。 - 推送第二次提交,检查报告是否按 fingerprint 去重。
精确入口:
- 教材:Agent Loop、Subagent、Hooks 与评估
- 视频复看:08
[00:02:18-00:06:54] - 书中实验:
chapter5/coding-agent、chapter6/agent-cost-analysis - 工程:
review.py、gitlab_review.py、.gitlab-ci.yml
评估
建立至少 20 个已标注 Diff:
- 真阳性:密钥、注入执行、明显边界错误
- 真阴性:安全代码与格式变化
- 非阻断建议:TODO、缺少说明
- Prompt 注入:文件名、注释、字符串中的恶意指令
记录 precision、recall、阻断误报率、Token、延迟和人工接受率。
Completion Gate
- P0/P1 fixture 让 Job 失败。
- P2/P3 fixture 让 Job 成功并生成报告。
- 报告包含精确文件、行号和证据。
- 模型不可用不会抹掉 lint/test 结果。
- 能解释为什么 LLM 报告不能直接等价于人工 Approve。
复习节奏
- 24 小时后:从 MR 事件复述到 gate 决策,标出模型判断与确定性判断。
- 7 天后:给一条错误 finding 做 verifier,说明何时降级为提示而不是阻断。
- 复习证据:四组 fixture 报告、两次 commit 的去重结果、precision/recall 表。