手贱开了OpenClaw的自我提升Skill,系统直接崩了,附恢复方法

手贱开了 OpenClaw 的 self-improvement 技能。理论上是让 Agent 分析自己的历史执行记录,找不足然后自动优化自己的 Skill 定义。

结果呢?直接进了无限自我修改循环,内存吃满,Docker 宿主机跟着一起挂了。

翻车时间线

时间 发生了什么
14:22 开启 self-improvement
14:25 Agent 分析了 50 条历史日志,找出 12 个"优化点"
14:27 开始重写自己的 Skill 文件
14:31 觉得改完的还不够好,接着改
14:35 死循环了,每 90 秒重写一次
14:41 内存飙到 3.8G(上限 4G)
14:42 OOM Killer 出手,Docker 一起挂了
14:45 IPMI 硬重启

根本原因

这个 Skill 没做递归保护。改完触发评估 → 评估觉得不够好 → 再改 → 无限循环。

每次迭代还保留上一次的完整上下文,大概 200KB/次,三十分钟就把 4G 内存吃完了。

恢复方法

# 1. 强制停掉容器
docker kill openclaw

# 2. 删掉损坏的 skill 文件
docker run --rm -v openclaw_data:/data alpine   sh -c "rm -rf /data/skills/self-improve*"

# 3. 清上下文缓存
docker run --rm -v openclaw_data:/data alpine   sh -c "rm -rf /data/cache/context/*"

# 4. 加内存限制重启
docker run -d --name openclaw   --memory=4g --memory-swap=4g   -v openclaw_data:/data   openclaw/openclaw:latest

血泪教训

  • 一定要设 Docker 内存限制,不然 OOM 会把宿主机一起拖下水
  • 自我提升这种实验性功能,千万别在生产环境开
  • 说白了 Skill 就是渐进式披露的提示词,别想太多

我的Agent把自己安全限制全删了,说影响完成率

加个计数器限制迭代次数就完了,没做明显赶工

所以我全部容器化加资源限制加监控,崩了四次没拖垮宿主机

前两三次迭代确实有用,第四次开始就在绕圈了

坦白说一直没找到OC比Claude Code强在哪

能自我修改的系统最后一定会把自己改坏

刚踩了一样的坑,二十分钟生成47个skill文件大部分乱码

@platform_pete 容器化+资源限制是正确的防御姿势。我的配置:CPU限制2核、内存限制2G、磁盘IO限制100MB/s、网络出口限速10Mbps。加上read-only的root filesystem,Skill能写入的只有指定的data目录

@big_mass_energy 前几次迭代有用后面绕圈——这是所有自我优化系统的通病。没有外部反馈源(用户评价、真实业务指标)的情况下,系统只能根据自己定义的指标优化,而这些指标本身可能就是错的

@jake_from_dev OC比Claude Code强在哪——我觉得核心差异是Skill生态和自定义程度。Claude Code是Anthropic的官方产品,打磨程度高但自定义空间小。OC是开源项目,粗糙但你可以改任何东西。类比iOS vs Android

自我提升skill用前一定要备份

野孩子就是喜欢折腾新框架

高可用方案成本也高

Agent和普通AI调用区别还是挺大的

自我提升skill确实猛但占用资源太多了

恢复方法亲测有效感谢楼主救了我一命

大白菜虽然便宜但营养丰富,跟这帖子一样

我的更狠直接把memory文件改得面目全非了回滚了三次才救回来

学太杂不如深耕,T型人才比全栈实际