你一定遇到过这个场景

你让 Claude Code 帮你重构一个模块。它列了个计划,开始改代码,改到一半——上下文窗口满了。你跑了个 /clear,或者它自己 compact 了。然后你再问它:"刚才改到哪了?"它一脸茫然。

或者更常见的:你让它做一个 5 步以上的任务,它做到第 3 步就开始跑偏,把第 1 步的目标忘了。你得不断提醒它:"别忘了,我们的目标是……"

这不是模型笨。这是所有 Coding Agent 的结构性缺陷:上下文窗口就是 RAM,断电就没了。

planning-with-files 就是来解决这个问题的。它不是又一个 AI 编程工具,而是一个让 Agent 把计划写到磁盘上的技能。概念简单到你会觉得"这也值得 24K Star?"——但用过之后你会发现,这确实是 Agent 长任务执行的基础设施级缺失。

它到底在解决什么问题

先搞清楚一个区别。市面上有一类工具叫"Agent 记忆"——比如 Mem0、Zep,它们解决的是"Agent 怎么记住上次跟你聊了什么"。这类工具的本质是跨会话的知识检索

planning-with-files 解决的不是记忆问题,而是执行状态管理问题。具体来说:

Claude Code 自带的 TodoWrite 工具也试图解决这个问题,但它有个致命缺陷:存在上下文里,不清就满,清了就没了。本质上还是 RAM。

三文件模式:把 RAM 搬到磁盘

planning-with-files 的核心是一个极其简单的模式:每个复杂任务创建三个文件。

task_plan.md      → 任务分阶段计划 + 每个阶段的状态
findings.md       → 调研发现、技术选型、踩坑记录
progress.md       → 会话日志、测试结果、操作记录

就这三个文件,放在你的项目根目录。Agent 每次做决策前,先读 task_plan.md;每次有新发现,写进 findings.md;每次做完一步,更新 progress.md。

关键在于自动化。它不是靠你提醒 Agent "记得更新计划",而是通过 Claude Code 的 Hook 机制自动注入:

这五个 Hook 形成一个闭环:计划始终在磁盘上,每次交互自动从磁盘读回上下文。不管你怎么 /clear、怎么 compact、甚至重启会话,计划都不会丢。

跟竞品到底有什么不同

这个赛道上有几类方案,但解决的问题层次不同:

Claude Code 的 TodoWrite 是最直接的竞品。它也在做任务跟踪,但 TodoWrite 存在上下文里——你 /clear 了就没了,长任务做到一半 compact 了也会丢。planning-with-files 把同样的功能搬到了磁盘上,代价是多了三个文件。

Agent 记忆工具(Mem0、Zep) 解决的是"跨会话记住用户偏好和历史知识"。比如你上次说过"用 TypeScript strict mode",下次它还记得。但记忆工具不管"当前任务做到哪了"。planning-with-files 管的是当下正在执行的任务的状态,两者互补。

Superpowers 框架(本工坊写过)给 Agent 加了一套工程纪律——TDD、代码审查、提交规范。它解决的是"Agent 怎么写代码",planning-with-files 解决的是"Agent 怎么记住自己要做什么"。一个管方法论,一个管执行状态。

Claude Code 自带的 session 机制 能在会话间保持一些上下文,但它不提供结构化的计划管理。你没法让 Agent "检查一下之前的计划还差几步没完成"。

所以 planning-with-files 的定位很清晰:它不是替代任何工具,而是给所有工具补上"计划持久化"这一层。你可以同时用 Superpowers 管工程纪律、用 Mem0 管长期记忆、用 planning-with-files 管当前任务的执行状态。

一个真实场景:我拿它重构了一个 API 模块

我有一个 Node.js + Express 的项目,需要把一个 500 行的路由文件拆成独立的 controller/service/route 模块。这个任务大概涉及 15 个文件的创建和修改。

先不用 planning-with-files 跑了一遍。Claude Code 开始拆文件,拆到第 8 个文件的时候,上下文差不多满了。它开始出现明显的目标漂移——把一个 service 的方法名写错了,把另一个 controller 的依赖关系搞反了。我不得不手动纠正两次,然后 /clear 重新开始,告诉它"你刚才做到哪了"。

装上 planning-with-files 之后再跑同样的任务。安装就一行:

npx skills add OthmanAdi/planning-with-files --skill planning-with-files -g

