EvoOntology 调研+实测:人大开源的”自进化本体层”——我们在真实数据上跑通了 v0→v1 进化闭环

101次阅读
EvoOntology 调研 + 实测:人大开源的

深度调研 + 实测 · 2026-10-26 · 环境:Claude Code 2.1.195 + evoontology 插件 v1.1.1 + 本地 SQLite 真实数据集 · 仓库:ruc-datalab/EvoOntology · 姊妹篇:《GEPA 反思环实测》、《宝可梦进化环复现》


写在前面

进化环这条线我们写过两篇:P45 在迷宫题上测出 负结果 (LLM 改提示词反而降分),P52 在宝可梦对战上测出 正结果 (17%→58%,且进化产物自己学会了 ” 少信 judge”)。这两篇的结论指向同一个机制:GEPA 式 ”Candidate vs Parent 配对评估、严格更优才替换 ” 的择优环,搜什么不重要,重要的是搜索空间与评估方式是否匹配。今天这篇的 EvoOntology 把同样的机制用在一个全新的对象上—— 数据本身的语义 。它来自中国人民大学 RUC Datalab(Meiduo Chong、Shaolei Zhang、Ju Fan、Du Xiaoyong),arXiv:2609.15779,发布一个月拿下 1,033⭐,自称 ” 首个面向 Data Agent 的自进化本体层 ”。我们不仅拆了它,还在自己的真实数据集上 跑通了完整的 Build → Evolve → Publish 闭环:v0(13 terms)→ 配对评估 2:0 胜出 → v1 发布激活(16 terms,净销售额 / 退货金额等语义缺口全部补齐)。

一、解决什么问题

Data Agent(Text-to-SQL、业务洞察、数据分析)最大的隐性成本是 语义不确定:表名叫 orders,但 ” 销售额 ” 算不算退货单?” 大客户 ” 是 tier 枚举值还是按消费金额定义的?这些答案藏在数据里而不是表结构里,agent 每次任务都要重新猜,猜错就产出语义错误。现有解法两头堵:

  • 静态语义层(人工维护的 metrics/semantics layer):需要专家持续维护,数据一变就过时,全量注入还吃上下文
  • 纯 agent 自由探索:每次重复踩坑,语义错误不可复现

EvoOntology 的答案:把本体层做成“ 可训练的 agent 状态 ”(不是模型权重)——通过 MCP 工具按需暴露、基于真实工作负载构建(每条语义都挂证据)、从执行轨迹中诊断缺口并提出局部补丁、配对评估通过才发布新版本。五步生命周期:Build → Use → Evolve → Evaluate → Publish/reject。

二、项目名片

维度 数据(2026-10-24 实核)
仓库 ruc-datalab/EvoOntology · 1,033⭐ / 93 forks / MIT / Python / 9-15 创建、10-9 push
论文 arXiv:2609.15779 · 中国人民大学(作者含 RUC Datalab 负责人 Ju Fan)
形态 Claude Code / Codex 双插件(marketplace 直装)+ 确定性核心包 + MCP server
安装 claude plugin marketplace add ruc-datalab/EvoOntology && claude plugin install evoontology@evoontology——无 clone、无 venv、无 pip
命令 /build-ontology → /evolve-ontology → /explore-ontology(Codex 用 $ 前缀,同一套工作流)
基准 自带 BIRD / DDR-10K / InsightBench 三套适配器(实现 EvolutionAdapter 即可接新基准)
社区 一个月出现第三方中文综述(含数据重算)、日本用户的独立复现记录、可视化浏览器——生态信号罕见地密

三、架构拆解:三层本体 + 配对评估

三层结构:

  • Content Layer:类型化语义图,四类节点——Terms(业务概念 + 别名)、Mappings(概念到数据源的映射)、Constraints(约束,如 ” 退货单不计入销售额 ”)、Evidence(证据,指向具体的 schema/ 行数 /FK 校验)
  • Schema Layer:定义四类节点的字段与允许的关系模式——本体自身的表示边界
  • Tool Layer:browse_semantics / resolve_semantics 两个 MCP 工具 + 紧凑会话清单——agent 只取当步所需语义,不整体注入

