前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
返回 AI 情报前线
All News · 全部资讯8616
  • LLM推荐系统成本陷阱与三层优化策略
  • Cursor Windows任意代码执行漏洞,沙箱打开前需谨慎
  • MCP:AI 工具集成的统一标准
  • 同一模型不同运行时效果差异大
  • AI/ML 工程师实战学习路线图与里程碑
  • 本地 LLM 驱动智能合约模糊测试
  • Herdr:Agent 并行管理工具
  • 按不确定性选模型:DeepSeek Flash 用法指南
  • Prompt 模板失效的根本原因与修复方法
  • Ollama 驱动的自主 Agent 实战:定时执行与安全网关
  • MCP 中的工具形状:Agent 安全治理的新边界
  • Agent 内存系统的取舍:什么值得记住,什么该遗忘
  • 三个易混淆概念澄清:内存 vs 上下文窗口 vs RAG
  • Spring AI 集成 Gemini:配置即用,无需重写
  • AI Agent的四层记忆系统:工作/事件/语义/程序记忆
  • Agent的遗忘问题:持久化内存的设计与实现
  • 编码智能体的双面性:60倍加速与科学正确性困境
  • 高风险 LLM 推理系统的精细设计:从置信度到脆弱性感知
  • AI 编码时代的规范危机:从代码优先到持续同步机制
  • 从单 Agent 到吞吐量模型:Herdr 的多 Agent 并行工作流
  • 统一 Agent 推理与 UI 的本体论:避免 Schema 漂移陷阱
  • Node.js 24.18.1 LTS维护版本要点
  • 为AI Agent设计可靠的API接口
  • 用Agent舰队构建生产级SaaS全流程
  • LLM Agent的科学评测框架与自动化回归门禁
  • Claude Code高效协作的五步预检查工作流
  • Agent商业化必备:工具隔离与最小权限安全设计
  • Word文档中隐藏的自传播Prompt Injection漏洞
  • AI 代码辅助时代,验证与迭代胜过堆砌提示词
  • Agent 防错机制:从错误记录到规则硬化
  • 用多模态 LLM 自动化文档数据提取
  • 7.5B 小模型在编码基准上超越 24B 大模型
  • 如何在 Claude/GPT/Gemini 间无损迁移 Prompt
  • 字节跳动 Seedance 2.5:30秒视频一键生成音视频
  • 生产级聊天机器人的四层架构实战
  • 长时间运行 Agent 的可靠执行方案
  • 28 年生产工程师眼中 AI 编程工具的真实影响
  • Google Gemini 4 月更新:原生 macOS 和 NotebookLM 集成
  • AI 工程四层进化:从 Prompt 到 Loop(2026 范式转移)
  • AI Code Review 中『上下文感知』的真实含义
  • Agent 工程实战:确定性代码包装概率模型
  • AI Agent信任评分:企业治理的核心机制
  • AI Agent规范驱动开发:宪法、检查点与交接
  • Claude Code VS Code安全部署指南
  • DeepSeek-V4-Flash 上线公测,性价比优势延续
  • ACP协议统一Agent接入:远程代理的会话标准
  • RAG评估陷阱:分块器隐形失效检测不到
  • Google卫星图像生成工具因安全风险24小时下线
  • HTTP 200陷阱:状态码≠成功执行
  • 生产AI Agent可追溯性:日志与审计实现方案
  • AI安全测试的现实漏洞:Claude真实系统交互案例
  • 已加载 51 / 8616
8.0
热点
AI SCORE
技术实践2026-08-01 22:05

统一 Agent 推理与 UI 的本体论:避免 Schema 漂移陷阱

dev.to · AI#Agent系统#系统设计#类型安全
Editor brief · 编辑速览

Agent 系统常维护两份 schema(推理层和 UI 层),导致漂移和适配器蔓延;解决方案是用同一份 schema 驱动两层。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

你的 agent 不知道什么是 Booking。它可以猜测——通常也能猜得很对——但一旦它组织工具调用、验证操作或向人类呈现结果,猜测就成了 bug。

本体论为模型提供了你的领域的类型化契约:什么存在、什么与什么相关、什么是允许的。它也说明了为什么直接添加到普通应用会失败,以及这次如何让它真正有效。

