Files
research-blog/content/posts/openclaw-development-mechanism.md
T
2026-08-10 11:41:00 +08:00

280 lines
34 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
{
"title": "OpenClaw 开发机制:Skill、自动维护与质量门禁",
"summary": "基于当前公开源码,说明 OpenClaw 如何把 45 个 Agent Skill、自动维护服务、确定性 CI、性能体系和人工授权组织成一套可审计的开发机制。",
"date": "2026-08-10",
"updated": "2026-08-10",
"topic": "agent-systems",
"tags": ["openclaw", "coding-agent", "ai-maintenance", "software-quality", "ci"],
"kind": "article",
"status": "published",
"visibility": "public",
"canonicalUrl": "https://blog.k1412.top/articles/openclaw-development-mechanism/",
"sourceRepo": "https://git.k1412.top/wuyang/research-blog",
"preview": "/articles/openclaw-development-mechanism/development-system.jpg"
}
---
OpenClaw 不是简单地“用 AI 写代码”。它把开发工作拆成几种不同的控制方式:仓库规则规定不能越过的边界,Skill 告诉 Agent 某类任务怎样执行,自动维护服务持续处理积压工作,GitHub Actions 和脚本重新计算确定性结果,最后由策略或维护者授予合并、关闭和发布权限。
截至 2026 年 8 月 10 日,OpenClaw 主仓库当前版本包含 **45 个项目内 Skill** 和 **82 个 GitHub Workflow**。这两个数字很容易被误读:45 个 Skill 不是 45 个常驻 Agent,82 个 Workflow 也并非全都使用模型。本文逐项核对源码,回答四个具体问题:
1. `autoreview`、`test-audit`、`crabbox` 等 Skill 到底怎样工作;
2. 45 个 Skill 分别在项目哪里,什么时候起作用;
3. 哪些任务属于真正的 AI 自动维护,哪些只是确定性检查;
4. OpenClaw 怎样监测并自动改善测试性能。
源码审计固定在 OpenClaw [`6c1879e5`](https://github.com/openclaw/openclaw/tree/6c1879e5e7d18e5c3bcaabadb7844669f89197c7)、ClawSweeper [`13709144`](https://github.com/openclaw/clawsweeper/tree/13709144f5bd54cee22ec6a64ebc2b8fe0b021d5) 和 Agent Skills [`3cdad1db`](https://github.com/openclaw/agent-skills/tree/3cdad1dbe56026ef323db4eae0a70552246d4d9e)。本文是源码审计,不包含这些服务的生产运行实测。
![OpenClaw 开发机制中的人工判断、Agent 工作方法和确定性门禁](/articles/openclaw-development-mechanism/development-system.jpg)
## 先区分五种东西
理解 OpenClaw 的第一步,不是背 Skill 名称,而是分清它们在系统中的位置。
| 对象 | 它是什么 | 什么时候起作用 | 能否自行产生外部变化 |
| --- | --- | --- | --- |
| `AGENTS.md` | 给 Agent 的仓库规则和路由说明 | Agent 进入仓库或相应目录时读取 | 不能;它只是规则文本 |
| Skill | 某类任务的具体工作方法,通常是一份 `SKILL.md` | Agent 接到匹配任务、规则要求使用,或操作者显式调用时 | 取决于 Skill 调用的工具和权限;Skill 本身不是进程 |
| GitHub Workflow | 由事件、定时任务或人工按钮启动的自动化流程 | YAML 中的 `on` 条件成立时 | 可以,但权限由 Workflow 和 Token 决定 |
| 维护服务 | 有队列、状态、调度和恢复能力的长期系统,如 ClawSweeper | 收到事件、命令或定时扫描时 | 可以,但实际写操作应经过策略和状态复核 |
| CI / 门禁 | 编译、测试、扫描、证据校验和聚合状态 | PR、Push、Release 等事件发生时 | 通常只给出状态;分支保护据此允许或拒绝合并 |
OpenClaw 根目录的 [`AGENTS.md`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/AGENTS.md) 用一句话划清了边界:根规则负责硬约束和任务路由,Skill 负责具体工作流程。进入子目录后,Agent 还要读取离代码更近的 scoped `AGENTS.md`。因此规则不是一个无限增长的总提示词,而是按代码责任范围逐层加载。
## 一项改动怎样完成
OpenClaw 的开发闭环可以压缩为七步。这里同时标出 Agent、确定性系统和人的责任。
| 阶段 | Agent 做什么 | 系统怎样验证 | 谁拥有最终决定 |
| --- | --- | --- | --- |
| 1. 接收问题 | 读取 Issue、PR、规则、产品方向和相关历史 | 检查目标对象、分支和当前状态 | 维护者决定产品方向和优先级 |
| 2. 调查原因 | 沿入口、Owner、调用者、被调用者、相邻实现、测试和依赖建立证据图 | 通过源码、历史、复现和依赖契约交叉验证 | Agent 可以形成判断;高风险结论交给 Owner |
| 3. 复现问题 | 在修改前保存失败命令、场景或真实行为证据 | 要求同一复现在旧代码失败 | 无法复现时不能把猜测当成根因 |
| 4. 实现修复 | 在责任边界处修复根因,并检查相邻功能 | 相关测试、静态检查、Diff 和生产代码增量 | 行为、协议、安全或迁移变化需要相应 Owner |
| 5. 本地复审 | 使用 `autoreview` 让第二个模型审查未提交改动;修改后重新审查 | `test-audit` 检查测试是否真实、有效且不重复 | 新发现必须处理或明确说明不采纳原因 |
| 6. 提交证据 | PR 说明问题、原因、影响和验证证据 | CI、真实行为证明、ClawSweeper 评论和 Required Gate | 平台策略决定是否满足合并条件 |
| 7. 合并或发布 | Agent 可协助修复 CI、更新文档、生成发布材料 | 精确 Head SHA、必需检查、可合并状态、发布校验 | 维护者或预先授权的确定性策略执行最终动作 |
这套流程的核心不是步骤多,而是**模型不能同时拥有判断、写入和最终授权**。例如 ClawSweeper 的审查阶段不给 Codex GitHub 写 Token;模型先产出结构化判断,随后由可信代码重新读取 GitHub 当前状态、校验快照和策略,才可能评论、关闭或合并。相关约束可在 [ClawSweeper README](https://github.com/openclaw/clawsweeper/blob/13709144f5bd54cee22ec6a64ebc2b8fe0b021d5/README.md) 和 [VISION](https://github.com/openclaw/clawsweeper/blob/13709144f5bd54cee22ec6a64ebc2b8fe0b021d5/VISION.md) 中核对。
## 三个 Skill 怎样执行
### `autoreview`:提交前的第二个模型审查
位置:[`/.agents/skills/autoreview/SKILL.md`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/autoreview/SKILL.md)
它在非简单代码改动准备提交或交付前生效。根规则把它设为默认必经步骤,除非用户明确跳过,或改动确实只是简单文档。
执行过程是:
1. 确认审查范围,是未提交 Diff 还是一段 Commit;
2. 先做密钥扫描,避免把敏感信息送入审查模型;
3. 打包 Diff、必要上下文和仓库规则;
4. 默认调用 Codex,也可使用 Claude 或 Pi 作为独立审查者;
5. 输出按严重程度组织的结构化 Findings;
6. 修复可采纳问题,重新执行相应测试;
7. 对新 Diff 再审一遍,直到没有可执行问题。
它解决的是“实现者容易忽略自己引入的问题”,不是证明程序真实可用。源码审查对运行行为不可见,因此仍需测试、真实行为证据和 CI。
### `test-audit`:防止测试只是看起来通过
位置:[`/.agents/skills/test-audit/SKILL.md`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/test-audit/SKILL.md)
它在新增、修改或审查测试时生效。关注点不是“有没有测试文件”,而是测试是否真的保护了行为:
1. 确认测试对应的生产行为和失败风险;
2. 检查修改前的代码是否会让该测试失败;
3. 检查测试是否调用真实入口,而不是绕过生产接线;
4. 检查 Mock 是否掩盖了集成问题;
5. 检查断言是否只验证“函数被调用”,而没有验证用户可见结果;
6. 搜索相邻测试,避免复制同一断言形成虚假的覆盖量;
7. 删除低价值测试或补足缺少的边界、故障和回归场景。
这也是 OpenClaw 所谓“验证证据”的一部分:一个测试通过,并不自动等于它有证明力。
### `crabbox`:把高成本或高风险验证送到隔离环境
位置:[`/.agents/skills/crabbox/SKILL.md`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/crabbox/SKILL.md)
Crabbox 不是代码审查模型,而是远程验证的控制面。它在全量测试、跨操作系统、真实服务、桌面交互、安装升级、性能剖析,或不应在本机执行不可信代码时生效。
典型过程是:选择可信级别和目标环境,申请带租约的远程机器,同步指定 Commit,执行真实场景,收集日志、截图、录像和时间数据,确认目标 SHA,最后释放环境。仓库规则还区分可信维护者代码与外部 PR:不可信代码不能回退到本机执行,也不能获得带凭据的测试环境。
因此它解决的是“在哪里、以什么权限、拿什么证据运行”,不是替代测试设计。
## 45 个项目内 Skill
下表以当前 Commit 为准。每个 Skill 的真实位置都是 `.agents/skills/<name>/SKILL.md`;表中的“生效时机”表示任务匹配后由 Agent 加载执行,不表示后台常驻。
### 开发、审查与文档
| Skill | 主要任务 | 项目位置 | 生效时机 |
| --- | --- | --- | --- |
| `agent-transcript` | 为 Agent 创建的 Issue/PR 附加脱敏会话记录 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/agent-transcript/SKILL.md) | Agent 准备创建 GitHub Issue 或 PR 时 |
| `autoreview` | 用独立模型审查本地 Diff,并循环修复 Findings | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/autoreview/SKILL.md) | 非简单代码改动提交、交付或开 PR 前 |
| `channel-message-flows` | 为频道消息链路生成 QA Lab 过程证据 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/channel-message-flows/SKILL.md) | 验证频道收发、状态和失败路径时 |
| `control-ui-e2e` | 用 Vitest、Playwright 和 Mock Gateway 验证 Control UI | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/control-ui-e2e/SKILL.md) | UI 行为变化需要浏览器证据时 |
| `openclaw-debugging` | 选择日志、探针、实时环境和复现路径定位问题 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-debugging/SKILL.md) | 模型、Provider、Tool、Streaming 或线上行为异常时 |
| `openclaw-docker-e2e-authoring` | 编写 Docker E2E 和真实 Provider 验证 Lane | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-docker-e2e-authoring/SKILL.md) | 新增或修改容器化端到端测试时 |
| `openclaw-live-updater` | 维护实时 Main Checkout、Gateway、Mac App 和全发布验证 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-live-updater/SKILL.md) | 更新持续运行的 OpenClaw 验证环境时 |
| `openclaw-refactor-docs` | 在源码核对后重构现有文档页 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-refactor-docs/SKILL.md) | 修改既有文档结构或表述时 |
| `openclaw-testing` | 按改动风险选择测试、CI、Docker 和发布验证 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-testing/SKILL.md) | 需要决定跑哪些检查或解释失败时 |
| `prototype-openclaw-tui` | 用固定 Fixture 制作一次性 TUI 原型 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/prototype-openclaw-tui/SKILL.md) | 探索终端界面方案且不接真实状态时 |
| `technical-documentation` | 编写和审查技术文档与 Agent 指令 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/technical-documentation/SKILL.md) | 需要形成可维护的技术说明时 |
| `test-audit` | 审计测试是否真实、有效、非重复 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/test-audit/SKILL.md) | 新增、修改或审查测试时强制使用 |
### QA、远程环境与真实行为证明
| Skill | 主要任务 | 项目位置 | 生效时机 |
| --- | --- | --- | --- |
| `auto-qa` | 组织多 Lane 自主 QA、修复与证据汇总 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/auto-qa/SKILL.md) | 人工发起大范围 QA 活动时;不是定时服务 |
| `crabbox` | 调度远程、跨 OS、E2E、桌面和隔离验证 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/crabbox/SKILL.md) | 本地验证不合适、不可信或成本过高时 |
| `openclaw-parallels-smoke` | 在 macOS、Windows、Linux Guest 验证安装、升级和 Gateway | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-parallels-smoke/SKILL.md) | 需要虚拟机跨平台 Smoke 时 |
| `openclaw-qa-testing` | 执行、观察、调试和扩展 QA Lab 场景 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-qa-testing/SKILL.md) | QA Lab Case 或产物需要验证时 |
| `parallels-discord-roundtrip` | 在虚拟机中完成 Discord 发送、回复和回读闭环 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/parallels-discord-roundtrip/SKILL.md) | Discord 跨主机真实闭环验证时 |
| `telegram-crabbox-e2e-proof` | 在 Crabbox 中用真实 Telegram 用户行为生成录像与证据 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/telegram-crabbox-e2e-proof/SKILL.md) | Telegram 可见行为需要真实端到端证明时 |
### GitHub 维护、检索与积压治理
| Skill | 主要任务 | 项目位置 | 生效时机 |
| --- | --- | --- | --- |
| `claw-score` | 审计并更新功能成熟度 Scorecard | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/claw-score/SKILL.md) | 需要结合 QA 证据重算成熟度时 |
| `clawdtributor` | 用 Discrawl 和实时 GitHub 证据整理贡献者 PR/Issue | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/clawdtributor/SKILL.md) | 贡献者分诊、归组和摘要时 |
| `clawsweeper` | 操作 ClawSweeper 审查、修复、Autofix、Automerge 和监控 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/clawsweeper/SKILL.md) | 人在 Agent 会话中管理 ClawSweeper 系统时 |
| `discord-clawd` | 与 Discord 中的 OpenClaw Agent/Session 对话 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/discord-clawd/SKILL.md) | 需要调用 Discord 侧 Agent,而非搜索历史时 |
| `discrawl` | 搜索、同步和汇总 Discord Archive | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/discrawl/SKILL.md) | 需要从 Discord 历史中取证时 |
| `gitcrawl` | 本地化 GitHub Issue/PR,做检索、聚类和重复项分析 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/gitcrawl/SKILL.md) | 批量分诊或查找相关 Issue/PR 时 |
| `graincrawl` | 搜索和同步 Granola 会议记录与转录 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/graincrawl/SKILL.md) | 需要从会议资料中找决策依据时 |
| `notcrawl` | 搜索、同步和导出 Notion 页面与数据库 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/notcrawl/SKILL.md) | 需要从 Notion 工作区取证时 |
| `openclaw-pr-maintainer` | 处理 OpenClaw Issue/PR 的调查、审查、标签、关闭和合并 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-pr-maintainer/SKILL.md) | 维护者任务出现 Issue/PR URL 或编号时立即使用 |
| `openclaw-repair-sweep` | 用 Worker Fleet 调查和修复一批 Issue/PR | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-repair-sweep/SKILL.md) | 人工发起有边界的批量修复活动时 |
| `slacrawl` | 搜索、同步和查询 Slack Archive | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/slacrawl/SKILL.md) | 需要从 Slack 历史中取证时 |
| `tag-duplicate-prs-issues` | 用 GitCrawl 分组并标注重复 Issue/PR | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/tag-duplicate-prs-issues/SKILL.md) | 批量治理重复项并同步 GitHub 时 |
### 性能、CI 与安全
| Skill | 主要任务 | 项目位置 | 生效时机 |
| --- | --- | --- | --- |
| `openclaw-ci-limits` | 分析 Runner 容量、并发、分片和排队健康 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-ci-limits/SKILL.md) | CI 变慢、排队或需要调整 Fan-out 时 |
| `openclaw-ghsa-maintainer` | 调查、修补、验证和发布 GitHub Security Advisory | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-ghsa-maintainer/SKILL.md) | 维护 GHSA 和私有安全修复分支时 |
| `openclaw-secret-scanning-maintainer` | 分诊、脱敏并解决 Secret Scanning Alert | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-secret-scanning-maintainer/SKILL.md) | GitHub 报告密钥泄漏风险时 |
| `openclaw-test-heap-leaks` | 用 RSS、Heap Snapshot 和 Retainer 定位测试内存增长 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-test-heap-leaks/SKILL.md) | Vitest OOM、RSS 持续增长或怀疑泄漏时 |
| `openclaw-test-performance` | 建立基线并诊断测试、Import、CPU、内存和覆盖开销 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-test-performance/SKILL.md) | 测试或插件套件变慢,需要优化时 |
| `security-triage` | 结合发布版本、信任边界和证据分诊安全问题 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/security-triage/SKILL.md) | 安全报告或可疑行为需要定级时 |
### 发布与对外沟通
| Skill | 主要任务 | 项目位置 | 生效时机 |
| --- | --- | --- | --- |
| `discord-user-post` | 以已登录用户身份发布经过批准的 Discord 消息 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/discord-user-post/SKILL.md) | 维护者批准需以用户身份发布的消息时 |
| `openclaw-changelog-update` | 根据 Git 历史重新生成发布 Changelog | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/openclaw-changelog-update/SKILL.md) | 准备 Release 内容时 |
| `release-openclaw-announcement` | 起草并发布 Discord Release Announcement | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/release-openclaw-announcement/SKILL.md) | Release 已确认,需要对外公告时 |
| `release-openclaw-ci` | 启动、观察、调试并总结完整 Release CI | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/release-openclaw-ci/SKILL.md) | 发布候选进入完整门禁时 |
| `release-openclaw-mac` | 处理 macOS 签名、公证、Appcast 和资产 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/release-openclaw-mac/SKILL.md) | 发布 macOS 应用时 |
| `release-openclaw-maintainer` | 组织 Stable、Beta、Extended Release 和 Backport | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/release-openclaw-maintainer/SKILL.md) | 维护者准备正式或测试发布时 |
| `release-openclaw-nightly` | 维护 Alpha/Nightly 分支、保留策略和前向合并 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/release-openclaw-nightly/SKILL.md) | 夜间发布自动化或故障恢复时 |
| `release-openclaw-plugin-testing` | 验证插件预发布包、生命周期、Doctor、SDK 和 Docker | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/release-openclaw-plugin-testing/SKILL.md) | 插件进入预发布验证时 |
| `verify-release` | 从精确版本、产物来源、安装和 Live Gateway 核验发布 | [路径](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills/verify-release/SKILL.md) | 发布前后需要独立确认时 |
## AI 自动维护系统
Skill 只有被 Agent 调用才执行。下面这些才是会被定时、事件或人工 Dispatch 启动的自动系统。表中只列当前源码能够确认使用模型进行判断或生成的维护任务,不把普通 CI 混入其中。
| 系统 | 触发方式 | AI 负责什么 | 非 AI 系统负责什么 | 是否直接改仓库 |
| --- | --- | --- | --- | --- |
| [ClawSweeper](https://github.com/openclaw/clawsweeper/tree/13709144f5bd54cee22ec6a64ebc2b8fe0b021d5) | 定时扫描、Issue/PR 事件、维护者命令 | 审查、根因判断、修复方案、受限代码修复 | Token、幂等、Ledger、Snapshot、配额、评论/关闭/合并门禁 | 审查默认只提议;Autofix/Automerge 需显式授权和精确状态门禁 |
| [Clownfish](https://github.com/openclaw/clownfish) | 维护者提供或系统生成的候选 Cluster | 对一组高度相关 Issue/PR 做第二遍保守归并判断 | 重新读取实时状态,限制只处理一个 Cluster,记录动作 | 默认 Proposal-first,满足策略后才执行窄范围整理 |
| [`dated-todo-sweep.yml`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows/dated-todo-sweep.yml) | 每周一及人工启动 | 阅读带日期 TODO 的上下文,判断逾期、到期或未来事项 | 脚本收集候选、验证报告、用新 Token 更新跟踪 Issue | 模型无 GitHub 写 Token;Publisher 更新 Issue |
| [`docs-agent.yml`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows/docs-agent.yml) | Trusted Main CI 成功后及人工启动;有小时限流 | 修正现有文档与当前源码不一致之处 | 只允许文档、README、CHANGELOG;禁止增删文件;验证当前 Main SHA 和文档检查 | 模型不 Push;可信 Job 在无过期竞争时提交 |
| [`test-performance-agent.yml`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows/test-performance-agent.yml) | Trusted Main CI 成功后及人工启动;有每日限流 | 寻找小型、保持覆盖率的测试性能优化 | 固定前后基线、限制路径、禁止增删改名、保证测试数不减少、跑完整检查 | 验证通过后由 Bot 提交,而不是模型直接 Push |
| [`maturity-scorecard.yml`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows/maturity-scorecard.yml) | 人工启动或被其他 Workflow 调用 | 依据 QA 证据更新成熟度判断 | 只允许修改一个 YAML,验证并渲染文档,另一个 Job 创建 PR | 可生成 PR,不直接修改 Main |
| [`control-ui-locale-refresh.yml`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows/control-ui-locale-refresh.yml) | 相关文件 Push、Release、每日定时、人工启动 | Anthropic 优先、OpenAI 回退,刷新 20 个 UI Locale | 并行矩阵、补丁合并、确定性校验、生成 PR | 创建可自动合并的生成型 PR |
| [`native-app-locale-refresh.yml`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows/native-app-locale-refresh.yml) | 相关文件 Push 或人工启动 | 刷新 21 个 Native App Locale | 合并补丁、验证格式和范围、生成 PR | 创建可自动合并的生成型 PR |
| [`mantis-telegram-desktop-proof.yml`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows/mantis-telegram-desktop-proof.yml) | 人工启动 | Codex 判断改动需要怎样的 Telegram Desktop 前后证据并执行验证 | Workflow 约束目标 PR、环境、产物和发布方式 | 不维护业务代码;只发布验证证据 |
`auto-qa` 和 `openclaw-repair-sweep` 虽然可以让 Agent 大规模工作,但它们仍是**人工发起的 Agent 工作方法**,不是常驻后台服务。相反,ClawSweeper 有自己的队列、状态、Ledger、定时扫描和恢复机制,才是真正的自治维护系统。
还要避免另一个误解:ClawSweeper 当前主要审查 **Issue 和 PR**,不是持续扫描每个 Commit。它的 Push/Manual Commit Review Lane 已在 2026 年 7 月停止,离线分支审查仍保留为 `local-review`;只有选定主分支 Commit 的人工审查能力保留。提交前审查主要由本地 `autoreview` 和 PR 阶段的 CI/ClawSweeper 分担。
这些维护 Agent 还依赖四个容易被误认为“另一个 AI”的支撑系统:
| 系统 | 实际职责 | 为什么不是另一个审查模型 |
| --- | --- | --- |
| [Barnacle Auto Response](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/scripts/github/barnacle-auto-response.mjs) | 根据可信 Workflow 代码执行标签、模板提示、自动响应和 Stale 规则 | 规则由 JavaScript 明确实现;它提供可预测的仓库卫生处理 |
| [GitCrawl](https://github.com/openclaw/gitcrawl) | 把 Issue/PR 同步到本地数据库,支持检索、重复聚类和批量分诊 | 它准备数据和候选集合,最终语义判断交给 Agent 或维护者 |
| [Crabbox](https://github.com/openclaw/crabbox) | 租用、同步和管理隔离测试机器,收集日志、遥测和真实行为证据 | 它是执行与证据控制面,不决定代码是否正确 |
| [CrabFleet](https://github.com/openclaw/crabfleet) | 记录、观察和干预长时间运行的 Agent Job | 它提供会话注册、时间线和 Steering,不替代具体任务 Agent |
这四个系统分别解决规则执行、数据输入、验证环境和运行控制。模型判断、基础设施和权限控制因此可以独立替换和审计。
## 性能不是一条 Workflow
OpenClaw 的性能机制分成测量、诊断和修复三层。
| 层次 | 主要实现 | 产出 |
| --- | --- | --- |
| 测量 | [`openclaw-performance.yml`](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows/openclaw-performance.yml) 与 `package.json` 中的 Perf Scripts | Kova 场景、Gateway 启动/WebSocket/Health、SQLite、CLI 启动、扩展内存、CPU/Heap/Trace 产物 |
| 诊断 | `openclaw-test-performance`、`openclaw-test-heap-leaks` | 前后基线、慢 Group、Import Hotspot、CPU、RSS、Heap Retainer 和根因说明 |
| 自动修复 | `test-performance-agent.yml` | 在完整基线和路径限制下尝试小型优化,验证不减少测试和覆盖后提交 |
`openclaw-performance.yml` 不是笼统地记录一次总耗时。它把目标解析、Kova 场景、源码性能探针、产物发布和缺少产物保护拆开;需要时还生成 CPU、Heap 和 Trace。仓库脚本另有 `test:perf:groups`、`test:perf:groups:compare`、`test:perf:hotspots`、`test:perf:imports`、`test:startup:bench`、`test:extensions:memory` 和 `test:sqlite:perf` 等入口。
Test Performance Agent 最值得借鉴的不是“AI 会优化测试”,而是它的**防作弊结构**:
1. 修改前先跑完整测试分组基线;
2. 模型只能修改允许的现有文件,不能新增、删除或改名;
3. 修改后使用同一命令重跑完整基线;
4. 测试数量不得减少;
5. 再执行变化范围检查;
6. 只有确定性 Job 确认改善且没有破坏约束,才允许 Bot 提交。
AI 负责寻找优化机会,测试数量、路径范围、前后比较和提交权限仍由代码控制。
## 验证证据怎样进入 PR
OpenClaw 的 PR 模板要求说明问题、选择该方案的原因、用户影响和 Evidence。贡献指南接受的证据包括聚焦测试、CI、截图、录像、终端输出、真实观察、脱敏日志和可下载产物;UI 或行为变化强调前后对比。参见 [CONTRIBUTING.md](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/CONTRIBUTING.md) 和 [PR 模板](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/PULL_REQUEST_TEMPLATE.md)。
这里存在两类判断:
- **确定性校验**:证据字段是否存在、产物能否读取、Head SHA 是否匹配、必需检查是否成功、测试数是否下降;
- **语义判断**:证据是否覆盖了真实故障、是否走了生产入口、是否证明了用户可见行为、是否足以支持合并。
前一类适合脚本和 CI,后一类由 Agent Review 与人共同完成。OpenClaw 的 Real Behavior Proof 还明确区分主要证据和补充证据:单元测试、Mock、Snapshot、Lint 和普通 CI 可以支持结论,但不能单独替代真实 OpenClaw 环境中的 After-fix 观察。维护者仍可以通过明确的 Override 接受例外,并留下责任记录。
## AI 参与度能否量化
OpenClaw 要求贡献者披露 AI 辅助,但当前 PR 模板没有强制的结构化 AI 字段。因此公开数据只能测“文字中主动披露”,不能测实际代码由 AI 生成的比例。
在 2026 年 7 月 10 日至 8 月 9 日这个固定窗口内,GitHub Search 返回 [13,845 个新 PR](https://github.com/openclaw/openclaw/pulls?q=is%3Apr+created%3A2026-07-10..2026-08-09),其中 [4,463 个标题或正文含 `AI-assisted`](https://github.com/openclaw/openclaw/pulls?q=is%3Apr+created%3A2026-07-10..2026-08-09+%22AI-assisted%22),约 **32.2%**;同期 9,356 个合并 PR 中有 3,192 个含该表述,约 **34.1%**。`clawsweeper:autogenerated` 只占新 PR 的约 **0.60%**,说明大量 AI 使用来自贡献者或维护者自己的 Coding Agent,而不是 ClawSweeper 自动生成。
这组数字只适合回答“公开披露有多普遍”。没有披露不等于没有使用,重复或模板文本也可能影响结果,不能据此宣称 AI 代码占比。
## 这套机制真正值得学习的地方
OpenClaw 的特点不是 Skill 多,也不是 Workflow 多,而是把几种不同的不确定性放到了合适的位置:
1. **规则靠近代码。** 根规则只保留通用硬约束,目录规则描述局部责任,Skill 保存可重复的任务方法。
2. **先让模型调查,再让模型修改。** Repair Doctrine 要求入口、Owner、相邻实现、历史、测试和依赖契约证据,禁止只看 Diff 或错误信息直接打补丁。
3. **测试也接受审计。** 回归测试必须能在修复前失败,Mock、弱断言、重复测试和只为测试增加的生产接口都会被检查。
4. **模型没有最终写权限。** 高风险外部动作由可信代码重新验证当前状态,模型输出只是受审计的提案或修复材料。
5. **性能优化必须可比较。** 同一基线前后执行、测试数不下降、路径不扩张,使“变快”成为可验证结果。
6. **自动化按风险分层。** 文档、翻译和小型性能优化可以在严格范围内自动提交;产品方向、安全、兼容性、关闭和发布保留更强门禁。
它也不是完整答案。45 个 Skill 会带来维护成本和发现成本;语义审查仍可能误判;真实行为证明昂贵;公开仓库中模型、基础设施和维护者权限并不完全可复现。更重要的是,OpenClaw 的制度建立在它自己的高变更量、开放贡献和维护基础设施上,其他项目不应照抄 Skill 数量或 Workflow 数量。
真正可迁移的原则只有一句:**让 AI 承担高成本的阅读、实现和初审,让确定性系统掌握范围、状态和权限,让人保留目标、风险与最终授权。**
## 来源与复核方式
- [OpenClaw 根规则与 Repair Doctrine](https://github.com/openclaw/openclaw/blob/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/AGENTS.md)
- [OpenClaw 45 个项目内 Skill](https://github.com/openclaw/openclaw/tree/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.agents/skills)
- [OpenClaw GitHub Workflows](https://github.com/openclaw/openclaw/tree/6c1879e5e7d18e5c3bcaabadb7844669f89197c7/.github/workflows)
- [ClawSweeper README](https://github.com/openclaw/clawsweeper/blob/13709144f5bd54cee22ec6a64ebc2b8fe0b021d5/README.md) 与 [Vision](https://github.com/openclaw/clawsweeper/blob/13709144f5bd54cee22ec6a64ebc2b8fe0b021d5/VISION.md)
- [OpenClaw Agent Skills 独立仓库](https://github.com/openclaw/agent-skills/tree/3cdad1dbe56026ef323db4eae0a70552246d4d9e)
- [Crabbox](https://github.com/openclaw/crabbox)、[CrabFleet](https://github.com/openclaw/crabfleet)、[GitCrawl](https://github.com/openclaw/gitcrawl) 与 [Clownfish](https://github.com/openclaw/clownfish)
- [OpenClaw PR Review Flow](https://docs.openclaw.ai/reference/pull-request-review-flow)
计数方法:在固定 Commit 上执行 `find .agents/skills -mindepth 2 -maxdepth 2 -name SKILL.md` 和 `find .github/workflows -maxdepth 1 -name '*.yml'`。AI 服务通过检索 Codex Action、模型 API Key、定时/事件触发和对应脚本后逐项阅读确认;普通测试和发布 Workflow 没有因为出现 `OPENAI_API_KEY` 字样就被自动归为 AI 维护服务。