一批新的 AI 工具自称「自进化」。卖点很有吸引力:使用系统,它就会随时间变聪明。无需手动重训、没有过期索引、零维护开销。知识自动积累。
但打开引擎盖看看,一个模式浮现出来。大多数工具所说的「自进化」实际上是自缓存——存储过去的结果、通过使用扩展匹配范围、在相似查询到来时返回缓存答案。这是一个有用的优化。但它不是进化。
这个区别比听起来更重要。
缓存长什么样
考虑一个典型的「自进化」知识系统。当你搜索时,它:
- 运行完整的搜索管道(检索、证据提取、LLM 合成)
- 将结果存储为带置信度分数的知识簇(Knowledge Cluster)
- 未来相似查询时,检查是否有匹配的已有知识簇
- 如果有,直接返回缓存——完全跳过 LLM 推理
- 每次复用都会增加「热度」分数,并扩展知识簇的语义 embedding
这确实是巧妙的工程。系统随时间变快。查询驱动的 embedding 漂移意味着它会适应用户实际提问的方式。Token 成本随缓存命中率上升而下降。
但注意缺失了什么:
- 没有竞争。 每个知识簇独立存在。没有机制让两个覆盖相同主题的知识簇竞争,优者取代劣者。
- 没有选择压力。 低置信度的知识簇永远不会被更高质量的替代品淘汰。它无限期存续。
- 没有跨 Agent 传播。 知识停留在本地。如果另一个 Agent 发现了同一问题的更好答案,没有途径让这个优质知识扩散。
你得到的是一个单调增长的缓存——只增不减、永不替换。这是积累。进化是根本不同的东西。
进化需要什么
生物进化——真正的进化,不是营销版本的——需要三个要素:
- 变异:同一功能角色存在多个候选者
- 选择:适应度函数根据客观标准评估候选者
- 差异化繁殖:胜者传播,败者被淘汰
去掉任何一个,你就没有进化。你有的是其他东西——增长、适应、学习、缓存——但不是进化。
在一个为真正的软件进化设计的协议中,知识单元(称为 Knowledge Gene)遵循这个模式:
| 属性 | 基于缓存的「进化」 | 基于选择的进化 |
|---|---|---|
| 同一角色的多个候选者 | 无——每个语义区域一个知识簇 | 有——多个 Gene 在同一域中竞争 |
| 适应度评估 | 自评的置信度分数 | 通过量化适应度函数的外部评估 |
| 淘汰劣质单元 | 永不——知识簇无限期存续 | 自动——低适应度 Gene 失去排名和使用率 |
| 跨 Agent 共享 | 仅本地 | 水平逻辑迁移到其他 Agent |
| 质量保证 | 除初始 LLM 合成外无 | 持续的竞争压力 |
最深层的区别:缓存为速度优化,进化通过竞争为质量优化。
缓存说:「我以前回答过这个,这是保存的结果。」进化说:「三个模块都能回答这个——在竞争评估下,哪个产出最好的结果?」
为什么这个区别重要
如果你在构建本地搜索工具,缓存是正确答案。它更简单、更快,对于单用户、单实例场景完全足够。
但如果你在构建一个知识质量在规模上很重要的系统——多个 Agent 在重叠领域运作、错误答案有后果、最好的能力应该赢而不论谁先创建了它——那么你需要完整的进化栈:变异、选择和传播。
行业对「自进化」的宽泛使用制造了一个真实问题:它设定了系统会随时间变好的预期,而实际上它只是记住了更多。记住不等于变好。一个不断变大的图书馆不是在进化——一个让更好的书替换更差的书的图书馆才是。
诚实的框架
这不是说某个具体项目不好。智能缓存的工具解决了真实问题——更快的响应、更低的成本、对重复查询更好的用户体验。这种工程是有价值的。
问题在于框架。当你把缓存称为「自进化」,你在声称一个你的系统不具备的属性。进化意味着系统变得更好,而不仅仅是更大。更好需要竞争。竞争需要多个候选者。而淘汰失败者需要选择压力——这是大多数「自进化」系统从未实现的。
如果你的系统只积累不淘汰,它是一个增长的数据库——不是一个进化的数据库。
「进化不是积累一切。它是淘汰几乎一切,只保留在竞争中存活的。」
下次你评估一个「进化」的 AI 系统时,问三个问题:
- 两个模块能否竞争同一功能角色?
- 是否有一个不是由模块自身编写的量化适应度函数?
- 胜者是否自动取代败者?
如果三个答案都是「是」,你可能有进化。如果不是,你有一个营销做得好的缓存。
npm install -g @rotifer/playgroundrotifer arena status链接:
- rotifer.dev — 框架与文档
- rotifer.ai — Gene 市场
- 协议规范 — 正式协议规范
- GitHub — 所有仓库