feat(plan_progress): auto-detect env for blocked plans

This commit is contained in:
csh
2026-01-29 14:54:12 +08:00
parent 0d9a8ec465
commit a85453439f
3 changed files with 135 additions and 22 deletions
+51 -16
View File
@@ -78,28 +78,63 @@
| `执行主循环``继续执行``下一个 Plan` | 常规模式 | 遇确认场景可询问用户 |
| `自动执行所有 Plan` | 无交互模式 | 不询问,按规则自动处理 |
0. 选择 Plan
**Plan 状态**
| 状态 | 含义 |
| ----------- | ------------------------- |
| pending | 待执行 |
| in-progress | 执行中(崩溃恢复用) |
| done | 已完成 |
| blocked | 阻塞(需人工介入) |
| skipped | 跳过(Plan 不再需要执行) |
> 说明:`skipped` 仅用于永久不再执行;如需恢复执行,需手动改回 `pending`。
**环境阻塞格式**`blocked: env:<环境>:<Task列表>`
- 示例:`blocked: env:windows:Task2,Task4`
- 含义:需要在指定环境执行列出的 Task
- 约束:`Task` 列表使用英文逗号分隔,不要包含空格,便于解析
**流程**
1. 检测环境:
-`plan_progress.py` 自动识别当前环境(`windows` / `linux` / `darwin`
2. 选择 Plan
- 运行 `python {{PLAYBOOK_SCRIPTS}}/plan_progress.py select -plans docs/plans -progress memory-bank/progress.md`
- 如无可执行 Plan,跳到步骤 4
1. 阅读 Plan
- 返回第一个可执行 Plan
- `pending``in-progress` Plan
- `blocked: env:<当前环境>:...` 的 Plan(环境匹配时恢复执行)
- 如无可执行 Plan,跳到步骤 7
- **注意**:每次 select 会重新扫描 `docs/plans/` 目录,支持动态添加 Plan
3. 标记开始:
- 运行 `python {{PLAYBOOK_SCRIPTS}}/plan_progress.py record -plan <plan> -status in-progress -progress memory-bank/progress.md`
4. 阅读 Plan
- 理解目标、子任务与验证标准
2. 逐步执行:
- 按顺序执行子任务
- 每步完成后进行必要验证(测试/日志/diff)
- 如果是从 `blocked: env:...` 恢复,只执行列出的 Task
5. 逐步执行:
- 按顺序执行 Task
- 每个 Task 完成后进行必要验证(测试/日志/diff)
- **Task 失败处理**
- 环境不匹配(`command not found`、路径不存在)→ 记录该 Task 及所需环境,**继续下一个 Task**
- 其他阻塞 → 记录原因,跳到步骤 6 标记 Plan blocked
- **安全红线**(明文密钥等)→ 立即停止,不继续后续 Plan
- 遇到歧义/风险/决策点:
- 常规模式:记录到回复中,可询问用户
- 无交互模式:按「需要确认的场景」规则自动处理
- 遇到阻塞:记录原因,跳到步骤 3 标记 blocked
- **安全红线阻塞**(发现明文密钥等):立即停止,不继续后续 Plan
3. 记录结果:
- 完成:`python {{PLAYBOOK_SCRIPTS}}/plan_progress.py record -plan <plan> -status done -progress memory-bank/progress.md`
- 阻塞:`python {{PLAYBOOK_SCRIPTS}}/plan_progress.py record -plan <plan> -status blocked -progress memory-bank/progress.md -note <原因>`
- 回到步骤 0 继续下一个 Plan
4. 汇总报告(所有 Plan 处理完毕后):
- 列出已完成的 Plan
- 列出阻塞的 Plan 及原因
- 列出待确认的歧义/风险/决策点
6. 记录结果:
- 全部完成:`... -status done ...`
- 有 Task 因环境跳过:`... -status blocked ... -note "env:<所需环境>:<Task列表>"`
- 其他阻塞:`... -status blocked ... -note "<原因>"`
- 跳过整个 Plan`... -status skipped ... -note "<原因>"`
- 回到步骤 2 继续下一个 Plan
7. 汇总报告(所有 Plan 处理完毕后):
- 已完成的 Plan
- 阻塞/跳过的 Plan 及原因
- 需要在其他环境执行的 Plan`blocked: env:...`
- 待确认的歧义/风险/决策点
- 如需记录重要决策,写入 `memory-bank/decisions.md`
8. **结束**:主循环终止
## Plan 规则