最近在浏览开源项目时发现了一个有趣的现象:许多重度AI用户都在反复提及同一个问题——为什么AI在长对话中会逐渐"失智"。
这不是模型能力问题,而是一个工程设计的经典困境。GitHub上的planning-with-files项目用一个极其简洁的方案诠释了这个问题的本质,并提供了可复用的解决思路。

作为经常体验AI产品的我来说,这套方法论背后的逻辑颇值得一谈。
问题诊断:AI的"健忘症"根源
在与AI协作的实际场景中,用户普遍会遇到这样的现象:
- 对话早期:AI反应敏捷,理解需求准确
- 对话中期(20-50轮后):AI开始重复已解决的问题,或遗忘初始目标
- 对话后期:出现"上下文堆积"现象,AI将所有信息无差别地塞入一个对话框中
这种现象的根本原因不是模型智力下降,而是工作记忆限制导致的目标漂移(Goal Drift)。
即便是参数量庞大的模型,在有限的上下文窗口内处理过多信息时,也会产生优先级紊乱。
核心方案:结构化外部存储
planning-with-files项目的创新之处在于将问题从"如何让AI记住更多信息"转向"如何让AI高效地管理信息"。

其核心机制是一套"三文件模式":
| 文件类型 | 职能定义 | 内容特征 |
| task_plan.md | 目标与进度管理 | 记录任务目标、当前阶段、完成进度(以复选框形式)、遇到的障碍 |
| notes.md | 中间过程存储 | 研究结果、思考记录、代码片段——所有"临时信息"的归档地 |
| [deliverable].md | 最终交付物 | 清理后的成果文档,不包含冗余过程信息 |
工作流设计:读-行-记-审循环
该项目强制实现了一套严格的执行循环,打破了传统AI Agent的线性决策流程:
读取(Read) → 决策(Decide) → 行动(Act) → 更新(Update) → 复盘(Review)
具体执行步骤:
- 读取阶段:每次操作前读取task_plan.md,将任务目标重新加载到"注意力窗口"
- 行动阶段:执行查询、编码或调研等具体操作
- 记录阶段:将执行结果写入notes.md(中间结果),更新task_plan.md中的进度复选框
- 复盘阶段:若产生错误,详细记录错误上下文和解决尝试
这种设计的优势在于:即使经历50次以上的工具调用,AI依然能够保持清晰的任务意识和进度追踪。
技术实现与集成方式
项目定位:Claude Code插件(Skill),同时支持Cursor、Codex等基于Claude的编程工具
安装步骤:
1. 确保已安装Claude Code环境
2. 进入Skills目录(如无则新建~/.claude/skills)
3. 执行克隆命令:
cd ~/.claude/skills
git clone https://github.com/OthmanAdi/planning-with-files.git
激活机制:无需复杂配置。当对话中出现"planning"、"organize"、"track progress"等关键词,或用户派发复杂任务时,Skill自动触发,并初始化task_plan.md文件。
适用场景评估
| 场景类型 | 适配度 | 说明 |
| 长链路研究任务 | ★★★★★ | 多阶段、跨越多轮对话的项目 |
| 代码生成与调试 | ★★★★★ | 需要维持代码架构一致性的工程 |
| 数据整理与分析 | ★★★★☆ | 需要中间结果存档的分析工作 |
| 短周期问答 | ★★☆☆☆ | 3轮以内的简单查询(开销大于收益) |
| 创意头脑风暴 | ★★★☆☆ | 需要跟踪创意演进过程时有帮助 |
设计理念溯源
该项目间接源自GTD(Getting Things Done)方法论在AI领域的应用转化:
- 清空大脑:信息不存储在对话框,而是持久化到文件系统
- 明确下一步:通过task_plan.md中的复选框确保意图清晰
- 定期回顾:在每个循环中强制进行进度检查
这种方法论的核心价值在于将上下文管理从"被动承载"转向"主动治理"。
相关项目推荐
若对上下文工程感兴趣,还可关注:
- Claude Code官方Skills库(1.4w+ Star):提供更多预制工作流插件
- Playwright+AI组合方案:用于自动化任务的文件系统管理
- LSP集成方案:加强IDE级别的上下文持久化
总结与实践建议
从产品角度看,planning-with-files代表了AI工具设计的一个重要转向:从追求模型能力的上限,转向优化人机协作的工作流效率。
这个项目证明了一个看似简单的原则——外部存储的可靠性往往超过模型的内部记忆。它不需要模型升级、不需要更多的参数,只需要重新设计信息流向。
对于需要与AI进行长期、复杂协作的用户,特别是编程、研究、数据分析领域的专业人士,这套方案值得一试。它的价值不在于创意,而在于将一套经过验证的工程范式开源化,降低了复杂任务自动化的实现门槛。