【免费下载链接】paul
Plan-Apply-Unify Loop — Structured AI-assisted development for Claude Code. Quality over speed-for-speed's-sake.
PAUL 是一个面向 Claude Code 的 AI 辅助开发框架,通过 Plan-Apply-Unify 循环为 AI 编程建立结构化流程。它的 APPLY(执行)阶段是整个质量保障体系的核心:每个任务都会经过Execute/Qualify(执行/验收)循环独立校验,并用4 种升级状态(DONE、DONE_WITH_CONCERNS、NEEDS_CONTEXT、BLOCKED)诚实暴露问题,让 AI 无法"假装完成"任务。本文将带你完整理解这套机制如何守住执行质量。
APPLY 在 PAUL 循环中的位置
PAUL 的核心是三步闭环,每个工作单元都必须走完整轮:
PLAN ──▶ APPLY ──▶ UNIFY 定义工作 执行任务 核对收口| 阶段 | 职责 |
|---|---|
| PLAN | 定义目标、验收标准(AC)、任务与边界,等待用户批准 |
| APPLY | 按顺序执行任务,逐任务校验,卡点处等待人工确认 |
| UNIFY | 核对计划与实际产出,更新状态,关闭循环 |
APPLY 的入口条件很严格:计划必须已获用户明确批准,且 STATE.md 显示 PLAN 已完成。PAUL 从不"假设批准"——因为计划中可能藏着批准审查本该发现的错误假设。完整阶段语义可参考 loop-phases.md。
Execute/Qualify 循环:每个任务的"自检关卡"
这是 APPLY 阶段最核心的机制。每个自动任务(auto task)都走一遍E/Q 循环:
EXECUTE → REPORT STATUS → QUALIFY →(发现缺口则修复重验)→ 下一任务第 1 步:Execute(执行)
AI 按任务定义中的<action>创建/修改文件,全程遵守计划中声明的<boundaries>(禁改边界)。边界违规会立即停止并报告,而不是"就这一次"地绕过——因为边界违规会引发难以追溯的连锁变更。
第 2 步:Report Status(如实报告)
执行后、校验前,AI 必须如实报告 4 种状态之一(详见下一节)。规则很明确:绝不悄悄产出自己都不确定的工作。
第 3 步:Qualify(独立验收)
这是防"假完成"的关键一步。PAUL 的设计哲学是:AI 对自己刚写的代码的报告天然偏乐观,要相信输出,而不是相信它"写过"的记忆。
Qualify 包含四个动作:
- 重读真实产出——重新打开刚创建/修改的文件,而不是凭记忆;
- 重新运行 verify 命令——过期的验证不算验证;
- 逐行对照任务规格和关联的验收标准(AC 的 Given/When/Then);
- 打分,结果只有三种:
| 评分 | 含义 | 后续动作 |
|---|---|---|
| PASS | 产出与规格、AC 一致 | 进入下一任务 |
| GAP | 规格或 AC 中的某项缺失 | 修复后重新 Qualify |
| DRIFT | 产出与规格不一致(做岔了) | 修复后重新 Qualify |
遇到 GAP 或 DRIFT 时进入"修复-重验"循环,最多 3 次。3 次仍未通过就升级给用户,提供三个选项:给出指导 / 跳过任务(记录偏差)/ 停止执行。这套完整流程定义在 apply-phase.md 中。
🔍 值得一提的是,Qualify 还附带一张"反合理化自查表":当你想"应该能跑了""我检查过了""差不多就行"时,必须停下来跑验证、重读文件、逐字对照 AC——因为"信心不是证据"。这张表的原始出处见 quality-principles.md。
4 种升级状态:超越"通过/失败"的诚实度
传统做法只有 pass/fail 二分法,容易掩盖不确定性。PAUL 要求任务报告以下 4 种状态之一:
| 状态 | 含义 | 后续处理 |
|---|---|---|
| DONE | 完成且无顾虑 | 走标准 Qualify 校验 |
| DONE_WITH_CONCERNS | 完成了,但对正确性/方案/完整性存疑 | Qualify 优先聚焦被标记的疑点,再全量检查 |
| NEEDS_CONTEXT | 无法完成——缺少计划中没有的信息 | 暂停,明确说出缺什么,等待用户补充 |
| BLOCKED | 无法完成——结构性障碍(权限、依赖、环境损坏) | 停止,报告已尝试什么、卡在哪、需要什么帮助 |
三种"非 DONE"状态各有讲究:
- ✅DONE_WITH_CONCERNS:假装自信会在验证或生产环境付出代价,不如一开始就标记疑点;
- ⏸️NEEDS_CONTEXT 不算失败——它是诚实沟通,避免在错误假设上做无用功;补充信息后任务从头重执行,而不是靠猜测填空;
- 🚫BLOCKED 必须说清细节(尝试了什么、卡在什么、需要什么帮助),而不是一句含糊的"我卡住了"。
这些状态最终都会随执行日志交给 UNIFY 阶段记录,形成可审计的决策链。
人工卡点与诊断式失败路由
除了自动任务,计划中还可以插入checkpoint(卡点)任务强制暂停等待人工输入。PAUL 将其分为三类(定义见 checkpoints.md):
| 卡点类型 | 占比 | 用途 |
|---|---|---|
checkpoint:human-verify | ~90% | AI 已自动完成,人工确认视觉效果/交互体验 |
checkpoint:decision | ~9% | 人工做技术选型、架构决策 |
checkpoint:human-action | ~1% | 确实无 API/CLI 可用的人工步骤(如短信验证码) |
🎯诊断式失败路由(Diagnostic Failure Routing)是卡点机制的另一大亮点。当人工验证报告问题时,PAUL不会直接动手改代码,而是先分类根因:
| 分类 | 信号 | 处理路径 |
|---|---|---|
| Intent(意图问题) | "我要做的和计划的不一样" | 归档当前计划,重新规划该阶段 |
| Spec(规格问题) | "计划漏了东西或写错了" | 先修正 AC/任务,再改代码 |
| Code(代码问题) | "计划没错,是实现不对" | 标准原地修复 + 重新验证 |
这防止了最常见的失败模式:计划本身错了,却在代码层打补丁——这种修复既脆弱又会让 UNIFY 的核对失去意义。
如何快速上手 /paul:apply
PAUL 通过 npm 一键安装(Mac/Windows/Linux 均支持):
npx paul-framework安装后在 Claude Code 中的典型流程:
/paul:init # 1. 初始化项目(生成 PROJECT.md) /paul:plan # 2. 创建计划(自动判定 quick-fix/standard/complex) /paul:apply # 3. 执行已批准的计划 —— 本文主角 /paul:unify # 4. 收口闭环(必须执行)所有 26 条命令可用/paul:help查看完整参考。APPLY 命令本身的定义见 apply.md。
⚠️切记:APPLY 完成后一定要运行/paul:unify。没有 UNIFY 就没有产出记录,也就没有可追溯性——这是"结构化开发"与"随手写"的分水岭。
总结:APPLY 如何层层守住质量
| 机制 | 拦截的失败模式 |
|---|---|
| 明确批准检查 | 在错误假设上盲目执行 |
| 边界(Boundaries)保护 | 越界修改污染审计链 |
| Execute/Qualify 循环 | "假完成"、产出漂移 |
| 4 种升级状态 | 不确定性被悄悄吞掉 |
| 反合理化自查表 | "应该没问题"的口头自信 |
| 诊断式失败路由 | 在错误的层次上打补丁 |
PAUL 的哲学浓缩为一句话:Quality over speed-for-speed's-sake(质量优先于单纯的速度)。它把复杂度藏进系统,让你只面对几条保持正轨的命令。
📂延伸阅读路径:
- 完整 APPLY 工作流:apply-phase.md
- 循环阶段语义:loop-phases.md
- 卡点与失败路由参考:checkpoints.md
- 核心质量原则:quality-principles.md
- 命令入口:apply.md
【免费下载链接】paul
Plan-Apply-Unify Loop — Structured AI-assisted development for Claude Code. Quality over speed-for-speed's-sake.
相关推荐
ECC 验证循环:在 Kiro 会话中用六阶段 Verification Loop 守护 PR 质量的完整实战指南
ECC 验证循环:在 Kiro 会话中用六阶段 Verification Loop 守护 PR 质量的完整实战指南 ECC(Everything Claude
人工智能AI 技能AI 插件AI 评测Agent 评测MCP Clients开发工具Higress AI 辅助贡献的 issue-spec Apply 阶段协议:执行模式、角色分工与精确提交审阅循环
Higress AI 辅助贡献的 issue spec Apply 阶段协议:执行模式、角色分工与精确提交审阅循环 本文面向在 Higress 仓库( issu
API网关后端云原生LLM 网关人工智能MCP 服务Mavericks 中的 Async<T> 状态封装与 execute 异步执行指南
Mavericks 中的 Async<T> 状态封装与 execute 异步执行指南 Mavericks("Android on Autopilot
移动开发原生移动
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考