惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
About on SuperTechFans
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
G
Google Developers Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
Cloudbric
Cloudbric
L
LINUX DO - 最新话题
MyScale Blog
MyScale Blog
H
Heimdal Security Blog
PCI Perspectives
PCI Perspectives
Attack and Defense Labs
Attack and Defense Labs
S
Security @ Cisco Blogs
Latest news
Latest news
I
Intezer
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
月光博客
月光博客
T
Threatpost
博客园 - 【当耐特】
S
Schneier on Security
P
Privacy International News Feed
G
GRAHAM CLULEY
T
Tenable Blog
AWS News Blog
AWS News Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
博客园 - Franky
Engineering at Meta
Engineering at Meta
美团技术团队
S
Secure Thoughts
T
Troy Hunt's Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Martin Fowler
Martin Fowler
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
UI Output Protocol 架构拆解:Markdown、HTML 和 UI DSL 如何分工
AI小老六 · 2026-06-17 · via 博客园_首页

拆解 AI 产品输出从文本到工作台的协议分层:Markdown 写文档,HTML 承载页面,UI DSL 接住操作。
原文链接AI 小老六

导语

最近不少 AI 产品开始把回答做得越来越"像页面":有卡片、有筛选器、有图表,也有可点击操作。于是一个问题被反复拿出来讨论:​HTML 会不会替代 Markdown​?

这个问法容易把方向带偏。真正变化的不是某个标记语言赢了另一个,而是 ​AI 产品的输出对象变了​。

早期 Chatbot 只需要把话说清楚,Markdown 已经够用;Agent 产品要把结果接到任务流里,用户不只看,还要点、筛、改、提交、回滚。到了这一步,产品需要的就不是"更强的文本格式",而是一套模型和前端都能遵守的 ​UI Output Protocol​。
inline-01.png

图:AI 产品输出从可读文本,逐步走向可操作的任务工作台

Markdown、HTML、UI DSL 不是一条简单的替代链。它们更像三种不同层级的接口:​Markdown 适合文档,HTML 适合页面,UI DSL 适合把模型意图变成受控组件​。

先换个问题:模型到底在交付什么

如果用户问"帮我总结这篇文章",模型交付的是内容。标题、列表、引用、表格,Markdown 很顺手。

如果用户问"帮我分析这组数据,异常项可以展开看,结论能一键生成工单",模型交付的就不只是内容了。它还要表达信息层级、组件类型、操作入口、状态变化和下一步动作。

这两类需求放在一张表里,差别很明显:

维度 文档型输出 工作台型输出
用户目标 阅读、复制、转发 探索、筛选、操作、继续推进
内容结构 线性段落为主 多块信息并列,常有主从关系
状态管理 基本不需要 需要保存筛选、展开、选择和执行状态
系统风险 格式错了影响阅读 操作错了可能影响业务数据
前端职责 把文本渲染好 把结构映射成安全的可操作界面

所以,"HTML 会不会替代 Markdown"不是主问题。主问题是:当模型输出会进入产品流程时,用什么协议承接它,才能既灵活又可控。

Markdown:低摩擦,但天然偏静态

Markdown 的生命力很强,因为它足够简单。模型容易生成,人容易读,系统也容易存。报告、会议纪要、需求草稿、代码解释、PR 摘要,这些场景用 Markdown 反而更好。

它的优点很直接:

  • Token 成本低,模型生成稳定。
  • 标题、列表、表格、代码块已经覆盖大多数线性表达。
  • 可读性好,复制到文档、Issue、IM 里不太容易坏。
  • 安全边界清楚,渲染器可以做严格白名单。

但 Markdown 的上限也清楚。它擅长"读",不擅长"操作"。一旦用户想对结果继续筛选、展开、排序、局部刷新,Markdown 就只能靠链接、表格和文字说明硬撑。

Markdown 可以描述一个按钮,但不能自然地成为一个按钮。

HTML:交互能力强,但别让模型裸写页面

