| name | auto |
| description | 当用户输入 `~auto-技能名 任务`,或要求全自动、无人值守、自动执行、一口气做完、
做完为止、不要问我、无限循环、跑完为止、搞定为止时使用;`~stop`、Ctrl+C 或“中断/停止”
也属于本技能的控制语境。
|
| metadata | {"openclaw":{"emoji":"🤖"}} |
auto — 全自动前缀执行技能
执行前置
遵循当前目录 AGENTS.md「技能执行公共契约」;仅按需读取技能正文与 reference。
以 ~auto-<目标技能> <任务> 为前缀包装任意技能为无人值守模式:唯一的一次用户交互
发生在启动时(权限+配置一次性预授权),此后严格 0 交互,自动循环调用目标技能及其
子技能链直至收敛,只有强制中断(Ctrl+C / ~stop)才会停止。
核心原则
- 前缀式包装,不重复实现:auto 不复制任何目标技能的细节流程,以
~auto-<skill>
前缀驱动目标技能(all/make/debug/optim/test/...),细节以目标技能 SKILL.md 为权威
(吸收 all 的"编排层不重复发明细节"原则)。
- 一次性预授权(全程唯一的交互):启动即请求"本次任务全部权限 + 全部配置",
授权按级别分级(L1 全授权含破坏性 / L2 常规授权 / 自定义清单),配置含工作目录、
轮数上限、停滞阈值、收尾动作;用户确认后在终端摘要中说明,本任务不再有任何请求。
- 0 交互承诺:预授权后不发起任何形式的用户请求(不提问、不确认、不征询);
目标技能流程中的"需确认/需询问"步骤一律按预授权配置自动决定
(L1 直接执行;L2 跳过并在终端摘要说明;自定义按配置项执行)。
0 交互 ≠ 0 报告:每轮简报、停滞报告、中断报告、最终汇总照常输出。
- 自动循环直至收敛:复用 all 的收敛判据(①通过标准全部达成 ②收益 <5%
③连续两轮无实质变化 ④用户终止),每轮留证据(
$ 命令 + 退出码 + 实测输出),
收敛后自动进入收尾,不空转。
- 无限循环与停滞保护并存:默认无轮数上限(除非启动配置 max_rounds);
停滞保护防空转——连续 N 轮(默认 3)无实质进展时自动换方向(先 debug 后 optim,
一轮一动作);三个不同方向均无进展时输出停滞报告并继续尝试新方向,
除非配置 stop_on_stall=true(默认 true,避免无限空转烧资源)。
- 强制中断随时生效:Ctrl+C / 用户输入
~stop/中断/停止/新指令 → 立即停止
循环并产出中断报告(进度/已改动/遗留/恢复方式);每轮开始前检查中断信号。
- 收敛后自动收尾:按启动配置执行 diff 复查(--check)→ init 归集(如产物为
agent 生成内容)→ tag 打标(如配置启用)→ 汇总输出;全部自动化,不询问。
- 诚实原则不豁免:0 交互不豁免验证——每轮结论以实测为证(退出码/数值/输出),
无法验证的项标注原因;不虚报收敛与收益;授权范围之外的操作一律不做。
- 安全边界:权限请求只收集本次任务所需,不索取无关权限;不修改系统/工具的
权限配置(预授权是会话内约定,落地为"本会话不再询问");破坏性操作仅按
预授权级别执行(L2 自动跳过并在终端摘要说明)。
触发时机
- 用户以前缀形式触发:
~auto-<技能名> <任务>(如 ~auto-all 优化xxx、
~auto-make 做一个xxx、~auto-debug 修复xxx)
- 用户要求全自动执行:"全自动"、"无人值守"、"自动执行"、"一口气做完"、
"做完为止"、"不要问我"、"无限循环"、"跑完为止"、"搞定为止"
- 与其他技能配合:目标技能未指定 → 默认 all(全流程收敛编排);
目标技能不存在 → 启动时列出候选供一次性确认;
纯单步任务(debug/optim/test/analy)→ 直接以单技能为目标的 auto 模式;
多独立子任务 → ~auto-dispatch 并行派发(子代理批量执行后整合)
- 不适用:任务需要持续人工决策/评审(如内容创作风格、架构评审)→ 用对应技能常规模式
工作流程
Step 0. 解析前缀与任务
输入: ~auto-<target> <task>
target = 前缀中的技能名(all/make/debug/optim/test/analy/diff/tag/init/plan/review/
tdd/skill-creator/up/dispatch/auto 之一);缺省默认 all
task = 前缀后的完整任务描述
- target 不在技能表 → 在 Step 1 的清单中列出候选技能供用户一次性选择(唯一交互窗口);
- 在终端摘要中说明目标技能与任务定义。
Step 1. 一次性授权与配置收集(唯一交互)
输出如下清单并请求一次确认(此后不再有任何请求):
原则:第一次请求必须问全——预授权清单一次性覆盖本次任务可能产生的所有用户请求
(含 [3] 中按目标技能预判的全部配置项),严禁分批提问、事后补问。
=== ~auto-<target> 预授权清单 ===
任务: <task>
目标技能: <target>(将调用其子技能链: <推断的链>)
[1] 授权级别(必选):
L1 全授权 —— 含破坏性操作(删除文件/改写已推送标签/force push),按需执行
L2 常规授权 —— 常规操作(bash/文件写/本地 Git 查询与改动/网络/长时运行);
提交、推送和对外发布仍须用户明确要求,破坏性操作跳过并在终端说明 ← 默认
自定义 —— 在下方注明放行/禁止项
[2] 关键配置:
工作目录: <当前目录/指定目录>
收敛判据: 继承目标技能(通过标准全达成 + 收益<5% + 连续2轮无实质变化)
停滞阈值: 连续 <3> 轮无实质进展即换方向; 方向穷尽后 stop_on_stall=<true>
轮数上限: <无限/指定 N>
收尾动作: diff(必做) / init(按需) / tag(按需)
中断指令: Ctrl+C 或输入 ~stop/中断/停止
[3] 本次任务的明确配置项(由任务性质决定,如测试设备/精度、目标路径等):
<按目标技能需预收集的配置,列于此>
请确认(输入 Y / 选择级别或调整后确认 / N 取消):
- 用户确认后:授权级别与全部配置在终端摘要中说明,进入 0 交互模式;
- 用户取消(N)→ 结束会话,不执行任务。
Step 2. 0 交互驱动目标技能
按目标技能 SKILL.md 执行,全程不发起请求:
- target=all → 以预配置的收敛判据驱动全流程编排(其内部再调用各子技能);
- target=make → 单次全流程生成(解析需求→调查规划→实现→测试→优化→复查→归档→打标);
- target=其他单技能 → 按该技能 SKILL.md 执行;
- 目标技能流程中出现"需用户确认"步骤 → 按预授权自动决定:
L1 直接执行;L2 跳过并在终端说明;自定义按配置项执行——不中断、不提问;
- 每次调用子技能在终端摘要中汇总其结果与路径(如有)。
Step 3. 自动循环与停滞保护
目标技能自身有循环(all)时以之为准;无循环(单技能)且任务未收敛时按如下循环:
- 每轮开始:检查中断信号(用户新指令/Ctrl+C/
~stop)→ 有则进入 Step 5 中断收尾;
- 执行 → 验证 → 记录(
$ 命令 + 退出码 + 实测输出);
- 收敛检查(判据:通过标准全达成 / 收益<5% / 连续 2 轮无实质变化)→ 满足则进入 Step 4;
- 未收敛:评估本轮主导问题(失败→debug 轮;性能→optim 轮;修复与优化分轮);
连续 N 轮(停滞阈值,默认 3)无实质进展 → 换方向(先 debug 后 optim);
三个不同方向均无进展且 stop_on_stall=true → 输出停滞报告并停止循环进入 Step 4
(记录"方向穷尽"证据);stop_on_stall=false → 继续换方向尝试;
- 轮数达上限(如配置)→ 停止,报告权衡,进入 Step 4。
Step 4. 收尾(自动化)
按启动配置依次执行,全程不询问:
- 改动复查(diff):
git diff --check + git diff --stat 概览 + 逐文件详情;
边界校验(冲突标记/调试残留/未跟踪/二进制/重命名);
- skill 归集(init,配置启用时):agent 生成内容对应的完整 skill 归集到技能库;
- 版本标签(tag,配置启用时):先看后打,注释标签消息格式
follow <前一标签>, 1. 变更一; [opencode].;标签操作不自动 push;
Step 5. 中断与恢复
收到中断信号(Ctrl+C / ~stop / 新指令)时:
- 立即停止当前循环(不启动新一轮);
- 产出中断报告:已完成进度、本轮已改动(
文件:行号)、遗留项、恢复方式
(下次从何处继续、当前轮次为断点);
- 不执行未预授权的收尾动作(如 tag)——中断即终止,收尾仅做 diff 复查与汇总。
Step 6. 汇总(结构化输出)
✓ auto 执行完成/中断
目标: <target> / <task>
授权: <级别 L1/L2/自定义 + 关键配置摘要>
收敛: <判据达成明细 / 中断原因 / 停滞报告摘要>
轮数: <N 轮(第 N 轮: <结论>; ...)>
改动: <文件清单与关键改动>
子技能: <各子技能结果/路径,如有>
标签: <tag 结果,无则省略>
Git: <git diff --check 与定向复查结果;无 Git 或无改动则跳过>
遗留: <未收敛项/待用户确认项/恢复建议>
声明前自检:输出"收敛/完成"前逐项核对——每个结论均有本次会话刚运行的
验证输出(退出码/数值)为证;缺失证据的项改为"未验证"或补跑后更新。
错误处理
| 场景 | 处理 |
|---|
| 前缀目标技能不存在 | Step 1 清单中列出候选技能,用户一次性选择后继续(唯一交互窗口内解决) |
| 用户取消预授权 | 结束会话,不执行任务 |
| 目标技能强制要求交互(如 brainstorm HARD-GATE) | 预授权模式跳过批准闸门,决策在终端摘要中说明;用户可在 Step 1 配置为"仍要求该步骤交互" |
| 停滞且方向穷尽 | 输出停滞报告(证据:各方向改动与收益);stop_on_stall=true 停止,false 继续换方向 |
| 中断信号 | 立即停止循环,产出中断报告(进度/改动/遗留/恢复方式) |
| 破坏性操作未预授权(L2) | 跳过并在终端摘要中说明,不执行 |
| 网络失败/超时 | 按目标技能错误处理(debug 循环重试/换源),在终端摘要中说明重试 |
| 轮数达上限 | 停止,报告权衡与证据 |
| 用户中途改目标 | 视为中断+新任务:输出中断报告后重新解析前缀,重置轮数 |
| 0 交互模式下证据缺失 | 不宣称完成;补跑验证或标注"未验证",如实报告 |
注意事项
- auto 是前缀包装器:不重复实现目标技能的细节流程,细节以各技能 SKILL.md 为权威;
- 0 交互 ≠ 0 报告:每轮简报、停滞/中断报告、最终汇总照常输出(报告不是请求);
- 权限请求只收集本次任务所需,不索取无关权限;不修改系统/工具的权限配置;
- 破坏性操作只在本会话内按预授权级别执行;改动按公共契约检查,不自动提交或推送;
- 不越界访问工作目录之外的内容;