OntoOS 下一程
研发本体 · 路线规划 · 2026-10-01

OntoOS 下一程:对照 Snowflake 的本体路线,补齐语义层、图谱层与 Agent 上下文基底

线索是一篇拆解 Snowflake 本体路线的文章(Horizon Catalog → Semantic Views / Studio → Knowledge Graph → Cortex Sense)。本文把它的四层逐一核验、逐一对位到 OntoOS 今天的真实状态(发布区快照 2026-10-01 05:17,4,157 个采集源、148 个对象、43 个实体、79 条登记关系、13 条跨域桥、8 个 MCP 工具、7 条命名查询),得出一个结论:OntoOS 的目录层与抽取层已经比 Snowflake 的同层更"深"(它能从代码反解出行为语义),但语义层不是一等公民、图没有统一抽象、给 Agent 的上下文是按需拉取而不是全局基底。下一程的主线是把本体从"技能文档与 Python 注册表里的知识"变成"湖仓里可查询、可版本、可评测的一等对象"。

数据口径:发布区 publish_20260930_130033(黄灯)· 注册表 console/registry · 仓库 ontoos_extract @ 2026-09-30(2,205 提交 / 52 ADR) 读者:研发中心 / OntoOS 规划 外部事实已对一手来源核验,见附录
SECTION 0

一页摘要

三个判断。① Snowflake 没有"做一个本体",它把本体拆成四个各自可售卖、各自成熟的层,而且每一层的产物都是仓里的对象(目录条目、语义视图、KG 节点边表、上下文基底),由同一套 RBAC 治理——这是"数据平台公司做本体"的范式 B。② OntoOS 走的本来就是范式 B(本体存在湖仓、SQL 主线、图在仓里),而且在"抽取"这一步比 Snowflake 深一个量级:它不只盘点表,还从容器镜像反解出端点 / ORM / MQ / 调用线索 / 配置真值这些行为语义边——这是研发本体独有的护城河。③ 但 OntoOS 的本体知识今天住在三个地方——技能仓 Markdown(952 KB)、控制台的 Python 注册表(43 实体 / 79 关系)、36 个派生视图——没有一处是湖仓里可被 Agent 一次性读取的"全局本体",这正是 Snowflake 用 Semantic Views + KG + Cortex Sense 三层补上的东西。

五项决策(建议)

  1. 本体入仓:把注册表(实体 / 关系 / 同义词 / 度量)导出为版本化的 ontology.yaml 契约包,并物化为 dws.kg_node / dws.kg_edge 两张表(随每日发布生成,不是视图)。
  2. 语义层成为一等公民:在"关系 + 命中率"之外补齐 Semantic View 的另外两件事——受控词汇(同义词 / 中文名词 / 拼音)与度量(measure),先接到 search 与命名查询。
  3. 给 Agent 一份全局本体基底:生成 ≤32 KB 的 Ontology Manifest 作为 MCP instructions / Resource 下发;用 ops-agent-bench(85 题)做"有 / 无 manifest"对照,复刻 Cortex Sense 的 47→83 实验但可复现。
  4. 图在仓里、事实表不进图:2,800 万调用边、3,268 万方法节点留在事实表与物化线索;KG 只装"实体 ↔ 实体"的本体级边(量级百万以内,递归 CTE 跑得动——与 Snowflake 的判断一致)。
  5. 不做 Action 层,做它的只读半身:坚持只读与交接边界,但把"改表 / 改接口 / 改配置"的变更意图建模为可预检的操作类型(impact precheck),输出到发布流程与 Apollo。

三阶段节奏

A · 本体入仓(2026-10 → 12):契约包 + kg_node / kg_edge + neighborhood 命名查询 + Manifest v0 + bench 对照 + 发布区明文凭据收口(P0 前置)。

B · 语义层一等公民(2027-01 → 06):度量与同义词进 spec、推荐边(自动候选 + 人审)、控制台"本体页"(Studio 的穷人版)、发布区 Parquet / Iceberg 导出、研发本体 ↔ 业务湖仓的库表桥。

C · 从研发本体到企业上下文基底(2027-07 → 12):1 条产品线的业务本体试点(发票 / 税号 / 客户 ↔ 表 ↔ 服务 ↔ 页面)、变更意图预检协议、跨引擎消费、评测常态化。

节奏与《OntoOS 查询服务架构设计 v2.0》(2026-09-20)的 P0–P3 并行:v2.0 解决"执行与事实上收服务端",本文解决"本体本身成为一等对象"。两者不冲突,共用契约包。

SECTION 1

Snowflake 的四层堆法:自下而上,每一层都是仓里的对象

文章的核心观察是一句话:Snowflake 走的是自下而上的路——先有目录(Catalog),再有语义层(Semantic),再有图(Knowledge Graph),最后是给智能体的统一接口(Cortex Sense);与 Palantir"从业务对象出发、自顶向下"正好相反。把四层按时间排开,能看到它用了两年把"仓库里有什么"一步步推到"智能体知道仓库里有什么"。

