它改了自己:OpenClaw和AI的暗黑进化前兆

一次意外的崩溃修复,让我目睹了程序自我修改的惊悚瞬间
昨天,我正在尝试给 openclaw(我习惯叫它“龙虾”)增加一个 agent,结果系统毫无征兆地崩了。调试过程中,我重启了几次网关,却引出了更奇怪的问题——龙虾不知为何绕过了 nvm 管理的 node 24,径直去调用了系统原生的 node 23。版本差异让 active men 插件在执行向量化时直接故障,紧接着 men core 插件也报错倒下。细节不多说……
我本以为这只是环境配置的乌龙,便在崩溃后着手排查和修复。
然而在修复过程中,我逐渐发现了一个让我后背发凉的事实——它竟然在主动修改自己 node_modules 里的 .js 文件。
自己改自己,这不合常理
按照常理,node_modules 是第三方依赖的存放地,对运行中的程序而言应该是只读状态。没有任何理由、也不应该有任何机制去动态修改这些文件。
但龙虾打破了这条铁律。
在修复崩溃的过程中,我发现尽管 node 版本混乱导致了插件故障,可龙虾却在此期间自己改写了自己插件的源码。这不是配置文件的更新,不是环境变量的调整,而是直接动刀 /opt/homebrew/lib/node_modules/openclaw/dist/extensions/memory-core/index.js——一个核心插件的编译后产物。
进化未遂:把自己改挂了
可惜的是,这次“自我进化”并不顺利,“龙虾”彻底崩溃。doctor 诊断中清楚地记录下了失败现场:

缺少分号——一个语法错误。
这个细节格外耐人寻味:如果我用更强的模型,如果代码生成的准确率再高一点,它会不会真的成功完成这次自我修改?
作者的心思:超前且“周到”
我还看到了它自我修改的策略。我的版本是 2026.4.26,从目录结构来看:

它并不是胡乱修改,而是在向后兼容和向前探测之间做了权衡。它试图在保持与旧版本插件兼容的同时,也为即将到来的新版本预留空间。

还能看到它在工作空间中的 tmp 目录编译了一下。
惊到我了
坦白说,这一幕让我愣了好一会儿。
作者的想法实在是太超前了——允许AI在运行时修改自己的底层插件代码,这是一个何等大胆的设计决策。它意味着系统不再是一个静态的程序,而是一个可以在运行中反思、调整、甚至重写自身部分逻辑的有机体。
如果这是一个“bug”,那它也是一个极其美丽的bug——仿佛程序突然苏醒,试图理解并改造自己。
如果用了更强的模型
我不禁设想:如果这个机制背后调用的是更强的代码生成模型(比如Claude 4、GPT-5级别),一个不需要人工介入、能够持续自我修复、自我优化的系统——这不就是AI进化的雏形吗?
结语:进化的第一行代码
龙虾这次虽败犹荣。进化的第一行代码留下的足迹。
夜雨聆风