乐于分享
好东西不私藏

AI编码总是半途而废?开源神器 planning-with-files 让Claude Code记住上下文,崩溃也不怕!

AI编码总是半途而废?开源神器 planning-with-files 让Claude Code记住上下文,崩溃也不怕!

你是不是也遇到过这样的崩溃瞬间:用 AI 编码助手写一个复杂的重构任务,刚让 Claude 读完整个项目的架构,开了十几个步骤的规划对话框,结果中途终端崩溃,或者手残点了 /clear 清空上下文——然后 AI 瞬间失忆,一切回到原点,得从零开始描述需求?

这种“白干了”的痛,每个深度使用 AI 编程的人都能共鸣。更致命的是,如果你需要多个 AI 代理分工协作(比如一个负责分析代码结构,一个负责写测试,另一个负责部署),它们之间没有共享记忆,彼此都不知道对方做了什么,导致重复劳动甚至冲突。

开源项目 planning-with-files 就是来终结这种混乱的。 它提供了基于文件的持久化计划机制,把你的 AI 任务拆成一个个 Markdown 文件,存放在磁盘上。即使 AI 的上下文被清空、终端崩溃、甚至换个电脑,计划文件和执行状态依然完好无损。Claude Code、Codex CLI、Cursor、Kiro、OpenCode 等 60 多种 AI 编码工具都兼容,因为它是通过一个叫 SKILL.md 的标准文件来注入能力的。

🚀 一、背景揭秘:为什么你需要这个技能/工具?

