一键导入
cancel
取消任何活跃的 oh-my-kimi 模式(autopilot、ralph、ultrawork、ecomode、ultraqa、swarm、ultrapilot、pipeline、team)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
取消任何活跃的 oh-my-kimi 模式(autopilot、ralph、ultrawork、ecomode、ultraqa、swarm、ultrapilot、pipeline、team)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
oh-my-kimi 的目录入口,包含面向 Kimi CLI 的 agent、skill、hook 与 MCP 套件,衍生自 oh-my-* 谱系。
面向密钥、注入、authz/authn、不安全 IO、依赖与数据外泄风险的安全评审
证据驱动的追踪通道,在 Kimi 的 Agent 工具中编排互相竞争的 tracer 假设
LLM Wiki —— 跨会话持续累积的 markdown 知识库(Karpathy 模型)
面向作家的 agentic 记忆系统 —— 跟踪人物、关系、场景与主题
跑只读的深度仓库分析,返回一份带置信度排序的综合结论,附具体文件引用、清晰区分证据与推断。当用户说 'analyze'、'investigate'、'why does'、'what's causing',或在提任何改动方案之前需要跨文件的有据解释时使用。
基于 SOC 职业分类
| name | cancel |
| description | 取消任何活跃的 oh-my-kimi 模式(autopilot、ralph、ultrawork、ecomode、ultraqa、swarm、ultrapilot、pipeline、team) |
智能检测并取消活跃的 oh-my-kimi 模式。
cancel skill 是收尾并退出任意 oh-my-kimi 模式的标准方式。
当 stop hook 检测到工作完成时,会指示 LLM 调用本 skill 做状态清理。如果 cancel 失败或被中断,可加 --force 重试,或作为最后手段等待 2 小时的过期超时。
自动检测当前活跃的模式并取消:
/cancel
或者说:"cancelomc"、"stopomc"。
/cancel 遵循会话感知的状态契约:
state_list_active 与 state_get_status 检视当前会话,按 .omk/state/sessions/{sessionId}/… 路径发现活跃模式。.omk/state/*.json 下的旧文件只在 session id 缺失或为空时作为兼容回退。.omk/state/swarm.db / .omk/state/swarm-active.marker),不受 session 作用域约束。state_clear,仅移除匹配的 session 文件;模式仍绑定到它们的发起会话。针对 Ralph 的取消(独立或 linked),按后置条件判定是否完成:
active=falsecurrent_phase='cancelled'completed_at 已设置(ISO 时间戳)参见:docs/contracts/ralph-cancel-contract.md。
活跃模式仍按依赖顺序取消:
当取消针对某个作用域内的 Ralph state 时,完成必须同时满足以下全部条件:
active=false、current_phase='cancelled'(或 linked 的终态阶段)、并设置 completed_at。需要擦除所有 session 加遗留工件(例如整工作区重置)时用 --force 或 --all。
/cancel --force
/cancel --all
幕后步骤:
state_list_active 枚举 .omk/state/sessions/{sessionId}/… 找出每个已知 session。state_clear 删掉该 session 的文件。session_id 的全局 state_clear 删除 .omk/state/*.json 下的旧文件、.omk/state/swarm*.db 与兼容工件(见列表)。.omk/state/team/*/、匹配 omx-team-* 的 tmux 会话)作为兼容回退的一部分尽力清理。每个 state_clear 命令都尊重 session_id 参数,因此即便是 force 模式也仍先走 session 感知路径,再去删旧文件。
兼容遗留清单(只在 --force/--all 下移除):
.omk/state/autopilot-state.json.omk/state/ralph-state.json.omk/state/ralph-plan-state.json.omk/state/ralph-verification.json.omk/state/ultrawork-state.json.omk/state/ecomode-state.json.omk/state/ultraqa-state.json.omk/state/swarm.db.omk/state/swarm.db-wal.omk/state/swarm.db-shm.omk/state/swarm-active.marker.omk/state/swarm-tasks.db.omk/state/ultrapilot-state.json.omk/state/ultrapilot-ownership.json.omk/state/pipeline-state.json.omk/state/plan-consensus.json.omk/state/ralplan-state.json.omk/state/boulder.json.omk/state/hud-state.json.omk/state/subagent-tracking.json.omk/state/subagent-tracker.lock.omk/state/rate-limit-daemon.pid.omk/state/rate-limit-daemon.log.omk/state/checkpoints/ (directory).omk/state/sessions/(清完 session 后空目录清理)调用该 skill 时:
# Check for --force or --all flags
FORCE_MODE=false
if [[ "$*" == *"--force"* ]] || [[ "$*" == *"--all"* ]]; then
FORCE_MODE=true
fi
skill 现在依赖会话感知的状态契约,而不是硬编码文件路径:
state_list_active 枚举 .omk/state/sessions/{sessionId}/…,发现每个活跃 session。state_get_status 了解正在跑的模式(autopilot、ralph、ultrawork 等)以及是否存在依赖模式。/cancel 传入了 session_id,完全跳过遗留回退,只在该 session 路径下操作;否则只有当状态工具报告无活跃 session 时才查阅 .omk/state/*.json 下的旧文件。Swarm 仍是 session 作用域外的共享 SQLite / marker 模式。用 force 模式通过 state_clear 清掉所有 session 加遗留工件。只有当状态工具报告无活跃 session 时才用直接删文件做遗留清理。
通过检查 .omk/state/team/ 下的配置文件检测 team:
# Check for active teams
ls .omk/state/team/*/config.json 2>/dev/null
两遍取消协议:
Pass 1:优雅关停
For each team found in .omk/state/team/:
1. Read config.json to get team_name and workers list
2. For each worker:
a. Write shutdown inbox to .omk/state/team/{name}/workers/{worker}/inbox.md
b. Send short trigger via tmux send-keys
c. Wait up to 15 seconds for worker tmux pane to exit
d. If still alive: mark as unresponsive
Pass 2:强制 kill
After graceful pass:
1. For each remaining alive worker:
a. Send C-c via tmux send-keys
b. Wait 2 seconds
c. Kill the tmux window if still alive
2. Destroy the tmux session: tmux kill-session -t omx-team-{name}
清理:
1. Strip AGENTS.md team worker overlay (<!-- OMK:TEAM:WORKER:START/END -->)
2. Remove team state directory: rm -rf .omk/state/team/{name}/
3. Clear team mode state: state_clear(mode="team")
4. Emit structured cancel report
结构化取消报告:
Team "{team_name}" cancelled:
- Workers signaled: N
- Graceful exits: M
- Force killed: K
- tmux session destroyed: yes/no
- State cleaned up: yes/no
实现备注: cancel skill 是由 LLM 执行的,不是 bash 脚本。当你检测到活跃 team 时:
.omk/state/team/*/config.json 找活跃 teamtmux kill-session -t omx-team-{name}rm -rf .omk/state/team/{name}/state_clear(mode="team")调用 src/hooks/autopilot/cancel.ts:27-78 的 cancelAutopilot():
# Autopilot handles its own cleanup + ralph + ultraqa
# Just mark autopilot as inactive (preserves state for resume)
if [[ -f .omk/state/autopilot-state.json ]]; then
# Clean up ralph if active
if [[ -f .omk/state/ralph-state.json ]]; then
RALPH_STATE=$(cat .omk/state/ralph-state.json)
LINKED_UW=$(echo "$RALPH_STATE" | jq -r '.linked_ultrawork // false')
# Clean linked ultrawork first
if [[ "$LINKED_UW" == "true" ]] && [[ -f .omk/state/ultrawork-state.json ]]; then
rm -f .omk/state/ultrawork-state.json
echo "Cleaned up: ultrawork (linked to ralph)"
fi
# Clean ralph
rm -f .omk/state/ralph-state.json
rm -f .omk/state/ralph-verification.json
echo "Cleaned up: ralph"
fi
# Clean up ultraqa if active
if [[ -f .omk/state/ultraqa-state.json ]]; then
rm -f .omk/state/ultraqa-state.json
echo "Cleaned up: ultraqa"
fi
# Mark autopilot inactive but preserve state
CURRENT_STATE=$(cat .omk/state/autopilot-state.json)
CURRENT_PHASE=$(echo "$CURRENT_STATE" | jq -r '.phase // "unknown"')
echo "$CURRENT_STATE" | jq '.active = false' > .omk/state/autopilot-state.json
echo "Autopilot cancelled at phase: $CURRENT_PHASE. Progress preserved for resume."
echo "Run /autopilot to resume."
fi
调用 src/hooks/ralph-loop/index.ts:147-182 的 clearRalphState() + clearLinkedUltraworkState():
if [[ -f .omk/state/ralph-state.json ]]; then
# Check if ultrawork is linked
RALPH_STATE=$(cat .omk/state/ralph-state.json)
LINKED_UW=$(echo "$RALPH_STATE" | jq -r '.linked_ultrawork // false')
# Clean linked ultrawork first
if [[ "$LINKED_UW" == "true" ]] && [[ -f .omk/state/ultrawork-state.json ]]; then
UW_STATE=$(cat .omk/state/ultrawork-state.json)
UW_LINKED=$(echo "$UW_STATE" | jq -r '.linked_to_ralph // false')
# Only clear if it was linked to ralph
if [[ "$UW_LINKED" == "true" ]]; then
rm -f .omk/state/ultrawork-state.json
echo "Cleaned up: ultrawork (linked to ralph)"
fi
fi
# Clean ralph state
rm -f .omk/state/ralph-state.json
rm -f .omk/state/ralph-plan-state.json
rm -f .omk/state/ralph-verification.json
echo "Ralph cancelled. Persistent mode deactivated."
fi
调用 src/hooks/ultrawork/index.ts:150-173 的 deactivateUltrawork():
if [[ -f .omk/state/ultrawork-state.json ]]; then
# Check if linked to ralph
UW_STATE=$(cat .omk/state/ultrawork-state.json)
LINKED=$(echo "$UW_STATE" | jq -r '.linked_to_ralph // false')
if [[ "$LINKED" == "true" ]]; then
echo "Ultrawork is linked to Ralph. Use /cancel to cancel both."
exit 1
fi
# Remove local state
rm -f .omk/state/ultrawork-state.json
echo "Ultrawork cancelled. Parallel execution mode deactivated."
fi
调用 src/hooks/ultraqa/index.ts:107-120 的 clearUltraQAState():
if [[ -f .omk/state/ultraqa-state.json ]]; then
rm -f .omk/state/ultraqa-state.json
echo "UltraQA cancelled. QA cycling workflow stopped."
fi
echo "No active oh-my-kimi modes detected."
echo ""
echo "Checked for:"
echo " - Autopilot (.omk/state/autopilot-state.json)"
echo " - Ralph (.omk/state/ralph-state.json)"
echo " - Ultrawork (.omk/state/ultrawork-state.json)"
echo " - UltraQA (.omk/state/ultraqa-state.json)"
echo ""
echo "Use --force to clear all state files anyway."
cancel skill 的执行流程:
--force / --all 标志,跟踪清理范围是覆盖所有 session 还是仅限当前 session id。state_list_active 枚举已知 session id,用 state_get_status 了解每个 session 上活跃的模式(autopilot、ralph、ultrawork 等)。state_clear 仅删除该 session 文件,再根据状态工具的信号按 mode-specific 顺序(autopilot → ralph → …)做清理。state_clear,然后跑一次无 session_id 的全局 state_clear 删除旧文件(.omk/state/*.json、兼容工件),并汇报结果。Swarm 仍是 session 作用域外的共享 SQLite / marker 模式。.omk/state/team/*/、匹配 omx-team-* 的 tmux 会话)作为遗留 / 全局阶段的 best-effort 清理项。状态工具始终尊重 session_id 参数,因此即便是 force 模式也仍先清理 session 作用域路径,再去删那些仅用于兼容的遗留状态。
下面 mode-specific 小节描述全局状态操作完成后每个处理器还要做哪些额外清理。
| Mode | Success Message |
|---|---|
| Autopilot | "Autopilot cancelled at phase: {phase}. Progress preserved for resume." |
| Ralph | "Ralph cancelled. Persistent mode deactivated." |
| Ultrawork | "Ultrawork cancelled. Parallel execution mode deactivated." |
| Ecomode | "Ecomode cancelled. Token-efficient execution mode deactivated." |
| UltraQA | "UltraQA cancelled. QA cycling workflow stopped." |
| Swarm | "Swarm cancelled. Coordinated agents stopped." |
| Ultrapilot | "Ultrapilot cancelled. Parallel autopilot workers stopped." |
| Pipeline | "Pipeline cancelled. Sequential agent chain stopped." |
| Team | "Team cancelled. Teammates shut down and cleaned up." |
| Plan Consensus | "Plan Consensus cancelled. Planning session ended." |
| Force | "All oh-my-kimi modes cleared. You are free to start fresh." |
| None | "No active oh-my-kimi modes detected." |
| Mode | State Preserved | Resume Command |
|---|---|---|
| Autopilot | Yes (phase, files, spec, plan, verdicts) | /autopilot |
| Ralph | No | N/A |
| Ultrawork | No | N/A |
| UltraQA | No | N/A |
| Swarm | No | N/A |
| Ultrapilot | No | N/A |
| Pipeline | No | N/A |
| Plan Consensus | Yes (plan file path preserved) | N/A |
.omk/state/ 目录下的状态文件取消 team 模式时,cancel skill 应:
tmux list-sessions -F '#{session_name}' 2>/dev/null | grep '^omx-team-',逐个 killrm -rf .omk/state/team/*/<!-- OMK:TEAM:WORKER:START --> 与 <!-- OMK:TEAM:WORKER:END --> 之间的内容使用 --force 时同时清理:
rm -rf .omk/state/team/ # All team state
# Kill all omx-team-* tmux sessions
tmux list-sessions -F '#{session_name}' 2>/dev/null | grep '^omx-team-' | while read s; do tmux kill-session -t "$s" 2>/dev/null; done