国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

我復(fù)刻了 Claude 剛發(fā)布的生成式 UI 交互!

0
分享至

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

可以幫你在聊天信息流里面用地嗎可視化的方式介紹一些概念和信息,遠(yuǎn)比原來(lái)的純文本要好理解。


我之前就一直在看類似的方案,剛好 Claude 發(fā)了,我就感覺我也得加緊做了。

同時(shí)剛好也可以逆向參考一下他的方案。

瘋狂 PUA 了兩天 Codex 和 Claude 還真讓我搞出來(lái)了!


這個(gè)功能能讓 AI 直接在聊天里畫交互式圖表,流式輸出,邊生成邊渲染。

以前讓 AI 寫網(wǎng)頁(yè),得等整個(gè)頁(yè)面代碼全部生成完才能渲染,等半天。

現(xiàn)在不一樣了。

你能看著圖表一筆一筆在畫布上畫出來(lái),SVG 節(jié)點(diǎn)一個(gè)接一個(gè)冒出來(lái)。

生成過(guò)程本身就很震撼,而且生成完直接就能交互。

直接在我的 Agent 產(chǎn)品 Code Pilot 里面體驗(yàn):https://github.com/op7418/CodePilot

這篇內(nèi)容我就會(huì)介紹一下它的用法,以及具體的實(shí)現(xiàn)過(guò)程和一些注意事項(xiàng)。

有哪些好玩的用法

數(shù)據(jù)分析:數(shù)字終于能看懂了

比如讓它畫一個(gè)"美國(guó)和伊朗沖突每天成本估算"的圖表。

以前 AI 給你一大段文字,數(shù)字關(guān)系根本看不清。

現(xiàn)在直接出圖表,每部分金額多少一目了然,文字和圖表混在一起輸出,該解釋的解釋,該畫的畫。



小工具:寫個(gè)可交互的計(jì)算器啥的

讓它做一個(gè)復(fù)利計(jì)算器。

拖滑塊改初始金額、改投資年限,下面的圖表和數(shù)字實(shí)時(shí)變化。

這不是靜態(tài)圖片,是真的能交互的小工具。

貸款計(jì)算、單位換算這類東西都能做。


架構(gòu)圖:程序員最愛

你可以讓他幫你畫某個(gè)項(xiàng)目的架構(gòu),或者某一個(gè)實(shí)現(xiàn)方案的可視化。

比如這里我讓它畫 API 到 JWT 身份驗(yàn)證的完整流程。

特性對(duì)比、流程圖、層級(jí)結(jié)構(gòu)全是圖形化的,比看文字描述理解架構(gòu)快太多了。


分析線上數(shù)據(jù)

還有個(gè)玩法直接丟一個(gè) GitHub 倉(cāng)庫(kù)鏈接給它,它自己抓數(shù)據(jù)然后可視化分析。

比如這里我就把我自己的項(xiàng)目地址 Codepilot 發(fā)給他讓他分析。

星數(shù)、fork 數(shù)、技術(shù)棧、架構(gòu)設(shè)計(jì)、核心模塊,全部畫成圖表。

一眼就能看清楚項(xiàng)目全貌,比讀一大段文字強(qiáng)多了。


可以進(jìn)行交互和深度解釋

這個(gè)最強(qiáng)的是他跟模型結(jié)合的相當(dāng)緊密,不是一頓輸出就完事了。

你可以跟他生成的示意圖進(jìn)行交互,讓他進(jìn)行更詳細(xì)的解釋。

比如這里我讓他解釋季風(fēng)和洋流的關(guān)系。


如果我們想更詳細(xì)的了解就可以點(diǎn)擊那個(gè)洋流機(jī)制的按鈕。

就會(huì)自動(dòng)向當(dāng)前的模型發(fā)送指令,繼續(xù)幫你生成洋流機(jī)制的示意圖。


當(dāng)然我們可以進(jìn)行更加復(fù)雜的交互,比如常見的物理數(shù)學(xué)公式的可視化。

這種對(duì)于學(xué)生來(lái)說(shuō)非常好用,每個(gè)參數(shù)都可以通過(guò)滑塊和輸入控制,動(dòng)畫立刻會(huì)發(fā)生變化。


國(guó)產(chǎn)模型支持

Codepilot 實(shí)現(xiàn)之后不只是 Claude 能用。

Kimi K2.5、Minimax M2.5、Anthropic 原生模型都跑得起來(lái)。

K2.5 畫的圖形我覺得甚至比 Sonnet 4.6 還好看,架構(gòu)分析也很詳細(xì)。

如果用這個(gè)功能我推薦首選 K2.5 試試。

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

如果你不關(guān)心是如何實(shí)現(xiàn)的,可以直接去裝個(gè) Codepilot,愉快地玩耍了。

如何實(shí)現(xiàn)的



