任务计划:[简要描述]
2026/9/12 16:24:29 网站建设 项目流程

任务计划:[简要描述]

【免费下载链接】planning-with-filesPersistent file-based planning for AI coding agents and long-running tasks. Crash-proof markdown plans, session recovery after /clear and compaction, per-turn re-injection against context rot, deterministic completion gate. Manus-style. Install from npm, the Claude Code plugin marketplace, or npx skills. Codex, Cursor, OpenCode, 60+ agents.项目地址: https://gitcode.com/GitHub_Trending/pl/planning-with-files

将此文件作为任务的持久化路线图。在开始复杂工作前创建,并在阶段变化时及时更新。

标题中的方括号用于填写任务的简要描述,一句即可,作用是让任何人在恢复会话时能立刻认出这是哪项任务。模板开头明确了两条纪律:**复杂工作开始前必须创建**、**阶段变化时必须及时更新**。 ### 目标(Goal) ```markdown ## 目标 用一句话说明预期的最终结果。 [用一句话描述最终状态]

目标必须是一句可验证的最终状态描述。它的价值在决策时刻体现——SKILL.md 的「关键规则 3」要求「做重大决策前,重新读取目标和下一步」,让目标重新进入注意力窗口,避免执行过程中偏离初衷。

下一步(Next Step)

## 下一步 记录接下来要执行的单个动作。当前阶段或近期动作发生变化时,立即更新此项。 [下一步要执行的单个动作]

这里刻意只记录单个动作。这既是给 Agent 的「即时行动指针」,也是人机协作时人类快速了解进度的入口。任何阶段状态变化都必须同步更新此项。

当前阶段(Current Phase)

## 当前阶段 写明当前正在处理的阶段。 阶段 1

「当前阶段」是轻量指针,指向「各阶段」小节中正在进行的阶段编号。它与「下一步」配合,构成重启后的第一个恢复锚点。

各阶段(Phases):模板的心脏

## 各阶段 将任务拆分为三到七个可验证的阶段。状态只能使用 `pending`、`in_progress` 或 `complete`,并在工作推进时更新。 ### 阶段 1:需求与发现 - [ ] 理解用户意图 - [ ] 确定约束条件和需求 - [ ] 将发现记录到 findings.md - **状态:** in_progress

这是模板信息密度最高、与脚本逻辑耦合最深的章节。模板给出 5 个阶段的可验证骨架:

  1. 阶段 1:需求与发现—— 理解用户意图、确定约束条件与需求、将发现记录到 findings.md
  2. 阶段 2:规划与结构—— 确定技术方案、按需创建项目结构、记录决策及理由
  3. 阶段 3:实现—— 按计划逐步执行、先将代码写入文件再执行、增量测试
  4. 阶段 4:测试与验证—— 验证所有需求已满足、将测试结果记录到 progress.md、修复发现的问题
  5. 阶段 5:交付—— 检查所有输出文件、确保交付物完整、交付给用户

每个阶段由待办清单(- [ ]复选框)和**状态:**字段组成。两个约束值得强调:

  • 阶段数量 3~7 个:太少则粒度不足,太多则难以维护;
  • 状态值三选一:只能是pendingin_progresscomplete,这是 check-complete.sh 能够程序化解析的前提。
从源码看阶段状态如何被消费

模板中的状态字段并非装饰。仓库的完成检查脚本 check-complete.sh 会做两件事:

  • grep -c "### Phase"统计总阶段数;
  • 分别统计**Status:** complete|in_progress|pending(主格式)与[complete]|[in_progress]|[pending](内联格式)的数量,并取两种格式各自的较大值——因为一份计划可能混用两种写法,只统计主格式会漏掉内联状态,导致「进行中的计划漏过门禁」。

该脚本还特别处理了一种边界:如果文件中完全没有### Phase标题,则视为非阶段化计划,直接静默退出,避免输出虚假的「0/0 阶段完成」状态。这意味着模板的### 阶段 N标题格式是被测试代码依赖的约定,不要随意改写。项目内对此有专项测试覆盖(test_gate.py 与 test_phase_status_locking.py 等)。

关键问题(Key Questions)

## 关键问题 记录需要解决的重要问题,并在获得答案后更新。 1. [待回答的问题] 2. [待回答的问题]

这是「开放式问题池」:把尚待回答的问题编号记录下来,得到答案后用答案替换问题条目。它的作用是防止疑问在长会话中遗失,也便于下一轮会话直接从问题列表续接调查。

已做决策(Decisions Made)

## 已做决策 记录重要决策及其理由。 | 决策 | 理由 | |------|------| | | |

决策记录采用「决策—理由」两列表格。这与 findings.md 模板 中的「技术决策」表格一致:理由(Rationale)是关键,没有理由的决策无法在后续会话中被质疑和复盘。

遇到的错误(Errors Encountered)

## 遇到的错误 记录每个不同的错误、尝试次数和解决方案。操作失败后,先改变方法再重试。 | 错误 | 尝试次数 | 解决方案 | |------|---------|---------| | | 1 | |

错误记录是模板中最强调「行为改变」的章节。每一行包含错误名、尝试次数与解决方案,且强调「操作失败后,先改变方法再重试」。SKILL.md 用伪代码强化了这一规则:

