| name | go-on |
| description | 当用户要求 `~go-on`、继续/接着/恢复上次任务、无缝衔接、从中断处继续,或询问“上次做到哪了”时
使用;新终端、新会话或会话中断后想接着干时尤其适用。若继续动作明确属于调试、优化、测试或
分析,则使用对应技能。
|
| metadata | {"openclaw":{"emoji":"🔄"}} |
go-on — 继续上次任务技能
执行前置
遵循当前目录 AGENTS.md「技能执行公共契约」;仅按需读取技能正文与 reference。
go-on 的核心是承接:把上次任务的信息找全、向用户确认、然后无缝继续。
本技能不重复发明流程,而是先恢复现场,再把继续执行交给与任务匹配的既有技能
(make/all/debug/optim/test/analy/...),细节以目标技能 SKILL.md 为权威。
核心原则
- 多源汇聚,证据驱动:上次任务信息来自运行器输入清单(
.agent.*.list 原文)、
Git 改动(未提交/最近提交)、原生 opencode 会话与当前项目约定——单一来源不可靠,必须
多源交叉验证后汇总,
不凭单一来源臆断任务内容(证据驱动,同 debug/analy)。
- 先确认后继续:{上次任务信息} 确认是继续的前提——任务对象、进度到哪、
遗留项与继续方式四项一次问全,用户一次确认后不再重复询问
(先问对问题:所有缺项第一次交互一次性全部提出)。
- 任务清单(TODO)继承,不重置:继续任务必须继承上次任务跟踪清单的进度(未完成项恢复为
pending/in_progress、已完成项保持 completed),并继续展示列表;进度是现场的一部分,
重置即丢失证据(opencode 原生继续时任务跟踪状态天然继承,手动重建时使用当前运行器的任务跟踪机制恢复,
例如 OpenCode
todowrite、Codex Updated Plan、Claude Code todo-tracking)。
- 无缝优先(opencode 原生机制优先):opencode 自带会话继续能力——
-c/--continue
继续上次会话、-s <sessionID> 指定会话、--fork 分支继续、opencode run -c <消息>
非交互继续、opencode session list 查询会话——能利用原生机制就优先利用:
消息历史与任务跟踪状态天然继承,最省资源且零信息丢失;原生不可用(如会话已删/跨机器)
才走手动重建路径。
- 孤儿进程治理,资源不浪费:继续前先检查上次任务中断后遗留的孤儿进程——
可无缝衔接的进程类不中断(如可续传下载、可继续服务的后台进程,中断即浪费
已投入的计算资源),明确无用的孤儿进程立即终止;先识别进程类再决定,不盲杀。
- 循环尝试直至信息收敛:一次查找信息不完整→基于缺项换来源/换方式重试
(7 个来源逐个排查),直至 {上次任务信息} 可确认或来源穷尽;不因一次失败放弃,
也不在来源穷尽后空转(同 debug 循环,3 轮无进展质疑方法本身)。
- 摘要纪律:信息源命中情况、确认结果、继续方式均在终端摘要留证,不创建过程记录文件。
- 安全边界:确认环节只读不改;孤儿进程终止前先说明进程类与依据;不越界访问
工作目录之外的内容;改动遵循公共契约,不自动提交或推送。
触发时机
- 用户要求继续:"~go-on"、"继续上次任务"、"接着上次"、"继续任务"、"恢复任务"、
"无缝衔接"、"接着做"、"接着干"、"上次做到哪了"、"继续刚才的"、"把上次的做完"
- 场景:新终端/新会话想接着干、会话中断后恢复、上次任务只做了一半、
需要确认上次进度再继续
- 与其他技能配合:信息查找用 diff(查看本库文件改动揭示任务进度);继续执行时
按上次任务类型调用对应技能——生成类 → make/all、报错 → debug、优化 → optim、
验证 → test、分析 → analy/pure;技能库升级 → up;
opencode 会话不可续时手动重建(任务清单(TODO)继承 + 目标技能继续)
- 不适用:无上次任务(首次会话)→ 直接告知无历史信息,请用户下达新任务;
用户明确要开新任务(非继续)→ 转对应技能
工作流程
Step 1. 孤儿进程检查与治理(先于一切)
先检查上次任务中断后遗留的孤儿进程——避免残留进程干扰继续执行、浪费资源:
ps -eo pid,ppid,etime,cmd --sort=-etime | grep -vE 'grep|ps -eo|opencode( |$)|bash -c' | head -15
- 逐条判定进程类:
- 可无缝衔接类(保留,不中断):可续传的下载/传输、可继续服务的后台进程
(如 opencode server、守护型任务)——中断即浪费已投入的计算资源;
- 孤儿废进程类(立即终止):上次任务启动但已无主/明显失效的命令
(长时运行残留、死循环脚本等)——
kill <pid> 后确认 ps -p <pid> 无输出;
- 拿不准的进程:保留并记录,向用户说明(Step 3 确认时一并询问);
- 结果在终端摘要中说明(进程清单 + 判定类别 + 处理动作)。
Step 2. 多源查找上次任务信息
按序收集以下当前工作目录来源(存在即读,缺失即跳过;每源只取关键信息):
| # | 来源 | 命令/方式 | 取什么 |
|---|
| 1 | 当前工作目录 .agent.*.list | ls -1t .agent.*.list 2>/dev/null | head -1 再读取 | 最新用户输入清单:任务原文、技能前缀与参数 |
| 2 | Git 状态与历史 | git status --short; git log -5 --oneline; git diff --stat | 未提交改动、最近提交、已修改文件 |
| 3 | 当前工作目录 AGENTS.md | head -40 AGENTS.md(前置预读已做) | 项目约定/目录结构/入口点 |
| 4 | 原生 opencode 会话(可用时) | opencode session list | 最近匹配的会话 ID,供原生继续 |
- 优先级:来源 1/2 给出任务定义与进度 → 来源 3 补充约定 → 来源 4 尝试原生继续;
- 交叉验证:至少 2 个来源互相印证才算"信息完整";单源信息标注"待印证";
- 每源命中/缺失在终端摘要中说明。
Step 3. 汇总并请求确认(一次问全)
输出 {上次任务信息} 摘要并请求一次确认(缺项一次性全部列出,不逐次追问):
=== ~go-on 上次任务信息 ===
[1] 任务对象: <从输入清单/Git 提交或改动推断的任务定义>
[2] 当前进度: <从 Git 改动/提交推断:做到哪一步、动了哪些文件>
[3] 遗留项: <未完成步骤、未提交改动、待确认项>
[4] 继续方式: A) opencode 原生会话继续(推荐: 继承消息历史与任务跟踪状态)
B) 手动重建(当前会话: 恢复任务清单(TODO)进度后按任务调用对应技能)
[5] 孤儿进程: <发现的孤儿进程清单与处理建议>
请确认或纠正(一次回答):
- 用户确认后:确认结果在终端摘要中说明,进入 Step 4;
- 用户纠正:以用户纠正为准,更新任务信息后再继续;
- 信息不足无法确认:进入 Step 4 的补查分支。
Step 4. 无缝继续(opencode 自带功能优先)
方式 A:opencode 原生会话继续(推荐,信息零丢失)
利用 opencode 自带会话机制——历史消息与任务清单(TODO)天然继承,最省资源:
opencode -c
opencode -s <sessionID>
opencode --fork
opencode run -c "继续上次任务: <确认的任务定义>"
opencode session list
- 会话 ID 取来源 4 中最近一份与任务匹配的会话;
- 方式 A 下 go-on 使命完成:任务清单(TODO)进度由原生机制继承,无需手动恢复;
- 需传递任务定义时附在消息里(确认后的 [1]-[3] 摘要)。
方式 B:手动重建(原生不可用时)
- 恢复任务清单(TODO)进度:用当前运行器的任务跟踪机制重建上次任务清单——
已完成项标记 completed、进行中项恢复 in_progress、未开始项保持 pending,
与输入清单/Git 改动核对后继续展示列表;
- 继续执行:按任务类型调用对应技能(生成类 → make/all、报错 → debug、
优化 → optim、验证 → test、分析 → analy/pure),以其 SKILL.md 为权威继续执行;
- 执行起点 = 确认的 [2] 当前进度 + [3] 遗留项。
Step 5. 信息补查循环(信息不完整时)
- {上次任务信息} 无法确认时:按未覆盖来源逐个补查(来源 1→4 顺次排查);
- 补查 3 轮仍无新信息 → 暂停并向用户报告(已排查来源清单 + 各自结果 +
建议:直接下达新任务或提供线索),不无限空转;
- 用户提供线索(如"上次在做 xxx")→ 以线索为准定向查找后回到 Step 3。
Step 6. 汇总(结构化输出)
✓ go-on 完成
任务: <确认的上次任务定义>
进度: <继承的进度与任务清单(TODO)状态>
孤儿进程: <N 个(保留 M: 可无缝衔接; 终止 K: 孤儿废进程)>
信息源: <命中来源清单,如 .agent.list/Git 改动/opencode 会话>
继续方式: A) 原生会话继续(会话ID) / B) 手动重建(目标技能)
遗留: <未提交改动/待用户决策项>
声明前自检:输出"完成/继续"前逐项核对——每个结论有本次会话刚运行的验证输出
(命令退出码/文件内容/git 状态)为证;缺失证据的项改为"未验证"或补查后更新。
错误处理
| 场景 | 处理 |
|---|
| 无任何历史来源(首次会话) | 如实告知无上次任务信息,请用户下达新任务或提供线索;不编造任务 |
| 来源信息互相矛盾 | 以最新时间戳来源为准,矛盾处标注并向用户确认 |
| 只有单源信息 | 标注"待印证",在确认环节请用户补充确认 |
| 无法确认任务定义 | 进入 Step 5 补查循环;3 轮无果后报告并暂停,不空转 |
| opencode 会话不可续(已删/跨机器) | 走方式 B 手动重建(任务清单(TODO)恢复 + 目标技能继续) |
| 孤儿进程无法判定类别 | 保留并在确认环节向用户说明,由用户决定 |
| 用户纠正任务信息 | 以用户纠正为准,更新摘要后继续,不反驳 |
| 继续执行中报错 | 转 debug 技能循环修复(go-on 只负责恢复现场,不重复实现) |
| 任务清单(TODO)状态与输入清单/Git 改动不符 | 以较新的明确证据为准恢复,差异在终端摘要中说明 |
注意事项
- go-on 是承接器:恢复现场(找信息→确认→接续)是本技能的职责,继续执行交给
与任务匹配的既有技能,不重复发明流程(细节以目标技能 SKILL.md 为权威);
- 无缝继续优先用 opencode 原生机制(-c/-s/--fork/run -c),手动重建是备选路径;
- 孤儿进程先判定进程类再决定:可无缝衔接的不中断(避免浪费计算资源),
明确无用的才终止;终止前说明依据;
- 不越界访问工作目录之外的内容;