强制任务完成:将目标转化为通过/失败标准,运行工作者,评判输出,反馈缺失内容,循环直至每项标准满足。
校对:Python round(脚本/run.py)为工人和法官角色调用LLM是一项面向实际任务的技能,主要用于在LLM通过之前,不要离开,而你在每个检查站都保持控制;OpenClaw 平台。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
一个确定性的 Python 循环(scripts/run.py)调用大语言模型(LLM),分别扮演 worker(执行者)与 judge(评判者)角色。
任何输出都必须通过质量验证才能释放——而你在每一个检查点(checkpoint)都保有完全控制权。
openclaw)——必须已加入系统 PATH 环境变量。用于以下操作:openclaw gateway call sessions.list —— 获取会话 UUID,用于注入回合(turn injection)openclaw agent --session-id —— 将检查点消息注入正在运行的会话中openclaw message send —— 作为备用通道投递消息(例如 Telegram、Signal)run.py 仅依赖标准库,无需安装任何 pip 包⚠️ 这是一个高权限技能(high-privilege skill)。 在批量/自动化模式下启用前,请务必完整阅读本节说明。
所启动的 worker 和 judge 进程将继承完整的 host-agent 运行时权限,包括:
exec(可执行任意 shell 命令)web_search、web_fetchsessions_spawn(worker 可进一步生成子代理)这意味着:你提供的任务描述将直接决定 worker 的行为——请将其视作一段即将执行的代码,而非一条待发送的消息。
批量模式(--no-interactive)将移除全部人工干预环节。 在交互模式(默认)下,你需要在循环继续前,手动批准每一轮的质量标准(criteria)与每个检查点;而在批量模式下,质量标准自动通过,整个循环将完全自主运行直至完成——仅建议在你完全信任该任务内容与运行环境的前提下启用。
用户输入桥接机制(user-input bridging)会将任意内容写入磁盘。 当你对某个检查点作出回复时,主代理(main agent)会将你的原始回复内容逐字写入工作区(workspace)下的 user-input.md 文件中;编排器(orchestrator)随后读取并据此执行。请勿将未经验证的第三方内容作为检查点回复进行转发。
当「正确性」比「速度」更重要时,请使用 Checkmate——即“首次尝试即达标”不可接受的情形。
典型适用场景:
触发短语(满足任一即可):
checkmate: TASKkeep iterating until it passesdon't stop until doneuntil it passesquality loop: TASKiterate until satisfiedjudge and retrykeep going until donescripts/run.py (确定性的 Python while 循环 —— 编排器)
├─ 输入循环 [最多 max_intake_iter 次,默认为 5]:
│ ├─ 草拟质量标准(输入提示 + 任务 + 优化反馈)
│ ├─ ⏸ 用户审核:展示草稿 → 等待用户批准或反馈
│ │ 若批准 → 锁定 criteria.md
│ │ 若反馈 → 进入下一轮优化迭代
│ └─ (非交互模式:由 criteria-judge 自动评估代替人工)
│
├─ ⏸ 启动前门控(PRE-START GATE):展示最终任务与质量标准 → 用户确认“开始”
│ (此处支持编辑任务 / 取消执行)
│
└─ 主循环 [最多 max_iter 次,默认为 10]:
├─ Worker:启动代理会话 → 输出至 iter-N/output.md
│ (完整运行时权限:exec、web_search、全部技能、OAuth 认证)
├─ Judge:启动代理会话 → 输出至 iter-N/verdict.md
├─ 通过?→ 写入 final-output.md,通知用户,退出
└─ 失败?→ 提取差距项 → ⏸ 检查点:向用户展示评分与差距项
是否继续?→ 下一轮迭代(带 judge 提出的差距项)
redirect:X?→ 下一轮迭代(附加用户指定的方向指令)
是否终止?→ 结束循环,保留当前最优结果
交互模式(默认):用户需批准质量标准、确认启动前门控,并审阅每一次失败后的检查点。
批量模式(--no-interactive):完全自主运行;由 criteria-judge 完成输入阶段评估,不设检查点。
当编排器需要获取用户输入时,将执行以下步骤:
workspace/pending-input.json(含类型标识及工作区路径)--recipient 与 --channel 配置的通道发送通知workspace/user-input.md(最长等待时间由 --checkpoint-timeout 分钟数限定)主代理充当桥接角色:当 pending-input.json 存在且用户完成回复后,主代理将用户响应内容原样写入 workspace/user-input.md;编排器将自动读取该文件并恢复执行。
每个代理会话均通过如下命令启动:
openclaw agent --session-id--message --timeout --json
所有通信均经由网关 WebSocket,复用现有 OAuth 认证——无需额外 API 密钥。
Worker 拥有完整代理运行时权限:exec、web_search、web_fetch、全部技能、sessions_spawn。
当 Checkmate 被触发时,请按以下步骤操作:
获取当前会话 UUID(用于直接注入代理回合):
openclaw gateway call sessions.list --params '{"limit":1}' --json
| python3 -c "import json,sys; s=json.load(sys.stdin)['sessions'][0]; print(s['sessionId'])"
同时记录你的 --recipient(频道用户/聊天 ID)与 --channel(备用通道)。
创建工作区:
bash/scripts/workspace.sh /tmp "TASK"
命令将输出工作区路径。如有必要,可将完整任务描述写入 workspace/task.md。
运行编排器(后台执行):
python3/scripts/run.py --workspace /tmp/checkmate-TIMESTAMP --task "FULL TASK DESCRIPTION" --max-iter 10 --session-uuid YOUR_SESSION_UUID --recipient YOUR_RECIPIENT_ID --channel
建议配合 exec 并设置 background=true。该进程将持续运行直至任务完成。
添加 --no-interactive 参数可启用完全自主运行(无用户检查点)。
通知用户:告知 Checkmate 已启动、当前处理的任务内容,并说明用户将通过你配置的通道接收质量标准草稿与检查点消息,以便审阅和批准。
桥接用户回复:当用户对某条检查点消息作出响应后,请检查是否存在 pending-input.json,并将用户回复内容写入 workspace/user-input.md。
当收到检查点消息时(即编排器已向用户发送质量标准/审批/检查点请求),请桥接用户回复:
# 查找当前生效的 pending input cat/checkmate-*/pending-input.json 2>/dev/null # 路由用户回复内容 echo "USER REPLY HERE" > /path/to/workspace/user-input.md
编排器每 5 秒轮询一次该文件。一旦写入成功,它将自动恢复执行,并立即删除该文件。
各门控节点支持的用户回复类型:
| 门控节点 | 继续执行 | 重定向指令 | 取消执行 |
|---|---|---|---|
| 质量标准审阅 | "ok", "approve", "lgtm" | 任意反馈文本 | — |
| 启动前确认 | "go", "start", "ok" | "edit task: NEW TASK" | "cancel" |
| 迭代检查点 | "continue", (空内容) | "redirect: DIRECTION" | "stop" |
| 参数标志 | 默认值 | 说明 |
|---|---|---|
--max-intake-iter |
5 | 质量标准输入阶段的优化迭代次数 |
--max-iter |
10 | 主循环最大迭代次数(复杂任务建议提高至 20) |
--worker-timeout |
3600s | 单次 worker 会话超时时间 |
--judge-timeout |
300s | 单次 judge 会话超时时间 |
--session-uuid |
— | 代理会话 UUID(来自 sessions.list);用于直接注入回合——为主要通知路径 |
--recipient |
— | 频道接收方 ID(如用户/聊天 ID、E.164 电话号码);当直接注入失败时作为备用路径 |
--channel |
— | 备用通知的投递通道(例如 telegram、whatsapp、signal) |
--no-interactive |
off | 禁用用户检查点(启用批量模式) |
--checkpoint-timeout |
60 | 每个检查点等待用户回复的最大分钟数 |
memory/checkmate-YYYYMMDD-HHMMSS/
├── task.md # 任务描述(用户可在启动前编辑)
├── criteria.md # 输入阶段完成后锁定
├── feedback.md # 累计的 judge 差距项 + 用户方向指令
├── state.json # {iteration, status} — 支持断点续跑(resume)
├── pending-input.json # 等待用户输入时写入;收到回复后自动删除
├── user-input.md # 主代理将用户回复写入此处;编排器读取后自动删除
├── intake-01/
│ ├── criteria-draft.md
│ ├── criteria-verdict.md (仅非交互模式使用)
│ └── user-feedback.md (交互模式:用户审阅评论)
├── iter-01/
│ ├── output.md # worker 输出
│ └── verdict.md # judge 评判结果
└── final-output.md # 任务完成时写入
若脚本执行被中断,只需使用相同的 --workspace 参数重新运行即可。它将自动读取 state.json,跳过已完成步骤;已锁定的 criteria.md 将被复用;已完成的 iter-N/output.md 不会重复执行。
由 run.py 实际调用的提示词:
prompts/intake.md —— 将任务转换为质量标准草稿prompts/criteria-judge.md —— 评估质量标准质量(APPROVED / NEEDS_WORK)——仅用于非交互模式prompts/worker.md —— worker 提示词(变量:TASK、CRITERIA、FEEDBACK、ITERATION、MAX_ITER、OUTPUT_PATH)prompts/judge.md —— 根据质量标准评估输出结果(PASS / FAIL)仅作参考(run.py 不调用):
prompts/orchestrator.md —— 架构说明文档,阐释设计原理相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章