从 Agent 的核心循环说起
Agent 的核心其实就是一个循环:收集信息 → 整理 → 决策 → 执行 → 再收集。用代码表达的话,本质上就是不断调用 llm.Chat:传入 prompt,拿到 response,然后把 response 拼进下一轮的 prompt,再传进去。
看起来很简单对吧。但这里藏着一个在传统软件开发里会被"打手"的操作——上一轮的输出(数据),直接变成了下一轮的输入条件(控制流的一部分)。
传统软件工程花了几十年建立一个共识:数据不应该被当作控制流。DEP、NX bit、沙箱机制,全是为了维护这条线。但 Agent 天然就在打破它。
其实"融合"才是原点
我也不确定该不该扯这么远,但回到计算理论的源头看,确实挺有意思。1930 年代 Church 的 λ 演算里,根本没有"数据"和"代码"的区分。函数就是值,值就是函数。布尔值是函数,条件分支也是函数,一切都是 λ 表达式。
数据和代码的分离反而是后来的事。图灵机把"纸带上的符号"和"状态转移规则"分开了,冯诺依曼架构进一步把这种分离固化成硬件设计。我们接受这套范式,不是因为它更"正确",而是因为它更可预测——人类需要理解和控制系统,需要知道程序在干什么。
代价呢?丧失了自适应能力。程序不能根据运行结果修改自己的逻辑。于是这几十年来,强类型语言、版本控制、迭代模型、A/B 测试……本质上都是在"数据不能变成代码"的约束下,笨拙地模拟"让数据影响行为"。
Agent loop 的三个层级
如果把 Agent 里数据和代码的融合分层来看,大概有三级:
- Level 0:静态混合。 system prompt 里的指令本身就是"数据格式的代码"。你写的 prompt 既是文本(数据),也在告诉模型怎么做(代码)。几乎所有 LLM 应用都在这一层。
- Level 1:动态反馈。 Agent 的输出被拼回 context window,改变后续行为。memory、tool results、chain-of-thought 都属于这层。关键特性是短期可逆——context window 有大小限制,旧信息会被截断。
- Level 2:持久化自修改。 Agent 把经验写入长期记忆,修改自己的 prompt 模板,甚至修改自己的工具代码。这才是真正的自我进化。关键特性是不可逆或难以回滚,修改的影响可能很多轮之后才显现。
这个分层没想到跟生物学对得上。DNA 是蓝图,但转录因子本身也是基因编码的蛋白质——代码产生的数据反过来调控代码的读取,这就是 Level 1。表观遗传不改底层 DNA 序列,但通过化学标记改变基因表达模式——不改 system prompt,但通过 memory 改变行为,这是 Level 2。免疫系统更极端,直接剪切拼接基因片段来产生新抗体,为了适应未知的病原体主动修改自己的代码。
所以 Agent loop 可能不是软件在模仿生物,而是:当系统复杂到需要自适应时,数据和控制流的融合就是必然结局。
那到底怎么给 Agent 自由?
这就到了真正实操的部分。答案不是"给"或"不给",而是"在哪里给"。
生物学里基因组有两种区域:高度保守的区域(核心代谢通路,几十亿年没怎么变,动了大概率会死)和高度可变的区域(比如免疫球蛋白的可变区,系统鼓励它突变和重组)。
Agent 架构应该也这样设计:
- 保守区: 核心不变量、基本原则、安全边界,难以修改
- 可变区: 行为策略、知识记忆、工具使用偏好,鼓励修改和进化
回顾软件开发的历史,其实就是保守区在缩小、可变区在扩大的过程:
- 一开始全是保守区——瀑布模型、强类型、完整的提前设计,代码写完就不该变
- 最近二十年引入可变区但严格隔离——数据库、依赖注入、A/B 测试,配置可以改行为但配置不能改代码
- 现在边界溶解——Agent 的 prompt 既是数据也是代码,tool calling 的结果直接影响下一步执行什么,Agent 可以写代码、执行代码、根据结果修改策略
不是无限自由,是有结构的自由
纯粹放开让 Agent 自己玩,在工程上是灾难——系统不可调试也不可信赖。就像纯粹的存在主义虽然说"存在先于本质",但没有任何先验结构的系统就是随机漂移。
所以搭 Agent 的时候,需要一组很难被自身经验改写的核心约束,让自由进化不至于变成随机游走。LLM 本身的工作方式其实也印证了这一点——token 没有固有语义,语义由 context 里的关系决定。关系可以探索,意义可以创造,但得有一个稳定的框架来承载这些探索。
实际搭 Agent 的时候,我觉得可以这么想:先把你的 Agent 架构里哪些是"保守序列"、哪些是"可变区"想清楚。核心安全约束、输出格式规范这些锁死;行为策略、工具选择偏好、记忆管理这些放开。画出边界是一回事,让系统在运行时真正尊重这个边界,又是另一个值得深挖的问题了。