问题

大语言模型有上下文窗口限制。即使是 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
45           TODO.md(状态持久化,跨会话存活)

AI 不需要"记住"之前聊了什么,它只需要读文件就知道一切。

适用场景

  • 大型项目的全面代码审查
  • 多步骤的重构任务
  • 需要几天才能完成的功能开发
  • 任何单次对话装不下的任务

不适用的场景

  • 简单的一问一答
  • 单次就能完成的小改动
  • 不涉及代码的纯聊天

小结

上下文有限不是问题,丢失状态才是。把状态从对话搬到文件,每次新会话"读档"继续,大模型就能处理任意长度的任务。

关键就三件事:

  1. CLAUDE.md 定规范(自动加载)
  2. TODO.md 存状态(项目快照 + 任务进度 + 会话断点)
  3. 新会话一句话:“读取 TODO.md,继续”