evanklem/evanflow
GitHub: evanklem/evanflow
EvanFlow 是一个基于 TDD 的迭代反馈循环工具,用于与 Claude Code 进行软件开发,确保代码质量并减少 AI 失效模式。
Stars: 407 | Forks: 17
# EvanFlow
**一个由TDD驱动的、用于与Claude Code进行软件开发的迭代反馈循环。**
16项内聚技能 + 2个自定义子智能体,将一个想法从头脑风暴引导至实现,全程设有检查点让您保持掌控。一个入口点:说*"let's evanflow this"*,编排器即运行该循环。
```
brainstorm → plan → execute (vertical-slice TDD per task) → iterate → STOP
└─ sequential, or parallel coder/overseer
```
TDD不是在执行之后的独立阶段——它是*嵌入*在每个编码任务中的纪律。执行阶段是脚手架(任务跟踪、阻塞项、质量检查);`evanflow-tdd`是在任何产出生产代码的任务内部运行的内容。
该循环是**指挥者,而非自动驾驶**:在设计审批、计划审批和迭代后均设有真正的检查点。智能体会在每次git操作前停下,等待您的指示。无自动提交。无强制仪式。无“必须调用技能”的负担。
## 快速安装
**推荐**路径 — Claude Code的插件市场:
```
/plugin marketplace add evanklem/evanflow
/plugin install evanflow@evanflow
```
重启,然后尝试:
`evanflow-go` 会触发并引导整个循环。Git防护栏钩子会随插件自动激活(无需编辑settings.json)。技能出现在 `evanflow:` 命名空间下(例如,`/evanflow:evanflow-go`)。
下方见[安装说明](#installation)以了解两种替代路径。
## 是什么使其成为反馈循环
该循环围绕**跨越迭代累积的纪律**构建,而非一次性生成。每个步骤都有一个门控下一步的检查点:
- **头脑风暴**澄清意图,提出2-3种带有嵌入式压力测试的方法 → 您批准设计
- **计划**首先映射文件结构(深度模块、删除测试) → 您批准计划
- **执行**逐任务运行,并进行内联验证 → 阻塞项会停止循环并呈现给您。在每个编码任务内部,**TDD**是纪律(而非之后才有的独立阶段)。
- **TDD**仅采用垂直切片方式,**每个周期都进行完整的 RED → GREEN → REFACTOR**:一个失败的测试 → 最小化实现 → 重构*(在您刚刚编写的测试作为安全网仍然新鲜时进行)* → 下一个测试。重构不被推迟到末尾。测试通过公共接口验证行为,因此它们能经受住重构
- **迭代**用新眼光重新审视差异,运行质量检查,截取UI变更屏幕截图,并依据一份五项失效模式检查清单(虚构操作、范围蔓延、级联错误、上下文丢失、工具误用)运行。硬性上限为5次迭代
- **停止。**报告。等待您的指示。智能体从不自动提交,从不自动暂存,从不提议创建PR
对于包含3个以上真正独立单元的计划,该循环会分叉成一个**并行编码器/监督者编排**:每个单元一个编码器(使用带RED检查点的垂直切片TDD),每个编码器一个监督者(只读审查子智能体,不能修改代码),加上一个集成监督者在每个连接点运行指定的集成测试。集成测试*就是*可执行的契约——如果双方都必须满足相同的通过测试,接口就不会漂移。
## 内嵌的硬性规则
下面每条规则都引用了其来源。如果缺少引用,该规则源于在实际项目上运行循环得出的经验观点,而非研究——已如此标明。
- **绝不虚构数值** — 文件路径、环境变量、ID、函数名、库API。如果不确定,智能体会停止并询问。*来源:在[DAPLab/Columbia《编码智能体的9种关键失效模式》](https://daplab.cs.columbia.edu/general/2026/01/08/9-critical-failure-patterns-of-coding-agents.html)中,虚构动作是头号失效模式。*
- **断言正确性警告** — 在对四种LLM进行的HumanEval评估中,超过62%的LLM生成的测试断言是不正确的。*来源:[《面向代码生成的测试驱动开发》(arXiv 2402.13521)](https://arxiv.org/pdf/2402.13521),§3.2。* `evanflow-tdd`和监督者审查都会显式检查:实现中一个字符的错误是否仍能让断言通过。
- **五项失效模式检查** 在迭代 + 监督者审查中进行 — 虚构动作、范围蔓延、级联错误、上下文丢失、工具误用。*来源:综合自上述DAPLab失效模式论文。*
- **上下文漂移监控** — `evanflow-compact` 在清晰的阶段边界以及出现漂移症状(重复询问已确定的问题、与先前决策矛盾)时触发。*来源:2025年近65%的企业AI失败归因于多步推理过程中的上下文漂移或记忆丢失,而非原始上下文耗尽——参见[Alex Merced,《OpenCode的上下文管理策略》(2026年3月)](https://datalakehousehub.com/blog/2026-03-context-management-opencode/)。*
- **永不自动提交,永不自动暂存** — 经验观点,非研究。源于在实际项目上运行循环:每次智能体决定集成,它都集成错了。
- **无技能税** — 经验观点。技能是工具,而非收费站。
## 技能集
### 默认循环 (5项技能)
| 技能 | 用途 |
|---|---|
| `evanflow-brainstorming` | 澄清意图,提出2-3种带有嵌入式压力测试的方法。为纯视觉请求提供快速模式原型。 |
| `evanflow-writing-plans` | 首先规划文件结构,细分任务,嵌入式压力测试。步骤2.5在计划可并行化时提供`evanflow-coder-overseer`。 |
| `evanflow-executing-plans` | 逐任务执行,并进行内联验证。步骤0再次提供并行路径选项。交给迭代阶段,然后停止。 |
| `evanflow-tdd` | 垂直切片TDD。一个测试 → 一个实现 → 重复。通过公共接口验证行为。断言正确性警告。 |
| `evanflow-iterate` | 实现后的自我审查循环。重新阅读差异,修复问题,运行质量检查,截取UI屏幕截图(通过无头Chromium)。五项失效模式检查清单。硬性上限为5次迭代。 |
### 专用技能 (9项)
| 技能 | 用途 |
|---|---|
| `evanflow-go` | **单一入口点。** 说"let's evanflow this",它将引导整个循环。 |
| `evanflow-coder-overseer` | 并行实现:编码器/监督者对 + 集成监督者 + 可执行的内聚性契约。适用于包含3个以上独立任务的计划。 |
| `evanflow-glossary` | 提取规范领域术语到`CONTEXT.md`。标记歧义和同义词。 |
| `evanflow-improve-architecture` | 通过删除测试 + 深度模块词汇来揭示重构机会。 |
| `evanflow-design-interface` | "设计两遍" — 生成3个以上具有截然不同约束的并行子智能体,从深度/简单性/效率方面进行比较。 |
| `evanflow-debug` | 根本原因分析纪律。明确陈述假设,在修复前进行嵌入式压力测试,先写失败测试。 |
| `evanflow-review` | 代码审查的双方(给出 + 接收)。不要向您无法辩解的反馈妥协。 |
| `evanflow-prd` | 从现有上下文综合出PRD。用于实质性新功能。 |
| `evanflow-qa` | 对话式bug发现 → issue草稿。提交前先询问。 |
### 横切技能 (1项)
| 技能 | 用途 |
|---|---|
| `evanflow-compact` | 长会话上下文管理。在清晰边界进行主动总结的策略。漂移症状检查清单。 |
### 元技能 (1项)
| 技能 | 用途 |
|---|---|
| `evanflow` | 索引。共享词汇 + 何时调用每个 `evanflow-*` 技能。 |
### 自定义子智能体 (2个)
位于 `agents/` — 通过带 `subagent_type:` 参数的 `Agent` 工具调用:
| 子智能体 | 工具限制 | 用途 |
|---|---|---|
| `evanflow-coder` | 读取, 编辑, 写入, Glob, Grep, Bash, TodoWrite | `evanflow-coder-overseer` 的实现子智能体。工具 + 系统提示防止git操作、范围外编辑、数值虚构。 |
| `evanflow-overseer` | 读取, Grep, Glob(无编辑/写入/Bash) | 只读审查子智能体。工具从物理上强制"报告发现,永不修复"。 |
### 捆绑钩子
`hooks/block-dangerous-git.sh` — PreToolUse钩子,阻止破坏性git操作(`git push`, `git reset --hard`, `git clean -f`, `git branch -D`, `git checkout .`, `git restore .`)。随插件安装路径自动激活。
## 硬性规则 (适用于所有技能)
1. **永不自动提交,永不自动暂存,永不自动完成。** 每次git写入操作都需要您在当前轮次中明确要求。
2. **永不虚构数值。** 文件路径、环境变量、ID、函数名、库API — 如果不确定,智能体会停止并询问。
3. **无技能税。** 临时问题不需要调用技能。技能是工具,而非收费站。
4. **无强制的规范/计划路径。** 文件放在您希望的位置。
5. **声称完成前需验证。** 在任何"完成"报告前运行质量检查(类型检查、lint、测试)。
## 要求
- **[Claude Code](https://claude.com/claude-code)** (任何近期版本)
- **Bash** — 用于捆绑的钩子脚本(Linux、macOS或Windows + WSL)
- **`jq`** — 钩子脚本使用它来解析Claude的JSON工具输入。通过 `apt install jq`, `brew install jq` 或您平台的包管理器安装。**如果缺少 `jq`,防护栏钩子会静默失败,且危险的git操作不会被阻止。**
可选但推荐:
- **`chromium`** 或 **`google-chrome`** — 用于 `evanflow-iterate` 对UI变更的视觉验证(`chromium --headless --screenshot=...`)。如果缺失会优雅降级 — 技能会标记并要求您进行视觉验证。
## 安装
三条路径,按优先级排序。所有三条路径最终都会将相同的技能集放入您的 `.claude/skills/`。插件路径还会自动连接防护栏钩子。
### 路径 1 — Claude Code 插件市场 (推荐)
这是最干净的安装方式。技能、智能体和防护栏钩子全部自动激活。
```
/plugin marketplace add evanklem/evanflow
/plugin install evanflow@evanflow
```
重启 Claude Code(或 `/reload-plugins`)。技能以命名空间形式出现,如 `/evanflow:evanflow-go`, `/evanflow:evanflow-tdd` 等。通过"let's evanflow this"的自动调用无论命名空间如何都有效。
卸载:`/plugin uninstall evanflow@evanflow`。
### 路径 2 — `npx skills@latest add` CLI
适用于任何具有 `SKILL.md` 形式文件夹的GitHub仓库。仅安装技能 — **不安装防护栏钩子或自定义子智能体**(如果您需要,需手动添加)。
```
# 一次性安装全部 16 个 skills
npx skills@latest add evanklem/evanflow -s '*' -y
# 或单独安装各个 skills
npx skills@latest add evanklem/evanflow/evanflow-go
npx skills@latest add evanklem/evanflow/evanflow-tdd
# ...
```
这会将技能放置在 `~/.claude/skills/`(全局)或 `.claude/skills/`(项目,自动检测)下。
### 路径 3 — 手动复制
适合希望完全控制、不依赖CLI的用户。
```
git clone https://github.com/evanklem/evanflow.git
cd evanflow
# Skills(项目级别 —— 调整至 ~/.claude/skills/ 以设置全局)
mkdir -p .claude/skills
cp -r skills/* .claude/skills/
# Agents(由 evanflow-coder-overseer 使用的自定义子代理)
mkdir -p .claude/agents
cp agents/*.md .claude/agents/
# Git guardrails hook(可选但推荐)
mkdir -p .claude/hooks
cp hooks/block-dangerous-git.sh .claude/hooks/
chmod +x .claude/hooks/block-dangerous-git.sh
```
然后在您的 `.claude/settings.json` 中注册钩子:
```
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
```
可选地,将 `examples/CLAUDE.md.snippet` 粘贴到您项目的 `CLAUDE.md` 中,以向Claude介绍EvanFlow的约定。
### 验证任何安装路径
重启 Claude Code。尝试说:
`evanflow-go` 应该会触发并引导您完成循环。要验证防护栏钩子(仅路径1和3):尝试从Bash工具运行 `git reset --hard HEAD` — 它应被阻止并显示"BLOCKED: ... matches dangerous pattern"。
## 定制
每个技能都有一个清晰的结构,包含 `## 硬性规则` 部分。要适应您的项目:
- **替换技能(如 `evanflow-writing-plans`)中的 `` 和 `` 占位符** 为您的实际路径,如果您发现自己重复回答相同问题。
- **在您的 `CLAUDE.md` 中记录您项目的质量检查** — 确切的 `typecheck`, `lint` 和 `test` 命令。技能会抽象地引用这些命令。
- **调整 `evanflow-iterate` 中的视觉验证步骤**,如果您没有可用的 `chromium` — 替换为 `google-chrome --headless` 或其他工具。
- **编辑 `evanflow-coder-overseer` 中的内聚性契约模板** 以匹配您项目的约定(您的认证中间件名称、您的数据库写入助手等)。
这些技能被设计为可编辑的。将它们视为起点,而非金科玉律。
如果您fork以制作特定供应商的变体(如your-name-flow),很好——这正是精神所在。
## EvanFlow端到端如何工作
```
You say: "let's evanflow this — I want to add a feature that does X"
│
▼
evanflow-go (the conductor)
│
├─ Phase 0: Restate idea, scope check
├─ Phase 1: evanflow-brainstorming (CHECKPOINT: design approval)
├─ Phase 2: evanflow-writing-plans (CHECKPOINT: plan approval)
│ └─ Step 2.5: parallelization check
├─ Phase 3: evanflow-executing-plans (sequential)
│ OR
│ evanflow-coder-overseer (parallel)
│ ├─ contract with named tests + integration tests
│ ├─ RED checkpoint (all coders write failing tests, orchestrator verifies)
│ ├─ GREEN phase (vertical-slice TDD per coder)
│ ├─ per-coder overseers (review, never fix)
│ └─ integration overseer (runs touchpoint tests)
├─ Phase 4: evanflow-iterate (5x cap, Five Failure Modes pass)
└─ Phase 5: STOP. Report what was done. Await your direction.
```
横切技能:当上下文变得沉重时,`evanflow-compact` 会在清晰边界运行。
专用技能(`evanflow-debug`, `evanflow-improve-architecture`, `evanflow-design-interface`, `evanflow-glossary`, `evanflow-prd`, `evanflow-qa`, `evanflow-review`)会在流程中相关时被引入。
## 仓库结构
```
.
├── .claude-plugin/
│ ├── plugin.json — plugin identity (name, description, version)
│ └── marketplace.json — marketplace manifest (lists EvanFlow as one bundled plugin)
├── skills/ — 16 SKILL.md folders
│ ├── evanflow/
│ ├── evanflow-go/
│ ├── evanflow-brainstorming/
│ ... (etc)
├── agents/ — 2 custom subagent definitions
│ ├── evanflow-coder.md
│ └── evanflow-overseer.md
├── hooks/
│ ├── hooks.json — auto-activated when plugin installs
│ └── block-dangerous-git.sh
├── examples/
│ └── CLAUDE.md.snippet — for the manual-copy install path
├── docs/
│ └── skills-audit.md — verdict on all 38 candidate skills considered
├── README.md
└── LICENSE — MIT
```
## 许可证
MIT。详见 [LICENSE](LICENSE)。
## 贡献
欢迎提交问题和拉取请求。EvanFlow在设计上是有主见的——旨在增加仪式感或自动操作的提议将被礼貌地拒绝。旨在**进一步减少**仪式感、强化规则或添加有证据支持的改进的提议非常受欢迎。
标签:AI编程, AI辅助编码, Claude Code, SOC Prime, 代码质量保障, 任务管理, 反馈循环, 垂直切片开发, 应用安全, 开发工具, 开发插件, 开发效率, 开发流程优化, 插件市场, 敏捷开发, 数据管道, 检查点控制, 测试驱动开发, 编程助手, 网络可观测性, 软件工程, 软件开发, 迭代开发