OpenCode 任务状态管理问题:已完成的任务被重复执行
2026-02-10 tech opencode atlas prometheus 4 mins 1488 字

最近重度使用opencode,做任务时,明明任务已经执行完了,但新开一个 Session 后,Atlas 又把之前的任务重新执行一遍。
原因分析
OpenCode 用 boulder.json 文件来跟踪任务进度,文件位置在 ~/.sisyphus/boulder.json。
{
"active_plan": "/root/.sisyphus/plans/rsshub-installation.md",
"completed_at": "2026-02-12T14:40:00.000Z",
"final_status": "COMPLETED",
"session_ids": ["ses_xxx", "ses_xxx"],
"plan_name": "rsshub-installation"
}
问题出在两个方面:
1. boulder.json 指向错误的计划
- 虽然
n8n-docker-install.md计划中所有任务都标记为- [x]完成 - 但
boulder.json的active_plan指向了另一个已完成的计划rsshub-installation - 新 Session 找不到正确的计划
2. Session 连续性丢失
- 多个 Session ID 记录在 boulder 中
- 新 Session 不知道任务是否真的完成
- 每次都从头开始
解决方案
方案 1:清理 boulder 状态(新 Session 前执行)
# 删除 boulder.json(清除所有状态)
rm ~/.sisyphus/boulder.json
或者手动重置:
cat > ~/.sisyphus/boulder.json << 'EOF'
{
"active_plan": "/root/.sisyphus/plans/正确的计划名.md",
"final_status": "COMPLETED"
}
EOF
方案 2:在计划末尾明确标记结束
在 .md 计划文件末尾添加:
---
## 计划状态
**状态**: ✅ 已完成
**完成时间**: 2026-02-12
**验证方式**: 所有任务标记为 - [x]
**注意**: 此计划已完全执行,无需再次执行。
预防措施
- 每次新 Session 前检查 boulder 状态
cat ~/.sisyphus/boulder.json
-
明确告诉 Atlas 跳过已完成的任务
-
不要手动修改
- [ ]标记
文件位置参考
- Boulder 状态文件:
~/.sisyphus/boulder.json - 计划文件目录:
~/.sisyphus/plans/ - 学习记录目录:
~/.sisyphus/notepads/
总结
这是一个 OpenCode 的状态管理边界问题:
| 状态 | 文件 | 问题 |
|---|---|---|
| ✅ 任务完成 | 计划 .md 文件 |
所有 - [x] 标记正确 |
| ❌ boulder 状态 | boulder.json |
指向错误的计划 |
| ⚠️ Session 连续性 | - | 新 Session 无法正确读取历史状态 |
解决方案:删除 boulder.json 或手动重置状态即可。
快速修复
新开 Session 遇到任务被重复执行时,运行:
rm ~/.sisyphus/boulder.json
然后重新开始即可。