PABCD 工作流 默认启用
结构化的 Plan(计划) → Audit(审计) → Build(构建) → Check(检查) → Done(完成)开发工作流,每个关卡都设有强制性的用户检查点。
dev-pabcd 是每个会话自动注入的 10 个开发技能之一。它在编排模式下激活,提供结构化的五阶段工作流,确保在没有经过审核的计划之前不会执行任何构建。快速参考
| 属性 | 值 |
|---|---|
| 技能名称 | dev-pabcd |
| 分类 | 开发 / 编排 |
| 默认启用 | 是 — 会话启动时自动注入 |
需要 /skill load | 否 |
| 阶段 | P(计划) → A(审计) → B(构建) → C(检查) → D(完成) |
| 用户关卡 | P、A、B 需要用户批准 — C、D 自动推进 |
| Worker 角色 | 只读验证者(不编写代码) |
| 重置命令 | cli-jaw orchestrate reset |
状态机
PABCD 是一个单向循环 — 只能前进,不能跳过阶段。每个阶段必须完成后才能进入下一个。
IDLE ──→ P ──→ A ──→ B ──→ C ──→ D ──→ IDLE
│ │ │ │ │
STOP STOP STOP auto auto
wait wait wait
阶段 P、A 和 B 会暂停并等待用户批准后才能推进。阶段 C 和 D 在工作完成后自动推进。
状态转换命令
| 命令 | 转换 | 前置条件 |
|---|---|---|
cli-jaw orchestrate P | 进入计划阶段 | 必须处于 IDLE 状态 |
cli-jaw orchestrate A | 进入计划审计阶段 | 必须处于 P 阶段(计划已批准) |
cli-jaw orchestrate B | 进入构建阶段 | 必须处于 A 阶段(审计已通过) |
cli-jaw orchestrate C | 进入检查阶段 | 必须处于 B 阶段(构建已批准) |
cli-jaw orchestrate D | 进入完成阶段 | 必须处于 C 阶段(检查已完成) |
cli-jaw orchestrate reset | 返回 IDLE 状态 | 任意状态 |
阶段详情
P — 计划 需要用户批准
计划阶段读取项目文档和开发技能,然后生成包含两部分的计划:
- 第一部分 — 通俗解释: 将要构建什么,用非开发人员的语言描述。任何人都应该能理解。
- 第二部分 — Diff 级精度: 精确的文件路径(
NEW/MODIFY/DELETE),MODIFY的前后对比差异,NEW的完整内容。
范围澄清
如果请求的范围不明确或技术方案未指定,计划阶段会先进行澄清:
- 以
<TechName> -- <通俗解释>的格式提供 2-3 个选项 - 根据项目具体情况推荐其中一个
- 确认一次后继续执行
仓库扫描(大范围变更)
对于大范围变更或不熟悉的仓库,P 阶段必须包含:
- 当前仓库结构的紧凑树形图
- 检测到的仓库约定:文档、计划、架构说明、真实来源日志、命名规范、测试
- 是否已读取现有的
structure/、devlog/、docs/、plans/或等效日志,以及是否会复用 - 是否建议创建
structure/或devlog/
开发日志命名约定
如果 PABCD 工作创建或更新了 devlog/ 计划产物,计划中必须列出精确的 Jawdev 编号文件名:
00_overview.md
01_phase1_<slug>.md
02_phase2_<slug>.md
裸文件名如 PLAN.md、DIFF_PLAN.md、PHASES.md、RCA.md 或 plan.md 不允许作为新的开发日志阶段文件。
关卡问题
在展示计划之前,计划阶段会询问:
- "有没有我不应该独自决定的业务逻辑?"
- "第一部分是否符合您的意图?"
计划会被展示,并根据反馈进行修改。当用户批准后,使用 cli-jaw orchestrate A 进行状态转换。
A — 计划审计 需要用户批准
系统会生成一个 Worker 来审计计划(不是代码)。Worker 验证以下内容:
- 计划中的所有文件路径和导入是否实际存在
- 函数签名是否与实际代码匹配
- 是否存在集成风险
- 现有的真实来源文档/日志是否已被读取
- 未经用户批准不得引入新的
structure/、devlog/、文档或 AGENTS 文件 - 新的 JS/TS 文件遵循 TypeScript 优先规则,除非计划中说明了为什么需要使用 JS
- 新的 TypeScript 代码兼容严格模式,或已说明限制
- 新的开发日志阶段文档使用编号的 Jawdev 文件名约定
Worker 输出审计的 JSON 结果。审查结果:
- FAIL → 修复计划,重新审计
- PASS → 向用户报告结果
当用户批准后,使用 cli-jaw orchestrate B 进行状态转换。
B — 构建 需要用户批准
实现阶段。Boss 直接编写所有代码。Worker 仅作为只读验证者。
实现完成后,会派遣一个 Worker 进行验证 — 检查代码是否存在以及是否能顺利集成:
- NEEDS_FIX → Boss 修复问题,重新验证
- DONE → 向用户报告结果
除非在 P 阶段已批准或用户明确要求,否则不创建 structure/ 或 devlog/。
当用户批准后,使用 cli-jaw orchestrate C 进行状态转换。
C — 检查 自动推进
自动运行的最终完整性检查:
- 验证所有文件已保存且一致
- 运行
npx tsc --noEmit(如果是 TypeScript 项目) - 如适用,更新项目结构文档
- 报告完成摘要
完成后,通过 cli-jaw orchestrate D 自动转换到 D 阶段。
D — 完成 自动推进
总结整个 PABCD 流程:
- 计划了什么(P)、审计了什么(A)、构建了什么(B)、检查了什么(C)
- 变更文件列表
- 后续待办事项
状态自动返回 IDLE。
规则
| # | 规则 | 详情 |
|---|---|---|
| 1 | 每次响应一个阶段 | 展示工作内容,然后在 P、A、B 关卡等待用户批准。绝不跳过。 |
| 2 | 严格顺序 | P → A → B → C → D。使用 cli-jaw orchestrate reset 从 IDLE 重新开始。 |
| 3 | Worker 验证,Boss 编写 | Worker 是只读的。所有代码由 Boss 在 B 阶段直接编写。 |
仓库根目录约定
在编写 PABCD 计划或派遣 Worker 之前,需要从目标仓库使用 pwd -P 确定实际的工作仓库根目录。
每个 A/B 阶段的 cli-jaw dispatch 任务体必须以以下内容开头:
Project root: /absolute/path/to/current/repo
| 规则 | 说明 |
|---|---|
Project root = 工作仓库 | 必须是当前工作仓库,而不是 JAW_HOME |
| 禁止推断 | 绝不允许 Worker 从 ~/.cli-jaw*、process.cwd() 或员工临时目录推断仓库根目录 |
| 绝对路径 | 所有相对仓库路径(src/、tests/、structure/、skills_ref/)必须基于 Project root 解析 |
| 根目录未知 = 停止 | 如果 Project root 未知,在派遣前停止并询问 |
共享计划注入
当 P 阶段完成时,计划保存到工作日志的 ## Plan 部分(唯一的真实来源)并保持在 ctx.plan 中。不会创建项目根目录文件。
cli-jaw dispatch 任务顶部的 ## Approved Plan 下自动注入完整的计划内容。Worker 无需读取计划文件 — 计划会自动添加到前面。你的派遣任务体应该只包含实际的审计/验证指令。示例:
cli-jaw dispatch --agent "Backend" --task "Project root: /path/to/repo
Audit: verify the imports in src/routes/auth.ts..."
不需要"读取计划"的指令 — 计划已经被自动注入了。
常见陷阱
在 PABCD 执行过程中需要避免的关键反模式。
委派陷阱
在 B 阶段,Boss 编写所有代码。Worker 是只读验证者。
| 派遣内容 | 示例 | |
|---|---|---|
| 禁止 | 编写/实现 | "implement the feature"、"write the code"、"create the file" |
| 允许 | 验证/检查 | "verify src/x.ts compiles"、"check integration of Y"、"report DONE or NEEDS_FIX" |
上下文偏移
如果 Worker 说"我将根据我对计划的理解继续执行" — 停止。验证派遣是否通过 /api/orchestrate/dispatch(只有该路径才会自动注入计划)。绝不允许 Worker 从简短的任务描述中重新构建计划。
阶段跳过
A(审计)永远不是"不必要的"。即使是简单的计划也可能遇到集成问题。先进行审计。B 阶段的验证永远不能"跳过"。未经测试的代码不算"完成"。目前编排器不强制执行这些关卡 — 你自己来强制执行。
"~해줘" 使用示例
使用自然语言触发 PABCD 工作流的实际示例。
"이 프로젝트에 WebSocket 채팅 기능 추가해줘"
触发完整的 PABCD 流程:规划 WebSocket 架构、审计导入和集成点、构建实现、检查 TypeScript 编译、总结变更文件。
"인증 시스템 전체 리팩토링해줘 -- JWT에서 세션 기반으로"
范围较大,因此 P 阶段会扫描仓库树、识别所有与认证相关的文件,并生成 Diff 级精度的计划。A 阶段审计确保没有导入路径被破坏。
"D1 데이터베이스 스키마 마이그레이션 계획 세워줘"
P 阶段澄清迁移范围(哪些表、向后兼容性),生成第一部分的通俗解释和第二部分的精确 SQL 迁移文件。A 阶段验证现有的 schema 引用。
"API 라우트 5개 새로 만들고 테스트도 다 붙여줘"
P 阶段列出所有 NEW 文件及其完整内容。B 阶段实现每个路由和测试文件。C 阶段在整个项目运行 tsc --noEmit 以捕获类型错误。
"프로덕션 에러 원인 찾아서 고쳐줘 -- PABCD로 진행해"
即使是 Bug 修复,PABCD 也能确保根本原因在 P 阶段被记录,修复计划在 A 阶段被审计,实现在 B 阶段被验证,并在 C 阶段确保没有其他东西被破坏。
与其他技能的关系
PABCD 是结构化工作流层,包裹在其他开发技能之上。当 PABCD 处于活动状态时,专业技能如 dev-backend、dev-frontend 和 dev-testing 在 PABCD 的监督下于 B(构建)阶段中运行。
| 技能 | 与 PABCD 的关系 |
|---|---|
dev | 可以为复杂任务激活 PABCD 的编排器 |
dev-backend / dev-frontend | 在 B 阶段实现过程中注入的专业上下文 |
dev-testing | 测试编写在 B 阶段进行;测试执行在 C 阶段进行 |
dev-code-reviewer | 在构建后通过代码质量审查补充 A 阶段 |
dev-debugging | 可以触发 PABCD 以进行结构化的 Bug 修复工作流 |
dev-security | 安全检查集成到 A(计划审计)和 C(检查)阶段 |