ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

OpenTiny NEXT 实战:用 GenUI 和 SDK 智能化改造存量 Web 系统

OpenTiny NEXT 实战:用 GenUI 和 SDK 智能化改造存量 Web 系统

1. 从 HC 2026 现场回来,聊聊 OpenTiny NEXT 到底在解决什么问题

刚从 HC 2026 的展区挤出来,脑子里还在回放 OpenTiny NEXT 那场演示。说实话,今年大会 AI 相关的展台占了七成以上,但大部分都是"套壳对话"或者"文档问答",看多了会审美疲劳。OpenTiny NEXT 不太一样,它把重点放在了Web 应用本身的智能化改造上——不是让你再做一个聊天窗口,而是让已有的企业级 Web 系统具备"理解意图、生成界面、自动执行"的能力。

这个方向为什么值得单独拿出来讲?因为绝大多数企业的核心业务系统都是 Web 形态:后台管理、数据看板、工单系统、报表平台。这些系统沉淀了多年业务逻辑,不可能推倒重来。OpenTiny NEXT 的思路是在现有 Web 技术栈之上叠加一层 AI 能力,通过 SDK 和 GenUI(生成式 UI)把自然语言指令翻译成可执行的界面操作或组件渲染。关键词里的 OpenTiny、Web、AI、SDK、GenUI 五个词,基本就是它的技术骨架。

这篇文章适合三类人看:一是正在做企业级中后台前端、想引入 AI 能力但不知道从哪下手的工程师;二是技术选型阶段、需要评估"AI 改造现有系统"可行性的架构师;三是对 GenUI 这个概念好奇、想搞清楚它和传统低代码平台区别的产品同学。我会把现场看到的能力拆开,结合我自己在类似项目里踩过的坑,讲清楚它背后的机制、落地路径和那些官方文档不会写的细节。

需要先说明一点:下面涉及的具体 API 名称和配置项,部分是基于现场演示和公开资料做的合理还原,实际接入时请以官方最新文档为准。但技术原理和踩坑经验是通用的,换个 SDK 也照样适用。

2. OpenTiny NEXT 的能力边界:它做什么,不做什么

2.1 和"给系统加个聊天框"的本质区别

很多人一听"Web 应用智能化",第一反应就是右下角挂个客服气泡,接个大模型 API 就完事。这种做法的问题在于:聊天框和业务系统是两张皮。用户问"帮我查一下上个月华东区的退货率",模型只能干巴巴回一段文字,它没法真的去调你的接口、渲染你的图表、跳转到你的详情页。

OpenTiny NEXT 的核心差异在于双向打通。一方面它能把用户的自然语言意图解析成结构化的操作指令(比如"查询 + 时间范围 + 区域 + 指标"),另一方面它能把这些指令映射到 Web 应用已有的组件和接口上,直接驱动界面变化。这中间靠的就是 GenUI 这套机制——不是生成一段静态 HTML,而是生成符合你组件库规范的、可交互的界面描述。

我打个比方:传统聊天框像是给系统配了个"翻译官",用户说什么它转述什么;OpenTiny NEXT 更像是给系统配了个"操作员",用户说需求,它直接上手把活干了。

2.2 三类典型能力拆解

从现场演示和我后续的了解来看,它的能力大致分三层:

能力层级具体表现典型场景
意图理解层自然语言转结构化指令语音/文本输入查询条件
界面生成层GenUI 动态渲染组件根据需求生成表单、图表、列表
执行编排层调用已有接口、串联多步操作自动填单、批量处理、流程触发

这三层不是必须全用。你可以只用第一层做智能搜索,也可以只用第二层做动态表单。这种渐进式接入的设计对企业很友好,不用一次性改造整个系统。

2.3 它明确不碰的领域

现场和几位同行聊下来,大家比较关心边界问题。有几个点需要澄清:

  • 它不是低代码平台。低代码是"人拖拽生成应用",GenUI 是"AI 根据意图生成界面",前者是设计态,后者更偏运行态。两者可以结合,但定位不同。
  • 它不替代业务逻辑。你的权限校验、数据校验、事务处理还得自己写,AI 只负责"把用户意图翻译成调用"。
  • 它不保证 100% 准确。意图识别有误差,所以必须有确认机制和回退路径,这点后面会详细讲。

