自修改软件为什么因 AI Agent 变得可行
过去谈“软件修改自己”,很容易让人想到不可控、不可维护、难以调试的黑魔法。因为传统软件一旦运行时动态改变自身结构,人类工程师很难追踪变化来自哪里、为什么发生、是否破坏了系统约束。
但 AI Coding Agent 让这个概念出现了新的形态。这里的“自修改”不是程序在运行时随机改写自己,而是:一个 coding agent 能读懂自己的代码库,并通过正常的软件工程流程,为自己增加扩展、工具、界面或工作流能力。
Pi 就是一个典型例子。它的核心很小,只提供读写文件、编辑、bash 等基础能力,但暴露了足够多的扩展点。用户如果需要 MCP,可以让 Pi 为自己实现 MCP 支持;如果需要特殊的 plan mode,可以让 Pi 写一个扩展;如果想改 TUI,也可以让 Pi 修改自己的界面代码。
这让软件从“被动等待开发者发布功能”变成“用户可以在本地让工具长出自己需要的能力”。过去这件事门槛很高,因为用户必须理解项目结构、语言、构建流程和插件机制。现在 Agent 可以承担大量探索和机械修改工作,人只需要描述目标、审查 diff、运行验证。
但自修改软件成立有几个前提。
第一,核心要小。核心越大,Agent 修改时越容易误伤系统。Pi 的极简设计降低了自修改的风险:大部分变化应该发生在扩展层,而不是侵入核心。
第二,扩展点要清晰。自修改不是随便改源码,而是围绕明确 hook、module、tool、template、UI slot 等边界进行局部演化。好的扩展机制是自修改软件的安全接口。
第三,变更要可回滚。自修改仍然应该走 Git diff、测试、review、commit。Agent 可以写代码,但不能绕过工程治理。真正可怕的不是软件修改自己,而是修改之后没有证据、没有验证、没有回滚路径。
第四,人仍然负责方向。Pi 能修改 Pi,不代表 Pi 应该决定自己要成为什么。Agent 负责实现扩展,人负责判断这个扩展是否值得存在,是否应该进入核心,是否只是个人工作流里的临时能力。
所以,AI 时代的自修改软件不是“程序获得自主生命”,而是一种新的可塑性:软件可以在用户手里更快地适应具体工作流。它真正改变的是工具演化方式——从厂商预置功能,转向用户与 Agent 共同塑造工具。
相关:为什么 Pi 选择极简设计、Agents、MCP 与 CLI:AI 工具集成的两种路线