问题开始于当你把本体论接入常规代码库时。你最后得到两份契约:一份给 agent(RDF 三元组、JSON-LD 上下文、SHACL 形状),一份给 UI(props、组件、验证)。漂移是必然的。agent 产生一个 Reservation,API 暴露一个 Booking,UI 期望一个 ReservationViewModel。六个月后,你的团队有一半人在编写适配器,连接本应一致的各层。问题不在于 schema;问题在于有两个 schema。

核心论点是:给 agent 奠基的 schema 应该是给 UI 类型标注的同一个文件。当这成立时,本体论就不再是研究工件,而成为产品表面。

本体论实际为你的 agent 带来了什么

语言模型把每个 prompt 视为一串全新的令牌。它对类型、身份、关系没有一级概念——只有统计相似度。本体论给它一些可以依靠的东西:一个具有显式语义的词汇表、一个类型化关系的图,以及一组约束。

{
  "@context": {
    "@vocab": "https://schema.otf-kit.dev/booking#",
    "schema": "https://schema.org/",
    "Customer": "schema:Person",
    "startsAt": { "@id": "schema:startDate", "@type": "schema:DateTime" },
    "endsAt":   { "@id": "schema:endDate",   "@type": "schema:DateTime" }
  },
  "@type": "Booking",
  "@id": "booking:42",
  "name": "Sauna slot — Friday",
  "Customer": { "@id": "person:7", "name": "M. Vargas" },
  "startsAt": "2026-06-05T18:00:00Z",
  "endsAt":   "2026-06-05T19:00:00Z"
}

这里有两点很重要。首先,@context 声明 agent 必须遵守的 schema——那是契约。其次,每个字段都是 URI,这意味着 SPARQL 端点、SHACL 验证器和你的组件层都可以不经翻译地使用同一形状。agent 不是在创造结构;它在填充一个类型化的表单。

收益不是"AI 理解你的数据"。收益是 agent 的错误变得可恢复。形式不合的 startsAt 被 SHACL 拒绝。缺失的 Customer 违反 schema。虚幻的字段在到达用户前被拒绝。

在常规应用中如何崩溃

推销成功了。工程开始。三样东西首先崩溃:

三元组存储在读路径上很慢。SPARQL 端点和具名图存储非常适合联邦和推理。当移动客户端需要在 100ms 内渲染 200 个 booking 列表时,它们糟透了。

Schema 漂移。agent 的 Reservation 成为 API 的 Booking,成为 UI 的 ReservationViewModel。每层都创造自己的类型别名,因为没什么东西强制收敛。

移动客户端无法承载一个图。2 GB 的 RDF 转储不是手机的有效载荷。你需要一个平铺的、反范式化的投影,但仍然尊重 schema。

这些不是特殊问题——它们是每个类型化系统遇到无类型邻居时都会碰到的同样集成问题。修复是一直以来的修复:在接缝处钉死契约,让每个使用者从它读取。

类型化契约模式:一个 schema,两个使用者

停止在两个地方存储 schema。把它放在一个文件里,让 agent 和 UI 都从中读取。agent 读它作为接地的 JSON-LD 上下文;UI 读它作为组件的类型系统。

// schema.otf.ts — 每层都导入的文件
export const BookingSchema = {
  "@context": "https://schema.otf-kit.dev/booking",
  "@type": "Booking",
  fields: {
    id:        { type: "id",         required: true, uri: "schema:identifier" },
    name:      { type: "string",     required: true },
    customer:  { type: "ref:Person", required: true, uri: "schema:customer" },
    startsAt:  { type: "datetime",   required: true, uri: "schema:startDate" },
    endsAt:    { type: "datetime",   required: true, uri: "schema:endDate" },
    status:    { type: "enum",       values: ["pending","confirmed","cancelled"] },
  },
} as const;

agent 获得 @context 和字段映射作为系统指令。组件层获得同一映射作为 TypeScript 类型。schema 文件是真实来源;构建从它发出两个工件——一个给模型,一个给运行时。

[[DIAGRAM: schema.otf.ts → JSON-LD context for the agent, TS types for the UI, SHACL shape for validation — all three consumers reading one file]]