提示:评估任何 AI 改造方案时,先问清楚"出错时怎么办"。能优雅降级的方案才是能上生产的方案。

3. GenUI 到底怎么把一句话变成界面

3.1 从"意图"到"组件树"的翻译过程

GenUI 这个词听起来玄乎,拆开看其实是一条清晰的流水线。用户输入"给我做一个员工信息录入表单,包含姓名、部门、入职日期和紧急联系人",系统内部大致经历这么几步:

第一步是意图结构化。大模型把这句话解析成一个 JSON 描述,类似{type: "form", fields: [{name: "姓名", type: "text", required: true}, ...]}。这一步的关键是约束模型的输出格式,通常用 function calling 或者 JSON schema 来强制。

第二步是组件映射。系统拿到这个结构化描述后,去查你注册的组件库,把type: "form"映射到你的 Form 组件,type: "text"映射到你的 Input 组件。这里就是 OpenTiny 的价值所在——它和 TinyVue 这类组件库是打通的,映射关系开箱即用。

第三步是渲染与绑定。生成组件树之后,还要处理数据绑定、事件绑定、校验规则。比如"入职日期"要绑定到日期选择器,"必填"要转成校验规则。

3.2 为什么不能直接让大模型吐 HTML

这是我在自己项目里踩过的坑。早期图省事,直接让模型生成 HTML 字符串然后v-html塞进去,结果问题一大堆:

  • 样式失控:模型生成的 class 名和你项目的样式体系对不上,界面丑得没法看。
  • 安全风险:直接渲染模型生成的 HTML,等于把 XSS 的大门敞开。
  • 无法交互:生成的按钮点了没反应,因为事件没绑定。
  • 不可维护:出了问题根本没法调试,你面对的就是一坨字符串。

GenUI 的正确做法是生成组件描述而非最终代码。模型只负责说"这里要一个下拉框,选项是 A/B/C",具体怎么渲染、怎么绑定,交给前端框架。这样既保证了样式统一,又保证了安全性,还能复用现有的组件能力。

3.3 组件注册:GenUI 落地最容易被低估的一步

现场演示很流畅,但真正落地时,组件注册这一步的工作量往往被低估。你需要把项目里用到的组件一个个登记到 GenUI 的映射表里,告诉它"什么意图对应什么组件、组件接受哪些属性、属性怎么从意图里提取"。

我建议的做法是从高频组件开始,分批注册。先搞定表单类(Input、Select、DatePicker、Radio)和展示类(Table、Card、Chart),这三类覆盖了 80% 的场景。剩下的按需补充。

注册时有个细节要注意:属性命名要贴近自然语言。比如你的组件属性叫valueKey,但用户说的是"选项值",那映射表里就要做好这层转换。别指望模型能猜对你的内部命名习惯。

// 组件注册的简化示意 const componentRegistry = { form: { component: 'TinyForm', props: ['layout', 'labelWidth'] }, input: { component: 'TinyInput', props: ['placeholder', 'maxlength'] }, select: { component: 'TinySelect', props: ['options', 'multiple'] }, datePicker: { component: 'TinyDatePicker', props: ['format', 'range'] } };

4. SDK 接入的完整路径与那些文档没写的坑

4.1 环境准备阶段的两个隐藏依赖

接入 OpenTiny NEXT 的 SDK,表面上看就是装个包、配个 key。但实际动手时,有两个依赖容易被忽略:

第一个是模型服务的网络连通性。企业内网环境往往对出网有严格限制,你得提前确认模型服务是走内网代理还是本地部署。如果是本地部署,还要考虑显存和并发。我见过一个团队卡在这一步整整两天,最后发现是网关没放行。

第二个是前端构建工具的兼容性。GenUI 涉及动态组件加载,如果你的项目用的是比较老的 webpack 配置,可能需要调整dynamic import相关的设置。Vite 项目一般问题不大,但要注意 SSR 场景下的水合问题。

4.2 初始化配置的关键参数

