QoderWake 的任务暂停与恢复机制,并非简单的进程挂起或强制终止,而是追求“精准落地、安全续跑”。例如,当任务执行中途发现输入参数错误、外部依赖服务正在维护,或需要人工核对中间结果时,若直接 kill 进程将丢失所有上下文状态,重启服务又需从头开始。真正需要的是:暂停时完整保存现场,恢复时严格校验一致性,确保无缝衔接。
暂停任务的命令非常直接:qoderwake task pause --task-id=TK-20260730-8842。但前提是任务必须处于“可暂停”状态,即未执行不可中断的系统调用或 GPU 核函数。如何获取任务 ID?使用 qoderwake task list --status=running 查询当前活跃任务即可。若返回 error: task not pausable,则表示该任务类型本身不支持暂停(例如底层为无状态 HTTP 轮询的 Job),此时需改用信号级中断或配置熔断策略。

通过CLI命令行暂停正在运行的任务
操作非常简单,只需在终端输入一行命令,但必须确保目标任务处于可暂停状态——即未进入不可中断的系统调用或 GPU 核函数执行阶段。执行 qoderwake task pause --task-id=TK-20260730-8842,其中 task-id 必须是当前活跃任务的真实 ID,该 ID 可通过 qoderwake task list --status=running 查询获得。若返回 error: task not pausable,说明该任务类型本身不支持暂停(例如底层为无状态 HTTP 轮询的 Job),此时需改用信号级中断或配置熔断策略。
在Web控制台手动暂停任务并标记原因
在多人协作场景下,暂停操作最好能自动记录审计日志并通知协作者,避免他人误认为任务异常中断。QoderWake 的 Web 控制台提供了两种暂停方式:
方法一:快速暂停
1. 登录 QoderWake 控制台(默认地址 https://localhost:8080),进入「任务中心」,找到目标任务行,点击右侧「⋯」图标,选择「暂停」。
2. 弹窗中必须填写暂停原因(例如“等待 DBA 释放锁表”“待确认第三方 API 配额”),此字段为必填项,留空操作将被直接拒绝。
3. 点击确认后,任务状态立即变为 paused,倒计时器停止,所有子进程进入 SIGSTOP 挂起态。
方法二:带超时的条件暂停
在任务详情页点击「高级操作」→ 选择「暂停(带恢复倒计时)」→ 设置自动恢复时间(例如 15 分钟)→ 提交。系统将在指定时间后尝试唤醒任务;若届时前置条件仍未满足,任务将转入 failed-with-hold 状态,不再自动重试。
恢复已暂停任务的操作步骤
恢复操作并非简单点击“继续”即可——它需要重新校验上下文一致性、重载技能栈快照,并对齐 Redis 中的工作流锚点版本。这是防止状态错乱的关键步骤,流程分为三步:
第一步:确认 WAL 账本已同步至暂停时刻
执行 qoderwake debug session-ledger-status | grep "last_committed_at",比对输出时间戳与任务暂停时间,误差需小于 2 秒。若滞后,则先执行 qoderwake session flush --force 强制落盘。
第二步:加载最新技能调用栈快照
qoderwake skill stack --load-snapshot /var/lib/qoderwake/snaps/stack-TK-20260730-8842-latest.bin。该路径由暂停时自动生成,如果文件不存在,说明快照策略未启用或保存失败,此时强行恢复会导致技能链断裂。
第三步:触发恢复指令
qoderwake task resume --task-id=TK-20260730-8842 → 系统将校验 Redis 中 workflow_anchor_v3:TK-20260730-8842 键值是否匹配快照版本 → 匹配成功则恢复执行,否则报错 abort-resume-mismatch 并退出。