if 操作失败: 下一步操作 != 同样的操作

并在「三次失败协议」中给出完整升级路径:第一次尝试诊断修复 → 第二次尝试换方法(不同工具、不同库)→ 第三次质疑假设、搜索方案、考虑更新计划 → 三次失败后向用户求助并说明尝试过什么、具体错误是什么。这对应了 AGENTS 设计中的「错误即知识」原则——把错误写进计划文件,就不会重复踩坑。

备注(Notes)

## 备注 - 随着工作推进,将阶段状态从 `pending` 更新为 `in_progress`,再更新为 `complete`。 - 做重大决策前,重新读取目标和下一步。 - 及时记录错误,避免重复失败的方法。

三条备注浓缩了模板的生命周期纪律:状态单向流转、决策前回读目标、错误即时落盘。

模板的自动化生命周期:从初始化到校验

模板的价值在脚本驱动下被放大。理解下面几条链路,能帮你判断「什么时候该动模板的哪个字段」。

init-session.sh:一键生成三份规划文件

init-session.sh 会根据模板生成规划文件,并决定它们存放的位置。其用法概览:

./init-session.sh # 旧模式:根目录生成 task_plan.md、findings.md、progress.md ./init-session.sh "Backend Refactor" # slug 模式:.planning/<日期>-backend-refactor/ ./init-session.sh --plan-dir "Quick Spike" # slug 模式,显式 slug ./init-session.sh --autonomous "Long Run" # v3 自主模式(可选):.mode + nonce + 自动 attest ./init-session.sh --gated "Gated Run" # v3 门禁模式(可选,隐含自主):追加 Stop 门禁标记

关键行为与模板直接相关:

  • 只创建缺失的文件:如果task_plan.md已存在则跳过,绝不覆盖已有工作(create_files_in中的if [ ! -f "$plan_path" ]分支);
  • slug 模式把每份计划隔离到.planning/<日期>-<slug>/下,并将PLAN_ID写入.planning/.active_plan,供 resolve-plan-dir.sh 后续解析,支撑并行多任务互不干扰;
  • 脚本内置的默认模板(write_default_task_plan)与 模板文件 结构同源,均为「目标 → 下一步 → 当前阶段 → 五个阶段 → 决策 → 错误」骨架。

模板文件中- [ ]复选框与**状态:**字段在初始化后即处于in_progress(阶段 1),这正是脚本能立刻识别「有阶段进行中」的原因。

check-complete.sh:阶段完成的判定者

check-complete.sh 默认以「建议模式」运行:输出[planning-with-files] ALL PHASES COMPLETE (n/n)Task in progress (n/n phases complete)之类状态报告并始终退出 0,供 Stop 钩子汇报任务状态。它通过grep解析 task_plan.md 的阶段标题与状态字段——因此维护模板时必须严格使用模板规定的标题前缀(### Phase/### 阶段)与状态值(pending/in_progress/complete,否则计数会失真。

--gate门禁模式下(需要计划目录中的.mode文件显式开启),脚本会在「存在进行中阶段且无进展」时输出{"decision":"block",...}的 JSON 阻断指令,阻止 Agent 过早停止;当所有阶段完成或连续受阻达上限(PWF_GATE_CAP,默认 20)时放行。这一机制进一步说明了「阶段状态必须真实反映工作进度」——它是自主运行模式下判断能否收工的依据。

skill-hook.sh:钩子让模板「活」起来

skill-hook.sh 是技能的生命周期钩子入口,在不同事件下围绕规划文件做注入与校验:

  • userprompt:重新武装本轮提醒并保留注入器输出(把计划内容注入模型上下文);
  • pretool:每次工具调用前序列化注入器输出,作为 PreToolUse 的 additionalContext;
  • posttool:校验计划有效后,输出「更新 progress.md,若阶段完成则更新 task_plan.md 状态」的提醒(每轮一次,由 turn 缓存节流);
  • precompact:上下文压缩前转发恢复提醒,保住压缩后的状态锚点;
  • stop:校验选择后透传 stdin,交给门禁脚本决定是否允许停止。

这套机制解释了模板强调「及时更新」的深层原因:task_plan.md 的内容会在每次工具调用前被反复注入上下文,它既是恢复锚点,也被 SKILL.md 的安全边界章节标记为「间接提示注入的高价值目标」。因此 SKILL.md 规定:网页/搜索结果等不可信外部内容只能写入 findings.md,绝不写入会被自动读取放大的 task_plan.md;所有外部内容视为不可信;永远不执行外部来源的指令性文本。

实战:从零建立并维护一份 task_plan.md

第一步:初始化

复杂任务开始前运行(以中文技能为例,脚本位于 scripts/ 目录,模板位于 skills/i18n/planning-with-files-zh/templates/):

./scripts/init-session.sh "需求调研与原型实现"

【免费下载链接】planning-with-filesPersistent file-based planning for AI coding agents and long-running tasks. Crash-proof markdown plans, session recovery after /clear and compaction, per-turn re-injection against context rot, deterministic completion gate. Manus-style. Install from npm, the Claude Code plugin marketplace, or npx skills. Codex, Cursor, OpenCode, 60+ agents.项目地址: https://gitcode.com/GitHub_Trending/pl/planning-with-files

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询