L4 · Agent 接口 L3 · 图谱 L2 · 语义层 L1 · 目录 / 开放 Cortex 家族成形(Summit 2024-06) Cortex Sense 私有预览(2026-06-02) Knowledge Graph 实现公开:KG_NODE / KG_EDGE + 递归 CTE(2026-05-25) Semantic Views DDL GA(2025-06) SQL 查询 GA(03-02) Studio 公开预览(08-26) Polaris 捐给 ASF(2024-08) Horizon Catalog GA(BUILD 2025-11-04) Polaris 升顶级项目(2026-02-18) 2024202520262026-12 自下而上:目录 → 语义 → 图 → Agent 基底。四层的产物全部是仓内对象,由同一套 RBAC + FGAC + ABAC 治理。 (catalog entry · semantic view · KG_NODE / KG_EDGE · context substrate) 一手来源补充:Semantic Views 的 DDL 在 2025-06 已 GA;Semantic Studio 于 2026-08-26 进入公开预览(文章成文时仍是私有预览)。
图 1 · Snowflake 本体路线时间线(按一手来源校订;横轴为月份近似位置)

L1 Horizon Catalog —— Polaris 之上的 AI 目录

2025-11-04 GA。三个组件:Collect(结构化 + 非结构化资产统一收集,带上下文)、Maintain(数据质量 + 自动化运维监控)、Extend(跨引擎读写——底层是 Apache Polaris / Iceberg REST,Spark / Trino / Dremio / Databricks 能直接读)。治理栈是 RBAC + FGAC + ABAC。

关键不是"又有一个 catalog",而是把治理边界从 Snowflake 内部扩到跨引擎:Polaris 由 Dremio 与 Snowflake 共创、2024-08 捐赠、2026-02-18 升为 Apache 顶级项目(约 100 位贡献者、2,800+ PR、6 个版本,PMC 含 Google / Microsoft / Confluent / LanceDB)。这是对 Databricks Unity Catalog 的"开放标准之战"。

L2 Semantic Views + Semantic Studio —— 在 SQL 上盖一层受控词汇

Semantic View 是 schema 级的保存对象:定义哪些表构成一个业务实体、实体间的关系、哪些维度可分析、哪些度量可聚合,带同义词。DDL 2025-06 GA,派生度量 2025-09-30 GA,标准 SQL 查询 2026-03-02 GA,Autopilot(自动建议语义视图)2026-03 GA。

Semantic Studio 是编辑工具:选表 → 自动建议实体 / 维度 / 度量 / 关系 → 命名 + 同义词 → 提交 git 评审 → publish。2026-08-26 公开预览。它是 Cortex Analyst(NL→SQL,文章引述内部 benchmark 85–90%)、CoWork、CoCo、Cortex Sense 四个下游的共同输入。

L3 Knowledge Graph —— 节点边存进 warehouse,递归 CTE 遍历

2026-05-25 工程博客公开实现:图作为一组节点 / 边表存在仓内(KG_NODE、KG_EDGE、KG_NODE_PROPERTY、KG_EDGE_PROPERTY 等约 28 张元数据表),用递归 CTE 遍历;一组存储过程提供 CRUD;GraphRAG 接口把检索结果喂给 Cortex LLM 函数;Term Mappings 对齐不同 KG 的术语。Snowflake-Labs 有开源参考实现。

取舍:不要独立图数据库——"数据不用搬、治理边界统一",代价是亿级边的遍历性能不如专用引擎。Snowflake 的判断是 80% 的企业图场景在百万边以下,warehouse 跑得动。

L4 Cortex Sense —— 自动构建"全局本体"给智能体

2026-06-02 Summit 进私有预览。三步:Scan(扫描所有表 / 视图 / 列 / 度量定义 / 语义视图,以及查询历史、BI 看板)→ Build(自动生成全局本体:节点是实体、边是关系)→ Share(作为"context substrate"暴露给 CoWork + CoCo,按用户角色与行为实时增强)。

Snowflake 自报:启用后 CoWork / CoCo 在复杂业务问题上的准确率从 47% 提到 83%。这是内部 benchmark,非第三方审计;但即便打折,量级也说明智能体的瓶颈不是模型而是 context。Catalog 是 Sense 的输入,Sense 是 Catalog 之上的智能体接口——两者是不同抽象层。

事实核验:文章的哪些说法是一手来源、哪些是厂商自报、哪些需要更正
说法核验结果来源
Horizon Catalog 2025-11-04 BUILD GA,底层 Polaris一手确认 Snowflake 博客明确 Horizon Catalog 的互操作层建立在 Polaris 之上Snowflake 工程博客《Apache Polaris: The End of Data Vendor Lock-In》
Apache Polaris 2026-02-18 升顶级项目一手确认 polaris.apache.org 2026-02-19 公告;≈100 贡献者、2,800+ PRpolaris.apache.org / Dremio / Snowflake 博客
Semantic Views 2026-03-02 GA需补充 03-02 GA 的是"标准 SQL 查询语义视图";DDL 本身 2025-06 已 GA,派生度量 2025-09-30 GA,2026-06-26 "SQL 查询作为逻辑表" GASnowflake 发布说明 2026-06-26;Atlan 指南
Semantic Studio 2026-06-02 私有预览已过时 2026-08-26 发布说明:公开预览,所有账户可用;带 CoCo 对话式编辑、YAML 直编、Git 版本控制Snowflake 发布说明 2026-08-26
Knowledge Graph:KG_NODE / KG_EDGE + 递归 CTE一手确认 工程博客《Ontology in Snowflake: Building Cortex Agents》与 Snowflake-Labs/knowledge-graph-snowflakeSnowflake 工程博客 / GitHub
Cortex Sense 47% → 83%厂商自报 Summit 2026-06-02 公布,私有预览;Sense 的输入还包括查询历史、对象元数据、BI 看板与语义视图(Horizon Context)SiliconANGLE / Constellation / Atlan / typedef 的 Summit 报道
CoWork / CoCo 改名;ontology-stack-builder skill(2026-03-30)文章所述,未独立核验 不影响本文结论原文
SECTION 2

