认真算了一下,"存在论"这个主题我在第九轮里面前前后后写过差不多两万多字的思考,但一直没有抽出时间来把它结构化。直到上周要把整套框架给组里的同事做一次技术分享,我才觉得必须把"存在、关系、演化"这三个词单独拎出来,用足够直白的方式讲清楚。先说结论:AGI 的"存在论",不是给智能体写一段哲学背书,而是决定你如何定义它的世界、它的自我边界,以及它改变自身的方式。这三个问题,直接关系到知识怎么表示、记忆怎么存储、目标怎么维持,甚至关系到你最终做出来的系统到底是"一个会做题的工具"还是"一个能持续面对未知的智能体"。
这一篇先做整体框架的拆解,再落到技术实现层面,最后聊聊我自己实际搭建原型时踩过的一些坑。适合正在做多模态AGI、世界模型、认知架构、智能体自我进化这类方向的人,也适合想理解"AGI 到底和传统AI差在哪里"的读者。没有纯理论堆砌,每一条后面都会尽量带上一段工程上的翻译。
1. 为什么AGI得先谈存在论
1.1 存在论不是形而上的玄学,而是系统边界设定
很多朋友听到"存在论"默认就绕道,觉得这是哲学家才关心的事。但只要你设计过一个稍微完整一点的智能系统,你一定做过存在论层面的选择,只是没意识到而已。
举个例子。做传统NLP的时候,你随便用一套预训练模型,输入的每个token最后都被编码成向量,于是你实际上就做了这样一个承诺:文本世界的"存在"等于"词元序列"。这种承诺当然没有问题,因为你只需要处理文本。可到了多模态AGI,问题就复杂了。你要同时处理图像、音频、文本、结构化数据,甚至可能是环境中的连续状态流。这个时候"世界里的东西以什么方式存在"就不再是无关紧要的哲学问题,而是一个实打实的技术选型。你用离散符号,就要面对符号落地问题;你全用连续向量,就要面对可解释性和组合爆炸问题;你想混合,就要设计不同"存在域"之间的转换规则。
我在给多模态AGI做顶层设计时,第一件事不是选网络结构,而是先写下系统的基本存在论承诺。我把它叫"存在声明"(existence declaration),它回答四个问题:
- 系统世界里的基本单元是什么?(点、实体、事件、状态还是进程?)
- 这些单元是怎么被系统观察到的?(传感器、模态接口,还是内部模型推理?)
- 哪些东西属于"自我",哪些属于"外部"?
- 系统自身的持续存在条件是什么?
这些问题看起来比较"软",但它们直接决定了下游的知识表征、因果模型、记忆系统和目标函数。比如:如果你承认"事件"也是基本存在单元,那你的模型就不能只做静态实体抽取,还要有事件触发、事件间因果关系的表征机制;如果你承认"进程"是一种存在,那你的世界模型就要能表达阶段、状态迁移和并发。这些不是细节,而是架构级的分叉点。
1.2 别只盯行为,要看存在方式
我过去很长一段时间,一直在"智能行为"这个层面思考大模型。模型能写诗、能写代码、能回答数学题,我觉得它就是强了一些的AI,离AGI还有距离,但方向是一样的。后来有一次调试一个持续学习系统,我忽然发现,单靠行为指标根本无法判断一个系统是不是在"演化"——它可能只是不断地记住新任务、再在旧任务上灾难性遗忘。
那个瞬间让我意识到,"行为"是主体发射出去的"效果",而"存在方式"才是主体的内部状态。一个机器人可以行动得像个真正的办公助理,但它的内部如果没有任何关于"自己是谁、自己在干什么、自己为什么这样做"的表达,那它在存在论意义上就不是一个"我",而只是环境的复杂镜像。
AGI 与弱AI最大的差别,正在于它是否拥有一种"最小实体性":它在处理任意任务时,能够维持一个关于自身目标、自身历史、自身局限的稳定内模型,并且能够主动去修正这个内模型。这个内模型不是回答"我是谁"的聊天话术,而是整个系统所有推理、规划、决策都要回归的公共锚点。一旦把视角从"行为"切换到"存在方式",很多经典难题就获得了新的回答框架。比如可解释性:传统做法是给网络输出一个重要性热力图;存在论的做法会更进一步,要求系统能够说出"我的哪个存在条件受到了威胁,所以我需要采取这个行动"。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. "存在、关系、演化"三要素的框架拆解
2.1 存在:从实体本体到过程本体
在我的框架里,"存在"不是指静态的一组对象,而是指系统对"什么算数"的界定。传统AI的世界观是"实体本体":世界上预先摆着一个个实体,猫、狗、桌子、用户,系统的工作就是识别和操作这些实体。这个本体假设在封闭场景够用,但一进入开放世界就抓瞎。开放世界里有太多东西不是"铁板一块的实体",比如一团正在形成的风暴、一次正在进行中的会议、一段正在演化的人际关系——它们更像"过程"而没有稳定边界。
所以我更偏向"过程本体":把每一个存在单元理解为在时空中持续展开的过程,实体只是过程在某个时空尺度上呈现出的稳定形态。这个视角对AGI特别重要,因为通用智能必须处理时间和变化。今天一个系统如果只知道"张三是一个用户",它不会理解"张三正在从新手变成专家"这件事。可后者才是世界真实的样子。一旦你接受过程本体,世界模型的设计就从"帧/实体的列表"转向"过程的场"——每个对象都有起点、终点、当前动量、与其他过程的耦合关系。
这个过程本体听起来抽象,转化到工程上有三个阶段:
- 用连续状态记录取代离散快照,至少在建图时不要把世界切成不连续帧。
- 给每个"实体"附带一条时间上的发展路径(trajectory),而不是只有当前属性。
- 把"变化率"本身当成可计算特征,让系统可以识别"一个过程正在加速、收敛或者崩溃"。
做到这三点,系统对世界"存在"的描述就从静态切片升级成了动态场。
2.2 关系:从离散对象到关系网络
"关系"这个维度,很多人以为就是知识图谱里的三元组。但知识图谱只是关系的一种显式编码,实际上,注意力机制、图神经网络、向量检索,这些主流技术全都在做同一件事:捕捉元素之间的关系结构。区别只在于显式和隐式、局部和全局。
我先给关系分一个层级,方便后面讨论:
| 关系层级 | 举例 | 适合的建模方式 |
|---|---|---|
| 表面关系 | "猫坐在垫子上" | 视觉空间关系、语义角色标注 |
| 因果关系 | "下雨导致地面湿" | 结构因果模型、干预实验 |
| 意图关系 | "他想让我开门" | 心智理论、目标推理 |
| 时间关系 | "先发生A,后来发生B" | 时序逻辑、过程模型 |
| 价值关系 | "这件事对我更重要" | 偏好学习、效用函数 |
过去的模型大多只做第一层。多模态大模型能回答"猫在哪里坐",但对于"为什么猫选择这个位置"就无能为力。要把关系层级打通,关键在于不要让每个关系孤岛化,而是要让低层关系成为高层关系推理的物质基础,高层关系反过来调节低层关系的权重。这可以用一个双向连接来实现:底层网络负责在原始输入中找出候选关系,高层推理判断哪些候选关系是"解释性"的,再把结论反馈回底层,调整下一轮感知的注意分配。
另一个容易被低估的点,是关系的"密度"。知识图谱很容易做得又离散又稀疏,而真实世界的关系网络是稠密、连续且不断重组的。所以我更愿意把关系建模为"关系场"而不是"关系图":所谓场,就是空间中任何一个状态组合都能得到一个关系强度,而不是只有预先定义好的边才有关系。这点在注意力机制里其实已经有了雏形——所有token两两计算相关度,就是在一个token序列上定义了稠密关系场。把这种思路从序列推广到任意模态、任意时空尺度,就是多模态AGI可以做文章的地方。
2.3 演化:从静态正确到动态适应
"演化"这个维度回答的问题是:系统如何既能保持身份稳定,又能不断改变自己。很多做模型的人对"演化"的理解停留在"通过反向传播更新参数",这太初级了。参数更新只是最外层的权重调节。一个完整的演化框架应该包含多个时间尺度:系统在毫秒级做出决策、在秒级调整注意力、在分钟级更新工作记忆、在小时级重构长期记忆、在更长时间尺度上修正自己的世界模型、目标和能力模型。
我把这些时间尺度归纳成"四层演化环":
- 第一层:感知-行动环。每时每刻都在发生,输入到输出的映射,对应前向推理。
- 第二层:策略环。几步或几十步之内,根据反馈调整动作选择,对应强化学习里的策略梯度。
- 第三层:模型环。在经验积累到一定程度之后,更新对世界的预测模型,对应世界模型的再训练或在线学习。
- 第四层:本体环。在更长周期上,修正系统的基本假设——什么是重要的、目标是什么、哪些边界应该重新划分。这一层很少有人做到,但它才是真正的"存在论演化"。
前两层解决"在既定规则下做得更好",后两层解决"既定规则本身怎么跟世界对齐"。一个没有第四层循环的系统,本质上无法应对环境底层逻辑的突变。而一旦加入第四层循环,就必须处理身份连续性问题:如果系统改掉自己最重要的目标,它还是原来那个系统吗?这是存在论给工程出的难题,我后文会给出一种"锚点不参与演化"的设计方案。
3. 方法落地:把哲学框架翻译成技术设计原则
3.1 存在层:给AGI一个"可解释的存在界面"
把存在论落到工程,第一步不是写模型,而是给系统定义一个"存在界面"——即系统对世界开放哪些观察通道、对自我保留哪些内部状态、对外输出哪些行为效果。这个界面如果定义得太窄,系统就像被关在黑箱里,再聪明也摸不清世界规律;定义得太宽,系统会被无关信息淹没,找不到采样焦点。
我建议在项目一开始,为每个智能体写一份"存在声明"配置。这不是正式代码,但是后续所有模块设计的约束源。下面是我在一个多模态办公助手上实际用过的简化版本:
yaml复制existence_interface:
world_channels:
- name: visual_state
type: continuous_visual_latent
source: multimodal_encoder
- name: language_state
type: token_stream
source: language_model
- name: proprioceptive_state
type: action_history_embedding
source: policy_buffer
self_boundary:
included: [goal_state, self_model, episodic_memory]
excluded: [world_state, other_agent_state]
continuity_rule:
identity_anchor: core_goal_function
mutable_modules: [world_model, policy, perception_filters]
这份声明里最重要的部分不是"有哪些通道",而是"included/excluded"的边界划分:哪些状态被算作系统自身,哪些不属于自身。边界划得不清楚,系统会在"我应该控制这个变量"和"这个变量是外部噪声"之间反复横跳,表现出来就是幻觉、目标漂移和规划失效。这也是很多agent应用容易出问题的根源:它们把环境反馈当成理所当然的确定信息,而没有在存在论上说明"这个反馈属于世界,不是自我的一部分"。
3.2 关系层:以关系场作为核心记忆结构
传统记忆系统有两种:向量的显性记忆(embedding lookup)和符号结构记忆(知识图谱)。我认为在AGI里,真正核心的记忆结构应该是"可查询的关系场":既不是纯向量,也不是纯三元组,而是一张稠密的关系强度矩阵,它能够回答任意两个单元之间的任意关系维度上的强度,同时又能被投影成稀疏的符号图方便显式推理。
我自己的实现路径分三步:
- 用多模态编码器把所有经验转化为一个统一的状态表示空间。
- 在状态空间之上维护一个边权重可学习的记忆图谱,节点是"过程性实体",边是"关系强度向量"(包含因果强度、时间先后、意图匹配度等维度)。
- 所有新输入进入系统时,先与这张图谱进行匹配,产生当前位置的"关系上下文";推理时不是去数据库中检索事实,而是在这个关系场上做路径积分式的传播。
这样做的优势是:系统记忆的不再是孤立事实,而是事实之间的"位置感"。比如"张三认识李四"只是一个三元组,但如果在关系场上,它还天然联系到张三对李四的信任程度、他们最近互动的时间衰减权重、李四在张三目标网络中的嵌入位置。所有这些都在同一个结构中,不会出现知识图谱那种"存了关系但用不上"的尴尬。
3.3 演化层:双重循环的自我更新机制
演化层是框架里最难实现的一层。我的建议是最小版本先从"双重循环"开始:一个循环负责稳态运行,另一个循环只在检测到持续异常时激活,负责修改系统自身的某个模块。
稳态循环(快循环)可以用经典的"感知-预测-行动-校正"来跑,这里不再赘述。关键在慢循环的设计。我设计了一个"异常累积触发器":系统维护一个内部变量,记录"当前世界模型对最近经验流的平均预测误差",并把它平滑化。当误差持续N个窗口高于阈值时,系统不是立刻更新模型,而是先启动"存在核对":检查到底是世界变了、还是自身的某个存在条件没被满足(比如目标已经不可达)、还是感知通道出问题。
python复制# 伪代码:慢循环触发
if smooth_prediction_error > error_threshold and window_count > N:
diagnosis = run_existence_audit()
if diagnosis == "world_changed":
schedule_world_model_revision()
elif diagnosis == "goal_unachievable":
propose_goal_revision()
elif diagnosis == "sensor_degraded":
recalibrate_perception()
else:
defer_revision()
这样可以让"演化"不失控:系统不会因为一个异常样本就打乱整体结构,而是先做归因,再决定改哪一层。长期来看,这套机制既保持了存在锚点的稳定,又允许模型层和目标层逐步演化。
4. 实操推演:一个基于该框架的AGI原型设计
4.1 结构设计:存在-关系-演化三层架构
现在把前面几部分合起来,给出一个可参考的整体架构。这个架构不是某个已上线产品的完整设计,而是我把"存在论"框架作为顶层约束推导出来的原型结构,供做认知架构的人参考。
text复制+---------------------------+
| 世界输入: 视觉/语言/传感器 |
+-------------+-------------+
|
v
+-----------------------------+
| 存在界面层 existence_interface |
| - 世界通道定义 |
| - 自我边界划分 |
| - 连续状态归一化 |
+-----------------------------+
|
v
+-----------------------------+
| 关系场层 relation_field |
| - 多模态状态空间 |
| - 稠密关系记忆图谱 |
| - 关系路径传播/注意力 |
+-----------------------------+
|
v
+-----------------------------+
| 演化层 evolution_loops |
| - 快循环: 感知-预测-行动 |
| - 慢循环: 诊断-归因-修正 |
| - 本体环: 目标/边界再协商 |
+-----------------------------+
这层与层之间的连接不是单向的。演化层在慢循环里可以反过来调整关系场层的边权重衰减系数,也可以调节存在界面层的感知滤波器。这样,整个系统就形成了一个能够在保持身份的同时持续自我修改的闭环。
如果你要做自己的原型,我的建议是:"先做窄,再放宽"。第一版别追求全模态、全任务,先固定一个中等复杂的环境(比如一个多房间/多参与者/带时间变化的模拟环境),实现上面三层的最小闭环。第二步再把多模态通道加进来,最后才放到开放任务上测。
4.2 关键参数与评估维度
我把这套框架在实际项目中可能要调的参数整理成了下面这张表,它可以作为架构评审时的检查单。
| 层级 | 关键参数项 | 建议初始值 | 具体判断依据 |
|---|---|---|---|
| 存在界面层 | 自我边界模糊容忍度 | 0.3 | 边界过于刚性会导致无法学习新角色,过松会引发目标漂移 |
| 存在界面层 | 状态更新频率 | 0.5s~2s | 与环境动态速度匹配,过快的重采样会让慢变过程被切碎 |
| 关系场层 | 关系强度衰减半衰期 | 1天~7天 | 太短会快速遗忘长期结构,太长会让记忆僵化 |
| 关系场层 | 关系维度数量 | 8~16维 | 至少覆盖因果、时间、空间、意图、价值五类,但不要一开始铺太宽 |
| 演化层 | 异常平滑窗口N | 32步 | 太小会频繁误报,太大会错过演化窗口 |
| 演化层 | 模型修订最小间隔 | 10分钟 | 防止慢循环被高频噪声触发 |
评估维度上,我建议不要只看"任务准确率",要加四类指标:
- 存在连续性指标:系统在同一目标下连续运行多长时间不发生目标漂移。
- 关系一致性指标:在关系场中查询同一关系,不同时间点给出的强度是否稳定。
- 演化适应性指标:环境规则突变后,系统在多长时间内恢复预测误差到正常水平。
- 身份保持指标:经过多次模型修订之后,系统对"我是谁/我要做什么"的关键状态是否保持一致。
这些指标不一定要做成漂亮的可视化仪表盘,但它们应该进入每一次实验的日志系统。否则你没法判断一次模型更新是"演化"还是"发散"。
4.3 "第九轮展开"之后还缺什么
按我自己的路线图,这套框架目前只解决了"单智能体存在论"。也就是说,它描述了一个AGI如何作为独立存在者与世界发生关系、如何演化自身。但现实世界里不存在一个孤立的智能体——AGI一定处在多智能体共存的网络里。因此下一轮要补的,是"共在"问题:多个智能体如何共享一个关系场?它们之间存在哪些不可以被还原为单体验的内部关系?当两个智能体的演化方向冲突时,用什么样的存在论原则来仲裁?
我目前比较倾向的方案是"共享世界模型 + 私有存在锚点":所有智能体使用同一个环境预测模型,但每个智能体有自己的目标函数、自我表征和演化边界。这样就避免了"为了协作而抹掉个体性"的问题,也防止了"每个智能体各建一套世界模型导致上下文不对齐"的混乱。不过这个方案还有很多细节没验证,比如共享模型引发的隐私问题、私有锚点演化节奏不同步时的通信成本等。这些是后续系列里我会重点尝试的内容。
5. 常见误区和排查思路
5.1 误区一:把"存在论"当成知识图谱升级
这是我跟不同团队交流时遇到最多的问题。很多人听完这套框架,第一反应是:"哦,你说的是不是把知识图谱加强一下,多加几种关系类型?"不是。知识图谱是"存在"的一种显式投影,但存在论是关于系统整体如何定义世界和自我的一组承诺。就算你用上了十种关系类型、百万实体节点,如果系统没有自我边界、没有过程实体、没有演化缓冲,它仍然停留在"符号操作"的层面,不会因此获得存在者的维度。
判断方法很简单:问你的系统"如果没有这个实体,世界会发生什么变化"?它如果答不上来,说明它只有一个数据库,没有存在模型。
5.2 误区二:只做演化,不做存在锚点
另一类常见的翻车,是听了"系统要持续演化"之后,就放开手脚让模型不断自我更新。结果跑上一段时间,系统对旧任务的性能下降,或者目标函数被用户偏好带偏,甚至出现自我目标重写后整个链路崩溃。问题出在缺少"存在锚点"。
我用一个类比来解释:一个人可以换职业、换城市、换身份认同的很多细节,但只要他还是那个有特定人生史的个体,他的"存在连续性"就没有断。锚点不一定是不可变的具体目标,而可以是"对自己历史连续性的记录"这一抽象要求。我的做法是设置一条最小不变式:无论模型怎么更新,系统必须保留一段连续的自述——"我过去是谁、我现在观察到什么变化、我选择了如何调整"——这段自述本身可以被修改,但修改行为必须被记录进持久记忆。这样任何一次演化都可以被追溯、撤回、解释,系统的"存在"就有了历史厚度,而不是随时可能重置的无根状态。
5.3 误区三:关系高于一切,忽略局部的实质性
还有一种观点认为,既然世界是关系的网络,实体就应该完全溶解在关系里。这在哲学上是有争论的,工程上更是灾难。因为如果你把所有节点都还原为关系定义,当关系场局部信息不足时,就没有任何锚点可以帮助系统进行推断。举例来说,一个刚从摄像头画面里看到的从未见过的物体,如果你只有"它与周围节点的关系",但没有任何关于"它本身颜色、形状、纹理"的局部特征,这个物体的关系场权重就全部悬空,系统无法初始化任何推理。
所以我的框架里存在与关系不是对立的,而是两级互补:实体是关系场的"局部凝聚",关系是实体之间的"连通桥梁"。设计上要保证,局部感知特征和全局关系上下文可以互相初始化、互相修正。缺失任何一边,系统都会出现"有结构没内容"或"有内容没结构"的失衡。
6. 写在后面:个人心得与下一步
我实际操作下来的体会是,把"存在、关系、演化"这套哲学框架落到AGI设计里,最难的不是理解三要素本身,而是忍受它在早期带来的一系列"模糊感"。你没办法明确地写出"存在层收敛曲线"这样的指标,也没法用 A/B 测试直接证明"自我边界划分得更合理"。这种感觉很抓狂,很多工程习惯会被迫改变。
但反过来,一旦熬过前面一两个月,你会发现它的回报非常明显:系统设计时内部冲突变少了很多。以前做多模态融合、做持续学习、做目标调节,都是各想各的;现在有了统一的存在论约束,很多决策变得有依据——比如"该不该让一个模块修改另一个模块?"会先回到自我边界和关系场里做判断,而不是拍脑袋。
最后分享一个实操上的小建议:如果你想在现有大模型或agent系统里试这套框架,不要从头搭建,直接在现有系统外面加一层"存在声明"配置和一个"慢循环监控器"就好。先用YAML把你认为的系统边界、核心目标、不可丢弃的状态写下来,然后写一个独立进程定期对比当前系统行为和这份声明的偏差。你会发现,原先很多莫名其妙的失败(目标漂移、幻觉、任务遗忘)都能归因到某个存在声明被违背了。这算是用最小成本验证存在论价值的最好方式。
