关于 cancel
cancel 是一个 Ouroboros 技能,用于查找并取消正在运行的执行或后台任务。它可取消指定运行,也可取消当前项目中的所有活动执行,并报告处理结果。
主要功能
- 01列出项目的活动执行
- 02取消执行或后台任务
- 03取消项目中的全部活动执行
- 04报告取消状态和错误
适用场景
- 01停止卡住的项目执行
- 02按 ID 取消后台任务
- 03选择取消对象前查看活动运行
- 04确认取消是否完成
MCP 相关
使用 Ouroboros MCP 工具列出项目执行,并取消执行或任务。若工具不可用且可访问 Shell,则可改用 Ouroboros CLI。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ q00/ ouroboros --skill cancel安装后在 Claude Code 中输入/cancel确认已加载。
详细介绍
/ouroboros:cancel
通过 Ouroboros MCP 工具取消卡住或成为孤立状态的执行和后台任务,这些工具适用于无法访问 shell 的主机。
/ouroboros:cancel # list this project's active executions, ask which to cancel
/ouroboros:cancel <id> # cancel one execution (orch_... or execution id) or job (job_...)
/ouroboros:cancel --all # cancel every running or paused execution of this project
说明
加载 MCP 工具(延迟加载 schema 防护)
Ouroboros 工具可能会延迟加载,而且某一轮加载的 schema 可能在下一轮卸载。每次调用 ouroboros_* 工具之前,都要立即使用当前运行时的工具发现能力加载它:调用 ouroboros_project_status 时使用 "+ouroboros project status";调用 ouroboros_cancel_execution 和 ouroboros_cancel_job 时使用 "+ouroboros cancel"。如果 schema 未加载,调用会失败并返回 "Invalid tool parameters"。如果工具已可调用,工具发现操作不会产生任何效果,预期结果为空。只有在工具确实不存在时才使用回退方案。
列出活跃执行
调用 ouroboros_project_status,并将 project_dir 设为当前项目的绝对路径。活跃执行是指 status 为 running 或 paused 的运行;显示每项的 session_id、started_at 和 seed_goal。如果调用因项目运行次数超过 limit 而失败,则将 limit 设为报告的运行次数后重试一次。列表仅包含归属于此项目的运行。后台任务没有列表工具,因此也要提供本次对话中启动工具先前返回的任何 job_... ID。
步骤
- 未提供 ID,也不是 "all":按上述方式列出活跃执行,使用当前运行时的
ask_user能力询问要取消哪些,然后按下文取消选定的 ID。如果没有活跃执行,告知用户(如果run_shell可用,还要提及项目外的执行可通过ouroboros cancel execution --list查看)。如果用户拒绝,则不取消任何内容。 - 已提供 ID:以
job_开头的 ID 是后台任务:调用ouroboros_cancel_job并提供job_id。其他任何 ID(orch_...会话 ID 或执行 ID)都是执行:调用ouroboros_cancel_execution并提供execution_id;如果用户提供了reason,也一并提供。 - "cancel all" / "cancel everything":没有批量取消工具。按上述方式列出活跃执行,并对每个运行中或已暂停的运行调用一次
ouroboros_cancel_execution。说明这只处理了此项目的运行;要取消机器上的所有执行,需要通过run_shell运行ouroboros cancel execution --all。
报告结果
ouroboros_cancel_execution:new_status为cancelled表示已取消。cancellation_requested表示已要求正在运行的 worker 停止,取消状态将由它自行记录;建议使用ooo status确认。遇到 "already in terminal state" 错误时,表示没有可取消的内容;跳过并发出警告。"Execution not found" 表示 ID 错误。"Held by another live owner" 表示只有拥有该执行的进程才能取消它;原样转达此消息。"Failed to persist cancellation" 可重试;重试一次。ouroboros_cancel_job:status为cancel_requested表示已要求任务及其关联的执行停止;cancelled表示已完成取消。任何其他终止状态(completed、failed、interrupted)都表示任务已完成,没有任何内容被取消。"Job not found" 表示 ID 错误。
其他任何错误都要原样转达。然后建议使用 ooo status 验证,或使用 ooo run 重新启动。
回退方案(无 MCP 服务)
当取消工具确实不存在且当前运行时提供 run_shell 时,使用 CLI;它会将取消事件直接写入事件存储:ouroboros cancel execution --list(列出活跃执行,不会提示用户;随后使用 ask_user 询问)、ouroboros cancel execution <session_id> 或 ouroboros cancel execution --all。添加 --reason "<text>" 以记录原因,并报告命令输出的内容(Cancelled execution: <id>、Cancellation requested for execution: <id> 或 No active executions found.);任何警告也要原样转达。如果没有 run_shell,告知用户取消操作需要 Ouroboros MCP 服务(ooo setup)或 shell。
RFC #1392 状态面包屑页脚
最终回复必须以且仅以一行 ◆ <current state> → next: <recommended action> 结尾。尽可能通过 ouroboros_session_status 从实时会话状态推导状态,否则根据此技能的实际结果推导。切勿使用线性的 Step N of M 页脚;如果下一步确实有多个选择,请列出 2-3 个选项。