Long Task(长任务防降级)
何时触发
关键词:长任务、复杂任务、多步骤、跨会话、持续几天、大项目、防降级、断点续传、状态保持。
AI 长任务的 5 大问题
1. 上下文窗口溢出
问题:任务太长,上下文塞满,AI 开始遗忘早期决策
解决:每完成一个阶段,写一个状态文件(task-state.md)
2. 注意力衰减
问题:任务进行到后面,AI 开始偷懒、跳过步骤
解决:每个阶段开始时,重新读取 task-state.md + 原始 spec
3. 错误级联
问题:早期一个小错误,后面全错
解决:每个阶段完成后,验证产出物是否符合 spec
4. 状态丢失
问题:会话重启,AI 忘了之前在干什么
解决:task-state.md = 唯一真相来源
5. 35分钟降级
问题:连续工作 35 分钟后,AI 质量明显下降
解决:每 30 分钟强制休息 + 重新加载上下文
状态文件模板
# Task State
## 目标
[一句话描述任务目标]
## 当前阶段
阶段 N / 总阶段数
## 已完成
- [x] 阶段 1:xxx
- [x] 阶段 2:xxx
## 进行中
- [ ] 阶段 3:xxx
## 待完成
- [ ] 阶段 4:xxx
- [ ] 阶段 5:xxx
## 关键决策
- 决策 1:xxx(原因:yyy)
- 决策 2:xxx(原因:yyy)
## 已知问题
- 问题 1:xxx
## 下一步
[具体可执行的下一步]
操作流程
开始任务
1. 创建 task-state.md
2. 列出所有阶段
3. 设置检查点(每阶段结束)
4. 开始执行
每个阶段结束
1. 验证产出物(对照 spec)
2. 更新 task-state.md
3. 写明"下一步"
4. 如果超过 30 分钟 → 休息 + 重新加载上下文
会话重启
1. 读取 task-state.md
2. 读取原始 spec
3. 确认"下一步"
4. 继续执行
断点续传协议
保存断点
## 断点 [时间戳]
- 当前文件:src/foo.ts(已修改 3/5 个函数)
- 下一个文件:src/bar.ts
- 等待确认:xxx 设计决策
恢复断点
1. 找到最新断点
2. 确认"下一个文件/任务"
3. 检查未完成的修改
4. 继续
与 mem 插件的区分
| mem 插件 | task-state.md | |
|---|---|---|
| 存什么 | 长期知识/偏好/经验 | 当前任务进度 |
| 生命周期 | 永久 | 任务完成即删 |
| 触发 | auto-capture | 手动读写 |
| 范围 | 跨项目 | 单任务 |
避免冲突
- 位置:task-state.md 放
.opencode/temp/根目录(mem 不索引临时文件) - 命名:用
task-<name>-state.md方便识别 - 清理:任务完成后立即删除,不残留
- 不同步:task-state.md 是临时的,不进 mem 的记忆存储
- 索引排除:如果 mem 索引了 task-state 内容,手动 forget 掉
使用示例
用户:"帮我重构这个 50 个文件的项目"
1. 创建 .opencode/temp/task-refactor-state.md
2. 列出 50 个文件,分 5 个阶段
3. 每完成一个文件 → 更新状态
4. 每完成一个阶段 → 验证 + 休息
5. 如果中断 → 读取 task-state.md 继续
6. 任务完成 → 删除 task-state.md