Planning with Files —— AI Agent 的持久化工作记忆
简介
2025 年 12 月,Meta 以 20 亿美元收购了 AI Agent 公司 Manus。这家成立仅 8 个月的公司,年收入已突破 1 亿美元。Manus 成功的秘诀是什么?上下文工程(Context Engineering)。
Manus 官方博客中有一段话:
“Markdown 是我在磁盘上的’工作记忆’。由于我以迭代方式处理信息,且活跃上下文有限,Markdown 文件充当了便签、检查点和最终交付物的构建块。”
这正是 planning-with-files 技能的核心思想。
问题:AI Agent 的记忆困境
当前主流的 AI 编程 Agent(Claude Code、Cursor、Copilot 等)普遍面临以下问题:
挥发性记忆。 Agent 的 TodoWrite 等工具将任务列表保存在上下文窗口中,一旦执行 /clear 或上下文压缩,所有规划信息就消失了。
目标漂移。 经过 50 次以上的工具调用后,Agent 往往会忘记最初的目标。它开始偏离主干,在无关细节上钻牛角尖。
错误不可追溯。 错误被即时处理但未被记录。当 Agent 再次遭遇同样的失败时,它会重复相同的错误尝试。
上下文膨胀。 所有中间结果都被塞进上下文窗口,而不是写入持久化存储。上下文窗口很快被填满,后续推理质量下降。
方案:三文件模式
planning-with-files 定义了一个简单的三文件工作模式:
task_plan.md → 追踪阶段与进度
findings.md → 存储研究与发现
progress.md → 记录会话日志与测试结果
核心原则只有一条:
上下文窗口 = 内存(易失、有限)
文件系统 = 磁盘(持久、无限)
→ 重要的东西写进磁盘。
task_plan.md —— 任务规划
这是整个工作的「方向盘」,包含:
- Goal:任务目标
- Phases:拆分为 3-7 个阶段,每阶段带
[ ]复选框和**Status:** pending/in_progress/complete - Decisions:重大技术决策及理由
- Errors:记录所有错误及解决方案
findings.md —— 研究发现
这是「知识库」,存放:
- 搜索结果、文档链接
- 技术调研的发现
- 决策的理由和权衡
progress.md —— 进度日志
这是「工作日志」,按时间线记录:
- 每个阶段开始/结束时间
- 执行的操作、修改的文件
- 测试结果
- 错误日志(带时间戳)
五大核心规则
| 规则 | 含义 |
|---|---|
| 先建计划 | 永远不要在创建 task_plan.md 之前开始工作 |
| 2 操作规则 | 每执行 2 次浏览/搜索操作后,必须更新 findings.md |
| 记录所有错误 | 即使立即解决的错误也要记录,避免重复踩坑 |
| 不重复失败 | 记录每次尝试,失败后必须换方案 |
| 持续完成验证 | Stop Hook 自动检查所有阶段是否标记为 complete |
Hook 机制:注意力操控
planning-with-files 真正的工程创新在于 Hook 系统。它通过 Claude Code 的生命周期钩子,在关键时刻自动介入:
| Hook | 触发时机 | 行为 |
|---|---|---|
| SessionStart | 会话开始时 | 自动恢复上次会话状态,注入 catchup 报告 |
| PreToolUse | Write/Edit/Bash 操作前 | 重新读取 task_plan.md,将目标刷新到注意力窗口 |
| PostToolUse | Write/Edit 操作后 | 提醒更新阶段状态 |
| Stop | Agent 尝试停止时 | 检查所有阶段是否完成,未完成则阻止退出 |
| PreCompact | 上下文压缩前 | 提醒刷新进度日志,防止信息丢失 |
PreToolUse Hook 是整套机制的关键——它在每次工具调用前将计划重新注入 Agent 的注意力窗口,从根本上解决了目标漂移问题。
但这也带来了独特的安全风险。2025 年的安全审计揭示了一条危险的攻击链:
WebSearch(恶意站点) → 内容写入 task_plan.md
→ Hook 在下一次工具调用前读取 task_plan.md
→ Hook 在下下次工具调用前再次读取
→ 恶意指令被无限放大
v2.21.0 版本修复了这一问题:从技能声明中移除 WebFetch / WebSearch,并添加了安全边界规则——网页搜索结果只能写入 findings.md,绝不能写入 task_plan.md。
并行计划与目录隔离
v2.36.0 引入了并行计划支持,允许同一仓库中存在多个独立的计划目录:
.planning/
2026-01-10-backend-refactor/
task_plan.md / findings.md / progress.md
2026-01-10-production-incident/
task_plan.md / findings.md / progress.md
使用 init-session.sh <slug> 创建独立计划,使用 set-active-plan.sh <plan-id> 切换活跃计划。Hook 会自动解析当前活跃的计划目录。
此外,对于跨多个会话的长期运营主题,还提供了 Topic Handoff 模式:
progress.md ← 运行时间线和简短索引
handoffs/<topic>.md ← 当前状态、命令、验证、风险、回滚方案
五问重启测试
判断上下文管理是否扎实,只需回答五个问题:
| 问题 | 答案来源 |
|---|---|
| 我在哪? | task_plan.md 中的当前阶段 |
| 我去哪? | task_plan.md 中的剩余阶段 |
| 目标是什么? | task_plan.md 中的 Goal 声明 |
| 我学到了什么? | findings.md |
| 我做了什么? | progress.md |
基准测试
使用 Anthropic 的 skill-creator 框架进行的正式评估(10 个并行子 Agent,5 类任务,30 项断言,3 次盲测):
| 测试配置 | 通过率 | 通过数 |
|---|---|---|
| 启用 skill | 96.7% | 29/30 |
| 未启用 skill | 6.7% | 2/30 |
| 差值 | +90 个百分点 | +27/30 |
盲测 A/B 对比:启用 skill 的 Agent 在所有 3 次对比中均获胜(评分 10.0 vs 6.0 / 10.0 vs 6.3 / 10.0 vs 8.0)。
未启用 skill 的 Agent 并非产出低劣——它们生成了可运行的代码、合理的研究对比、详细的迁移计划。但没有任何一个遵循了结构化的规划流程。而这正是 skill 的全部价值所在。
多平台支持
planning-with-files 目前已支持 17+ 个平台和 IDE,包括 Claude Code、Cursor、GitHub Copilot、Gemini CLI、Codex、Kiro、CodeBuddy、FactoryAI、OpenCode、Continue、Pi Agent、OpenClaw、Antigravity、Kilocode、AdaL CLI、Mastra Code、Hermes 等。同时提供阿拉伯语、德语、西班牙语、简体中文和繁体中文版本。
适用场景
适合使用:
- 需要 3 步以上的多阶段任务
- 调研类任务
- 构建 / 创建项目
- 涉及大量工具调用的任务
不需要使用:
- 简单问答
- 单文件修改
- 快速查找
安装与使用
npx skills add OthmanAdi/planning-with-files --skill planning-with-files -g
安装后使用 /plan 或 /planning-with-files:plan 启动计划会话。
总结
planning-with-files 本质上是一套编码化的工程纪律。Claude 本身能够做规划,这个 skill 并不赋予它新的能力——而是将一套经过验证的结构化工作流编码为可复用的模式。
它巧妙地将「上下文窗口是稀缺资源」这一约束转化为了工程优势:通过文件系统建立持久化工作记忆,通过 Hook 系统实现注意力操控,通过阶段状态追踪确保任务闭环。
Manus 用这套方法在 8 个月内从零做到 20 亿美元估值。而 planning-with-files 将同样的模式以开源、跨平台的方式带给了每一位 AI Agent 用户。
项目地址:github.com/OthmanAdi/planning-with-files