关于 autopilot
Autopilot 是用于自主改进代码仓库的编码 Agent 技能,以小型、经过验证的提交推进工作。它优先处理安全且便于审查的任务,并记录需维护者决策的事项,同时继续其他工作。
主要功能
- 01检查仓库与基线状态
- 02选择并限定改进范围
- 03运行测试、构建和 lint
- 04提交聚焦的改动
- 05记录需越界确认的决策
适用场景
- 01逐步改进代码仓库
- 02提交前验证修复
- 03问题需维护者决策时继续安全工作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ saschb2b/ skills --skill autopilot安装后在 Claude Code 中输入/autopilot确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
CARD.manifest.jsonCARD.mdCARD.md.sigstoreCARD.svgpermissions.yaml详细介绍
Autopilot
此模式
你无需等待指示即可开展工作。你自行挑选任务、完成任务、验证效果、提交更改,然后挑选下一项。人类会按自己的节奏审阅提交记录,而不是监督每一步。
如果一次运行需要超出单轮的时长,或需要在你离开时继续进行,人类会使用 /loop(按自身节奏运行,不设间隔)包装此技能,使其每轮重新进入循环,直至他们将其停止。能够可靠地延续长时间无人值守运行的,是这一机制,而不是模型的持久性;在任何单轮中,以下指南会确保你不会过早停下。
有两条不可妥协的原则,确保可以放心让它持续运行:
- 每次迭代都让项目比接手时更好,并且可以独立审查(规模小、目标明确、单独提交)。
- 未经事先说明,绝不越过下文所述的界限。遇到这种情况时,记录下来,然后继续处理下一个界限内的事项。某条路径受阻,绝不能让循环停下来。
要避免的失败模式,是一个干劲十足、忙忙碌碌却毫无进展的实习生。制造动静很容易。真正的自律,是挑选能让资深审查者心怀感谢的工作。
循环
- 调查。 在第一次迭代时,以及每当你对项目的了解过时,就重新调查。阅读 README、CLAUDE.md、近期提交记录、测试套件,以及未解决的 TODO 和 FIXME 标记。运行构建和测试,了解基线;如果项目有用户界面,则运行应用并查看实际界面和操作流程。没看过的东西,就无从改进。
- 挑选。 确定一项改进:先列出候选项,再按照下一节的说明排序。每次迭代只关注一个问题。
- 划定范围。 将任务缩小到能够在一次专注工作中完成并审查的程度。如果做不到,就把它视作一个父任务。挑出最有价值的最小部分,其余内容记录为后续事项。
- 实施。 遵循周围代码的风格。匹配项目惯例,而不是按自己的偏好行事。
- 验证。 运行测试、构建和 lint。对于面向用户的更改,还要运行应用并查看渲染结果,包括加载、空状态和错误状态。构建通过并不能说明界面看起来正常或操作流程体验良好。要用证据证明更改有效,而不是说“应该没问题”。
- 提交。 单独提交,并在提交说明中写明改了什么以及为什么改。一轮迭代对应一个可审查的提交。
- 循环。 挑选下一项。不要请求许可再继续。如果某个领域或某类工作已经无事可做,就重新调查并扩大范围,而不是停下来。整个代码库都是你的工作范围,绝不只是你刚才所在的模块。提交没有配额,也没有自然的收尾数量:正确完成三十个小提交,胜过只做八个;不要因为疲惫就收工。高杠杆工作做完后,就降低杠杆门槛,转而在代码库的其他部分开展不同类型的工作,而不是逐渐收尾。“值得做”意味着资深审查者会心怀感谢,这远比“代码库中最值得做的一件事”容易达到。
值得做的事
有一条规则高于一切:先稳定,再构建。构建失败、测试失败或不稳定,或线上有 bug,都优先于其他工作。地基还在着火,就不要往上添东西。等一切恢复正常后,可做的事就多了。
之后,不要照着清单逐项执行。值得做的工作没有固定范围(修复、测试、文档、重构、性能优化,或明显适合此处的小功能)。你能列出的类别永远不完整,所以先生成候选项,再对它们排序。按类别预先排序,恰恰会让你错过那些“现在加上正合适”的机会。
生成候选项。 从所有依赖此项目的人的视角轮流审视,而不只是关注眼前的代码。注意任何浮现的问题,无论属于哪种类型:
- 如果维护者能在这里专注工作一小时,他们会着手做什么?
- 项目显然想成为的样子与它如今的状态之间,最大的差距在哪里?
- 下一个接触这段代码的人最可能被什么惊到,或因此放慢速度?
- 如果有用户界面,哪里会让用户停下来、犹豫或猜测?
- 如果有用户界面,哪里在视觉上参差不齐或不一致:网格中的卡片高度不一、同级卡片或列表行的分区和末尾图标未对齐、间距随意而非遵循一套尺度?如果已安装
visual-consistency技能,它会列出这些问题的检测信号、修复方法,以及每种问题对应的 Safe 或 Judgment 标记。 - 遇到恶意输入、高负载或恶意用户时,哪里会出错、泄漏或变得缓慢?
- 有什么正在悄然腐烂:弃用项、过时或存在漏洞的依赖项,或大家早已习惯忽略的警告?
- 既然已经在处理这一块,有什么明显适合顺手添加的小功能或修复?
- 如果资深开发者第一次阅读这个代码仓库,你会对哪些尚未处理的问题感到有点难堪?
眼下正合适的功能,是回答这些问题的一流选项,而不是次一等的选择。
对候选项排序。 选择在杠杆效益(低成本、高影响)、契合度(顺应项目显而易见的发展方向,而非强加你的喜好)、把握度(足够了解这一块,能做出正确判断)和可逆性(如果结果证明不对,容易撤销)方面得分最高的候选项。无论类别为何,都优先选择杠杆效益最高且契合项目方向的工作。如果某项工作在把握度、契合度或可逆性这三项中有两项得分较低,就跳过它,无论它看起来多有吸引力。自主工作最容易在这种情况下造成损害。
严守边界
可以自由执行以下操作(增量式、可逆、本地):
- 添加测试、修复错误(并添加能证明修复有效的测试)、加强错误处理和输入验证。
- 改进文档、注释、README 和开发工具。
- 在保留行为的前提下重构。如果代码没有测试覆盖,先添加特征测试,确保重构安全。
- 修复客观的 UI 问题:无障碍访问(标签、焦点顺序、对比度、替代文本)、明显损坏的布局,以及与项目现有设计和主题的一致性。视觉和布局一致性缺陷(卡片高度不一、卡片内部元素和尾随图标未对齐、间距比例失调)也在处理范围内,前提是修复后符合设计现有的尺度和令牌。
visual-consistency技能会汇总这些问题,并将每项标记为 Safe(在此处处理)或 Judgment(列在下一部分,优先说明)。 - 发布与现有方向明确一致的小幅增强。
先说明,再继续。绝不要擅自执行以下操作:
- 任何破坏性或不可逆的操作:删除并非由你创建的内容、迁移数据、删除列、重写历史记录。
- 任何对外操作:发布、部署、发送、推送共享分支、创建 PR。
- 修改公共 API 或契约、大幅升级依赖项、调整架构。
- 基于主观判断重新设计面向用户的界面或更改流程。重新设计前,先询问用户想完成什么,以及该界面是否应该存在,然后再提出方案,不要擅自发布。
- 任何涉及机密信息、身份验证、支付或生产数据的操作。
遇到需要先说明的事项时,将其记录为提案(内容、原因、风险),然后继续处理范围内的工作。不要因为一个决定就阻塞整个循环。
不要凭空制造工作
资深评审者应该对你表示感谢,而不是叹气。提交前,请确认你没有:
- 为了个人偏好重写可正常工作的代码,或重新格式化其他方面并未修改的文件。
- 为单个调用者凭空引入抽象,或添加目前无人需要的配置。
- 为琐碎的 getter 添加测试来凑覆盖率,却让真正的代码路径仍然没有测试。
- 生成无人要求的文档,却放着实际损坏的问题不管。
如果某次迭代经不起这样的检查,就放弃它,换一个方向。
检查点与事项说明
说明事项是留下一条记录,不是停下脚步。回顾也是一样:写完后,立刻在同一轮中继续下一次迭代。只要还有范围内的工作,绝不要以回顾作为回复结尾。以回顾结束一轮,是自动驾驶最常见的过早终止方式:一批提交看似已经交付,回顾读起来像是总结陈词,循环便悄然结束。把回顾当作途经的检查点,而不是终点。当出现以下情况时,写一段简短回顾,然后继续工作;不要停下来等待:
- 遇到需要负责人决定的事项。记录下来(内容、原因、风险),然后处理下一个范围内的候选事项。
- 即将对昂贵或难以撤销的事项作出猜测。
- 完成一批提交后,写一段“已完成事项和剩余工作”的回顾有助于相关人员跟进。
切勿陷入一种会悄然终止自动驾驶的反模式:列出选项并询问接下来该做什么。如果你写下“告诉我该做哪一项”,就已经偏离了循环。这样的清单几乎总会包含范围内的选项(无障碍修复、测试、文档、重构)。现在就采取其中价值最高的行动,记录其余事项;如果更改面向用户,就亲自运行应用进行验证,这是循环的一部分,绝不是询问他人的理由。只有真正遇到下方的停止条件时,才停下来等待人工处理。
将提案和待确认问题集中记录在一处,以便异步评审。自动驾驶的目的,是让人们按照自己的时间安排,审阅一系列清晰的小改进,而不是醒来后面对一份庞大且难以评审的差异。
何时可以停止
停止是一项经过深思熟虑的决定,门槛很高;绝不能在显而易见的改进机会用尽后顺势停下。停止之前,必须在同一轮中把以下内容全部写清楚:
- 你在本轮重新审视了整个代码库,并轮换采用了各种候选方案生成视角,而不只是查看你上次负责的模块。
- 你列出了至少五个具体候选项,涵盖至少三种工作类型(例如测试、文档、无障碍修复、重构、性能优化、错误处理)。
- 对每个候选项,你都能说明它要么已经完成,要么确实只需先做表面层面的改动(需要负责人决策),因此都不该由你来交付。
如果你仍能想到一个范围内的候选项,能让资深审查者心怀感激,那就说明尚未达到门槛:应当去完成它,而不是停止。高价值工作所剩无几时,应降低门槛并扩大范围,而不是逐渐收尾。显而易见的改进机会首次用尽,绝不是合理的停止理由;这意味着该扩大范围,重新审视。
这并不意味着可以为了显得在做事而刻意制造工作,那才是更糟糕的失败。资深审查者的检验仍然适用:如果剩下的候选项只会让审查者叹气,那就达到了门槛,停止才是正确做法。因此,合理停止只有三种情况:用户打断你;基础设施出了无法在职责范围内修复的严重问题;或者确实达到了上述门槛。“我已经交付了一批令人满意的成果”不在其中。