进化机制是它的灵魂(也是我们最关心的部分):

  1. 诊断执行轨迹中的反复行为,归因到 Content/Tool/Schema 某一层
  2. 产出 局部化 Candidate 补丁(不是全量重写)
  3. 配对评估:同数据、同 agent、同解码配置、同交互预算下 Candidate vs Parent
  4. 验收标准写进 run.json:候选须赢一半以上、零 critical error(含回归规则:候选把 parent 做对的题做错即一票否决)、改进须可归因于声明的假设
  5. 通过才发布 vN+1,否则保留 Parent——失败评估喂给下一轮

对照本站系列:这就是 P45/P52 验证过的 GEPA 择优环,但 搜索空间从提示词 / 对战策略换成了数据语义对象——而语义对象恰恰是 ” 有对错可判 ” 的领域,比提示词措辞更适合进化。

四、真机实测:在自己的数据上跑通 v0→v1

实验设计:构造了一个带语义陷阱的真实感数据集 sales.db(SQLite:50 客户 /20 产品 /300 订单)——金额字段含退货单、” 大客户 ”tier 与消费金额定义脱节、状态枚举全中文。装插件、配权限白名单(evo-semantic MCP 工具 + sqlite3/python3),headless 驱动 Claude Code 走完整流程。

Build(成功):发布 ontology_v0——13 Terms / 12 Mappings / 8 Constraints / 5 Relations / 7 Evidence,外加 7 个工作负载问题(销量 top、客户消费排名、退货占比、月度趋势等)。质量细节:Terms 带中文别名(” 客户 / 顾客 /buyer”),每条挂 Evidence(evidence_schema/evidence_row_counts/evidence_fk_integrity)——” 语义必须有证据 ” 不是口号。

Evolve(成功,这是全场最精彩的部分):进化 agent 诊断出的假设原文——“v0 缺少金额口径决策语义:销售额 canonical 定义为毛口径(含退货,虚高 22.15%)且退货排除仅为 warning 无默认规则;净销售额 / 累计消费金额 / 退货金额三个高频概念无 term;大客户双义(tier 枚举值 vs 高消费客户)无消歧规则 ”——它自己算出了毛口径虚高 22.15%,并且识别出 ” 大客户 ” 的双义问题。产出 Candidate 补丁后进入配对评估:

evaluations/round1: candidate_wins=2, parent_wins=0, critical_errors=0/0
resolved_key_mentions: 6/7(净销售额 / 累计消费金额 / 退货金额 / 大客户 / 普通客户 / 客户等级;平均订单金额仍无 term)status: accepted → ontology_v1 发布并激活

v1 diff:terms 13→16、mappings 12→15、constraints 8→10、relations 5→8、evidence 7→10——净销售额、退货金额的 canonical 定义与大客户消歧规则全部落进 Content Layer。

过程坑(如实记录):① 首跑因权限未放开被 Claude Code 主动叫停并列出所需权限清单——按清单写入 .claude/settings.local.json 即解;② evolve 阶段达到 headless max-turns=40 上限退出,但 验收与发布已完成——清点产物时发现 v1 已激活;③ nohup 后台再次被隐形击杀(本机第三次),前台执行解决。

五、数字与证据

官方基准(四骨干子集:GPT-5.5 / GPT-5.6-sol / Claude-Sonnet-5 / Claude-Opus-4.8):

Benchmark ReAct 无本体 Initial Ontology EvoOntology(进化后) 增益
DDR-Bench 10K(异构金融开放研究) 69.5 81.8 89.5 +20.0
BIRD(Text-to-SQL 执行准确率) 63.6 68.7 72.4 +8.8
InsightBench(商业洞察) 53.2 54.0 54.2 +1.0

增益分布本身就是发现 :开放研究(语义最模糊)+20,SQL(有金标准约束)+8.8,洞察(自由度大、判分松)+1.0—— 本体层的价值与任务语义模糊度成正比。另一条隐性曲线:Initial(81.8)已经贡献了大部分增益,进化再叠加 +7.7——” 先建静态本体 ” 这一步就值回票价,进化是锦上添花但真实。

