🗑️ remove(progress): drop workflow state tracking

Use plan-status as the only machine state source for plan queueing, claiming, and finishing.

Route record-plan through queue insertion and update templates/prompts to match the single-state model.

BREAKING CHANGE: playbook.py -record-spec and main_loop.py record are removed.
This commit is contained in:
csh
2026-06-26 17:10:09 +08:00
parent c35aba5139
commit 1911d2dda3
11 changed files with 243 additions and 462 deletions
+10 -16
View File
@@ -62,12 +62,11 @@
> `using-superpowers` 是会话启动时判断并加载适用 skill 的入口 skill。
- 规划阶段必须走 `using-superpowers -> brainstorming -> writing-plans`
- `$brainstorming` 产出 `docs/superpowers/specs/*-design.md`写出 spec
立即用 `playbook.py -record-spec` 记录 `phase=planning``spec=<path>`
- `$brainstorming` 产出 `docs/superpowers/specs/*-design.md`spec 文件本身即为设计留痕
- `$writing-plans` 产出 `docs/superpowers/plans/*.md`;写出 plan 后立即用
`playbook.py -record-plan` 记录 `plan=<path>``executor=executing-plans`
`constraints=karpathy-guidelines,.agents,AGENT_RULES`
- spec/plan 产出阶段不单独提交或归档,只做文件落地与状态留痕;如外部 skill
`playbook.py -record-plan` 追加到 `memory-bank/progress.md`
`plan-status` 队列,初始状态为 `pending`
- spec/plan 产出阶段不单独提交或归档,只做文件落地与 Plan 入队;如外部 skill
要求写完后立即提交,以本文件为准,推迟到 Plan 完成后统一处理
- Plan 生命周期由 `main_loop.py` 协调,通过 `memory-bank/progress.md` 留痕
- Plan 执行入口只能是主循环:领取前不得进入 `$executing-plans`,领取后默认用
@@ -118,8 +117,7 @@
- `in-progress`:执行中,用于恢复中断任务
- `done`:已完成
- `blocked`:阻塞,需人工介入或切换环境
- `skipped`:永久跳过,不再执行`workflow-state.phase` 也写为
`skipped`
- `skipped`:永久跳过,不再执行
`skipped` 如需恢复,必须手动改回 `pending`
@@ -140,7 +138,7 @@ python {{PLAYBOOK_SCRIPTS}}/main_loop.py claim \
-owner "<当前session或agent标识>"
```
该命令在锁保护下完成:自动识别当前环境(windows/linux/darwin)、校验 Plan Meta、优先恢复 `in-progress`、选择第一个可执行 Plan写入 `claimed_by`/`claimed_at` 并清理上一轮 `verification`
该命令在锁保护下完成:自动识别当前环境(windows/linux/darwin)、校验 Plan Meta、优先恢复 `in-progress``plan-status` 行顺序选择第一个可执行 Plan,并在对应 Plan 行写入 `claimed_by`/`claimed_at`
stdout 必须包含 `PLAN=<path>`;如为环境恢复,还会附带 `NOTE=env:<环境>:<Task列表>`
@@ -177,11 +175,6 @@ python {{PLAYBOOK_SCRIPTS}}/main_loop.py status \
**规划留痕**
```bash
# brainstorming 完成后
python {{PLAYBOOK_SCRIPTS}}/playbook.py \
-record-spec docs/superpowers/specs/<topic>-design.md \
-progress memory-bank/progress.md
# writing-plans 完成后
python {{PLAYBOOK_SCRIPTS}}/playbook.py \
-record-plan docs/superpowers/plans/<topic>.md \
@@ -235,7 +228,7 @@ python {{PLAYBOOK_SCRIPTS}}/playbook.py \
- 本轮代码、配置、测试、模板改动
- 当前 Plan 文件(创建、补充、勾选 Task、记录结果等)
- `memory-bank/progress.md` 中本轮 `workflow-state``plan-status` 与摘要更新
- `memory-bank/progress.md` 中本轮 `plan-status` 与摘要更新
- 必要 memory 更新(如 `active-context.md``decisions.md`
**归档约束**
@@ -251,8 +244,9 @@ python {{PLAYBOOK_SCRIPTS}}/playbook.py \
- 重要决策记录到 `memory-bank/decisions.md`
- 待确认事项在回复中显式列出
- `workflow-state``plan-status` 只能通过
`{{PLAYBOOK_SCRIPTS}}/main_loop.py` 维护
- `plan-status` 是唯一机器状态源,只能通过
`{{PLAYBOOK_SCRIPTS}}/main_loop.py`
`{{PLAYBOOK_SCRIPTS}}/playbook.py -record-plan` 维护
- `progress.md` 上半部分是短期状态快照,不是 changelog;
阶段变化或执行结束后整理/替换摘要,不做无限追加
- `active-context.md` 是短期上下文快照,不是长期日志;
+1 -1
View File
@@ -109,7 +109,7 @@ templates/
执行规则模板,定义 AI 的工作循环和约束。如需项目私有规则,建议维护 `AGENT_RULES.local.md`;该文件通常由 `[sync_rules]` 首次自动创建,其优先级高于 `AGENT_RULES.md`,且后续不会被 playbook 覆盖。
计划编排与执行细节统一指向 `docs/superpowers/``playbook.py -record-spec/-record-plan``main_loop.py claim/finish`
计划编排与执行细节统一指向 `docs/superpowers/``playbook.py -record-plan``main_loop.py claim/finish`
### AGENTS.template.md
+3 -16
View File
@@ -6,8 +6,7 @@
- 上半部分是短期状态快照,不是 changelog
- `Recent Changes` 只保留最近 3-5 条对恢复上下文有价值的变化
- 更新摘要时整理/替换旧摘要,不做无限追加
- 中间的 workflow-state 块记录当前阶段、spec、plan 与执行约束
- 下半部分的 plan-status 块由 main_loop.py 维护,是唯一权威状态源
- 下半部分的 plan-status 块由 main_loop.py 维护,是唯一机器状态源
-->
## Current Focus
@@ -31,26 +30,14 @@
以下示例仅用于说明结构,真实状态由 `main_loop.py` 维护:
```text
## Workflow State
<!-- workflow-state:start -->
phase: planning
spec: docs/superpowers/specs/2026-05-18-demo-design.md
plan: docs/superpowers/plans/2026-05-18-demo.md
executor: executing-plans
constraints: karpathy-guidelines,.agents,AGENT_RULES
<!-- workflow-state:end -->
## Plan Status
<!-- plan-status:start -->
- [ ] `2026-05-18-demo.md` pending
- [ ] `2026-05-19-next.md` in-progress: claimed_by: codex; claimed_at: 2026-05-19T08:00:00Z
- [x] `2026-05-20-done.md` done: verified: python -m unittest
<!-- plan-status:end -->
```
## Workflow State
<!-- workflow-state:start -->
<!-- workflow-state:end -->
## Plan Status
<!-- plan-status:start -->
@@ -23,7 +23,7 @@
完成当前 Plan 变更归档/提交;未归档不得声明 Plan 完成
- 未验证内容必须显式说明
- 只写对下一轮仍重要的信息
- 不手工改写 `workflow-state``plan-status` 状态块
- 不手工改写 `plan-status` 状态块
## 执行步骤
@@ -31,23 +31,18 @@
2. 核对已运行验证与未运行验证
3. 如本轮来自 `main_loop.py claim`,核对 `main_loop.py finish`
是否已经写回 `plan-status`
4.本轮来自 `main_loop.py claim`,核对 `workflow-state.phase`
是否与当前结果一致
5. 如需回写上下文,更新 `active-context``progress` 上半部分和 `decisions`
6. 如本轮来自 `main_loop.py claim` 且结果为 `done`,按项目归档机制只归档
4.需回写上下文,更新 `active-context``progress` 上半部分和 `decisions`
5. 如本轮来自 `main_loop.py claim` 且结果为 `done`,按项目归档机制只归档
当前 Plan 相关差异
7. 复核剩余差异是否属于其他 session / 其他 Plan,且未混入本轮交付单元
8. 输出本轮摘要与下一步
6. 复核剩余差异是否属于其他 session / 其他 Plan,且未混入本轮交付单元
7. 输出本轮摘要与下一步
## 状态留痕复核
- 如本轮来自 `main_loop.py claim``main_loop.py finish` 是否已经写回
`plan-status`
- 如本轮来自 `main_loop.py claim``workflow-state.phase` 是否与当前结果一致
- 如本轮来自 `main_loop.py claim` 且结果为 `done`,当前 Plan 相关差异
是否已经归档/提交,或是否已说明无当前 Plan 差异
- 如为代码类执行,`workflow-state` 中是否保留了
`executor=executing-plans` 与既定 `constraints`
## 输出协议
@@ -35,8 +35,7 @@
### `memory-bank/progress.md`
- 读取 `workflow-state`当前阶段、spec、plan、executor、constraints
- 再读取 `plan-status`:当前 Plan 的机器状态
- 读取 `plan-status`Plan 队列与机器状态
- 只更新上半部分的人类摘要,不修改状态块
- 上半部分是短期状态快照,不是长期日志
- `Recent Changes` 只保留最近 3-5 条对恢复上下文有价值的变化
@@ -61,14 +60,14 @@
- 临时聊天内容不要写进去
- 高变化信息放 `active-context`,稳定技术模式放 `system-patterns`
- 流程规则或项目私有约束变更写入 `AGENT_RULES.local.md`
- `progress.md` 的状态块只由 `main_loop.py` 维护
- 摘要应与 `workflow-state` / `plan-status` 保持一致
- `progress.md` `plan-status` 状态块只由 `main_loop.py`
`playbook.py -record-plan` 维护
- 摘要应与 `plan-status` 保持一致
- 摘要区保持短期状态快照;长期历史依赖项目归档记录、Plan 文件和
`decisions.md`
## 禁止事项
- 手工改写 `<!-- workflow-state:start/end -->`
- 手工改写 `<!-- plan-status:start/end -->`
- 把临时聊天内容、未验证猜测写进摘要
@@ -23,7 +23,7 @@
- 验证命令必须 fresh run
- 局部修改优先局部验证
- 不能运行的验证必须写明原因
- 不手工改写 `workflow-state``plan-status` 状态块
- 不手工改写 `plan-status` 状态块
- 如本轮来自 `main_loop.py claim`,验证通过不等于 Plan 完成;Plan
`done` 还必须完成当前 Plan 变更归档/提交
@@ -33,8 +33,7 @@
2. 运行与本次改动直接相关的验证命令
3. 记录命令、结果和关键输出
4. 复核 diff 是否只包含预期修改
5. 如本轮来自 `main_loop.py claim`,复核 `workflow-state.phase`
`plan-status` 与当前声明一致
5. 如本轮来自 `main_loop.py claim`,复核 `plan-status` 与当前声明一致
6. 如本轮来自 `main_loop.py claim` 且结果为 `done`,复核当前 Plan
相关差异是否已经归档/提交;未归档时只能声明“验证完成”,
不能声明“Plan 完成”
@@ -58,14 +57,10 @@
## 状态留痕复核
- 如本轮来自 `main_loop.py claim``workflow-state.phase` 是否与当前声明一致
- 如本轮来自 `main_loop.py claim``plan-status` 是否已经通过
`main_loop.py finish` 写回
- 如本轮来自 `main_loop.py claim` 且结果为 `done`,当前 Plan 相关差异
是否已经归档/提交,或是否已说明无当前 Plan 差异
- 如为代码类任务,`workflow-state` 中是否保留:
`executor=executing-plans`
`constraints=karpathy-guidelines,.agents,AGENT_RULES`
## 停止条件