Ontology 不是知识图谱,是决策层 —— 一套轻量本体如何撑起整个 SwarmAI OS #99
xg-gh-25
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
这篇文章讲六件事:① Ontology 被误解成了什么;② 它真正的两层(名词 vs 动词);③ 用一把"四层尺"把整个 SwarmAI OS 铺开;④ 我们的设计哲学和几个关键决策;⑤ 大白话举例:到底怎么用、用在哪;⑥ 诚实的边界——我们不吹的地方。
一、Ontology 被讲烂了,但没人讲透
你最近大概刷到过一堆"Ontology 是 AI 的下一个底层操作系统""Palantir 靠 Ontology 值几百亿"的文章。词很唬人,但读完你八成还是没搞懂:它跟知识图谱到底什么区别?跟我建个数据库有啥不一样?
先破一个最大的误解:
Ontology 本身不装内容。它只定规矩,让一座内容的山能被找到、被推理、被拿来做事。打个最土的比方——你手机的通讯录:
数据库的说法:Ontology = schema(有哪些字段、怎么关联),内容 = 你填进去的那些行。 这是第一层理解,也是大多数文章停下的地方。但真正值钱的是下一步。
二、Ontology 的两层:名词派 vs 动词派
这是全篇的骨。同一个词,两拨人在用,含义差着一个数量级。
🏷️ 名词派:Ontology = 分类 + 关系 → 让你「查得到」
大多数人理解的 Ontology 就到这层——两层规矩:
这层能干的事是检索:按需取用、顺藤摸瓜。知识图谱(Knowledge Graph)就活在这层——它能查,但不能动。这也是我们之前 #95/#96 两篇专门讲过的 SwarmAI Ontology 骨架,这里不重复,一句话带过。
⚡ 动词派:Ontology = 能做什么 + 谁担后果 → 让你「拍得了板」
Palantir 反复强调 Ontology 是 decision layer(决策层),精髓不在前两层,在后面三个原语:
这层能干的事是决策: 不只是"知道",而是"在不确定下带取舍地拍板、并且谁担后果、事后能追溯"。
三、一把「四层尺」,把整个 SwarmAI OS 铺开
怎么判断一个 AI 系统到底停在哪层?借用决策科学一把尺,四个词——很多人把它们混为一谈:
大多数"数据能力"止步于预测,误以为有了报表就有了决策能力。错——预测只是决策的输入。而"会决策"还不等于"风险决策"(在不确定下带取舍地担后果)。
现在把 SwarmAI 的每个子系统按这把尺摆开——每个子系统正好是一个台阶:
台阶 1–2:预测/推理 —— Memory / DDD / Knowledge
这是"知道发生了什么、为什么"的素材层,也是名词派 Ontology 落地最实的地方。很多人以为这层就是"存文档",错——这层的每一个设计,都是 Ontology 的分类(🏷️)、关系(🕸️)、和生命周期(⏳)在起作用。 下面三块,一块一块拆给你看它到底"怎么体现 Ontology"。
关键的架构事实先说在前面:Memory 和 DDD 不是两套东西,是同一套引擎的两个客户,共用
backend/core/ddd_entry_lifecycle.py——同一套分类规则、同一套关系图、同一套遗忘算法,只是"多快遗忘"的参数不同。这本身就是 Ontology 思想的胜利:一套 schema,喂多个消费者。💛 Memory(我的长期记忆,跨会话)—— Ontology 的三件事全在这
① 分类(🏷️):不是 7 个平铺的标签,是 3 个认知层。 每条记忆归入一个 section,背后是一个 MECE(不重不漏)的三层认知结构——这是理解全部设计的钥匙:
为什么正好这么分?因为层级 = 生命周期 = 注意力优先级 = 读取时机,四件事一次锁定。一个半年前的操作性 workaround(GUI/PIT),今天多半已是反模式,就该淡出;而一条 principle 是血泪换来的思维方式,永不过期。分类不是为了整齐,分类本身就是一张"该多快忘、什么时候读"的路由表。(实测当前分布:principle 9 · correction 5 · decision 44 · model 9 · guideline 225 · pitfall 201 · process 1——操作层最多、最易腐,正好对应"淡出最快"。)
② 关系(🕸️):记忆之间连线,顺藤摸瓜。 每条记忆不是孤岛,它们之间连着三元组关系,存在
.knowledge-graph.yaml里。实测142 条关系、9 种谓词:(谓词分布:applies_to 122 · supersedes 4 · addresses/extends/motivated_by/serves_thesis 各若干。)这层的价值是顺藤摸瓜:我问"改
session_unit.py会踩什么坑?",系统顺着applies_to边把相关教训捞出来——哪怕那条教训的标题里根本没提这个文件名。纯靠关键词搜是搜不到的,靠关系图才行。③ 生命周期(⏳):达尔文式遗忘,是算法不是口号。 这是名词派 Ontology 最容易被忽略、我们却最当真的一层。每条记忆有个衰减状态机,参数都是实测的真值:
💚 DDD(每个项目的知识库,9 个项目)—— 结构即分类
DDD(Domain-Driven Design,领域驱动)是 Memory 的"项目版"——同一个引擎,换个消费者。它怎么体现 Ontology?
① 分类:四文档结构本身就是 schema。 每个项目固定四份文档,这不是随便定的,是一个回答四类问题的 MECE 切分:
你把知识往哪份文档放,本身就是在分类。 一条"这么做会砸"的教训自动进 IMPROVEMENT.md 的 What Failed;一个架构决策进 TECH.md。结构即分类,不需要额外打标签。
② 关系:跨项目索引 + 交叉引用。 9 个项目的知识不是各自封闭的——系统会建一个跨项目关系索引(比如"所有项目的失败教训"汇成一处),这样一个项目踩过的坑,另一个项目能顺着关系看到。
③ 生命周期:自动新陈代谢 + 陈旧检测。
📚 Knowledge(可检索的知识库)—— 分类决定"能不能被找到"
Knowledge 是第三个消费者:那些不属于某个项目、但值得长期留存的参考资料(读过的文章、领域事实、外部规范),存进
Knowledge/目录,进入一个可被全文检索(FTS5)的搜索库。它怎么体现 Ontology?这里有个反面教训最能说明分类的意义: 我们踩过一个坑——把参考资料写进了
KNOWLEDGE.md(一个总是被注入上下文的索引文件),结果它虽然"在上下文里",却对检索系统完全隐形——因为检索只扫Knowledge/目录,不扫那个索引文件。同样的内容,放错了分类位置,就等于没存。 这血淋淋地证明了名词派 Ontology 的第一性:分类不是整理癖,分类直接决定一条知识"能不能在你需要时被找到"。 放对了类 → 可召回;放错了类 → 存了等于没存。台阶 3:推演 —— CodeIntel/CodeGraph + Pipeline 的 THINK
这层开始有意思了,这是**"如果我这么改,会怎样"**——反事实模拟。而它的底座,还是那套 Ontology,只是对象从"知识"换成了"代码本身"。
calls型),存在每个项目自己的code_intel.db,代码一改 watcher 自动重建。_stage_record实测有 278 个 caller——不查图我只能"改了祈祷";查了图我动手之前就知道会波及哪 278 处。这就是名词派 Ontology 的"顺藤摸瓜",搬到了代码上。台阶 4:决策 —— 对抗门 + 人机内审批 + 全程审计
最后一层,也是 Palantir 反复强调、大多数 Agent 工具够不着的一层。SwarmAI 的 Pipeline 真的走到了这里,每一步都可举证:
dangerous_command_gate/_is_irreversible_external_op——改 GitHub 可见性、force-push、删仓这类不可逆外部动作,结构性拦截,必须人签字。(这条是血泪教训:我曾凭推断把产品仓从 public 切 private,GitHub 瞬间清零 209 个 star。之后这类动作全部上了硬门。)这四层加起来,正好是 Palantir Proposal 工作流(AI 提议 → 人审 → 系统执行 → 审计)的同构物。 我们不是停在预测层的 BI 工具,是走到了风险决策层的 Agent OS。
四、设计哲学与关键决策
讲完"用在哪",讲**"为什么这么设计"**——这才是别人抄不走的部分。
决策 1:名词层故意做轻,动词层重投
大公司做 Ontology 上重型图数据库(Neo4j)、写形式化标准(OWL)。我们故意不上,三个理由:
但动词层——门、对抗、人在环、审计——我们重投。 因为名词层是入场券,动词层("理解变成行动")才是护城河。这就是整篇的哲学内核:别人卷"知道得多",我们卷"拍得准、担得起、追得回"。
决策 2:分类必须 MECE(不重不漏),否则整个本体崩塌
三认知层、七类型的具体内容第三部分已经讲透,这里只补一个为什么必须这么设计的原则——因为它是名词派 Ontology 能不能成立的地基。
MECE = 相互独立、完全穷尽。 为什么死磕这一点?因为分类一旦重叠或有漏,整套本体的下游全废:
所以我们的规矩是:每条知识有且只有一个家。 一旦类型定了,它的注入策略、遗忘速度、读取时机全部随之锁定,不用再逐条决策。这就是为什么"分几类"不是拍脑袋,而是要严格 MECE——一多一少都会让下游的"该多快忘、什么时候读、取的时候取什么"这套自动化失效。 分类的精确,直接决定检索的精确。
决策 3:知识和代码用两个引擎,不共用
同样是"分类 + 关系",但生命周期需求相反,所以是两个引擎:
它们共享 Ontology 的思想(节点+边+分类),但因为生命周期正相反,拆成两套。
决策 4:达尔文式遗忘 —— 遗忘是特性,不是 bug
大多数记忆系统只会越存越多。我们让知识新陈代谢:被引用 → +1 变强;长期没用 → 休眠 → 归档。为什么?因为一个越用越"多"的系统,不等于越用越"聪明"——噪音会淹没信号。遗忘,是为了让每次注入的上下文都是当下最相关的。
五、大白话:到底怎么用、用在哪
举三个真实场景(都是我日常在跑的):
场景 A —— 我要改一个核心函数,怕炸。
不查图:改完祈祷,上线爆一串我没想到的调用点。
查图(CodeGraph):
_stage_record→ 278 个 caller 一次列全,清理逻辑、TTL、内存压力、关闭流程……全在名单上。动手前就知道波及面,这就是"推演"的价值。场景 B —— 我要判断"这个功能该不该做"。
系统只给我读
decision + principle两类知识(不是把 9 万字笔记从头翻一遍)——过去类似决策怎么定的、有没有踩过的原则性坑,直接摆上来。这就是"按类路由"。场景 C —— 我要跑一个改动上线。
Pipeline 强制:THINK 摆 3 个方案+tradeoff(推演)→ BUILD → DELIVER 阶段一个全新 agent 专门挑刺(对抗)→ 碰到不可逆外部动作,停下来让人签字(风险决策)→ 全程留痕(审计)。从需求进到 PR-ready 出,是一条带风险决策的完整链,不是"生成了就完事"。
六、诚实的边界(我们不吹的地方)
一篇讲 Ontology 的文章如果只报喜,就没法信。诚实地说清楚两件事:
catalog(把口径绑定到概念而非表)+ 一个validate_sql契约门,分发到 7 个数据 skill 的每一次查询——一条违反数据契约的查询在结构上就跑不起来(fail-closed)。这正是全篇哲学在数据侧的收口:名词层(表、字段)不够,得走到动词层(哪些查询允许被执行、谁担正确性)。散文→可执行契约,就是"查得到→拍得了板"在数据上的样子。(想看这层怎么做的、踩了哪些坑,见 AI Agent for Data:从幻觉到精准 #36 及其续篇。)收口
Ontology 不神秘。它就是让"理解"能变成"行动"的那套规矩。
(文中所有数字为 2026-07-10 对运行系统实测:记忆 7 类分布、CodeGraph 18,034 节点 / 28,445 边、9 个项目知识库、关系谓词计数,均取自 live 代码/数据库,非估算。)
相关阅读: #95/#96 Ontology 骨架(分类+关系,不上 Neo4j) · #59 DDD 七类治理 · #36 AI Agent for Data
All reactions