HTML 的优势在交互承载。Tab、折叠面板、表单、图表、局部刷新、响应式布局,这些能力本来就是前端页面的主场。

问题在于:让模型直接输出 HTML,工程上并不舒服。

  • 稳定性不好​:模型可能漏闭合标签,也可能把样式、数据和交互逻辑混在一起。
  • 安全边界重​:脚本、事件属性、外链资源、内联样式都要治理,否则 XSS 和数据泄露风险会冒出来。
  • 设计系统会失控​:每次回答都生成一套新 HTML,看起来灵活,长期会让产品视觉、交互和无障碍规范变成一锅粥。

所以在严肃产品里,HTML 更适合作为渲染层,而不是模型的直接输出目标。模型不该关心按钮圆角几像素,也不该自己拼一段随时可能越权的 DOM。它更适合交付结构和意图。

UI DSL:模型和前端之间的窄腰协议

UI DSL 可以理解成一份受控的界面描述。模型输出的不是最终页面,而是一棵组件树:这里是一张卡片,那里是一张表,某列可排序,某个按钮代表"创建工单",某个筛选条件会回传给 Agent。
inline-02.png

图:UI DSL 把模型意图收束为受控组件、数据引用和动作入口

一个很简化的例子可能长这样:

{
  "type": "dashboard",
  "title": "异常订单分析",
  "children": [
    {
      "type": "metricCard",
      "title": "高风险订单",
      "value": 37,
      "action": {
        "type": "filter",
        "payload": { "risk": "high" }
      }
    },
    {
      "type": "table",
      "columns": ["订单号", "风险原因", "负责人"],
      "dataRef": "risk_orders",
      "actions": ["openTicket", "assignOwner"]
    }
  ]
}

这段 JSON 不负责视觉细节。它只告诉系统:该用什么组件、组件拿什么数据、用户能做什么动作。前端再把它映射到真实组件库里。

这就是 UI DSL 的价值:给模型留表达空间,但把它限制在产品允许的组件、字段和权限里。
mermaid-01.png

图:模型生成结构和意图,平台校验边界,前端负责渲染和交互

这条链路里,模型负责内容和意图,平台负责校验和权限,前端负责渲染和交互。三者分清楚,系统才不会变成"模型想怎么画就怎么画"。

从文本到工作台:输出形态的演进不是替代

更合理的演进路径不是"Markdown -> HTML -> UI DSL",而是输出能力从低到高分层:

层级 输出形态 适合场景 用户行为 主要成本
L1 Plain Text 简单问答、短回复 结构弱
L2 Markdown 报告、说明、PRD、代码解释 读、复制、评论 交互弱
L3 HTML / Web View 可视化报告、轻量交互页 点击、筛选、展开 安全和一致性治理
L4 UI DSL / Component Tree Agent Workspace、任务流、数据分析台 操作、回传、驱动下一步 需要协议、组件体系和权限模型

不同层级可以长期共存。一个 Agent 产品里,解释性文本继续用 Markdown;数据探索区用组件树;复杂详情页最终渲染成 HTML;高风险操作需要后端权限校验。没有必要为了"统一格式"把所有输出都塞进 UI DSL。

头部产品用的是同一种思路

很多成熟产品看起来形态不一样,底层思路接近:模型输出结构化结果,前端把它变成可操作界面。

产品形态 模型更像在输出什么 前端负责什么 如果只用 Markdown 会卡在哪里
搜索问答卡片 答案块、引用源、相关问题 卡片布局、引用跳转、折叠展开 引用只能变成普通列表
文档编辑器 AI Block Tree、表格、数据库字段 渲染成可编辑块,保持文档结构 用户要手动复制到正确位置
办公 Copilot 操作意图、数据范围、图表配置 在 Excel、PPT、BI 中执行 只能给文字建议,不能直接生成对象
Agent IDE 文件操作、Diff、命令、检查结果 展示可 Apply 的变更和验证状态 Diff 只能读,无法安全执行
自动化工作流 节点、边、条件、状态 渲染流程图并绑定后端执行 流程只能写成说明文档

