网易首页 > 网易号 > 正文 申请入驻

我复刻了 Claude 刚发布的生成式 UI 交互!

0
分享至

前天 Anthropic 在 Claude 里面上线了基于生成式 UI 的新交互。

可以帮你在聊天信息流里面用地吗可视化的方式介绍一些概念和信息,远比原来的纯文本要好理解。


我之前就一直在看类似的方案,刚好 Claude 发了,我就感觉我也得加紧做了。

同时刚好也可以逆向参考一下他的方案。

疯狂 PUA 了两天 Codex 和 Claude 还真让我搞出来了!


这个功能能让 AI 直接在聊天里画交互式图表,流式输出,边生成边渲染。

以前让 AI 写网页,得等整个页面代码全部生成完才能渲染,等半天。

现在不一样了。

你能看着图表一笔一笔在画布上画出来,SVG 节点一个接一个冒出来。

生成过程本身就很震撼,而且生成完直接就能交互。

直接在我的 Agent 产品 Code Pilot 里面体验:https://github.com/op7418/CodePilot

这篇内容我就会介绍一下它的用法,以及具体的实现过程和一些注意事项。

有哪些好玩的用法

数据分析:数字终于能看懂了

比如让它画一个"美国和伊朗冲突每天成本估算"的图表。

以前 AI 给你一大段文字,数字关系根本看不清。

现在直接出图表,每部分金额多少一目了然,文字和图表混在一起输出,该解释的解释,该画的画。



小工具:写个可交互的计算器啥的

让它做一个复利计算器。

拖滑块改初始金额、改投资年限,下面的图表和数字实时变化。

这不是静态图片,是真的能交互的小工具。

贷款计算、单位换算这类东西都能做。


架构图:程序员最爱

你可以让他帮你画某个项目的架构,或者某一个实现方案的可视化。

比如这里我让它画 API 到 JWT 身份验证的完整流程。

特性对比、流程图、层级结构全是图形化的,比看文字描述理解架构快太多了。


分析线上数据

还有个玩法直接丢一个 GitHub 仓库链接给它,它自己抓数据然后可视化分析。

比如这里我就把我自己的项目地址 Codepilot 发给他让他分析。

星数、fork 数、技术栈、架构设计、核心模块,全部画成图表。

一眼就能看清楚项目全貌,比读一大段文字强多了。


可以进行交互和深度解释

这个最强的是他跟模型结合的相当紧密,不是一顿输出就完事了。

你可以跟他生成的示意图进行交互,让他进行更详细的解释。

比如这里我让他解释季风和洋流的关系。


如果我们想更详细的了解就可以点击那个洋流机制的按钮。

就会自动向当前的模型发送指令,继续帮你生成洋流机制的示意图。


当然我们可以进行更加复杂的交互,比如常见的物理数学公式的可视化。

这种对于学生来说非常好用,每个参数都可以通过滑块和输入控制,动画立刻会发生变化。


国产模型支持

Codepilot 实现之后不只是 Claude 能用。

Kimi K2.5、Minimax M2.5、Anthropic 原生模型都跑得起来。

K2.5 画的图形我觉得甚至比 Sonnet 4.6 还好看,架构分析也很详细。

如果用这个功能我推荐首选 K2.5 试试。

好,到这里,模型的玩法基本上展示完了。

如果你不关心是如何实现的,可以直接去装个 Codepilot,愉快地玩耍了。

如何实现的



Claude 怎么做的

Claude.ai 官方用的是 tool_use 机制。

模型调用一个专用 tool 输出结构化的 widget 内容,

前端解析 tool 调用的 input 参数来渲染。

这个方案在 Claude.ai 自己的架构下没问题。

但搬到 CodePilot 就不行了,原因有三个:

第一,SDK 限制。
CodePilot 用 Claude Agent SDK 的 preset: 'claude_code' 模式,
没法注册自定义 tool。
SDK 暴露的是 text delta 流,tool 层面扩展不了。