SDK 初始化时,几个参数直接决定了后续体验:

  • 模型端点与鉴权方式:这个不用多说,但要注意 key 的管理,别硬编码在前端。
  • 意图置信度阈值:低于这个阈值时,系统应该走"追问确认"而不是硬猜。我一般设 0.75 左右,太低会误操作,太高会频繁追问。
  • 组件库版本对齐:SDK 版本和你的 TinyVue 版本要对齐,跨大版本容易出兼容问题。
  • 降级策略开关:模型服务不可用时,是隐藏 AI 入口还是显示"暂不可用",这个要提前定。

4.3 一个真实的接入踩坑记录

我在一个后台管理系统里接入类似能力时,遇到过这么个问题:用户输入"导出上个月的订单",系统正确识别了意图,也调用了导出接口,但导出的数据是空的。排查了半天,发现是时间范围解析的时区问题——模型理解"上个月"是按 UTC 算的,而业务数据是按本地时区存的,差了 8 小时,跨月边界就出错了。

这个坑的教训是:凡是涉及时间、金额、单位这类有歧义的参数,一定要在意图解析后做二次校验和归一化。别完全信任模型的输出。后来我在解析层加了一个"参数规范化"中间件,专门处理时区、货币单位、数字格式这些,问题就再没出现过。

注意:AI 改造项目里,80% 的线上问题不是模型不够聪明,而是边界条件没处理好。把精力花在参数校验和异常处理上,回报率远高于调模型。

5. 把 AI 能力塞进存量 Web 系统的三种姿势

5.1 旁路式:不动主流程,先做增强

最稳妥的接入方式是旁路式。你的主业务流程一行不改,只在旁边加一个 AI 入口。比如在查询页面加一个"用自然语言描述查询条件"的输入框,用户输入后,系统解析成查询表单的字段值,填进去,用户确认后再走原来的查询逻辑。

这种方式的优点是风险极低,出问题了大不了把入口隐藏掉,主流程不受影响。适合作为试点,先跑通技术链路,收集用户反馈。缺点是能力受限,AI 只能做"填表单"这种辅助工作,没法做复杂的多步编排。

5.2 嵌入式:让 AI 成为流程的一环

跑通试点后,可以考虑嵌入式。把 AI 能力嵌到具体业务节点里。比如工单系统里,用户描述问题后,AI 自动分类、推荐处理方案、预填处理表单。这时候 AI 已经是流程的一部分了,但关键节点仍然有人工确认。

嵌入式对意图识别的准确率要求更高,因为用户已经预期"它能懂"。这个阶段要重点建设反馈闭环:用户修正了 AI 的结果,这个修正数据要能回流,用于优化提示词或微调模型。

5.3 编排式:多步操作的自动串联

最高阶的是编排式,AI 能理解一个复合目标,然后自动拆解成多步操作并执行。比如"把这个月所有超期未处理的工单批量转给对应负责人并发送提醒",这背后涉及查询、筛选、分配、通知多个动作。

编排式的技术难点在于事务性和可回滚。多步操作中间失败了怎么办?我的经验是引入"操作计划"的概念:AI 先生成一个执行计划,展示给用户确认,确认后逐步执行,每步都有日志,失败可以回滚或重试。千万别让 AI 直接闷头执行一串操作,出了事没法收拾。

接入姿势改造范围风险等级适用阶段
旁路式极小低试点验证
嵌入式局部中单点提效
编排式较大高流程重构

6. 意图识别不准时,系统该怎么优雅地"认怂"

6.1 置信度分级与差异化响应

AI 改造项目最怕的不是识别错,而是识别错了还硬着头皮执行。所以必须建立置信度分级机制:

  • 高置信度(>0.9):直接执行,但保留撤销入口。
  • 中置信度(0.75-0.9):执行前用一句话确认,比如"你是想查询华东区上个月的退货率,对吗?"
  • 低置信度(<0.75):不执行,转为追问或引导用户用传统方式操作。

这套机制的关键是阈值要可配置,不同业务场景对准确率的容忍度不一样。财务相关的操作阈值要高,内部查询可以低一些。

6.2 追问话术的设计技巧