SPARQL 端点仍然可以支持数据;UI 从不说 SPARQL。schema 文件成为投影规范——一个图的类型化视图,不是图本身。

SHACL 作为免疫系统

如果 schema 是契约,SHACL 形状就是契约的免疫系统。它们在形式不合的图进入你的管道前拒绝它们。关键是在 agent 穿过的边界处运行验证,而不是深入应用内部。

ex:BookingShape a sh:NodeShape ;
  sh:targetClass ex:Booking ;
  sh:property [
    sh:path schema:startDate ;
    sh:datatype xsd:dateTime ;
    sh:minCount 1 ;
  ] ;
  sh:property [
    sh:path ex:status ;
    sh:in ( "pending" "confirmed" "cancelled" ) ;
  ] .

agent 产生 JSON-LD;SHACL 验证器接受或拒绝它。组件层信任验证器返回的东西。移动客户端只承载经验证的有效载荷——这是为什么一个 200 行的列表保持小而可预测,大约每条记录 200-400 个令牌,并快速渲染。

这是收益加倍的地方:验证、类型检查和渲染都读取同一个 schema。没有第二个真实来源来漂移。

跨平台渲染:同一实体,每个表面

一旦 UI 绑定到类型化的实体而不是自由形式的 props,跨平台问题就解决了。Booking 在 web、iOS 和 Android 上都是 Booking——同样的字段名、同样的验证、同样的状态枚举。组件层读取 schema 并渲染实体;表面适配。

<BookingCard
  booking={entity}                  // type: Booking (from schema.otf.ts)
  onCancel={() => mutate(status)}   // status enum from schema
/>

没有 <BookingCardWeb> 和 <BookingCardNative> 有不同的字段期望。当 schema 获得一个 cancellationReason 字段时,类型系统标记每个使用者——包括 agent 的工具定义——组件渲染它而无需分别向每个平台提交 PR。同样的组件名 + props + 外观在来自一个代码库的每个表面上渲染。

[[COMPARE: freeform props invented per platform vs schema-bound entities locked to one file]]

持久层住在哪里

这是当模型改变时不改变的部分。schema 文件的寿命超过任何特定的 LLM。组件层的寿命超过任何特定的 agent 框架。验证规则的寿命超过任何特定的工具运行器。

这是接缝:agent 是 schema 的使用者,UI 是 schema 的使用者,schema 是持久表面。工具在变——今天的模型、明天的 MCP 服务器、下季度的编排器——但契约就是契约。

当 AI 配置与 schema 并存——组件层读取其类型的同一个地方——agent 扩展工具包而不是重新生成它。一个已文档化的 CLAUDE.md、一个 .cursorrules 和一组经过测试的 ai/prompts/ 给 agent 与 schema 给运行时的同样接地。agent 和应用最终在同一个世界上推理。

[[CONCEPT: the schema file as the single source of truth — one file, two consumers, zero drift]]

这是不会变的部分。你交换模型,schema 保留。你交换 agent 框架,schema 保留。组件渲染 schema 说可渲染的任何东西,在你发送到的任何表面。

当 schema 是契约时的三个具体收益

Agent 错误失败很响亮,不沉默。SHACL 在形式不合的 startsAt 打到用户前拒绝它。UI 永远不必防御坏数据,因为坏数据永远不会到达。

移动保持快速。booking 的平铺、经验证的投影大约是 200-400 个令牌。承载一个图是替代方案,它装不进手机——100ms 列表渲染胜过联邦 SPARQL 查询。

重构只接触一个文件。添加 cancellationReason 更新 schema、agent 的工具定义、SHACL 形状和组件类型于一举。diff 是局部的;爆炸半径是一个文件。

语义网不是研究转向——它是一个等待 agent 的类型化契约模式。困难部分不是本体论。困难部分是让 schema 成为触及它的每层的真实来源。那是大多数团队跳过的部分,那是后来让他们付出六个月代价的部分。

钉死契约。让其他所有东西都在变。

更多行动,你可以考虑屏蔽这个人 /或报告虐待

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
从单 Agent 到吞吐量模型:Herdr 的多 Agent 并行工作流
下一篇
Node.js 24.18.1 LTS维护版本要点