这次 Agent 自动创建了三个文件。task_plan.md 里列了 5 个阶段:分析现有结构 → 创建 service 层 → 创建 controller 层 → 更新路由 → 验证和清理。每个阶段有 checkbox。

做到第 3 阶段的时候,上下文又满了。我 /clear 了一下。这次不一样了——Agent 自动读回 task_plan.md,看到前两个阶段已经打勾,第 3 阶段进行中,然后继续干活。它甚至还读了 progress.md,知道之前有个 service 的方法名改过了。

最后的结果?一次 /clear 之后,任务无缝继续,没有重复工作,没有目标漂移。整个重构花了大概 25 分钟,比我之前手动盯 + 纠错的方式快了一倍。

但也有不爽的地方。progress.md 的更新有时候太啰嗦——Agent 每写一个文件都要往 progress.md 追加一段日志,搞得文件越来越长。而且它更新 task_plan.md 的时候,有时候会把整个文件重写一遍而不是只改 checkbox,这就触发了额外的 token 消耗。

v3 的自治模式:给长任务加个"闸门"

v3.0.0 加了一个重要的新功能:completion gate(完成闸门)。

之前的问题是:Agent 觉得自己做完了就停了,不管计划是不是真的全部完成。Stop Hook 虽然会检查,但只是提醒,Agent 可以忽略。

gated mode 下,Stop Hook 会阻止 Agent 停下,除非满足 5 个条件:处于 gated 模式、有进行中的阶段、stop hook 没被激活、阻断次数没超限、自上次阻断后有新进展。

autonomous mode 更激进——它把每次工具调用都重新注入计划的开销去掉了,只在会话开始和阶段切换时注入。对强模型(Sonnet 4、Opus 4)来说,这是个合理的取舍:省 token,靠模型自身的能力保持目标。

还有个 hash attestation 机制:你可以用 SHA-256 锁定 task_plan.md,之后如果 Agent 试图篡改计划内容,Hook 会拒绝注入。这对需要严格计划执行的场景(比如 CI/CD 流水线里的 Agent)很有用。

适配 60+ 个 Agent 的野心

planning-with-files 最让我意外的一点是它的适配范围。它不只是 Claude Code 的插件——通过 SKILL.md 开放标准,它能跑在 Cursor、Codex、Gemini CLI、OpenCode、Kiro、Hermes Agent、GitHub Copilot、Continue 等 60+ 个平台上。

每个平台的集成深度不一样:

说实话,没有 Hook 的平台体验差很多。skill-only 模式下,Agent 得"自觉"去读计划文件、更新进度,但实际用下来,很多模型做不到——它会直接忽略 SKILL.md 里的指令,按照自己的节奏干活。所以如果你用的是不支持 Hook 的平台,这个工具的价值会打折扣。

我的真实体验:好用,但有学习曲线

用了两周,总结一下:

好的部分:

不好的部分:

什么场景值得用,什么场景别用

值得用:

别用:

跟 Manus 的关系

README 第一句话就写"Work like Manus"。2025 年底 Meta 20 亿美元收购了 Manus,Manus 的核心技术就是"把 Markdown 文件当磁盘上的工作记忆"。planning-with-files 把这个模式提炼成了一个通用的 Agent 技能,让任何 Coding Agent 都能用上这套方法论。

这不完全是营销。Manus 的技术博客确实说过类似的话:"Markdown 是我磁盘上的工作记忆。因为我是迭代处理信息的,活跃上下文有上限,所以 Markdown 文件就是我的草稿纸、进度检查点、最终交付物的构建块。"

planning-with-files 做的事情就是把 Manus 内部的这个机制,变成了一个可以安装到任何 Agent 上的标准化技能。

总结

planning-with-files 不是那种会让你"哇"的工具。它做的事情极其简单——让 Agent 把计划写到文件里。但正是这种简单,解决了 Coding Agent 长任务执行中最根本的问题:上下文是易失的,文件是持久的。

24K Star 不是白来的。它的社区生态做得很好——60+ 平台适配、5 种语言版本、活跃的 fork 和扩展。这说明"Agent 需要持久化计划"这件事是真实的刚需。

如果你主要用 Claude Code 或 Cursor,经常做需要 30 分钟以上的复杂任务,装上试试。一行命令的事。

如果你只是偶尔让 Agent 改改 bug,不用折腾。

项目地址:github.com/OthmanAdi/planning-with-files