Claude 怎么做的

Claude.ai 官方用的是 tool_use 機(jī)制。

模型調(diào)用一個(gè)專用 tool 輸出結(jié)構(gòu)化的 widget 內(nèi)容,

前端解析 tool 調(diào)用的 input 參數(shù)來(lái)渲染。

這個(gè)方案在 Claude.ai 自己的架構(gòu)下沒問(wèn)題。

但搬到 CodePilot 就不行了,原因有三個(gè):

第一,SDK 限制。
CodePilot 用 Claude Agent SDK 的 preset: 'claude_code' 模式,
沒法注冊(cè)自定義 tool。
SDK 暴露的是 text delta 流,tool 層面擴(kuò)展不了。

第二,流式體驗(yàn)。
tool_use 的結(jié)果要等 input_json_delta 拼完才能渲染,
不支持 HTML 增量渲染。
代碼圍欄方式下,HTML 隨文本流式到達(dá),邊生成邊預(yù)覽。

第三,渲染隔離。

Claude.ai 用 Shadow DOM 做隔離。

我們選了 sandbox iframe。

iframe 隔離更徹底——完全獨(dú)立的 JS 執(zhí)行環(huán)境,

CSP 精確控制資源加載,

不存在樣式泄漏和腳本逃逸。

我們?cè)趺醋龅?/p>

觸發(fā):代碼圍欄

模型輸出一段特殊的 Markdown 代碼圍欄來(lái)觸發(fā)渲染:

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

這個(gè)格式復(fù)用了 CodePilot 已有的代碼圍欄模式
(image-gen-request、batch-plan 等),
前端 parser 鏈天然支持。


渲染:sandbox iframe

每個(gè) widget 渲染在一個(gè) sandbox="allow-scripts" 的 iframe 里。
iframe 的 srcdoc 是一個(gè)精心構(gòu)建的 receiver 頁(yè)面。

CSP 策略只放行 4 個(gè) CDN 域名的外部腳本,
connect-src 'none' 禁止所有網(wǎng)絡(luò)請(qǐng)求。

通過(guò) postMessage 接收內(nèi)容更新。
流式預(yù)覽階段發(fā) widget:update,不執(zhí)行腳本。
最終渲染發(fā) widget:finalize,執(zhí)行腳本。

ResizeObserver 監(jiān)聽內(nèi)容高度變化,

通過(guò) postMessage 報(bào)告給父頁(yè)面。

所有 點(diǎn)擊被攔截,
轉(zhuǎn)發(fā)給父頁(yè)面在新窗口打開。

主題同步靠監(jiān)聽父頁(yè)面的 class 變化,
實(shí)時(shí)切換深色/淺色模式。


CSS 變量橋接

這是讓 widget 跟應(yīng)用視覺融合的關(guān)鍵。

CodePilot 用 OKLCH 色彩空間的 CSS 變量。
Anthropic 的 widget 設(shè)計(jì)指南用 --color-background-primary 這類標(biāo)準(zhǔn)變量名。

橋接層在 iframe 初始化時(shí),
把 CodePilot 的變量值注入 iframe 的 :root。
模型按指南寫的 CSS 就能直接用當(dāng)前主題的顏色。

深色模式切換時(shí),
父頁(yè)面檢測(cè)到 class 變化,
重新算變量值推給 iframe。


流式渲染

這是整個(gè)實(shí)現(xiàn)里最復(fù)雜的部分。

模型逐 token 生成。
任意時(shí)刻收到的 widget 代碼都可能是不完整的 JSON、
不完整的 HTML、不完整的 還沒到時(shí),
sanitizeForStreaming 剝離了開標(biāo)簽,
但標(biāo)簽內(nèi)的 JavaScript 代碼變成了裸文本節(jié)點(diǎn),
被瀏覽器渲染成可見內(nèi)容。

修復(fù):在 StreamingMessage 的 partial code 提取后,
檢測(cè)最后一個(gè) 有沒有匹配的 。
沒有就在 位置截?cái)唷?br/>widget 指南規(guī)定 script 放最后,截?cái)嗖挥绊懸曈X內(nèi)容。
截?cái)嗥陂g展示 shimmer 遮罩,
狀態(tài)欄顯示"正在為可視化添加交互動(dòng)畫"。

iframe Ready 競(jìng)態(tài)

極少數(shù)情況下 widget 完全不渲染,停在 0px 高度。

WidgetRenderer 通過(guò) useEffect 注冊(cè) message 事件監(jiān)聽。
但 iframe 的 receiver script 加載完就立刻發(fā) widget:ready。
如果 iframe 加載速度快于 React effect 執(zhí)行,
widget:ready 在監(jiān)聽器注冊(cè)之前就發(fā)出去了,
iframeReady 永遠(yuǎn)不會(huì)變成 true。

