Planning with Files —— 文件化规划系统调研
把 AI 的工作记忆从”内存”搬到”硬盘”,长任务再也不怕上下文压缩丢失规划
一、它解决什么问题
Claude Code 默认的 Plan Mode 将规划存储在对话上下文中。当对话变长、触发上下文压缩时,规划内容可能被部分或全部丢失。结果就是:
- Claude 做到一半忘了自己在干嘛
- 跨会话无法恢复之前的工作状态
- 复杂多阶段任务容易丢失进度和中间发现
planning-with-files 是一个社区开源的 Claude Code Skill(github.com/OthmanAdi/planning-with-files),通过将规划、进度、知识全部写入 Markdown 文件来解决这个问题。截至 2026 年 4 月,GitHub 19K+ stars,v2.34.1,支持 17+ IDE。
二、核心设计:三文件模式
整个系统围绕三个 Markdown 文件运转,放在项目根目录:
| 文件 | 作用 | 类比 |
|---|---|---|
task_plan.md | 任务的完整规划:目标、阶段、步骤、依赖 | 施工蓝图 |
findings.md | 执行过程中发现的技术细节、决策、坑 | 施工日志 |
progress.md | 当前进度:哪些完成了、正在做什么、下一步 | 进度看板 |
task_plan.md 结构示例
# Task Plan
## Objective
实现用户认证模块
## Phases
### Phase 1: Database Schema
- [x] 创建 users 表
- [x] 创建 sessions 表
- [ ] 添加索引
### Phase 2: API Endpoints
- [ ] POST /auth/login
- [ ] POST /auth/register
- [ ] POST /auth/logout
## Dependencies
- PostgreSQL 15+
- bcrypt for password hashing
## Constraints
- 必须支持 OAuth 2.0
- Session 过期时间 24hfindings.md 结构示例
# Findings
## 2026-04-22
- bcrypt 在 Node 20 下需要 native addon 重编译
- PostgreSQL 的 uuid_generate_v4() 需要启用 pgcrypto 扩展
- 现有 middleware 已有 rate limiting,不需要重复实现progress.md 结构示例
# Progress
## Current Phase: Phase 1 - Database Schema
## Current Step: 添加索引
## Status: IN_PROGRESS
## Completed
- [x] Phase 1, Step 1: 创建 users 表
- [x] Phase 1, Step 2: 创建 sessions 表
## Next
- Phase 1, Step 3: 添加索引
- Phase 2, Step 1: POST /auth/login三、工作原理:Hooks 驱动
planning-with-files 的核心机制是利用 Claude Code 的 Hooks 系统,在关键时刻自动读写这三个文件,让 Claude 始终”记得”规划内容。
Hook 触发点
| Hook 事件 | 触发时机 | 动作 |
|---|---|---|
UserPromptSubmit | 用户每次发送消息时 | 读取 task_plan.md 头部 + progress.md 尾部,注入上下文 |
PreToolUse (Write/Edit/Bash/Read/Glob/Grep) | Claude 调用工具前 | 读取 task_plan.md 头部 30 行,提醒当前规划 |
PostToolUse (Write/Edit) | Claude 修改文件后 | 提醒更新 progress.md |
Stop | Claude 结束回复时 | 运行 check-complete.sh 验证所有阶段是否完成 |
数据流示意
用户发消息
│
▼
[UserPromptSubmit Hook]
│ 读取 task_plan.md 头部
│ 读取 progress.md 尾部
│ 注入到 Claude 上下文
▼
Claude 开始思考和工作
│
├──► [PreToolUse Hook] ──► 每次调工具前重读规划
│
├──► Claude 执行操作(编辑代码等)
│
├──► [PostToolUse Hook] ──► 提醒更新进度
│
▼
[Stop Hook] ──► 检查任务是否全部完成
关键规则
2-Action Rule(两步规则):
每次修改代码文件后,必须更新 progress.md。防止做了事但没记录,下次上下文压缩后丢失进度。
3-Strike Error Protocol(三振出局协议):
同一个错误连续出现 3 次,必须停下来重新评估方案,把分析写入 findings.md,而不是继续盲目重试。
Session Recovery(会话恢复): 新会话开始时,Claude 通过读取三个文件即可恢复完整状态——不需要回顾对话历史,不依赖上下文窗口。
四、安装方式
方式 1:作为 Skill 安装(推荐)
# 在项目根目录
mkdir -p .claude/skills/planning-with-files
# 将 SKILL.md 放入该目录然后在 .claude/commands/ 添加 plan.md 命令文件,用 /plan 触发。
方式 2:作为 Plugin 安装
项目提供了 .claude-plugin/ 目录结构,可以作为 Claude Code Plugin 安装。
方式 3:手动配置 Hooks
如果不想安装完整 skill/plugin,可以只配置核心 hooks:
// .claude/settings.json 的 hooks 部分
{
"hooks": {
"UserPromptSubmit": [
{
"command": "head -30 task_plan.md 2>/dev/null; echo '---'; tail -20 progress.md 2>/dev/null"
}
],
"PreToolUse": [
{
"matcher": "Write|Edit|Bash|Read|Glob|Grep",
"command": "head -30 task_plan.md 2>/dev/null"
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"command": "echo 'Remember to update progress.md with current status'"
}
]
}
}配套命令
| 命令 | 作用 |
|---|---|
/plan | 开始规划任务,创建/更新 task_plan.md |
/plan start | 开始执行规划 |
/plan status | 查看当前进度 |
五、适用场景分析
适合使用的场景
| 场景 | 为什么需要 |
|---|---|
| 多阶段重构(3+ 阶段) | 阶段多,上下文压缩后容易丢失全局视图 |
| 跨会话的长期任务 | 新会话自动恢复,不需要重新解释 |
| 多人协作的 AI 辅助开发 | 文件化的规划可以被团队成员 review |
| 探索性任务(调研 → 方案 → 实施) | findings.md 积累的知识不会丢失 |
| 需要严格进度追踪的任务 | progress.md 提供清晰的完成状态 |
不需要使用的场景
| 场景 | 为什么不需要 |
|---|---|
| 单文件 bug 修复 | 太简单,三文件反而是负担 |
| 快速问答 | 无需规划 |
| 短对话内能完成的任务 | 上下文不会压缩,Plan Mode 够用 |
| 一次性脚本编写 | 没有跨会话需求 |
六、与 Claude Code 内置 Plan Mode 的对比
| 维度 | 内置 Plan Mode | planning-with-files |
|---|---|---|
| 存储位置 | 对话上下文(内存) | Markdown 文件(磁盘) |
| 上下文压缩后 | 可能丢失 | 完整保留 |
| 跨会话恢复 | 不支持 | 自动恢复 |
| 进度追踪 | 无专门机制 | progress.md 实时更新 |
| 知识积累 | 在对话中,会被压缩 | findings.md 永久保留 |
| 团队可见性 | 仅当前用户 | 文件可 commit/分享 |
| 开销 | 零 | 每次工具调用多读几十行文件 |
| 适合任务规模 | 小到中 | 中到大 |
| 学习成本 | 零(内置) | 需理解三文件模式 + hooks |
核心区别:Plan Mode 是”工作记忆”(RAM),planning-with-files 是”持久存储”(SSD)。两者不冲突,可以同时使用。
七、潜在问题与注意事项
1. Token 开销
每次用户发消息和每次工具调用都会触发 hook 读取文件。对于 task_plan.md 较大的项目,这会增加每轮对话的 token 消耗。
缓解:hook 只读取 head -30(头 30 行),而非全文。但如果规划内容很长,30 行可能不够覆盖关键信息。
2. 文件冲突
三个文件放在项目根目录,可能:
- 与现有文件冲突
- 被误提交到 git
- 多个 Claude Code 会话同时修改
缓解:添加到 .gitignore;或改用 .claude/ 子目录存放。
3. Hook 的局限性
Hooks 通过 shell 命令注入文本到上下文,但:
- 注入的文本是
<user-prompt-submit-hook>标签包裹的,Claude 会当作系统信息处理 - 如果 Claude 决定忽略 hook 提醒(比如”记得更新 progress.md”),没有强制机制
- Hook 命令如果执行失败(比如文件不存在),不会阻断 Claude 的操作
4. 维护负担
三个文件需要 Claude 主动维护。如果 Claude 忘记更新(尤其是 findings.md),文件内容会逐渐过时,反而提供误导性信息。
5. 社区项目风险
- 非 Anthropic 官方维护,可能与 Claude Code 版本更新不兼容
- Hook API 如果变更,skill 需要跟着适配
- 19K stars 说明社区活跃,但也意味着 issue 多、PR 多,质量参差
八、社区生态
主要 Fork 和扩展
| 项目 | 特点 |
|---|---|
alexarevalo9/planning-with-files | 增加了 context-window 监控 |
daoch4/planning-with-files | 简化版,去掉了 findings.md |
ruvnet/planning-with-files | 增加了 AI 自动评估规划质量 |
Solla-AI/planning-with-files | 集成了 Solla 的知识图谱 |
IDE 支持
官方声称支持 17+ IDE,核心依赖的是 Claude Code 的 Skill/Hook 机制,所以实际支持范围取决于 Claude Code 的 IDE 集成:
- VS Code (Claude Code Extension)
- JetBrains (Claude Code Plugin)
- Terminal (Claude Code CLI)
- Web (claude.ai/code)
九、我的评估
值得用的点
- 跨会话恢复是刚需:对于超过 1 小时的复杂任务,上下文压缩几乎必然发生,这是真实痛点
- findings.md 非常实用:调研类任务(像我们现在做的)最怕中间发现丢失
- 设计简洁:三个 Markdown 文件 + 四个 Hook,没有引入复杂依赖
- 可渐进采用:可以只用 task_plan.md + progress.md,不用 findings.md
需要注意的点
- 并非所有任务都需要:简单任务加上三文件反而是噪音
- Claude Code 自身在演进:内置的 Plan Mode + Task 系统 + auto memory 在持续改进,部分需求可能被原生满足
- Token 成本:每轮额外读文件的开销在长对话中累积可观
- 依赖 Claude 自觉性:Hook 只能提醒,不能强制 Claude 更新文件
结论
对于 3 阶段以上、预计跨会话的复杂任务,planning-with-files 是目前最成熟的解决方案。对于日常开发,Claude Code 内置的 Plan Mode + TaskCreate 已经够用。
建议策略:按需启用。不做全局安装,而是在需要时为具体项目配置。
十、快速上手(如果决定安装)
# 1. 克隆到 Claude Code skills 目录
cd your-project
mkdir -p .claude/skills
git clone https://github.com/OthmanAdi/planning-with-files.git .claude/skills/planning-with-files
# 2. 复制命令文件
cp .claude/skills/planning-with-files/commands/plan.md .claude/commands/plan.md
# 3. 添加到 .gitignore(避免规划文件提交)
echo -e "task_plan.md\nfindings.md\nprogress.md" >> .gitignore
# 4. 使用
# 在 Claude Code 中输入 /plan 开始规划十一、参考资源
| 资源 | 说明 |
|---|---|
| OthmanAdi/planning-with-files | 官方仓库 |
| SKILL.md | 核心实现文件,包含所有 Hook 定义和规则 |
| Claude Code Hooks 文档 | Hook 机制官方文档 |
| Claude Code Skills 文档 | Skill 机制官方文档 |
最后更新:2026-04-22 基于 planning-with-files v2.34.1 调研