第二,流式体验。
tool_use 的结果要等 input_json_delta 拼完才能渲染,
不支持 HTML 增量渲染。
代码围栏方式下,HTML 随文本流式到达,边生成边预览。

第三,渲染隔离。

Claude.ai 用 Shadow DOM 做隔离。

我们选了 sandbox iframe。

iframe 隔离更彻底——完全独立的 JS 执行环境,

CSP 精确控制资源加载,

不存在样式泄漏和脚本逃逸。

我们怎么做的

触发:代码围栏

模型输出一段特殊的 Markdown 代码围栏来触发渲染:

show-widget
{"title":"training_flow","widget_code":" ..."}

这个格式复用了 CodePilot 已有的代码围栏模式
(image-gen-request、batch-plan 等),
前端 parser 链天然支持。


渲染:sandbox iframe

每个 widget 渲染在一个 sandbox="allow-scripts" 的 iframe 里。
iframe 的 srcdoc 是一个精心构建的 receiver 页面。

CSP 策略只放行 4 个 CDN 域名的外部脚本,
connect-src 'none' 禁止所有网络请求。

通过 postMessage 接收内容更新。
流式预览阶段发 widget:update,不执行脚本。
最终渲染发 widget:finalize,执行脚本。

ResizeObserver 监听内容高度变化,

通过 postMessage 报告给父页面。

所有 点击被拦截,
转发给父页面在新窗口打开。

主题同步靠监听父页面的 class 变化,
实时切换深色/浅色模式。


CSS 变量桥接

这是让 widget 跟应用视觉融合的关键。

CodePilot 用 OKLCH 色彩空间的 CSS 变量。
Anthropic 的 widget 设计指南用 --color-background-primary 这类标准变量名。

桥接层在 iframe 初始化时,
把 CodePilot 的变量值注入 iframe 的 :root。
模型按指南写的 CSS 就能直接用当前主题的颜色。

深色模式切换时,
父页面检测到 class 变化,
重新算变量值推给 iframe。


流式渲染

这是整个实现里最复杂的部分。

模型逐 token 生成。
任意时刻收到的 widget 代码都可能是不完整的 JSON、
不完整的 HTML、不完整的 还没到时,
sanitizeForStreaming 剥离了开标签,
但标签内的 JavaScript 代码变成了裸文本节点,
被浏览器渲染成可见内容。

修复:在 StreamingMessage 的 partial code 提取后,
检测最后一个 有没有匹配的 。
没有就在 位置截断。
widget 指南规定 script 放最后,截断不影响视觉内容。
截断期间展示 shimmer 遮罩,
状态栏显示"正在为可视化添加交互动画"。

iframe Ready 竞态

极少数情况下 widget 完全不渲染,停在 0px 高度。

WidgetRenderer 通过 useEffect 注册 message 事件监听。
但 iframe 的 receiver script 加载完就立刻发 widget:ready。
如果 iframe 加载速度快于 React effect 执行,
widget:ready 在监听器注册之前就发出去了,
iframeReady 永远不会变成 true。

修复:在 iframe 元素上加 onLoad 回调兜底。
onLoad 触发时 receiver script 必然已执行完,
是可靠的就绪信号。

React 组件树稳定性

widget 在围栏闭合瞬间闪一次。

两个问题叠在一起:
流式 partial widget 没有 React key,
闭合后获得 key="w-0",key 变了导致 remount。
shimmer overlay 用外包

实现,
改变了组件树结构,type 变了又导致 remount。

修复:给 partial widget 算稳定的 key
(w-N,N 是在最终 segments 数组中的预期位置),
跟闭合后的 key 一致。
shimmer overlay 移进 WidgetRenderer 内部,
通过 showOverlay prop 控制。
组件树始终是 ,不变。

整个生成式 UI 系统,

难的不是"让一段 HTML 在 iframe 里跑起来"。那很简单。

真正的复杂度在于:

