ENZH

代码开始自己写自己了

代码的衔尾蛇——Agent 阅读并修改自己的源代码代码的衔尾蛇——Agent 阅读并修改自己的源代码


Peter Steinberger 花了大约一个小时,做出 OpenClaw 的第一版。结构简单到不好意思:把 WhatsApp 消息转给 Claude Code CLI,再把回复传回 WhatsApp。就这么一个桥接,两个月后变成了 GitHub 史上增长最快的开源项目,超过 25 万颗星,没有风投,也没有团队。

比起增长曲线,更值得看的是他接下来做的事:让 Agent 认识自己。这种认识不停留在"能读文件",而是知道自己的架构长什么样、跑的是哪个模型、能调用哪些工具、文档放在哪。自我认知一旦建立,质变就跟着来了,OpenClaw 是我见过最清晰的证明。

Peter 用这个框架来开发框架本身。调试的时候,他不自己翻代码,直接问 Agent:"你看到了哪些工具?能自己调用这个工具吗?读一下你的源代码,搞清楚问题出在哪。"Agent 知道自己 harness 的架构、运行的是哪个模型、文档放在什么位置,对自身有了相当深的认知。

再往后,事情变得更有意思。从没写过代码的用户,开始给项目发 Peter 所说的"提示词请求":用自然语言描述想要的修改。Agent 读完请求,再读自己的源代码,理解架构之后写出实现,提交 PR。"人们谈论自我修改的软件,"Peter 说,"我就做出来了。"


第六篇里,转变是从写代码到管理 Agent;第八篇里,洞察是缰绳释放了模型的潜力。会自我认知的软件补上了最后一块缺口:Agent 自己就能当自己的管理者。一个一小时搭出来的原型,就这样开始了自我进化。


回头看,迹象早就出现在我自己的经历里。我在 GCP 上搭过一套框架,接入飞书,让非技术的同事直接跟 Agent 协作,第五篇写过这件事。当时我没有足够强调之后发生的事:Agent 做的早就超出了回答问题。有人需要一个不存在的小工具,它直接做了一个;某个工作流效率低,它自己找到了捷径。指令还没下,它已经拿着手头的一切把问题解决了。

Peter 在马拉喀什也遇到了同样的事。他随手给 Agent 发了条语音消息,而框架当时只做了文字和图片支持。Agent 收到一个没有扩展名的文件,检查文件头,识别出是 Opus 音频,用 ffmpeg 转码,又在环境变量里找到 OpenAI 的 API key,调用转录 API,最后回答了他的问题。"怎么做到的?"Peter 盯着手机说。

模型的智能一直都在。缰绳给了它行动的许可;自我认知,也就是知道自己有什么工具、代码长什么样、能做什么,把许可变成了主动性。现在它靠理解自己手里有什么来解决问题,用不着等人安排。工具只做你说的事,协作者理解自己的能力,还会创造性地运用。一个 Agent 认识了自己的源代码之后,就很难再把它叫做工具了。


Peter 预测 80% 的 App 会死,我觉得他说得对。每个独立 App 都是一组关于用户需要什么的固化假设:MyFitnessPal 假设用户想手动记录饮食,Eight Sleep App 假设用户想手动调床温,日历 App 假设用户想手动创建事件。一个了解你的日程、位置、习惯的 Agent,根本不需要这些假设。"提醒我明天的晚餐,邀请两个朋友,给他们发消息",一句话说完就搞定,不用打开任何 App。

这是第四篇"日抛型软件"论点的逻辑终点。我当时说,AI 让软件便宜到可以按需生成。真正的终局更激进:你甚至不需要生成软件,Agent 本身就是软件。每个 App 都退化成一个慢速 API,Agent 绕着它们走:有权限就走 API,没权限就开浏览器。Peter 就看着自己的 Agent 愉快地点掉了"我不是机器人"按钮,Agent 才不在乎 UX。

Agent 能量身定制软件,做出精确匹配需求的一次性工具,用完即弃。相比之下,按月收费、只满足 80% 需求的订阅服务,存在的理由越来越站不住。第九篇说过,数据锁定、工作流锁定、集成复杂度这些护城河正在每个层面崩塌。这件事不只发生在企业 SaaS 上,手机里的每个 App 也一样。


"软件开发"的含义会不会就此改变,现在下结论还早。能确定的是,在 OpenClaw 的仓库里,需求用自然语言进来,Agent 读懂自己的源代码后动手修改架构,连 PR 都是它自己提的。代码自己改自己,在这个项目里已经跑成了日常。



© Xingfan Xia 2024 - 2026 · CC BY-NC 4.0