mcpField
C
cancel

cancel

github.com/q00Agent 工作流6.4k71 次安装1 天前更新
代码仓库

关于 cancel

cancel 是一个 Ouroboros 技能,用于查找并取消正在运行的执行或后台任务。它可取消指定运行,也可取消当前项目中的所有活动执行,并报告处理结果。

主要功能

  1. 01列出项目的活动执行
  2. 02取消执行或后台任务
  3. 03取消项目中的全部活动执行
  4. 04报告取消状态和错误

适用场景

  1. 01停止卡住的项目执行
  2. 02按 ID 取消后台任务
  3. 03选择取消对象前查看活动运行
  4. 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 个选项。

评论

支持 Markdown