让这个 iframe 在流式传输、组件生命周期切换、主题变化这些状态转换中,

保持视觉上的稳定。

每一个"闪一下""跳一下""消失一下",

都要去理解 React 的 reconciliation、

浏览器的渲染管线、

postMessage 的时序。

最终效果是:

用户看到模型的回复里自然地穿插着图表和示意图。

就像它们本来就该在那里。

这是今天的内容。如果觉得对你有帮助的话,可以帮我点个赞,或者是发给有需要的朋友。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
黄仁勋“女友”湖南湘潭卫校毕业,朋友:从小自信,老师人缘好

黄仁勋“女友”湖南湘潭卫校毕业,朋友:从小自信,老师人缘好

大厂财经社
2026-11-12 02:41:49
张一鸣再发声谈字节AI:追平OpenAI与Anthropic“最早2029年或2030年”

张一鸣再发声谈字节AI:追平OpenAI与Anthropic“最早2029年或2030年”

澎湃新闻
2026-11-12 15:02:35
库里伤退!杜兰特20分火箭终结勇士8连胜 申京准三双斯马特被驱逐

库里伤退!杜兰特20分火箭终结勇士8连胜 申京准三双斯马特被驱逐

醉卧浮生
2026-11-12 13:09:54
“小孩嘛,忍忍就算了”,00后女孩忍了8年,楼上从2个孩子变成了5个,拍篮球、跳绳……“对付恶邻不再需要体面”,她拿起钢锅和iPad反击

“小孩嘛,忍忍就算了”,00后女孩忍了8年,楼上从2个孩子变成了5个,拍篮球、跳绳……“对付恶邻不再需要体面”,她拿起钢锅和iPad反击

都市快报橙柿互动
2026-11-12 19:57:23
亲人病危,男子打顺风车从上海回江苏,距目的地20公里时被甩;投诉后司机发短信嘲讽“是没送到你家坟头吗”,平台:永久封禁

亲人病危,男子打顺风车从上海回江苏,距目的地20公里时被甩;投诉后司机发短信嘲讽“是没送到你家坟头吗”,平台:永久封禁

极目新闻
2026-11-12 08:15:18
突发!黄仁勋辞任 CEO,英伟达迎来历史性换帅

突发!黄仁勋辞任 CEO,英伟达迎来历史性换帅

爱范儿
2026-11-12 22:37:16
震惊!央视原编导“哑巴”证实:与黄仁勋传绯闻的黄乐,就是曾经和她一个办公室的黄乐

震惊!央视原编导“哑巴”证实:与黄仁勋传绯闻的黄乐,就是曾经和她一个办公室的黄乐

火山詩话
2026-11-10 11:06:57
林生斌发长文:本人不是“保姆纵火案”的“幕后策划者”,移民澳大利亚、居住富人区等说法纯属捏造,“镇魂井”“镇魂墓”等纯属无稽之谈

林生斌发长文:本人不是“保姆纵火案”的“幕后策划者”,移民澳大利亚、居住富人区等说法纯属捏造,“镇魂井”“镇魂墓”等纯属无稽之谈

南方都市报
2026-11-12 18:21:53
独扛中国军团大旗:赵心童4-0横扫泰国选手,晋级斯诺克冠中冠赛小组决赛

独扛中国军团大旗:赵心童4-0横扫泰国选手,晋级斯诺克冠中冠赛小组决赛

侧身凌空斩
2026-11-12 22:18:13
两名外籍乘客将头探出高铁车厢外吸烟,12306回应:此行为属个人素质问题,无法阻止,若影响列车运行或在车厢内吸烟会被处罚

两名外籍乘客将头探出高铁车厢外吸烟,12306回应:此行为属个人素质问题,无法阻止,若影响列车运行或在车厢内吸烟会被处罚

洪观新闻
2026-11-11 21:51:24
中国证监会:汇聚各方合力 全力维护市场平稳运行

中国证监会:汇聚各方合力 全力维护市场平稳运行