这些产品并不是简单地让模型写 HTML。它们把输出拆成 数据、组件、动作 三部分,再由系统接管渲染和执行。

决策树:什么时候该用哪一层

可以用一个很简单的判断逻辑:
mermaid-02.png

图:从阅读、复杂布局、继续操作和事件回传四个问题选择输出层级

再换成工程问题,就是下面这张表:

判断问题 更偏 Markdown 更偏 HTML / UI DSL
用户读完之后会不会继续操作 读完就走 还要筛选、点击、提交
内容会不会持续变化 一次性结果 会被刷新、编辑、追踪
信息结构是不是线性的 段落、列表、表格即可 多区域、多状态、多联动
是否需要系统权限控制 基本没有 操作会影响任务、数据或外部系统
是否需要和 Agent 继续对话 结果即终点 用户动作会触发下一轮推理

协议设计比组件数量更重要

做 UI DSL 时,很多团队第一反应是多定义组件:卡片、表格、图表、时间线、流程图、表单、地图、文件树。组件当然重要,但更难的是协议边界。
inline-03.png

图:真正难的是在组件表达力、权限边界和运行时治理之间取得平衡

至少要提前定清楚这些事:

协议问题 如果不设计清楚
模型能输出哪些组件 组件爆炸,前端无法维护
每个组件有哪些必填字段 渲染时大量兜底,错误难定位
数据是内联还是引用 大对象塞进上下文,成本和泄露风险上升
用户事件如何命名 前端事件和 Agent 动作对不上
哪些动作需要权限确认 模型可能诱导执行高风险操作
Schema 校验失败怎么办 用户看到半成品界面
版本如何演进 老回答、老会话、老组件全部兼容困难

我的建议是先做窄。只开放少量稳定组件,比如 cardtablechartformactionList。等产品场景跑通,再扩展组件库。

UI DSL 不是越像前端框架越好。越早变成通用前端框架,越难管。

一个可落地的分层方案

如果要在 Agent 产品里落这套机制,可以按四层拆:
mermaid-03.png

图:Model Output、Protocol、Render、Runtime 四层形成可校验、可渲染、可审计的闭环

每一层的职责要硬切开:

负责什么 不该负责什么
Model Output 生成内容、结构和操作意图 直接写业务权限逻辑
Protocol 校验 Schema、过滤动作、处理版本 决定视觉样式
Render 映射组件、处理交互和布局 信任未经校验的模型输出
Runtime 执行动作、记录状态、回传结果 让模型绕过审计直接操作

这样做的好处是,模型能力变强时,产品可以放宽协议;模型出错时,系统仍然有护栏。

结语

Markdown 不会因为 Agent 产品出现就过时。它仍然是 AI 内容输出里最便宜、最稳、最通用的一层。

HTML 也不会凭空"一统天下"。它适合承载交互,但模型裸写 HTML 不是一个让人放心的长期方案。

真正值得投入的是 ​UI Output Protocol​:一套让模型表达界面意图、让系统校验边界、让前端稳定渲染的协议。它不追求让模型变成前端工程师,而是让模型说清楚"这里应该是什么、用户能做什么、动作要交给谁执行"。

Agent 产品往深处走,输出就会从文本变成工作台。到那时,格式选择只是表层问题;​协议设计,才是工程问题​。

推荐阅读

GEPA 架构拆解:让 Prompt 和 Skill 优化不靠玄学

Agent Workflow Runtime 架构拆解:把 Agent Loop 从提示词搬进代码,长任务才真正稳了

Google AX 控制面拆解:分布式 Agent 如何把断点恢复、审计策略和执行调度收进同一条链路

AI Native 竞争力:真正稀缺的不是会用 AI,而是把事往前推的人

Harness Engineering:Agent 真正能交付,靠的不是更强模型,而是上下文、执行协议和验收闸门