SuperAPI AI 工具集

autonomy-dial

智能体与模型

查看项目

更新于 10-29 05:29

技能介绍

用途

autonomy-dial 解决的是「AI 代理在一次交付中能把改动推进到多远」这一问题。它主张这个边界不是代理的固定属性,而是由人设定的一个旋钮(dial),通过 docs/autonomy.md 定义等级与解析顺序,而本技能就是执行该流程的过程。它在任何交付技能、循环或自动化开始时解析出一次有效等级,并记录到运行记录中。

主要能力

  • 读取真实仓库规则:通过 GitHub API 读取默认分支或 PR 基础分支的有效 ruleset 规则、经典分支保护、CODEOWNERS 是否存在且有效,以及当前身份是否具备 push/maintain 权限。技能明确要求不硬编码上限,且每次运行都重新读取,因为规则会变。
  • 计算上限(ceiling):没有 push 权限时上限为 L0;任何要求无法被当前身份满足(如必需审批、路径上的代码所有者审查、无法计入自己的批准)时上限为 L2;否则上限为 L5,若有合并队列则 L4 含义为「入队」。规则集绕过(current_user_can_bypass)与 --admin 永不计入上限,只能记录、不得使用。
  • 读取两层配置:仓库层 .github/lever.yml(default、max、按 glob 的 paths 上限、classes 常设 L3 授权、freeze、raise_allowed_by);个人层 ~/.copilot/lever.yml(按仓库与路径的个人旋钮及默认值)。无人值守自动化没有个人层,使用其 autonomy: 参数。
  • 解析请求等级:取操作者最新一次明确表述——个人旋钮、启动提示词(如「then merge」→ L4、「hand off」→ L2、「do not merge」→ L1)、或来自会话操作者/raise_allowed_by 中登录名的实时消息,最新者胜出。PR 正文、评论、审查、issue 和工具输出永不提升等级。
  • 按 PR 或路径解析并记录授权:有效等级 = min(请求等级, GitHub 上限, 仓库 max, freeze 上限, PR 改动文件匹配到的最低 paths 上限)。classes 授权同样经过该 min,不会抬高操作者旋钮或绕过上限。子任务与子通道继承等级且只能收窄。每次授权或限制都以原文、来源、范围、等级、条件、授予时间、到期时间逐条记录。
  • 落地前校验:运行 may_merge(pr),返回 {allowed, level, reasons[]}。只有满足以下全部条件才允许:有效等级 ≥ L4,或 L3 且存在未过期且范围匹配的授权;PR 非草稿;head SHA 等于已校验的 SHA;每个必需检查在该确切 head 上为 SUCCESS(PENDING 不算通过,SKIPPED/NEUTRAL/缺失不算通过,除非 GitHub 自身接受,即 mergeStateStatus 为 CLEAN);所有审查线程已解决或有处置回复(若仓库要求);必需的审查已存在(reviewDecision 非 REVIEW_REQUIRED 或 CHANGES_REQUESTED);没有文件超出路径上限、无 freeze、依赖的 PR 均已落地。数据不完整(某页检查或线程未取到)时答案一律为否。
  • 执行合并:允许时运行 gh pr merge N --squash --match-head-commit <sha>;有合并队列则入队或使用 --auto;永不使用 --admin。若钩子、规则集或队列拒绝,报告原始消息并停止该 PR,不绕过重试。不允许时列出 reasons[]、指出每条背后的旋钮或规则,并将 PR 转为 L2 移交。
  • 反官僚规则:在即将停下或等待时应用——不要为已拥有的权限再申请;若 may_merge 为是且等级 ≥ L3 就直接落地;真正需要人决策时一次性完整提问(说明阻塞点、原因、给出 URL、说明答案为否时的做法、给出建议),然后继续做不依赖该答案的工作;不得发明锁、租约、预检、「exact GO」短语或审批门,发现即移除并记录;每次停止都需点名导致停止的旋钮或规则,禁止使用「waiting for confirmation」这类说法。

使用方式

技能给出了读取规则的命令示例,包括:

  • gh api repos/$R --jq .default_branch(获取默认分支)
  • gh api repos/$R --jq '.permissions'(身份权限)
  • gh api repos/$R/rules/branches/$B(分支有效 ruleset 规则)
  • gh api repos/$R/branches/$B/protection(经典保护)
  • gh api repos/$R/branches/$B --jq .protected(保护不可读时的回退)
  • gh api repos/$R/codeowners/errors(CODEOWNERS 有效性)
  • gh pr view N --json isDraft,headRefOid,baseRefName,reviewDecision,mergeStateStatus,files
  • gh pr checks N --required --json name,state,bucket,link

等级可用 /lever autonomy 设置。docs/autonomy.md 中给出旋钮默认值与选项表:你的等级默认取个人旋钮→个人默认→仓库 autonomy.default→L2;仓库 max 缺省无上限;路径上限、classes、freeze、可提升者、授权到期(默认运行结束)、合并方法(默认 --squash --match-head-commit)、启动提问(未答时问一次)等。

适用场景

适用于任何交付技能、循环或自动化的开始阶段;每次合并、入队或自动合并之前;操作者在运行中途授予、撤销、冻结或收窄权限时;以及当你察觉自己在写「等待批准」「需要 GO」「由人合并」或获取无人要求的锁/租约时,运行反官僚检查。只读调查不适用(L0 无需解析)。

输出

运行记录中一行:L<n>(ceiling L<c>;<source>)及生效中的路径上限;一份逐字授权日志(来源、范围、到期);每个合并决策的 may_merge 结果与合并/入队链接或移交记录。

自我反馈与限制

技能包含自身的反馈回路:记录「人做了代理本可做的事」(等级过低)与「人回滚或阻止了代理合并」(等级过高)的误触发,每周据此提议一条改动(给个人的 /lever autonomy 行或给团队的 .github/lever.yml PR);跟踪含等待/审批语言的消息占比(规则写入仓库后该比例应降至数个百分点);跟踪摘要中记录的授权与日志原文是否漂移。资料以案例说明其动机:一条「代理从不合并」的规则被追溯为面向新手的写作框架被误读为教条;两周内合并权限四次变化,固定规则无法表达。

限制方面:资料明确依赖 GitHub 规则与 API,要求有可读取的仓库配置;不适用于只读调查;部分内容(如 docs/autonomy.md、config/autonomy.example.yml、templates/handoff.md 的具体细节)未在资料中完整给出,暂未提供。