环球网资讯
2026-11-12 13:42:06
知名女网红塌房,曾是无数人心中的女神,被曝光私下收费3000

知名女网红塌房,曾是无数人心中的女神,被曝光私下收费3000

新游戏大妹子
2026-11-12 12:42:40
高,实在是高!曹云金何沄伟疑回应郭德纲拜马志明当“义父”,搭配东北风味歌曲《做人别忘本》

高,实在是高!曹云金何沄伟疑回应郭德纲拜马志明当“义父”,搭配东北风味歌曲《做人别忘本》

裕丰娱间说
2026-11-12 17:17:07
或致永久性失明!涉司美格鲁肽、利拉鲁肽等“减肥神药”,目前尚无已知的治疗方法

或致永久性失明!涉司美格鲁肽、利拉鲁肽等“减肥神药”,目前尚无已知的治疗方法

新民晚报
2026-11-11 09:54:30
重磅!曼联已解雇45岁卡里克+正式通知 转正仅5个月 带队8轮不胜

重磅!曼联已解雇45岁卡里克+正式通知 转正仅5个月 带队8轮不胜

我爱英超
2026-11-12 17:53:19
13岁女孩确诊胃癌,已无手术救治余地;医生:她把泡面烧烤当正餐,长期吃腌制菜、盐焗菜,身体发出警报,孩子腹痛一年家长却没当回事

13岁女孩确诊胃癌,已无手术救治余地;医生:她把泡面烧烤当正餐,长期吃腌制菜、盐焗菜,身体发出警报,孩子腹痛一年家长却没当回事

南方都市报
2026-11-12 08:17:45
马斯克:别急着解雇黄仁勋,等一等调查结果,如果他被裁了我会雇佣他

马斯克:别急着解雇黄仁勋,等一等调查结果,如果他被裁了我会雇佣他

可达鸭面面观
2026-11-12 12:28:27
黄仁勋辞职!执掌英伟达33年后突然卸任:CFO克雷斯接任临时CEO

黄仁勋辞职!执掌英伟达33年后突然卸任:CFO克雷斯接任临时CEO

快科技
2026-11-12 22:04:06
全球最大资产管理集团贝莱德:坐拥15.5万亿美元只有1%投向了中国市场!

全球最大资产管理集团贝莱德:坐拥15.5万亿美元只有1%投向了中国市场!

城事堂
2026-11-12 15:12:38
基辛格当年就看穿了1979年对越反击战:表面看越方遭遇重创,其实真正栽跟头的根本不是它,背后真正被拖垮的角色如今几乎没人提起?

基辛格当年就看穿了1979年对越反击战:表面看越方遭遇重创,其实真正栽跟头的根本不是它,背后真正被拖垮的角色如今几乎没人提起?

扶苏聊历史
2026-11-12 11:27:37
2026-11-13 00:23:00
歸藏的AI工具箱 incentive-icons
歸藏的AI工具箱
关注人工智能、LLM 、 AI 图像视频和设计
341文章数 65关注度
往期回顾 全部

科技要闻

黄仁勋承认出轨:伤害了妻儿,毫无借口

头条要闻

国家级射击教练涉走私武器 家属:配件组成不了一支枪

头条要闻

国家级射击教练涉走私武器 家属:配件组成不了一支枪

体育要闻

西部狂飙!湖刺勇集体暴走 连胜到何时?

娱乐要闻

黄仁勋与黄乐合照曝光,吃饭氛围暧昧

财经要闻

72岁王健林重回“一号位”

汽车要闻

限时权益价8.88万 吉利星愿STAR限定系列发布

态度原创

艺术
游戏
本地
手机
公开课

艺术要闻

17位 国外画家笔下的女子

《光环:战役进化》移植Dreamcast !双模式可运行

本地新闻

乌兰察布:以前种土豆,现在种Token

手机要闻

全系都有背屏!荣耀700系列续航不打折扣:7.96mm厚度同档最大电池

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版