修復(fù):在 iframe 元素上加 onLoad 回調(diào)兜底。
onLoad 觸發(fā)時(shí) receiver script 必然已執(zhí)行完,
是可靠的就緒信號(hào)。

React 組件樹穩(wěn)定性

widget 在圍欄閉合瞬間閃一次。

兩個(gè)問(wèn)題疊在一起:
流式 partial widget 沒有 React key,
閉合后獲得 key="w-0",key 變了導(dǎo)致 remount。
shimmer overlay 用外包

實(shí)現(xiàn),
改變了組件樹結(jié)構(gòu),type 變了又導(dǎo)致 remount。

修復(fù):給 partial widget 算穩(wěn)定的 key
(w-N,N 是在最終 segments 數(shù)組中的預(yù)期位置),
跟閉合后的 key 一致。
shimmer overlay 移進(jìn) WidgetRenderer 內(nèi)部,
通過(guò) showOverlay prop 控制。
組件樹始終是 ,不變。

整個(gè)生成式 UI 系統(tǒng),

難的不是"讓一段 HTML 在 iframe 里跑起來(lái)"。那很簡(jiǎn)單。

真正的復(fù)雜度在于:

讓這個(gè) iframe 在流式傳輸、組件生命周期切換、主題變化這些狀態(tài)轉(zhuǎn)換中,

保持視覺上的穩(wěn)定。

每一個(gè)"閃一下""跳一下""消失一下",

都要去理解 React 的 reconciliation、

瀏覽器的渲染管線、

postMessage 的時(shí)序。

最終效果是:

用戶看到模型的回復(fù)里自然地穿插著圖表和示意圖。

就像它們本來(lái)就該在那里。

這是今天的內(nèi)容。如果覺得對(duì)你有幫助的話,可以幫我點(diǎn)個(gè)贊,或者是發(fā)給有需要的朋友。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

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.

相關(guān)推薦
熱點(diǎn)推薦
伊朗獲得強(qiáng)援,又一中東國(guó)家下場(chǎng),還是美國(guó)親自送上門的幫手

伊朗獲得強(qiáng)援,又一中東國(guó)家下場(chǎng),還是美國(guó)親自送上門的幫手

快看張同學(xué)
2026-03-26 14:46:05
2026年身份證就是老年證!爸媽滿60歲別辦證,這4件事千萬(wàn)不能忘

2026年身份證就是老年證!爸媽滿60歲別辦證,這4件事千萬(wàn)不能忘

復(fù)轉(zhuǎn)這些年
2026-03-26 09:26:17
楊振寧猝然離世5個(gè)月后,翁帆突傳新消息,懷孕傳聞早就真相大白

楊振寧猝然離世5個(gè)月后,翁帆突傳新消息,懷孕傳聞早就真相大白

李橑在北漂
2026-03-25 23:30:59
人狂自有天收

人狂自有天收

李老逵亂擺龍門陣
2025-09-11 09:01:28
巴基斯坦把稀土賣給美國(guó),以為捏住中國(guó)“七寸”,如今自食惡果

巴基斯坦把稀土賣給美國(guó),以為捏住中國(guó)“七寸”,如今自食惡果

滄海旅行家
2026-03-25 16:13:09
跟著黃仁勛下注:如今的token可能就是20年的房子

跟著黃仁勛下注:如今的token可能就是20年的房子

夢(mèng)大明白
2026-03-24 11:05:49
快訊!歐爾班的回旋鏢來(lái)了!

快訊!歐爾班的回旋鏢來(lái)了!

達(dá)文西看世界
2026-03-26 12:23:16
我在小城市,一個(gè)人做電商,半年掙300萬(wàn)

我在小城市,一個(gè)人做電商,半年掙300萬(wàn)

南風(fēng)窗
2026-03-26 10:07:51
兩大致命短板,一個(gè)懸疑謎題!央媒怒批王勵(lì)勤,國(guó)乒王朝懸了?

兩大致命短板,一個(gè)懸疑謎題!央媒怒批王勵(lì)勤,國(guó)乒王朝懸了?

成吉思熱
2026-03-26 10:06:14
伊朗:擊中擊落美以202架飛機(jī);以方:坦格西里身亡,他負(fù)責(zé)封鎖霍爾木茲!想快速抽身,特朗普:打伊朗不是戰(zhàn)爭(zhēng),是“軍事行動(dòng)”

伊朗:擊中擊落美以202架飛機(jī);以方:坦格西里身亡,他負(fù)責(zé)封鎖霍爾木茲!想快速抽身,特朗普:打伊朗不是戰(zhàn)爭(zhēng),是“軍事行動(dòng)”

每日經(jīng)濟(jì)新聞
2026-03-26 17:27:09
他倆才是最牛岳父母,3個(gè)女兒全嫁百億富豪,一個(gè)比一個(gè)漂亮厲害