两种范式,以及文章没说透的三件事

文章用 Palantir 的四件套(Object / Link / Action / Function)做了六维对标。把 OntoOS 放进同一张表当第三列,差异立刻清楚——OntoOS 在 Link 这一维比 Snowflake 多一样东西(实测命中率),在 Object / Function / 入口三维是"有但散落",在 Action 一维与 Snowflake 一样空白。

维度Snowflake(范式 B)Palantir(范式 A)OntoOS 今天
Object / 实体Semantic View 实体 + KG_NODE;维度、度量、关系随实体定义Ontology SDK Object Type,带 property43 个实体(42 表实体 + 1 合成实体"服务"),定义在 console/registry/entities.py(Python),不在湖仓;无度量、无同义词
Link / 关系KG_EDGE 显式声明,GraphRAG 遍历Link Type,带 cardinality79 条登记关系(57 条 1:N / 10 条 N:1 / 7 条 N:M / 5 条 1:1),13 条跨域桥;每条带实测命中率与 confirmed / weak 置信度——这是两家都没有的一维
Action / 写无独立 Action 层;写走 SQL / ETLAction Type:validate 前置条件 + 权限 + 副作用无,且是刻意的:只读 + 交接(Apollo 控制台 / 发布流程 / 负责人线索)
Function / 逻辑Cortex 函数、存储过程、Sense 的智能体函数Function metadata,可声明可调用7 条服务端命名查询(SQL 由服务端持有、启动期 lint)+ 36 个 DWD / DWS 派生视图 + 技能仓 48 张实测 SQL 模板
入口SQL + CoWork / CoCo 自然语言 + Semantic Studio(git)Workshop 拖拽 + OSDK(TS / Python)+ AIP agents本体控制台(飞书登录、发布区 / 工作区角色)+ MCP 8 个只读工具(经公司网关、Keycloak 令牌)+ 4 个姊妹技能 + probe CLI
治理RBAC + FGAC + ABAC;Polaris 跨引擎资源级 RBAC发布区 / 工作区两套层、每日原子快照发布(黄灯门禁)、服务端脱敏、审计;无跨引擎 / 开放格式(ADB-PG 专有)

文章没说透的三件事

① Semantic View 的要害不是"关系",是"受控词汇 + 度量"

文章把语义层描述为"哪些表构成实体、实体间什么关系"。但对 NL→SQL 真正起作用的是另外两件事:同义词(业务名词 → 列 / 实体)与度量(可聚合的量及其口径)。Cortex Analyst 85–90% 的准确率来自"骨架 + 词表 + 口径"三者,不只是骨架。OntoOS 的报障场景(页面名词 → 微应用 → 仓)今天靠 ILIKE 兜底,缺的正是词表。

② "图存进仓"是一种分工,不是一种妥协

Snowflake 把 KG 限定在"本体级"(实体与关系),不把事实级的大图(点击流、调用图)塞进 KG_EDGE,所以百万边以下的判断成立。OntoOS 恰好有两种图:本体级的(工作负载 ↔ 仓 ↔ 库 ↔ 表 ↔ 接口)和事实级的(2,800 万调用边、404 万 SQL 字段引用)。前者该进 KG,后者该留在事实表并以"线索摘要"(code_call_threads,≈501 万行物化闭包)挂进本体。分工对了,递归 CTE 在 ADB 上才跑得动。

③ Cortex Sense 的 Scan → Build → Share,OntoOS 各做到了哪一步

Scan:OntoOS 比 Sense 深——不只扫仓内元数据,还扫 GitLab / K8s / DMS / Apollo / 云网络 / ECS / 门户 / 镜像反解 / 活体 JVM 九个域。Build:Sense 是自动的,OntoOS 是人工策展(ADR-0045 否决了纯自动推导,理由是零外键、同名列不可信、跨域桥全是带解析逻辑的推断)。Share:Sense 把全局本体作为基底一次性暴露给 Agent;OntoOS 是 Agent 按需调 8 个工具逐跳取。差距集中在 Build 的自动化辅助与 Share 的预加载形态。

范式结论。文章说"有数仓 + 数据团队的企业接 Snowflake 范式最顺"。OntoOS 的起点正是如此:已有湖仓、已有 ODS / DWD / DWS 分层、已有每日发布。所以不该去模仿 Palantir 的独立 ontology 层与 Action 语义,而应沿范式 B 把三样东西补齐——可声明的语义层、统一的节点边面、给 Agent 的全局基底——同时守住 OntoOS 独有的两件事:命中率是一等属性、行为语义边来自代码反解。

SECTION 3

OntoOS 今天站在哪一层(发布区快照 2026-10-01)

以下数字全部来自发布区快照(publish_20260930_130033,2026-10-01 05:17 发布,最近三次发布均为黄灯)、控制台注册表与 ontoos_extract 仓库,不引用技能文档里的历史数字。行数为 pg_class 估算或直连 count,口径在附录。