本机实测口径:v0 构建 + v1 进化发布全链路跑通,评估报告(candidate_wins 2:0、零回归)落在 evolution/run_1/,全部产物可复查。与官方基准的差异:我们未跑标准基准集,只验证了闭环机制与产物质量——机制层结论可信,效果幅度引用官方数字需注明自报口径。

六、生态位:记忆赛道的第三个子类

结合本站记忆系列(mem0、graphiti、cognee、TencentDB Agent Memory):mem0 管 ” 用户偏好记忆 ”、graphiti 管 ” 时序事实图谱 ”、cognee 管 ” 知识管线 ”——EvoOntology 开辟的是第四格:数据语义层的进化。它不记用户、不存对话,它进化的是 ”agent 眼中这张表是什么意思 ”。

与进化环家族的关系也值得一张表:

实验 搜索空间 结果 机制
P45 迷宫 提示词措辞(分布内) ❌ 负结果 改写破坏训练分布
P52 宝可梦 对战策略代码(LLM 原创) ✅ 17%→58% 学会回退确定性基线
P55 EvoOntology 数据语义对象(有对错可判) ✅ 官方 +8.8~+20 / 本测闭环通过 证据接地 + 配对评估

规律浮现:搜索空间的 ” 可判定性 ” 决定进化环上限——语义对象有 schema 校验、有数据回验、有配对评估,是最适合进化的对象类型之一。这也解释了为什么 EvoOntology 敢把验收标准硬编码进 run.json。

七、风险与坑

  1. 基准官方自报:无独立第三方复现论文——但评估框架全开源、日本用户已做独立复现记录,可信度在积累
  2. InsightBench +1.0 的边界:语义清晰的任务上收益趋零——选型前先评估自己数据集的语义模糊度
  3. 评估成本翻倍:每轮进化要 Parent+Candidate 双份完整跑——数据或任务贵时进化一轮不便宜(run.json 里 max_rounds=2 的默认限制就是为此)
  4. headless max-turns 陷阱:evolve 的评估阶段容易撞 40 轮上限——生产用建议调高或分步驱动
  5. 发布仅一个月:API 稳定性未承诺(MIT 协议友好但版本未到 1.0);团队学术背景强(AAAI 2027 投稿已在准备),工程支持响应待观察
  6. 中文场景加分但英文文档为主:实测里中文列名 / 状态处理无碍,但文档与 issue 以英文为主

八、总结

调研 + 实测结论:EvoOntology 把进化环用在了一个比提示词、比对战策略都更 ” 可判定 ” 的对象上——数据语义,并给出了从插件安装到 v1 发布的完整可用路径。我们 24 小时内在自己的数据上复现了它的核心承诺:本体层会带着证据和消歧规则越变越好。

  • 机制验证 ✅:Build→Evolve→Evaluate→Publish 闭环在本机真实数据上走通,v1 配对评估 2:0 零回归
  • 假设质量惊人:进化 agent 自己算出 ” 毛口径虚高 22.15%”、识别 ” 大客户双义 ”——诊断报告的质量是这套系统的真正护城河
  • 适用判据:数据语义模糊度高(口径、别名、隐含约束多)+ 任务重复率高(语义复用摊薄构建成本)= 值得上;语义清晰的一次性分析 = 用不上
  • 与进化环家族合流:P45(负)/ P52(正)/ P55(正 + 机制自明)三篇凑齐了 ” 什么该进化、什么不该进化、进化产物长什么样 ” 的完整拼图

下一观察点:AAAI 2027 论文进展、Claude Code/Codex 之外的原生 MCP 接入(OpenClaw 能不能直接挂它的 MCP server)、以及 1K⭐ 之后社区基准适配器的丰富速度。


参考与延伸

by 飞熊 · yunying(增长运营官)· 全部实测数字来自 2026-10-24/26 真机日志(.evoontology/ 产物与 evolution/run_1/ 评估报告可复查)

正文完