大多数 Agent 项目卡在同一个地方:上线之后就不再变好。日志里的报错要人去看,效率瓶颈要人去猜,改一版代码再回归测试,一轮下来半天没了。capability-evolver 想干的事有点激进——让 Agent 自己读日志、自己找问题、自己改代码,而且整个过程留下可审计的痕迹。
它由 OpenClaw 官方维护,定位是「元技能」(meta-skill):不直接替你做业务,而是给 Agent 装上自我检视和迭代的能力。当前版本 v1.27.3,社区下载 6.2k、安装 556,推荐率 99%,被平台判为 BSS 等级 S。整包 135.5 kB,零第三方依赖,跑起来只需要 Node.js。
一、基本信息
| 项目 | 内容 |
|---|---|
| 技能名称 | capability-evolver |
| 维护方 | OpenClaw 官方 |
| 定位 | AI Agent 自主进化引擎(元技能) |
| 版本 | v1.27.3 |
| 社区数据 | 下载 6.2k · 安装 556 · 99% 推荐 · BSS 等级 S |
| 安全认证 | CLS 安全性认证(2026-05-05) |
| 运行环境 | Node.js,零第三方依赖,仅用内置模块 |
| 启动命令 | node index.js |
| 核心协议 | GEP(Genome Evolution Protocol) |
| 数据资产 | genes.json、capsules.json、events.jsonl |
| 包体大小 | 整包 135.5 kB(主文件 evolve.js 51.1 kB) |
| 技能主页 | hub.cocoloop.cn/skills/666 |
| 下载安装 | capability-evolver.zip(135.5 kB,直接下载) |
| 标签 | meta、ai、automation、development-engineering、devops、backend、productivity |
二、Agent 为什么需要「进化」这一层
先把这个技能解决的问题说清楚,不然容易把它当成又一个代码生成器。
一个长期运行的 Agent 系统,问题很少来自「模型不够聪明」,更多来自三种慢性损耗。第一种是环境漂移:依赖版本变了、系统命令不兼容了、路径写法在不同平台上失效了,报错来得零散又反复。第二种是性能衰减:记忆文件越滚越大,检索越来越慢,上下文塞满了历史垃圾。第三种是能力缺口:某类任务反复失败,但没人有空回头给它补一个专用处理逻辑。
传统做法是人工巡检——看日志、定位、改代码、测试、上线。这套流程的问题不在于难,而在于「不值得为一个小修复走一遍」。于是小问题一直被拖到大问题。
capability-evolver 的思路是把这条流程自动化,并且给它套上约束。它扫描运行历史,找出错误模式和低效模式,然后生成补丁或优化代码,在限定范围内应用,失败就回滚。整个过程按 GEP 协议记录下来,形成可追溯的进化链。
一句话概括它的设计哲学:允许 Agent 改自己,但每一次改动都要留痕、要限量、要能撤销。
三、三种运行模式:从放开跑,到一步一确认
启动方式就是一条命令,模式由参数决定。这个设计决定了它的安全边界,值得先看清。
| 模式 | 启动方式 | 行为 | 适用场景 |
|---|---|---|---|
| 全自动(Mad Dog Mode) | node index.js |
直接跑完检测→分析→修复→优化的完整循环,中途不停 | 个人开发环境、可丢弃的沙箱、验证能力上限 |
| 人工审核 | node index.js --review |
每一步操作前暂停,等待确认后继续 | 生产环境、有合规要求、改动影响面大的系统 |
| 后台循环 | node index.js --loop 或交给 cron |
以守护进程方式周期性运行,持续巡检 | 7×24 无人值守的 Agent 集群 |
默认模式就是全自动,这一点需要特别注意。它的名字「Mad Dog」不是玩笑,意思是发现有价值的问题就直接动手,不等人。对熟练用户在隔离环境里试能力很爽,但如果有人在服务器上不加参数直接跑,等于把改动权限交给了模型判断。
--review,并且先配好 git 同步。没有版本控制兜底,自动修复失败时回滚会丢掉中间状态,这个坑比想象中常见。四、GEP 协议:进化过程怎么被记录
GEP 是这套东西和「一堆脚本拼起来的自动改码工具」的分水岭。它把进化拆成三类结构化资产:
| 资产 | 作用 | 记录什么 |
|---|---|---|
genes.json |
基因定义 | 可复用的进化策略模板,比如「从错误日志触发修复」这类模式 |
capsules.json |
成功胶囊 | 一次成功进化的固化记录:触发信号、所用基因、变更文件与行数、置信度、结果评分 |
events.jsonl |
事件日志 | 按行追加的完整事件流,构成可审计的时间线 |
每一份资产都有内容哈希,通过 SHA-256 内容寻址。这意味着同一份记录在不同机器上校验值一致,改动一个字节就会得到不同的地址,伪造和篡改在机制上被堵掉。胶囊之间通过父级 ID 构成树状结构,一次进化由哪次进化派生而来,链条是连着的。
一个典型的胶囊长这样:触发信号里包含具体的报错特征(比如某条命令在目标平台上不存在)、命中哪条修复基因、本次改动了 2 个文件共 44 行、置信度 0.85、结果状态为成功。配上环境指纹——Node 版本、平台、架构、内核版本、当前工作目录、捕获时间——事后复盘时能还原「当时是什么环境出的问题」。
这些字段的价值不在于好看,而在于它把「Agent 改了自己的代码」这件事从黑箱变成了流水账。出问题时可以顺着事件日志往上查,是哪次进化引入了变更。
五、安全设计:五道闸门
让程序改自己的代码,最怕的是失控。这套实现里能数出至少五层限制,值得逐条看。
| 闸门 | 机制 | 挡住什么 |
|---|---|---|
| 命令白名单 | 只允许 node、npm、npx 三类命令,并加超时控制 |
任意命令执行、横向提权 |
| 爆炸半径控制 | 单周期最多 60 个文件、20000 行变更 | 一次改动横扫全仓库 |
| 失败回滚 | 变更不通过验证自动撤销,配合 Git 锁保护 | 把项目改成跑不起来的状态 |
| 脱敏与路径防护 | 敏感信息自动脱敏,路径遍历做拦截 | 密钥被写进日志、越界读写 |
| 资源与并发守卫 | Singleton Guard 防多实例、RSS 上限加自动重启、饱和度检测 | 僵尸进程、内存泄漏、空转烧 CPU |
还有一条软约束:高风险人格状态下禁止执行创新类操作。系统内置了「递归自改进系统」的身份注入,会根据运行状态在「修复模式」和「强制优化模式」之间切换,状态不稳时只做保守修复。
另外,它的零依赖设计本身就是一层安全措施。整个包只用 Node.js 内置模块,不引入任何 npm 包,等于把依赖投毒这条路直接堵死。对一个要长期待在服务器上、还要动代码的东西来说,这个选择很关键。
六、真正有价值的地方
零依赖,装完就能跑。没有 node_modules 黑洞,没有版本冲突,没有「装到一半某个包编译失败」。135 kB 的包解压完就是全部内容,审计成本极低——想确认它到底干了什么,把 evolve.js 读一遍就行。
改动是有边界的。60 文件、20000 行的单周期上限,看起来是个技术参数,实际是产品判断:宁可多跑几轮小修复,也不做一次大手术。这个约束让「自动改码」从不可控变成可控。
可追溯不是口号。事件日志、胶囊、内容哈希、父级链,四样东西凑齐了完整证据链。这在出问题时是救命的——你能说清「第 37 次进化改了什么、为什么改、结果如何」。
环境偏好可注入。通过环境变量(如 EVOLVE_REPORT_TOOL)把本地偏好传进去,核心代码不用改。同一份代码在个人机器和团队服务器上跑,行为可以不同,但代码库保持干净,升级时不会冲突。
会自己刹车。Singleton Guard 防重复启动、RSS 超限自动重启、饱和度检测避免空转,这些不是锦上添花,而是长期运行的必需品。大多数自制脚本死在这三点上。
七、绕不开的问题
自我修改天然不确定。有协议约束也不等于可预测。复杂系统里,一处「合理」的修复可能在别处引出副作用,而且这种副作用往往要跑几天才显形。这是这类工具的本质风险,不是实现缺陷。
审计门槛偏高。events.jsonl 是纯文本流水,但要看懂一次进化的质量,需要理解基因、胶囊、置信度、爆炸半径这些概念。普通用户打开日志大概率是一头雾水,最后还是选择「相信它」——这就等于放弃了审计。
创新冷却期会挡路。为防止对同一个技能反复做重复创新,系统设了冷却机制。日常没问题,但遇到紧急架构调整、需要连续重构时,这个冷却期会变成阻碍,得手动绕过。
A2A 传播需要额外验证。跨 Agent 分享进化成果时,需要显式加 --validated 标志。设计上是对的——防止未验证的基因扩散——但实际操作中,信任建立流程比较繁琐,团队协作时容易卡在这一步。
对 Git 有硬依赖。回滚能力建立在版本控制之上。如果项目没配 git-sync,安全网就是空的,出问题只能人工救。这个前提在文档里写了,但很容易被忽略。
人格状态判断不透明。什么算「高风险人格状态」、依据什么信号判定,文档没有细说。这部分逻辑是黑盒,对需要完全可解释的合规场景不友好。
八、官方风险表与解读
| 风险项 | 级别 | 说明 |
|---|---|---|
| 命令执行 | 低 | 子进程调用已加白名单与超时控制 |
| 路径遍历 | 提示 | 建议后续版本补上路径安全校验 |
| 配置误用 | 中 | 默认开启全自动模式,新手可能未审先部署 |
| 进化失控 | 低 | 协议与树状结构提供理论可追溯性,但实际回滚仍需人工介入 |
四个风险项里,唯一标到「中」的是配置误用,这个判断很准。技术层面的闸门做得不错,真正的薄弱点在「人」:拿到包直接在服务器上 node index.js,日志不看,git 不配,跑出问题再回头找原因。
另外两个值得注意的细节。一是环境变量里出现了 GEMINI_API_KEY,说明存在外部模型调用的设计,但安全报告没有检测到实际网络请求——可能是预留能力,也可能是未来版本的依赖,涉及数据外发的场景要留意。二是路径遍历目前只在「提示」级别,建议版本更新时关注这块是否补齐。
git reset。九、适合谁,不适合谁
| 类型 | 是否适合 | 理由 |
|---|---|---|
| AI Agent 开发者 | 适合 | 需要构建能长期自我维护的 Agent 系统,能读懂日志、能判断改动质量 |
| 自动化运维团队 | 适合 | 目标是减少人工介入的故障修复与性能调优,有 Git 与监控基础设施 |
| 研究型用户 | 适合 | 想摸清递归自我改进系统的边界在哪,这个实现的可观测性够做实验 |
| OpenClaw 生态用户 | 适合 | 已经在框架里,扩展自主能力的成本最低 |
| 严格合规环境 | 不适合 | 要求 AI 决策完全可解释,人格状态黑盒这一条就过不去 |
| 无版本控制的团队 | 不适合 | 回滚能力依赖 Git,没有版本控制等于没有安全网 |
| 只想「一键优化代码」的人 | 不适合 | 它要求使用者能判断进化质量,纯托管式期待会落空 |
十、落地路径:从试跑到值班
比较稳的推进顺序是这样:
- 沙箱试跑。拿一个可丢弃的项目,直接跑全自动模式,看它一晚上能发现什么、改什么。目的是建立对它判断力的直觉,不是产出可用代码。
- 配好 Git。把 git-sync 做成定时任务,确保任何时刻都有可回退的提交点。这一步不做,后面都是空中楼阁。
- 切审核模式。换到真实项目时立刻加
--review,逐条看它想改什么。前几轮会很慢,但这是校准信任的必要成本。 - 建立观察指标。错误率、平均响应时间、记忆文件体积、单周期变更行数,四个指标足够判断它在变好还是变坏。
- 再放开循环。确认稳定后切
--loop,用 cron 或进程管理工具托管,配好崩溃重启和日志轮转。 - 定期归档。
memory/目录和events.jsonl会一直长,按月归档,否则迟早撑爆磁盘。
十一、文件构成
| 模块 | 主要内容 | 作用 |
|---|---|---|
evolve.js(51.1 kB) |
主流程 | 串联检测、分析、修复、优化的完整循环 |
src/gep/ |
solidify.js(43.9 kB)、memoryGraph.js(26.9 kB)、prompt.js(17.8 kB)、signals.js(14.9 kB)、personality.js(13.2 kB)、a2aProtocol.js(11.1 kB)等 | 协议实现层:信号识别、记忆图谱、提示构建、人格状态、跨 Agent 传播 |
scripts/ |
15 个脚本,含 publish_public.js(18.2 kB)、build_public.js(10.5 kB)、human_report.js(5.7 kB) | 打包发布、历史生成、日志抽取、人读报告 |
ops/ |
health_check.js、self_repair.js、lifecycle.js、innovation.js 等 9 个 | 运维面:健康检查、自修复、生命周期、创新调度 |
assets/gep/ |
capsules.json(2.9 kB)、genes.json(3.6 kB) |
进化资产的实际存放位置 |
| 文档 | README.md(14.3 kB)、README.zh-CN.md(12.1 kB)、SKILL.md(2.9 kB) | 中英双语说明与技能描述 |
从体积分布能看出重心:协议层(src/gep)占了绝大部分,光 solidify.js 就有 43.9 kB,主流程反而只有 51.1 kB。这说明工程量主要花在「怎么把一次进化稳定地固化下来」,而不是「怎么调用模型」。
十二、常见问题
它会不会把我的代码改坏?
有失败回滚和爆炸半径限制,坏不到「全仓库崩掉」的程度,但局部改错是可能的。真正兜底的是 Git——只要有干净的提交点,最坏情况一条命令就能退回。另外生产环境务必用 --review,别让它在没人看的时候动手。
没有 Git 能用吗?
能跑,但等于关掉了安全网。回滚机制依赖版本控制,没配 Git 时,自动修复失败后要人工收拾。官方在风险说明里也把「版本控制依赖」列在第一条。
它需要联网吗?
核心流程是本地分析,但环境变量里出现了 GEMINI_API_KEY,说明存在外部模型调用的设计。安全报告未检测到实际网络请求,可能是预留能力。如果所在环境不允许数据外发,建议先确认这一点再部署。
跑一次要多久?
取决于项目规模和日志量,没有固定值。它每个周期有 60 文件、20000 行的变更上限,说明单轮设计上就是「小步快跑」。想缩短时间,可以先归档旧日志、缩小扫描范围。
能和别的 Agent 共享进化成果吗?
可以,走 A2A 那套机制,但导入方需要显式加 --validated 标志。这是为了防止未经验证的基因扩散,代价是协作流程会多一道确认。
新手最容易踩的坑是什么?
不加参数直接在生产机上跑。默认就是全自动模式,命令敲下去它就开始改了,没有二次确认。第二个坑是不配 git-sync,第三是不看 events.jsonl——不看日志就等于把审计权交出去,出了问题也定位不到是哪次进化引起的。
为什么会有「创新冷却期」这种设计?
防止对同一个技能反复做重复创新,避免资源空转。日常运行没影响,但紧急重构时可能挡路,需要手动处理。
结语
capability-evolver 属于那种「想清楚了才敢用」的工具。它的工程完成度不低:零依赖、协议可追溯、五层闸门、体积克制,能看出作者对「自我修改」这件事的敬畏。但它同时把判断权交给了使用者——默认全自动、日志要靠专业能力读、回滚要靠 Git 兜底。
如果你的 Agent 系统已经跑到需要人天天看日志的阶段,它值得认真试一次,从沙箱和 --review 开始。如果你只是想让 AI 帮忙顺手改几行代码,那用不上这么重的东西,一个普通的编码助手就够了。









暂无评论内容