他倆才是最牛岳父母,3個(gè)女兒全嫁百億富豪,一個(gè)比一個(gè)漂亮厲害

白面書誏
2026-03-26 18:13:05
79元太火!小米磁吸玩偶賣斷貨 官方承諾加快生產(chǎn)

79元太火!小米磁吸玩偶賣斷貨 官方承諾加快生產(chǎn)

快科技
2026-03-26 07:09:03
原來(lái)他12年前就已離世!患病3年女兒不愿照看,死后為爭(zhēng)遺產(chǎn)現(xiàn)身

原來(lái)他12年前就已離世!患病3年女兒不愿照看,死后為爭(zhēng)遺產(chǎn)現(xiàn)身

白面書誏
2026-03-26 13:38:18
原來(lái)她是張雪峰母親,一生操勞全力托舉兒子,卻中年喪夫晚年喪子

原來(lái)她是張雪峰母親,一生操勞全力托舉兒子,卻中年喪夫晚年喪子

以茶帶書
2026-03-26 13:38:50
東莞長(zhǎng)安醫(yī)院“慰問(wèn)用水果籃”中標(biāo)價(jià)492元/份?醫(yī)院采購(gòu)辦稱水果籃包含11種水果,紀(jì)檢辦回應(yīng)正在調(diào)查中

東莞長(zhǎng)安醫(yī)院“慰問(wèn)用水果籃”中標(biāo)價(jià)492元/份?醫(yī)院采購(gòu)辦稱水果籃包含11種水果,紀(jì)檢辦回應(yīng)正在調(diào)查中

極目新聞
2026-03-26 18:38:43
伊朗對(duì)以色列發(fā)起導(dǎo)彈打擊 以多地響起防空警報(bào)

伊朗對(duì)以色列發(fā)起導(dǎo)彈打擊 以多地響起防空警報(bào)

財(cái)聯(lián)社
2026-03-26 14:50:24
太扎心!遼寧一中年男子小便怒斥妻子舉布遮擋稍高,就撒手人寰了

太扎心!遼寧一中年男子小便怒斥妻子舉布遮擋稍高,就撒手人寰了

火山詩(shī)話
2026-03-26 06:16:11
馬英九基金會(huì)決定中止今年兩岸青年交流,馬應(yīng)該出面聲明!

馬英九基金會(huì)決定中止今年兩岸青年交流,馬應(yīng)該出面聲明!

達(dá)文西看世界
2026-03-26 10:58:22
伊朗用導(dǎo)彈拼出尊嚴(yán),中國(guó)導(dǎo)彈實(shí)力藏不住了,俄專家給出硬核定論

伊朗用導(dǎo)彈拼出尊嚴(yán),中國(guó)導(dǎo)彈實(shí)力藏不住了,俄專家給出硬核定論

探源歷史
2026-03-25 13:22:35
東北兩省書記省長(zhǎng)會(huì)見劉強(qiáng)東

東北兩省書記省長(zhǎng)會(huì)見劉強(qiáng)東

觀察者網(wǎng)
2026-03-25 21:43:37
2026-03-26 21:47:00
歸藏的AI工具箱 incentive-icons
歸藏的AI工具箱
關(guān)注人工智能、LLM 、 AI 圖像視頻和設(shè)計(jì)
279文章數(shù) 38關(guān)注度
往期回顧 全部

科技要聞

Meta高管狂分百億期權(quán),700名員工卻下崗

頭條要聞

美國(guó)總統(tǒng)特朗普公開宣布訪華行程 外交部回應(yīng)

頭條要聞

美國(guó)總統(tǒng)特朗普公開宣布訪華行程 外交部回應(yīng)

體育要聞

申京努力了,然而杜蘭特啊

娛樂(lè)要聞

劉曉慶妹妹發(fā)聲!稱姐姐受身邊人挑撥

財(cái)經(jīng)要聞

油價(jià)"馴服"特朗普?一到100美元就TACO

汽車要聞

一汽奧迪A6L e-tron開啟預(yù)售 CLTC最大續(xù)航815km

態(tài)度原創(chuàng)

本地
時(shí)尚
手機(jī)
房產(chǎn)
軍事航空

本地新聞

救命,這只醬板鴨已經(jīng)在我手機(jī)復(fù)仇了一萬(wàn)遍

上新|| 她們說(shuō),找到了自己的人生裙子!

手機(jī)要聞

15年經(jīng)典落幕!MIUI正式停更,澎湃OS全面接棒

房產(chǎn)要聞

突發(fā),三亞又有大批征遷補(bǔ)償方案出爐!

軍事要聞

擔(dān)心特朗普突然停戰(zhàn) 以總理下令48小時(shí)盡力摧毀伊設(shè)施

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版