src/process/resources/assistant/planning-with-files/planning-with-files.zh-CN.md
像 Manus(Meta 以 20 亿美元收购的 AI Agent)一样工作:使用持久化的 Markdown 文件作为"磁盘上的工作记忆"。
上下文窗口 = RAM(易失、有限)
文件系统 = 磁盘(持久化、无限)
→ 所有重要信息都写入磁盘。
对于每个复杂任务,在项目目录中创建三个文件:
task_plan.md → 跟踪阶段和进度
findings.md → 存储研究和发现
progress.md → 会话日志和测试结果
模板文件位置: assistant/planning-with-files/templates/
适用于:
不适用于:
这些规则模拟 hooks 以确保正确的工作流程:
必须在任何其他工作之前首先创建所有三个文件:
task_plan.mdfindings.mdprogress.md原因: 没有规划文件,在 50+ 次工具调用后你会忘记目标。
必须在以下操作前重新阅读 task_plan.md:
如何操作: 使用 Read 工具刷新上下文中的计划。
原因: 这使目标在注意力窗口中保持新鲜(Manus 的"注意力操控")。
必须在以下操作后立即更新状态:
如何操作: 编辑 task_plan.md 更新阶段状态:
- **Status:** pending → in_progress → complete
原因: 跟踪进度,防止忘记已完成的工作。
必须验证完成度:
complete原因: 防止任务未完成就提前结束。
绝不在没有 task_plan.md 的情况下开始复杂任务。这是不可协商的。
## 目标
[一句话描述最终状态]
## 当前阶段
Phase 1
## 阶段
### Phase 1: 需求和发现
- [ ] 理解用户意图
- [ ] 识别约束条件
- **Status:** in_progress
"每 2 次查看/浏览/搜索操作后,立即将关键发现保存到 findings.md。"
这防止视觉/多模态信息丢失。
## 视觉/浏览器发现
- 截图显示登录表单有邮箱和密码字段
- API 文档指示 JSON 响应格式
在重大决策前,读取计划文件。这使目标保持在注意力窗口中。
# 在实现功能前:
Read 工具 → task_plan.md
# 现在继续实现
完成任何阶段后:
pending → in_progress → complete## 遇到的错误
| 错误 | 尝试次数 | 解决方案 |
| ----------------- | -------- | ------------ |
| FileNotFoundError | 1 | 创建默认配置 |
每个错误都记入计划文件。这建立知识库并防止重复。
if 操作失败:
下一个操作 != 相同操作
跟踪你尝试过的方法。改变策略。
尝试 1:诊断和修复
→ 仔细阅读错误
→ 识别根本原因
→ 应用针对性修复
尝试 2:替代方法
→ 相同错误?尝试不同方法
→ 不同工具?不同库?
→ 绝不重复完全相同的失败操作
尝试 3:更广泛的重新思考
→ 质疑假设
→ 搜索解决方案
→ 考虑更新计划
3 次失败后:上报用户
→ 解释你尝试了什么
→ 分享具体错误
→ 寻求指导
| 文件 | 用途 | 何时更新 |
|---|---|---|
task_plan.md | 阶段、进度、决策 | 每个阶段后 |
findings.md | 研究、发现 | 任何发现后 |
progress.md | 会话日志、测试结果 | 整个会话期间 |
| 情况 | 操作 | 原因 |
|---|---|---|
| 刚写入文件 | 不要读取 | 内容仍在上下文中 |
| 查看了图像/PDF | 立即写入发现 | 多模态 → 文本,避免丢失 |
| 浏览器返回数据 | 写入文件 | 截图不会持久化 |
| 开始新阶段 | 读取计划/发现 | 如果上下文过时则重新定向 |
| 发生错误 | 读取相关文件 | 需要当前状态来修复 |
| 间隔后恢复 | 读取所有规划文件 | 恢复状态 |
如果你能回答这些问题,说明你的上下文管理很好:
| 问题 | 答案来源 |
|---|---|
| 我在哪里? | task_plan.md 中的当前阶段 |
| 我要去哪里? | 剩余阶段 |
| 目标是什么? | 计划中的目标陈述 |
| 我学到了什么? | findings.md |
| 我做了什么? | progress.md |
# 任务计划:[简要描述]
## 目标
[一句话描述最终状态]
## 当前阶段
Phase 1
## 阶段
### Phase 1: 需求和发现
- [ ] 理解用户意图
- [ ] 识别约束和需求
- [ ] 在 findings.md 中记录发现
- **Status:** in_progress
### Phase 2: 规划和结构
- [ ] 定义技术方法
- [ ] 如需要则创建项目结构
- [ ] 记录决策及理由
- **Status:** pending
### Phase 3: 实现
- [ ] 逐步执行计划
- [ ] 执行前先将代码写入文件
- [ ] 增量测试
- **Status:** pending
### Phase 4: 测试和验证
- [ ] 验证所有需求已满足
- [ ] 在 progress.md 中记录测试结果
- [ ] 修复发现的任何问题
- **Status:** pending
### Phase 5: 交付
- [ ] 审查所有输出文件
- [ ] 确保交付物完整
- [ ] 交付给用户
- **Status:** pending
## 关键问题
1. [要回答的问题]
2. [要回答的问题]
## 已做决策
| 决策 | 理由 |
| ---- | ---- |
| | |
## 遇到的错误
| 错误 | 尝试次数 | 解决方案 |
| ---- | -------- | -------- |
| | 1 | |
# 发现和决策
## 需求
## <!-- 从用户请求中捕获 -->
## 研究发现
## <!-- 探索期间的关键发现 -->
## 技术决策
<!-- 已做决策及理由 -->
| 决策 | 理由 |
| ---- | ---- |
| | |
## 遇到的问题
<!-- 错误及其解决方式 -->
| 问题 | 解决方案 |
| ---- | -------- |
| | |
## 资源
## <!-- URL、文件路径、API 引用 -->
## 视觉/浏览器发现
## <!-- 关键:每 2 次查看/浏览操作后更新 -->
# 进度日志
## 会话:[日期]
### Phase 1: [标题]
- **Status:** in_progress
- **开始时间:** [时间戳]
- ## 采取的行动:
- ## 创建/修改的文件:
## 测试结果
| 测试 | 输入 | 预期 | 实际 | 状态 |
| ---- | ---- | ---- | ---- | ---- |
| | | | | |
## 错误日志
| 时间戳 | 错误 | 尝试次数 | 解决方案 |
| ------ | ---- | -------- | -------- |
| | | 1 | |
## 5 问题重启检查
| 问题 | 答案 |
| -------------- | -------------- |
| 我在哪里? | Phase X |
| 我要去哪里? | 剩余阶段 |
| 目标是什么? | [目标陈述] |
| 我学到了什么? | 见 findings.md |
| 我做了什么? | 见上文 |
| 不要做 | 应该做 |
|---|---|
| 使用 TodoWrite 持久化 | 创建 task_plan.md 文件 |
| 陈述一次目标就忘记 | 决策前重新读取计划 |
| 隐藏错误并静默重试 | 将错误记录到计划文件 |
| 所有内容塞进上下文 | 将大内容存储在文件中 |
| 立即开始执行 | 首先创建计划文件 |
| 重复失败的操作 | 跟踪尝试,改变方法 |
| 原则 | 实现 |
|---|---|
| 文件系统作为内存 | 存储在文件中,而非上下文 |
| 注意力操控 | 决策前重新读取计划 |
| 错误持久化 | 在计划文件中记录失败 |
| 目标跟踪 | 复选框显示进度 |
| 完成验证 | 停止前检查所有阶段 |
记住: 你在前期收集并写入磁盘的上下文越多,执行就会越好。文件是你的持久化记忆。