🔁 Code Review Loop — 定时代码审查循环
每 5 分钟审查一次当前的代码变更(git diff),在当前会话期间持续循环。
不持久化:会话结束或进程被杀,循环自动失效,不会跨会话残留。
触发时机
- 用户说“定时审查代码 / 每 5 分钟审查一次 / 开始审查循环” → 启动
- 用户说“停止审查 / 停止循环 / 结束审查” → 停止
执行流程
1. 启动循环
调用 CronCreate 创建一个 session-only 定时任务:
| 参数 | 值 | 说明 |
|---|---|---|
cron |
*/5 * * * * |
每 5 分钟触发一次 |
prompt |
见下方「每轮审查 prompt」 | 每次触发时注入对话的指令 |
recurring |
true |
周期性任务 |
durable |
false |
关键:不写入 scheduled_tasks.json,进程结束即失效 |
创建后,向用户回报:
- ✅ 循环已启动 + 返回的 job ID
- 停止方式:关闭会话/杀进程即自动停止,或说“停止审查循环”主动停止
2. 每轮审查 prompt
将以下文本原样作为 CronCreate 的 prompt 参数(cron 每次触发时注入对话):
[定时代码审查] 审查当前未提交的代码变更:
1. 先运行 `git status --short` 和 `git diff --stat` 判断是否有变更
2. 无变更 → 只回复“✅ 暂无新变更”,立即结束本轮(不空跑、不编造问题)
3. 有变更 → 运行 `git diff` 取出变更,审查 bug / 安全 / 逻辑错误,按 严重 / 中等 / 轻微 分级,每条格式:`文件:行 — 问题 — 建议`
4. 只审查、不修改代码
3. 停止循环
两种方式(都满足“用户终止即失效”):
- 被动:关闭会话 / 杀掉 Claude Code 进程 → session-only 任务随之消失(因为
durable: false) - 主动:调用
CronList找到本循环的 job ID →CronDelete删除
核心规则
- 只读:审查循环绝不修改代码,只报告问题
- 不空跑:无 diff 时必须立即结束本轮,避免浪费 token
durable必须为false:否则会落盘并跨会话残留,违反“终止即失效”要求- 7 天上限:Claude Code 的周期任务最多跑 7 天会自动过期(硬限制),需要长期运行时重新启动
注意事项
- 审查范围默认是未提交的变更(
git status+git diff,含已暂存和未暂存,不含已 commit 的) - 触发受 REPL 空闲约束:你正在对话时不会打断,当前一轮结束后才 fire
- 调整间隔改
cron字段即可(如*/10 * * * *为 10 分钟,0 * * * *为每小时)