问题
大语言模型有上下文窗口限制。即使是 1M token 的模型,面对大型项目的全面审查、重构这类任务,一个会话也可能不够用。
对话越长,前面的内容越容易被压缩或丢失。你说了半天的背景,模型到后面可能已经"忘了"。
核心思路
不要让状态活在对话里,让它活在文件里。
对话会结束,文件不会。把任务状态、项目上下文、进度快照全部写进文件,每次新会话只需要一句话就能接上。
具体做法
整套方法由两个文件驱动:
| 文件 | 作用 |
|---|---|
CLAUDE.md | 工作流规范,AI 每次启动自动读取 |
TODO.md | 任务状态 + 项目快照 + 会话断点 |
第一步:建立工作流规范(CLAUDE.md)
在项目根目录创建 CLAUDE.md,写入以下内容。这个文件会被 Claude Code 在每次新会话时自动加载,相当于"永久系统提示词"。
1# 长任务工作流规范
2
3## 任务状态文件
4- 所有任务记录在 `TODO.md`
5- 每完成一项立即更新状态,不要攒批
6- 遇到问题或发现新任务时追加到文件
7
8## TODO.md 格式要求
9
10文件顶部必须包含:
111. 项目结构快照(关键目录和文件)
122. 技术栈摘要(框架、语言、构建工具)
133. 已知约束(特殊配置、部署方式等)
14
15任务区格式:
16- [ ] 未完成
17- [x] 已完成
18- [!] 有问题/被阻塞(附原因)
19
20每个任务项需包含:
21- 涉及的文件路径
22- 简要描述做了什么/要做什么
23- 如果已完成,记录改动摘要
24
25## 会话结束前
26在即将耗尽上下文或用户要求暂停时:
271. 更新 TODO.md 所有状态
282. 在文件末尾追加「会话快照」段落,记录:
29 - 当前进行到哪一步
30 - 未完成项的阻塞原因或下一步动作
31 - 本次会话的关键发现和决策
第二步:生成任务文件(TODO.md)
在第一次会话中,让 AI 先扫描项目,然后生成 TODO.md。给出这样的提示词:
1读取项目,生成 TODO.md。要求:
21. 顶部写项目结构快照和技术栈
32. 列出所有待办任务,分类标注
43. 不要开始执行,等我确认
生成的 TODO.md 大概长这样:
1# 项目审查任务
2
3## 项目快照
4- 框架:Hugo 静态博客
5- 主题:minimal
6- 内容:content/posts/ 下 54 篇文章
7- 部署:GitHub Actions
8
9## 安全审查
10- [ ] 检查 config 中是否暴露敏感信息
11- [ ] 检查 HTML 模板的 XSS 风险
12- [x] 审查 CI/CD 配置权限 → 已确认无问题
13
14## 性能优化
15- [ ] 图片资源压缩(涉及 static/images/)
16- [!] CSS 合并被阻塞 → 主题不支持,需自定义
17
18## 会话快照 - 2026-03-03
19- 进度:安全审查完成 2/5,性能优化未开始
20- 下一步:继续检查模板文件 layouts/
21- 关键发现:hugo.toml 中 unsafe HTML 已开启,需评估风险
第三步:新会话继续
开一个新对话,只需要说:
1读取 TODO.md,继续未完成的任务。
一句话够了。因为:
CLAUDE.md自动加载了工作流规范TODO.md里有项目快照,不需要重新解释项目背景- 会话快照告诉 AI 上次停在哪里、下一步做什么
第四步:周期性保存
在长会话过程中,可以随时说:
1先暂停,更新一下 TODO.md 的快照。
这相当于手动"存档"。如果你感觉对话已经很长了,主动存一次,然后开新会话继续。
为什么有效
这套方法的本质是把"对话上下文"转化成了"文件上下文":
1传统方式:人 ←对话→ AI(状态在内存里,会话结束就没了)
2
3文件驱动:人 ←对话→ AI
4 ↕
5 TODO.md(状态持久化,跨会话存活)
AI 不需要"记住"之前聊了什么,它只需要读文件就知道一切。
适用场景
- 大型项目的全面代码审查
- 多步骤的重构任务
- 需要几天才能完成的功能开发
- 任何单次对话装不下的任务
不适用的场景
- 简单的一问一答
- 单次就能完成的小改动
- 不涉及代码的纯聊天
小结
上下文有限不是问题,丢失状态才是。把状态从对话搬到文件,每次新会话"读档"继续,大模型就能处理任意长度的任务。
关键就三件事:
- CLAUDE.md 定规范(自动加载)
- TODO.md 存状态(项目快照 + 任务进度 + 会话断点)
- 新会话一句话:“读取 TODO.md,继续”