追问不是简单地说"我没听懂"。好的追问应该缩小范围。比如用户说"帮我处理一下那个单子",系统可以追问"你是指待审批的工单,还是待发货的订单?"给出选项比开放式提问的体验好得多。

另一个技巧是提供"最近操作"作为候选。用户说"再查一次刚才那个",系统可以列出最近几次查询记录让用户选。这比让用户重新描述一遍高效得多。

6.3 兜底方案:永远留一条传统路径

无论 AI 做得多好,都要保留传统操作路径。原因有三:一是模型服务可能不可用;二是有些用户就是不习惯用自然语言;三是复杂操作用表单可能比对话更高效。

我的做法是在 AI 入口旁边始终保留"切换到高级模式"的链接,点击后回到传统的表单界面。这个设计看起来简单,但能极大降低用户的抵触情绪——知道有退路,才敢尝试新东西。

7. 性能与安全:企业级落地绕不开的两道坎

7.1 首屏加载与流式响应的平衡

GenUI 涉及模型调用,响应时间天然比传统接口慢。如果用户点一下要等三五秒,体验就崩了。几个优化方向:

  • 流式输出:模型生成组件描述时,边生成边渲染,让用户看到进度。
  • 意图缓存:高频意图(比如"查今日订单")的结果可以缓存,命中直接返回。
  • 预加载:用户鼠标悬停在 AI 入口上时,就预加载 SDK 和模型连接。
  • 骨架屏:等待期间显示骨架屏,比转圈圈体验好。

实测下来,流式输出 + 意图缓存这两招组合,能把感知等待时间压到 1 秒以内,基本可接受。

7.2 权限校验不能交给 AI

这是安全红线。AI 可以理解意图、生成界面,但能不能执行某个操作,必须由后端的权限系统说了算。我见过有团队图省事,让 AI 判断"这个用户能不能删数据",这是极其危险的。

正确做法是:AI 生成的每个操作指令,都要经过和传统接口一样的权限校验。AI 只是换了一种输入方式,底层的安全模型不能变。另外,AI 生成的查询条件也要防注入,别以为自然语言就没有注入风险。

7.3 数据脱敏与日志审计

企业数据敏感,AI 处理过程中难免接触业务数据。几个必须做的动作:

  • 脱敏:传给模型的数据要脱敏,身份证、手机号、金额这些敏感字段要处理。
  • 审计:AI 的每次意图解析、每次操作执行都要记日志,方便追溯。
  • 隔离:如果用的是外部模型服务,要确认数据不被用于训练。

提示:安全合规的投入在项目初期看不出价值,但一旦出事就是大事。宁可接入慢一点,也要把这几道关把住。

8. 我在类似项目里总结的几条实操心得

先说一个反直觉的结论:AI 改造项目的成败,技术只占三成,剩下七成是产品设计和用户引导。我见过技术做得很扎实但没人用的系统,也见过技术一般但用户抢着用的系统,差别就在这七成。

第一条心得是从"高频 + 低风险"的场景切入。别一上来就搞核心业务流程,先找个查询类、展示类的场景跑通。用户用顺手了,信任建立了,再往深水区走。

第二条是把 AI 的"思考过程"适度暴露给用户。完全黑盒会让人不安,适当展示"我理解你是想……"能让用户建立正确预期。但别展示太多技术细节,用户不关心你用的是什么模型。

第三条是建立快速迭代的机制。意图识别的准确率不是一次调好的,需要根据真实用户输入持续优化。建议做一个"bad case 收集"功能,用户点个踩,输入就进优化队列。这个闭环建起来,准确率会肉眼可见地提升。

第四条,也是最重要的一条:别为了 AI 而 AI。有些操作传统表单三步就完成了,非要用对话反而更慢。判断标准很简单——如果自然语言输入能减少用户的输入量或记忆负担,那就值得做;如果只是换个形式,那就算了。

最后分享一个我在实际项目里验证过的小技巧:在 AI 入口旁边放一句示例提示,比如"试试输入:查一下本周新增用户"。别小看这句话,它能显著降低首次使用门槛,用户照着例子改一改就会用了。这个细节带来的使用率提升,比优化模型准确率来得快多了。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进