a2ui-render-in-dsh:在 DSH 對話中渲染交互式 A2UI 卡片

前言

DeepSeek Harness (DSH) 的智能體通常通過文本與用戶交互。當需要處理複雜數據、表單或可視化圖表時,純文本描述難以滿足需求。a2ui-render-in-dsh 插件爲 DSH Web UI 提供了在對話流中渲染交互式 UI 卡片的能力,使智能體能夠根據上下文動態生成 quizzes、forms、charts 和 diagrams,並將用戶的操作以自然語言反饋回模型。

插件簡介

這是一個由 baihui-ai 維護的 DSH 插件。它基於 A2UI v0.9 協議(由 Ant Design X 的 @ant-design/x-card 實現),將智能體的輸出能力擴展到 UI 層面。核心價值在於讓用戶通過交互式卡片完成任務,而非僅閱讀文本。

核心功能

插件提供以下核心能力:

  1. 交互式卡片渲染
    支持多種組件類型,包括測驗、表單、多步驟嚮導、下拉菜單、日期選擇器、產品卡片、可排序/可篩選表格、ECharts 圖表、中國地圖熱力圖、數學函數繪圖、Mermaid 流程圖/思維導圖、KaTeX 公式以及算法分步動畫。

  2. 流式漸進渲染
    卡片會在模型生成輸出時逐步顯示,而非等待全部生成完畢。這通過截斷 JSON 修復機制實現,讓用戶能即時看到內容呈現。

  3. 原地更新
    支持通過 a2ui_update 工具針對已渲染的卡片進行局部更新。這對於進度條、長任務狀態或實時儀表盤至關重要。

  4. 組件目錄服務
    插件提供 a2ui_catalog 工具,返回完整的組件目錄和創作規則。模型在首次渲染卡片前會調用此工具,後續對話複用該目錄,避免在提示詞中硬編碼大量規則。

  5. 零外部依賴與離線能力
    所有依賴(ECharts、Mermaid、KaTeX 字體、中國 GeoJSON 數據)均打包在本地。插件運行時不發送任何外部請求,斷網環境下也能正常工作。

  6. 自然語言提交
    用戶通過點擊卡片按鈕或填寫表單提交時,系統將操作轉化爲自然語言消息(如 “Submit signup”),而非原始 JSON。這便於模型理解用戶意圖。

  7. 狀態持久化與會話導航
    草稿自動保存至 localStorage,頁面刷新後可恢復。提交後的表單會鎖定並記錄狀態。即使清除緩存,提交狀態也可從會話記錄中重建。插件右側提供會話導航器,用於定位草稿和歷史消息。

安裝與啓用

該插件以 npm 包形式發佈。安裝後,需將包中的文件集成到 DSH 的構建流程中。

  1. 安裝 npm 包:
    npm install a2ui-render-in-dsh
  1. 集成到 DSH Bundle:
    根據 package.json 中的配置,插件包含 lib/index.js(宿主端,提供工具)和 lib/client.js(客戶端,提供工具視圖)。在 DSH 的構建配置中引入這些文件,並應用 cordis.patch.yml 補丁以註冊插件。

典型用法

智能體在與用戶交互時,按照以下流程使用工具:

  1. 獲取組件定義:首次渲染卡片前,調用 a2ui_catalog 獲取規則。
  2. 渲染卡片:調用 a2ui_render 生成卡片(如表單或圖表)。
  3. 用戶交互:用戶填寫表單或點擊按鈕。
  4. 提交反饋:用戶操作通過 session.prompt 以自然語言形式反饋給模型。
  5. 實時更新:在生成過程中,通過 a2ui_update 對卡片進行實時更新(如進度條)。

適用場景與注意事項

  • 適用場景:需要數據可視化、複雜表單交互、數學公式展示或算法分步演示的場景。
  • React 依賴:@ant-design/x-card 需要 React 作爲可選的 peer dependency。
  • 語音限制:受限於 dsh prompt channel 的限制,當前版本不支持語音錄製功能。
  • 離線環境:由於所有資源已打包,插件完全支持離線使用。
  • 許可證:遵循 MIT 協議。

總結

a2ui-render-in-dsh 通過引入 A2UI 協議,在 DSH Web UI 中構建了完整的交互閉環。它解決了純文本對話在處理結構化數據和複雜交互時的不足,同時通過流式渲染和狀態管理保持了良好的用戶體驗。

  • GitHub: https://github.com/baihui-ai/a2ui-render-in-dsh
  • Catalog: https://www.skillhub.cn/plugins/baihui-ai/a2ui-render-in-dsh
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