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

阶段 PAB 会暂停并等待用户批准后才能推进。阶段 CD 在工作完成后自动推进。

状态转换命令

命令转换前置条件
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.mdDIFF_PLAN.mdPHASES.mdRCA.mdplan.md 不允许作为新的开发日志阶段文件。

关卡问题

在展示计划之前,计划阶段会询问:

  1. "有没有我不应该独自决定的业务逻辑?"
  2. "第一部分是否符合您的意图?"

计划会被展示,并根据反馈进行修改。当用户批准后,使用 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 — 检查 自动推进

自动运行的最终完整性检查:

  1. 验证所有文件已保存且一致
  2. 运行 npx tsc --noEmit(如果是 TypeScript 项目)
  3. 如适用,更新项目结构文档
  4. 报告完成摘要

完成后,通过 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 重新开始。
3Worker 验证,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 中。不会创建项目根目录文件。

自动注入:在 A 和 B 阶段,编排器会在每个 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 以捕获类型错误。

带审计的 Bug 修复
"프로덕션 에러 원인 찾아서 고쳐줘 -- PABCD로 진행해"

即使是 Bug 修复,PABCD 也能确保根本原因在 P 阶段被记录,修复计划在 A 阶段被审计,实现在 B 阶段被验证,并在 C 阶段确保没有其他东西被破坏。

与其他技能的关系

PABCD 是结构化工作流层,包裹在其他开发技能之上。当 PABCD 处于活动状态时,专业技能如 dev-backenddev-frontenddev-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(检查)阶段
另请参阅:核心概念 → PABCD 了解高层概览,以及开发技能查看自动启用的开发技能完整列表。