# Code Review Loop

> 每 5 分钟自动审查一次当前未提交的代码变更（git diff），在当前会话期间循环执行。 会话结束或 Claude 进程被终止时循环自动失效（session-only，不写入磁盘、不跨会话残留）。 当用户说“定时审查代码 / 每5分钟审查一次 / 开始审查循环 / 停止审查循环”时激活。

- Skill: `zsutxz/code-review-loop` (Agent Skill)
- Install (CLI): `npx skillmds add zsutxz/code-review-loop`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zsutxz/code-review-loop/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: zsutxz (https://skillmd.com/u/zsutxz)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/zsutxz/code-review-loop

---


# 🔁 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 * * * *` 为每小时）