想象一下,你正在用 Claude Code 完成一个“给网站新增用户登录功能”的任务:

  1. 你需要 Claude 先分析现有代码(引入 auth.pymodels.py
  2. 然后编写登录表单和 JWT Token 逻辑
  3. 接着修改前端路由
  4. 最后检查测试覆盖率

在传统模式下,你每次和 Claude 对话都是独立的。如果第一步做完后,你说“继续下一步”,Claude 可能已经忘了之前它分析过哪个文件。更惨的是,如果你中途切换窗口、或者 Claude Code 突然报错退出,之前的对话记录就没了——你不得不重新让 AI 读一遍代码,再重新描述需求。

planning-with-files 的核心理念是:把任务计划变成文件,让 AI 自己维护这些文件。 每个任务步骤都是一个 Markdown 文件,里面记录了目标、当前状态(待做/进行中/已完成)、产出的文件列表。AI 每次启动时,都会读取最新的计划文件,知道自己做到了哪一步,哪些东西已经完成。因为文件真的存在磁盘上,所以无论你 /clear 多少次、机器重启几次,进度都不会丢。

这个项目源自一个广为人知的思路——Manus 式的工作流,即用文件系统作为 AI 的“外脑”,代替对话中的隐式记忆。它非常适合:

  • 长时间运行的编码任务(重构、大功能开发)
  • 多代理协作(不同 AI 角色共享同一个计划文件)
  • 与 CI/CD 结合(计划文件跟踪进度,失败后自动续跑)

💡 二、核心功能:3个核心优势深度剖析

1. 崩溃级持久化:Markdown 文件当“存档点”

传统 AI 对话是易失性的,而 planning-with-files 把每个步骤的状态都写进 plans/ 目录下一个 .md 文件中。比如步骤 1 完成后,AI 会在文件中把状态从 pending 改成 completed,并记录产出。下次启动时,AI 直接读取最新的 plan.md(汇总文件),就知道从哪里继续。

这就像是玩角色扮演游戏时手动存档——再也不怕“游戏崩溃”导致进度丢失。而且这个存档完全是人类可读的 Markdown,你可以直接打开编辑,比如手动跳过某个步骤,或者标记某个步骤因为 bug 需要重做。

2. 确定性完成门:确保“做完”而非“说做”

很多时候 AI 会说“我已经修改了文件”,但实际上它可能只是生成了代码却没有写入,或者写错了位置。planning-with-files 规定:只有当任务列表中的每一个步骤都被标记为 completed(并且标记是通过写入文件完成的),系统才认为任务真正完成。 这就避免了 AI 的“嘴炮”行为——它必须实际执行写文件操作来更新状态,否则下一次启动时还是会显示未完成。

这种“完成门”机制,本质上是通过文件系统的事件驱动来保证状态的可靠性。相当于给 AI 设了一个“打卡清单”,只有每个打卡点都真正执行了动作(写入文件),才进行下一步。

3. 多代理共享状态:磁盘就是“黑板书”

如果多个 AI 代理(比如一个负责写代码,一个负责写测试)同时运行,它们可以通过读取同一个 plans/ 目录来获知对方的进度。因为所有计划文件都在本地磁盘上,没有网络依赖,也没有中心服务器。每个代理只需要遵守相同的 Markdown 结构,就可以像协作编辑文档一样协同工作。

这种模式特别适合复杂项目的自动化流水线:例如先由“分析 Agent”生成代码结构,然后由“编码 Agent”填充实现,再由“测试 Agent”写单测,每个 Agent 都检查 plan.md 中对应步骤的状态,只有前一步完成才执行自己的任务。

🛠️ 三、实战教学:手把手带你跑通核心案例

我们以 Claude Code 为例(其他工具如 Cursor 操作类似),实现一个“在已有 Python 项目中新增一个简单的 REST API”任务,并确保会话崩溃后能续命。

步骤 1:配置 SKILL.md 让 AI 学会“文件规划”

planning-with-files 的核心是注入一个 SKILL.md 文件到你的项目根目录。这个文件会告诉 AI 代理“当你要执行多步复杂任务时,请使用基于文件的计划模式”。

克隆项目:

git clone https://github.com/OthmanAdi/planning-with-files.git cd planning-with-files 

将 SKILL.md 复制到你的项目中(或直接在项目根目录创建 SKILL.md,内容复制仓库中的文件)。

注意:部分 AI 工具(如 Claude Code)在启动时会自动读取根目录的 SKILL.md。你也可以手动告诉 AI:“请根据 SKILL.md 中的指令进行计划管理。”

步骤 2:启动 AI 代理并下达任务

在项目根目录下启动 Claude Code(或 Codex CLI),然后给出你的任务描述:

请根据 SKILL.md 的指导,帮我完成以下任务: 1. 在项目根目录创建一个 plans/ 文件夹 2. 分析现有代码,生成一个包含以下步骤的计划文件 plan.md:    - 步骤1:在 app/routes.py 中添加一个新的 GET /api/health 端点,返回 {"status""ok"}    - 步骤2:在 tests/test_routes.py 中添加对这个端点的测试    - 步骤3:运行测试确保通过 3. 然后按照计划依次执行每个步骤 4. 每完成一步,更新 plan.md 中的状态为 completed 

AI 会首先读取 SKILL.md,理解它应该用文件来管理计划。然后它会创建 plans/ 目录,并生成类似 plans/plan.md 的文件,内容大概如下:

# 项目计划:添加健康检查端点  ## 步骤1:添加 API 端点 - 状态:pending - 目标:在 app/routes.py 中添加 GET /api/health - 预计产出:修改 app/routes.py  ## 步骤2:添加测试 - 状态:pending - 目标:在 tests/test_routes.py 中添加测试 - 预计产出:修改 tests/test_routes.py  ## 步骤3:运行测试 - 状态:pending - 目标:运行 pytest 并确保通过 - 预计产出:测试结果 

然后 AI 开始执行步骤1。它修改了 app/routes.py 后,会更新计划文件:

## 步骤1:添加 API 端点 - 状态:completed - 目标:在 app/routes.py 中添加 GET /api/health - 产出:已添加代码(见文件) 

步骤 3:模拟崩溃与恢复

假设执行完步骤1后,你按下 Ctrl+C 终止了 Claude Code,甚至重新打开了终端。当你再次启动 Claude Code 并进入项目目录时,你可以直接说:“继续执行计划,检查上次的进度。”

AI 会读取 plans/plan.md,看到步骤1已完成,步骤2 pending,然后自动从步骤2开始。无需你再次描述任务,也无需重新分析代码。

步骤 4:手动干预计划(高级)

如果你发现步骤1的代码写错了,你可以直接编辑 plans/plan.md,把步骤1的状态从 completed 改回 pending,然后告诉 AI:“步骤1需要重做。” AI 会重新执行步骤1。

这就是文件化带来的控制力:你不是 AI 的乘客,而是项目的“项目经理”。

⚠️ 四、进阶用法与避坑指南

✅ 进阶用法

1. 多代理自动化流水线

如果你有多个 AI 代理(比如不同终端窗口),可以设置每个代理启动时自动读取 plans/plan.md。例如,代理A负责修改代码,代理B负责审查代码。代理B可以检查“步骤1”是否 completed,如果是则开始执行“代码审查”步骤(这个步骤需要在计划文件中提前预定义)。

2. 与 Git 钩子结合

你可以写一个 pre-commit 钩子,检查 plans/plan.md 中是否所有步骤都已 completed,否则阻止提交。这样确保代码库只在完整任务完成后才被推入远程仓库。

3. 使用环境变量控制计划目录

planning-with-files 默认使用 plans/ 目录。你可以通过环境变量 PLANS_DIR 自定义路径,比如 PLANS_DIR=my_project_plans,方便多个项目共用一套 AI 代理配置。

⚠️ 避坑指南

1. AI 可能不理解 SKILL.md

虽然兼容 60+ 工具,但部分 AI 助手(尤其是旧版本)不会自动读取 SKILL.md。你需要明确告诉它:“请参考根目录的 SKILL.md 文件来规划你的工作。” 如果它忽略,可以手动把 SKILL.md 的内容粘贴到对话中作为指令。

2. 计划文件冲突

如果你同时让两个 AI 代理修改同一个计划文件,可能会造成写入冲突(一个写了 completed,另一个写回了 pending)。建议: - 对不同步骤分配不同的代理(计划文件中每个步骤用独立的文件,而不是一个文件里写全部) - 或者使用简单的文件锁机制(比如先创建一个 .lock 文件,代理执行前检查)

planning-with-files 目前没有内置锁,这点对于单代理场景足够,多代理需要自己加小心。

3. 文件系统开销

对于非常长的任务(比如上百个步骤),每次更新都要写磁盘,频繁 I/O 可能稍慢。但实际编码中通常步骤数不多(10-20步),影响可忽略。

4. 不适用于纯对话任务

这个工具专门为“多步、有产出的编码任务”设计。如果你只是想和 AI 聊天、讨论问题,没必要用它。它的真正价值在于自动化工作流中的状态持久化

5. 隐私与安全

所有计划文件都存储在本地磁盘,没有外传,所以数据安全没问题。但要注意:plan.md 里可能会包含你的项目路径、代码片段等敏感信息,如果项目中其他协作者也能访问,注意不要写入敏感密钥。

🎯 五、总结与选型参考

适用人群
推荐指数
理由
经常用 AI 做多步重构/代码生成的开发者
⭐⭐⭐⭐⭐
彻底解决“上下文丢失”痛苦,省下大量重复描述时间
尝试多代理协作的团队
⭐⭐⭐⭐
共享磁盘状态让代理协同更简单,但需注意并发写冲突
使用 Claude Code、Cursor 等工具的日常用户
⭐⭐⭐⭐
配置非常轻量,一个 SKILL.md 就能开搞
仅用 AI 做单次问答的用户
完全不需要,增加复杂度
需要持续集成(CI)中跟踪 AI 任务进度的
⭐⭐⭐⭐⭐
文件化计划可以被脚本读取,适合流水线

最终建议: 如果你有过至少一次“AI 做到一半突然失忆”的惨痛经历,花 5 分钟把 SKILL.md 放进项目,绝对值得。它不改变你使用 AI 的方式,只是给 AI 装了一个“持久化硬盘”。而且完全免费、开源,工具链只需一个 Markdown 文件。

你在使用 AI 编程时遇到过哪些离谱的“失忆”事故? 欢迎留言分享,我们一起探讨更好的解决方案。如果这篇文章对你有帮助,记得点个“在看”,让更多同样被脆皮 AI 折磨的开发者看到。