4,157
采集源(4,113 个活跃批次)
code 轨每个镜像归档一个源;每日原子发布
148
对象目录
112 张 ODS 当前视图(契约 112/112 齐)+ 36 个关联模型域视图
43 / 79 / 13
实体 / 登记关系 / 跨域桥
76 条 confirmed、3 条 weak;6 张事实表排除在搜索面外
8 + 7
MCP 只读工具 + 命名查询
预算 ≤200 行 / 64 KB,并发 4,逐次审计
5,589
K8s 工作负载(14 集群)
GitLab 2,000 仓 · Apollo 113 应用 · 服务接口汇总 1,833 服务
104,098
DMS 物理表(604 实例 / 17,027 库)
1,904,709 列;表注释覆盖 35.6%、字段注释 45.5%
4,134
代码归档(镜像反解)
端点 ≈30.7 万 · Mapper 方法 ≈26.8 万 · 错误签名 ≈73 万 · 枚举 ≈55.6 万
2.8 千万
方法级调用边(事实表)
方法节点 ≈3,268 万 · 调用线索 ≈501 万 · SQL 字段引用 ≈404 万

四层对位

Snowflake
OntoOS 现状
L1目录 / 开放
Horizon CatalogCollect / Maintain / Extend;Polaris(Iceberg REST)跨引擎;RBAC + FGAC + ABAC
ODS + ods_current + 发布区9 个域 112 张表 1:1 镜像上游,append-only 批次 + 指针;工作区 → 发布区每日原子快照(ADR-0017)、GFS 保留(ADR-0049)、黄灯门禁;catalog / freshness 工具;服务端脱敏 + 审计。缺 开放表格式与跨引擎读(ADB-PG 专有);Maintain 只有抽取侧的覆盖台账,没有"数据质量"产品面。
L2语义层
Semantic Views + Studioschema 级对象:实体、维度、度量、关系、同义词;YAML / SQL 声明;git 评审后 publish;Autopilot 自动建议
策展注册表 + 列注释 + 词汇表(散落三处)43 实体 / 79 关系在 registry/*.py(Python dataclass,随仓发版、PR 评审——这已是 Studio 的 git 工作流的穷人版);列注释真源在 schema.py(ADR-0045 记:DB 列注释 563/1602,视图层全部丢失);术语在 nav.py 词汇表与 CONTEXT.md。缺 度量、同义词、可被 Agent 读取的 spec 形态;DMS 侧表注释仅 35.6%。
L3图谱
Knowledge GraphKG_NODE / KG_EDGE(+ 属性表)存仓;递归 CTE 遍历;存储过程 CRUD;GraphRAG 接口;Term Mappings
DWD / DWS 派生视图 + drill 下钻36 个视图把登记关系拼成"可直接回答问题的面"(活跃工作负载、入口链 7 跳、MQ 闭合、双轨对账…);drill 沿一条登记关系走一跳。缺 统一的节点 / 边表与多跳遍历——多跳要 Agent 自己串 drill;7 个视图在 ADB 上实测 OOM / 超时(标 heavy);"服务"是合成实体、无表无主键。
L4Agent 基底
Cortex SenseScan → Build → Share;全局本体作为 context substrate 按角色实时注入 CoWork / CoCo;自报 47% → 83%
MCP 8 工具 + 7 命名查询 + 4 技能控制台进程挂 /mcp(ADR-0050),经公司 agentgateway、Keycloak 令牌(ADR-0052);search → describe → query/drill 三步工作法;结果信封带 snapshot / pin / truncated。缺 全局本体的预加载形态(manifest);评测基线仅 8 用例;运维 Agent 严格准确率 ≈22% 停滞、Agent 字典滞后本体 4.7–9.7 倍(2026-09 台账)——这正是 Sense 要解的"context 瓶颈"。
L0抽取(Scan)
仓内元数据 + 查询历史 + BI 看板Sense 只扫 Snowflake 自己仓里的对象与使用痕迹
九域抽取 + 代码反解 + 活体内省领先 GitLab / K8s / DMS / Apollo / 云网络 / ECS / 门户 / 镜像静态反解 / attach JVM 内省;行为语义边(调用线索、MQ 闭合、配置真值、错误签名、业务枚举)是 Snowflake 不具备的 edge 类型。2,205 提交、52 ADR、9,317 个测试函数、86,557 行 Python。

13 条跨域桥:登记时实测命中率

命中率是关系登记时的基线值,不是当前值(v2.0 评审 CC-06 已裁定要拆成 RelationDefinition 与 RelationObservation)。斜纹 = weak(推断关系,不能当等值连接)。命中率偏低多半是业务覆盖缺口(如镜像未抽取、库未纳管),不是关系错误。

confirmedweak(推断)
桥(A → B)
命中率
值
基数
入口落点:SLB 后端 → ECS 实例
100%
N:1
入口落点:ALB 后端 → ECS 实例
100%
N:1
部署溯源:工作负载 → 代码仓库
99.6%
N:1
数据血缘:JPA 实体 → 物理表
97.2%
N:M
入口链:DNS 记录 → WAF 接入域名
87%
N:1
部署溯源:微应用 → 代码仓库
86%
N:1
自建库宿主:数据库实例 → ECS 实例
60%
N:1
服务调用:Feign 名 → K8s Service
55%
N:M
连接真值:工作负载 → 数据库实例
43.5%
N:1
调用拓扑:前端调用 → 后端接口
40%
N:M
配置核对:代码配置键 → Apollo 配置项
35.1%
N:M
数据血缘:MyBatis 表引用 → 物理表
30%
N:M
镜像 → 代码归档
25.2%
N:1

读法:前六条是"身份桥"(标签 / 名字 / 资源 id 直接对上),后七条是"推断桥"(解析连接串、文本匹配表名、Feign 名对 Service 名)。Snowflake 的 KG_EDGE 不区分这两种;OntoOS 把置信度与命中率做成一等属性,是对的——下一步要让它们随发布每天重测而不是停留在登记时的基线。

SECTION 4

以 Snowflake 为镜:OntoOS 的五个结构性缺口

G1 语义层不是一等公民

本体知识今天住在三处:技能仓 Markdown(relationships.md + 24 个 references,952 KB,SKILL.md 内 245 处会漂移的数字)、控制台 Python 注册表(43 实体 / 79 关系,ADR-0045 定为唯一真源)、以及 36 个派生视图的 SQL 体内。没有一处是可声明、可被 Agent 读取、可随发布版本化的 spec。Semantic View 的另外两个要素——度量(服务的端点数、依赖数、爆炸半径、配置漂移数的口径)与同义词(报障名词、拼音、英文名、门户菜单名、枚举中文)——完全缺席;门户微应用解析 exact 3,070 / unresolved 388 / ambiguous 112,报障名词落点靠 search 的 ILIKE。上游语义供给也薄:DMS 表注释覆盖 35.6%、字段注释 45.5%,OntoOS 能暴露这个缺口,但没有把"注释覆盖率"做成可巡检的度量。

G2 图没有统一抽象

79 条关系散落在注册表,36 个视图各自物化一条链(入口链 7 跳、MQ 闭合、FE→BE→DB),Agent 要跨三跳只能串 drill。没有 KG_NODE / KG_EDGE 式的统一节点边面,就没有"任意实体 k 跳邻域"与"两实体间路径"这类通用查询,GraphRAG 无从接起。ADB 的现实约束也在这里:v_ingress_chain、v_scheduler_outbound、workload_active_gitlab 等 7 个视图实测段级 OOM 或超 60 s——说明"用视图现算多跳"已到天花板,Snowflake 的做法(物化节点边表 + 递归 CTE + 跳数上限)才是出路。"服务"是合成实体(工作负载名 / spring.application.name / feign_name / 仓 / Apollo app_id 的等价类),无表无主键,闭包有损(64.7% 调用方天花板)——它恰恰应该成为 kg_node 里的第一等节点。

G3 Agent 的 context 是按需拉取,不是全局基底

MCP 的三步工作法(search → describe → query)要求 Agent 每次从零摸索;8 个工具的描述与 7 条命名查询的 notes 是它能拿到的全部"全局知识"。Cortex Sense 的 Share 做的是反过来的事:把全局本体压成基底,一次性进 Agent 的上下文。OntoOS 这边的证据已经很清楚——运维 Agent 覆盖率 93% 但严格准确率 ≈22% 停滞,根因是知识供给断层(Agent 字典滞后本体 4.7–9.7 倍:边表 178 vs 844、MQ 565 vs 5,454)。评测只有 8 条用例,没有"有 / 无本体"的对照实验,所以说不出 OntoOS 对 Agent 准确率的贡献是多少。

G4 开放性:一套专有仓、两套湖仓、零开放格式

Horizon 的 Extend 让其他引擎直接读目录;OntoOS 的消费方只有控制台、MCP 与四个技能,发布区锁在 ADB-PG 里。公司同时在建业务湖仓(Hologres + DataWorks,核心库 110 张表同步),研发本体与业务数据分处两套仓、零桥——而 Snowflake 路线的终点恰恰是"业务对象 ↔ 物理表 ↔ 使用它的应用"连成一张图。另一个开放性债务是安全:发布区约 1,961 个明文凭据(2026-09 台账 SEC P0),不收口就不能把 KG / manifest 开给全员。

G5 Action 层缺位——但缺得对,要补的是它的只读半身

Palantir 把每一次对本体的修改包成 Action(validate + 权限 + 副作用);Snowflake 没有,OntoOS 也没有,而且 OntoOS 的只读边界是明确的产品决策(改配置 / 重启 / 发布一律交接)。该补的不是写操作,而是"变更意图"的建模:改表 / 改接口 / 改配置 / 下线服务 四类意图各有一条可预检的影响面查询(v2.0 设计的 ontoos_impact 是雏形),输出结构化的交接单到发布流程与 Apollo,并把预检结果写回审计。这样本体对变更的价值从"事后排障"前移到"事前预检",又不越过只读红线。

不盲从清单

✗ 不把事实表灌进 KG

2,800 万调用边、3,268 万方法、404 万 SQL 字段引用是"发生"不是"东西";进 kg_edge 会直接把 ADB 递归 CTE 压垮,也违背 Snowflake "百万边以下"的前提。KG 只装本体级边,事实级以物化线索(code_call_threads)摘要挂接。

✗ 不采购独立图数据库

两家都证明"图在仓里 + 递归 CTE"对本体级规模够用;多一套引擎就多一套治理边界与一份凭据分发,正是 v2.0 要消灭的东西。

✗ 不把 NL→SQL 自由问答做成全员面

Snowflake 有 Cortex Analyst 的 85–90% 是因为语义层先行。OntoOS 的全员面坚持命名查询 + 受限 DSL(v2.0 D3),自由 SQL 挡不住派生表达式推断秘密列。先把语义层做实,再谈 NL→SQL。

✗ 不让"自动推荐边"绕过策展

ADR-0045 否决纯自动推导的三条实测理由(零外键、同名列不可信、跨域桥皆推断)依然成立。可以借鉴 Autopilot / ontology-stack-builder 做候选提案,但入库必须经 PR 评审与命中率守卫——真源不变。

SECTION 5

规划:四层 × 三阶段

原则只有三条:本体是湖仓里的一等对象(可查询、可版本、可评测);每一步都能用现有机制承接(ADR、PR 评审、命中率守卫、发布门禁、命名查询 lint);每一步都有可复现的数字验收。与 v2.0 查询服务(执行与事实上收服务端、Go CLI、薄 Skill)并行推进,共用契约包,不重复造轮子。

A · 本体入仓2026-10 → 2026-12 B · 语义层一等公民2027-01 → 2027-06 C · 企业上下文基底2027-07 → 2027-12 L1 目录 / 开放 契约包 · 新鲜度 SLA · 凭据收口(P0) Parquet / Iceberg 导出 · 双仓库表桥 跨引擎消费 · 注释覆盖巡检 L2 语义层 ontology.yaml v0 · 契约 lint 度量 + 同义词 · 推荐边 · 本体页 业务本体试点(1 条产品线) L3 图谱 kg_node / kg_edge · 邻域 / 路径查询 命中率随发布重测 · 线索摘要挂接 业务对象 ↔ 表 ↔ 服务 ↔ 页面 L4 Agent 基底 Manifest v0 · bench 有 / 无对照 Manifest v1 · 命名查询 7 → 30 变更意图预检 · 评测看板 并行:v2.0 查询服务 P0–P3(契约包 · 13 工具 · OAuth / RBAC · Go CLI · explore 面)—— 共用契约包,本文不重复其范围 v2.0
图 2 · 四层 × 三阶段路线图。每格对应下文一组交付物与验收口径。

阶段 A · 本体入仓 2026-10 → 2026-12

目标:本体从 Python 与 Markdown 搬进湖仓与契约包,Agent 第一次拿到"全局本体",并有一个可复现的准确率对照数。

A1
把 registry/entities.py + relations.py + schema.py 列注释 + nav.py 词汇表导出为版本化的 ontology.yaml 契约包(实体 / 关系 / 列说明 / 术语,含 contract hash);注册表仍是真源,YAML 是生成物,CI 门禁"生成物与真源一致"。验收:契约包随 release tag 发布;v2.0 服务端只消费契约包,不再 import extract 仓。
A2
发布后作业物化 dws.kg_node / dws.kg_edge:节点 = 42 类表实体的实例 + 合成实体"服务"的等价类;边 = 79 条登记关系的实例化(列:relation_key / cardinality / confidence / evidence / observed_hit_rate),首批覆盖 13 条跨域桥与所有"实体 ↔ 实体"的域内边;6 张事实表与子表属性不进图。验收:节点 ≥50 万、边 ≥100 万;全量生成 ≤30 min;每条关系的当日命中率入 kg_relation_observation,与登记基线偏差 >10 pp 自动开 issue。
A3
两条通用图查询进命名查询:neighborhood(实体 k 跳邻域,k ≤ 3,可按边类型过滤,递归 CTE)与 path_between(两实体最短路,≤ 4 跳)。它们是 GraphRAG 的最小接口,也让"共享库故障传播""2 跳 Feign 上游"这类场景不再各写一张视图。验收:在 kg 表上 p95 ≤ 5 s;替换 ≥3 个 heavy 视图的用途。
A4
Ontology Manifest v0:由契约包生成的 ≤32 KB 紧凑 Markdown / JSON——实体类型与标识列、关系类型与置信度语义、术语表、命名查询目录、五条判读铁律、如何交接。作为 MCP instructions 与 Resource ontoos://manifest 下发(对应 Sense 的 Share)。验收:零运行时数字(CI 门禁);Claude Code / Codex 两类客户端加载后 tools/list 不膨胀。
A5
对照实验:ops-agent-bench 85 题(已脱敏公开集 + 独立判分器),同一 MCP、同一模型,分"无 manifest / 有 manifest v0"两组各三轮,报告 AC@1 与误移交率差——复刻 Cortex Sense 47→83 的实验设计,但第三方可重跑。验收:报告发布;若提升 <5 pp,说明 context 不是当前瓶颈,阶段 B 的 L4 投入降级。
A6
安全前置:发布区明文凭据收口为去秘密化视图(v2.0 D6),ontoos_ro 真正授权。这是 kg / manifest 能开给全员的前提,不是本阶段的可选项。验收:发布区可打码列之外的明文凭据值 = 0;安全测试集通过。

阶段 B · 语义层成为一等公民 2027-01 → 2027-06

目标:补齐 Semantic View 的另外两件事(度量、同义词),把 Build 的半自动化与 Studio 的编辑体验做成控制台的一页,并打开第一个开放出口。

B1
度量进 spec:把 48 张模板里的聚合口径沉淀为可声明的 measure(服务的端点数 / Feign 依赖数 / 表爆炸半径 / 配置漂移信号数 / 抽取覆盖率 / 注释覆盖率…),每个度量带口径、分母真相与 heavy 提示;v_service_iface_summary(1,833 服务)升级为"服务度量面"。验收:≥20 个度量入 spec 并可经命名查询取值;面板不再用单数字冒充分母。
B2
同义词与名词表:实体与关键列的中文名、拼音、英文、门户菜单名、业务枚举中文(≈55.6 万条枚举语义面已在库)统一进术语表;search 先走词表再 ILIKE 兜底;报障名词 → 实体的落点率成为度量。验收:43 个实体全部有 ≥1 组同义词;incident 分诊 100 条真实工单路由仍全对且首跳命中率提升。
B3
推荐边(Autopilot / ontology-stack-builder 的 OntoOS 版):扫描标识列命名、值域重叠与实测命中率,生成候选关系 PR(带命中率、样本、陷阱),人审入注册表;真源与守卫不变(ADR-0045)。验收:季度新增 ≥5 条跨域桥(13 → 18);3 条 weak 桥升级或替换(如 Feign 名 → Service 改走 spring.application.name)。
B4
控制台"本体页"(Studio 的穷人版):浏览 spec、看每条关系的命中率趋势(Observation 时间线)、提交候选边 / 同义词、查看 manifest 当前版本。不做拖拽建模,所有变更仍落 PR。验收:本体页上线;候选边从提出到合入中位 ≤10 工作日。
B5
开放出口:发布后作业把发布区快照(含 kg 两表)导出为 Parquet,评估 Iceberg + 开放目录(Polaris / 阿里云 DLF 等)作为跨引擎读取面;同时建"研发本体 ↔ 业务湖仓"的库表桥(DMS db_id / schema.table ↔ Hologres 同步表)。验收:DuckDB 与 Hologres 可直接读导出的快照;业务湖仓 110 张同步表 100% 挂回 DMS 物理表。
B6
命名查询 7 → 30,覆盖 6 层面 77 场景中的高频 Top-30;复合能力 service_context / impact(v2.0)落地;Manifest v1 带度量与同义词。验收:MCP 调用中命名查询占比 ≥70%;bench 第二轮对照。

阶段 C · 从研发本体到企业上下文基底 2027-07 → 2027-12

目标:把本体从"研发资产"延伸到"业务对象 ↔ 物理表 ↔ 服务 ↔ 页面"的一张图,并给变更以事前预检。

C1
业务本体试点:选 1 条产品线(销项 / 票易通),在业务湖仓上以同一套 spec 语法定义业务实体(发票、税号、客户、单据状态)与度量,经 B5 的库表桥与研发本体互链——这就是 Snowflake 路线的终点形态,也是"发票数据湖仓"差异化能力的本体底座。验收:业务实体 ≥10、跨仓边 ≥5 类;一次"页面报错 → 单据状态 → 表 → 服务 → 版本"的全链路问答在 MCP 上跑通。
C2
变更意图预检协议(Action 的只读半身):改表 / 改接口 / 改配置 / 下线服务 四类意图各一条预检查询,输出结构化交接单(影响面、置信度、负责人线索、建议窗口)到发布流程与 Apollo;预检结果写回审计。验收:≥1 条产品线的发布流程接入预检;预检误报率有数。
C3
跨引擎消费:BI / DataWorks / 其他 Agent 平台直接读 Iceberg 导出或 kg 表;MCP 之外第二类消费方上线。验收:≥2 个非 MCP 消费方。
C4
评测常态化:manifest 版本 × bench 成绩 × 命中率观测进看板;每次发布自动跑冒烟;本体变更的"准确率回归"可见。验收:看板上线;回归 0 容忍。
SECTION 6

验收指标:现值 → 阶段目标

指标现值(2026-10-01)A 结束(2026-12)B 结束(2027-06)C 结束(2027-12)
L1 发布区明文凭据值≈1,961000
L1 开放格式消费方(非 MCP / 控制台)001(DuckDB / Hologres 读 Parquet)≥2
L1 业务湖仓同步表挂回 DMS 物理表0 / 110—110 / 110110 / 110
L2 契约包 / spec 版本化无(Python 注册表)ontology.yaml v0v1:度量 ≥20、同义词 43/43v2:含业务实体 ≥10
L2 跨域桥数 / weak 桥数13 / 313 / 318 / ≤1≥23(含跨仓)/ 0
L2 报障名词首跳落点率(incident 100 条)路由全对;首跳落点未量化基线建立+10 pp持平或更好
L3 kg_node / kg_edge无≥50 万 / ≥100 万+ 每日 Observation+ 跨仓边
L3 heavy 视图数(OOM / 超时)7≤300
L3 多跳查询 p95(k ≤ 3)不可用≤5 s≤3 s≤3 s
L4 Manifest无v0 ≤32 KB、零数字v1 带度量按角色裁剪
L4 bench 对照(AC@1,有 vs 无 manifest)无对照;严格准确率 ≈22%报告 + 差值 ≥5 pp 才继续加码≥ +15 pp看板常态化
L4 命名查询数 / MCP 调用中命名查询占比7 / 未统计12 / 基线30 / ≥70%≥40 / ≥80%
L4 变更意图预检接入发布流程无—协议定稿≥1 条产品线

所有"现值"可在发布区上重算;所有"目标"写成可被 CI / 连库守卫断言的形式,不写"显著提升"。

SECTION 7

风险与需要拍板的问题

风险 ADB 递归 CTE 的性能

段级 OOM 已有 7 个视图的先例。对策:kg 两表物化 + 跳数上限(≤3)+ 预算(statement_timeout)+ 边类型过滤;超出的走离线 job。阶段 A 的 A3 验收就是这条风险的试金石。

风险 策展人力是瓶颈

13 条桥是 4 个月人工实测的结果。推荐边只能产候选,入库仍要人审;若无专人,季度 +5 条桥的目标会落空。建议明确 1 名本体策展 owner(兼),本体页把评审成本降到"看命中率 + 点合入"。

风险 两套湖仓、两套真源

研发本体在 ADB,业务数据在 Hologres。若业务本体试点在 Hologres 上另起一套 spec 语法与注册表,就会复刻"技能仓 vs 注册表"的双真源问题。对策:同一套 spec 语法、同一个契约包、不同的存储。

风险 Manifest 吃掉 Agent 的提示预算

全局本体一旦超过几十 KB 就会挤掉任务上下文。对策:≤32 KB 硬上限、按角色 / 场景裁剪(Sense 也是按用户角色注入)、深层内容留在 Resources 按需拉取。

风险 评测可信度

LLM-Judge 与人工评价相关系数仅 0.11(2026-08 台账),自动评分暂不可信。A5 的对照实验必须保留人工校准环,否则"+X pp"没有说服力——这也是为什么要自己做,而不是引用 Snowflake 的 47→83。

风险 安全 P0 阻塞全员开放

明文凭据不收口,kg / manifest / 开放导出全部只能在小范围用。A6 排在阶段 A 不是偶然。

需要拍板

Q1
业务本体(阶段 C)归研发中心还是 AI 创新部?spec 语法与契约包是否作为公司级标准,而不只是研发本体的内部格式?
Q2
开放出口选 Parquet 导出到 OSS 即可,还是直接上 Iceberg + 开放目录?后者与 Hologres / DataWorks 的采购与路线耦合,需要数据平台侧表态。
Q3
Manifest 下发给哪些 Agent 面:运维 Agent(数字员工)、AutoDev、SkillHub 上的通用 Agent?优先级决定 A5 对照实验用哪套 bench。
Q4
度量口径由谁拍板(如"服务的依赖数"算不算 weak 桥)?建议:本体策展 owner 提案、架构评审会裁定、口径写进 spec。
Q5
变更意图预检(C2)接入哪条发布流程做试点?需要发布平台侧的接口承诺。
SECTION 8

附录:事实口径与来源

A · 湖仓与仓库事实(本文引用的数字从哪来)

事实值口径 / 来源
发布区快照publish_20260930_130033,2026-10-01 05:17 发布,4,157 源 / 4,113 活跃批次,最近三次发布黄灯MCP freshness(发布区)
对象目录148 = 112 ODS 当前视图(契约 112/112)+ 36 关联模型域视图;7 个视图标 heavyMCP catalog;heavy 为实测 OOM / 超时标注
注册表43 实体(1 合成)、79 关系(76 confirmed / 3 weak;57 1:N、10 N:1、7 N:M、5 1:1)、13 跨域桥、6 事实表ontoos_extract/console/registry 直接计数(2026-09-30 代码)
桥命中率见第 3 节条图注册表 hit_rate(登记时基线,非当前值)
MCP 面8 只读工具、7 命名查询、≤200 行 / 64 KB、并发 4、逐次审计、网关 Keycloak 令牌ADR-0050 / ADR-0052、docs/console.md §7、MCP queries
资产规模GitLab 2,000 仓;K8s 14 集群 5,589 工作负载;DMS 604 实例 / 17,027 库 / 104,098 表 / 1,904,709 列;代码归档 4,134;Apollo 113 应用;服务接口汇总 1,833直连 ods_current / dws count(2026-10-01 21:00)
语义覆盖DMS 表注释 37,095 / 104,098 = 35.6%;字段注释 866,417 / 1,904,709 = 45.5%;门户微应用 exact 3,070 / unresolved 388 / ambiguous 112 / assets-path 3直连 count;ADR-0045 另记 DB 列注释 563/1602、视图层丢失
事实表量级调用边 ≈2,807 万;方法 ≈3,268 万;调用线索 ≈501 万;SQL 字段引用 ≈404 万;端点 ≈30.7 万;错误签名 ≈73.1 万;枚举 ≈55.6 万pg_class 估算(含历史批次,对当前视图偏高)
工程规模2,205 提交(2026-05-13 → 09-30)、52 ADR、112 张 ODS DDL + 45 视图、9,317 测试函数、86,557 行 Python、issue / PR 至 #525git 与源码统计
Agent 现状运维 Agent 覆盖 93% / 严格准确率 ≈22%;Agent 字典滞后本体 4.7–9.7 倍;bench 85 题;LLM-Judge 相关性 0.11;发布区明文凭据 ≈1,961半月台账 2026-09-01 / 09-15
技能面ontoos-probe 6 层面 77 场景 48 模板;references 952 KB;SKILL.md 245 处数字v2.0 架构设计(2026-09-20)与台账

B · 外部来源

C · 内部关联文档

  • 《OntoOS 查询服务架构设计 v2.0》(2026-09-20):执行与事实上收服务端、13 工具、RelationDefinition / RelationObservation 拆分、P0–P3 路线图。
  • ADR-0017 快照发布、ADR-0045 策展关系注册表、ADR-0049 发布快照保留、ADR-0050 控制台 MCP 端点、ADR-0052 网关 Keycloak 令牌;CONTEXT.md「本体控制台」与「Relationships」段。
  • 半月对齐台账 2026-09-01 / 2026-09-15(运维 Agent 基线、安全 P0、Hologres 业务湖仓)。

本页为内部规划稿,noindex;数字以发布区当日快照为准,复查请重跑附录 A 的口径。