AI 應用元件

子代理狀態卡

巢狀在父訊息下的子代理狀態卡 React 元件:顯示任務、進度條與目前步驟,可展開查看其串流輸出,完成後收成一行摘要;附 Group 以共用連接線依序進場。

主代理把工作分派給多個子代理時,用這張卡片在主訊息下方以縮排巢狀列出每個子代理的狀態。標頭一列放狀態圖示、名稱、任務與已執行時間/token 數;下方是 2px 細進度條(沒給進度時改為不確定掃光)與交叉淡接的目前步驟。點標頭可展開子代理的串流輸出,最大高度內捲動並在底部時自動貼底;完成且有摘要時進度條淡出、改顯示一行摘要。搭配 SubagentStatusCard.Group 可讓多張卡共用左側連接線並依序進場。

把這個效果裝進你的專案

在專案資料夾執行指令,CLI 會加入原始碼與依賴套件,再依下方使用範例引用元件。

npx webberui@latest add subagent-status-card

還沒有專案,或安裝遇到問題?看快速開始 →

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

0.4
200
120
編輯中的呼叫預設屬性
<SubagentStatusCard/>

完整範例包含預覽的排版與資料。先安裝元件,再把範例檔貼入你的專案。

安裝

npx webberui@latest add https://webberui.com/r/subagent-status-card.json

或在 components.json 設定 registries 後,改用 @webberui/subagent-status-card 安裝。

使用

import { SubagentStatusCard } from "@/components/ui/subagent-status-card";

<SubagentStatusCard.Group aria-label="市場調查子代理">
  <SubagentStatusCard
    name="資料蒐集員"
    task="搜尋近一年的手搖飲市場報導"
    status="running"
    progress={0.4}
    currentStep="正在讀取第 3 份文件"
    output={"・展店放緩\n・重心南移"}
    elapsed={12}
    tokens={1240}
  />
  <SubagentStatusCard
    name="撰稿員"
    task="產出 800 字摘要"
    status="done"
    summary="完成 812 字摘要,含 3 個重點"
  />
</SubagentStatusCard.Group>

Props

Prop型別預設值說明
namestring—子代理名稱,例如「資料蒐集員」
taskstring—指派給子代理的任務(一句話)
status"queued" | "running" | "done" | "failed"—目前狀態
progressnumber—進度(0–1);未提供且狀態為 running 時,進度條改為不確定掃光
currentStepstring—目前步驟,變化時交叉淡接
outputReact.ReactNode—子代理的輸出;字串會保留換行
monobooleanfalse字串輸出是否使用等寬字體
summarystring—完成後收合時顯示的一行摘要
elapsednumber—已執行秒數,顯示為「已執行 12 秒」
tokensnumber—已使用的 token 數,以 compact 格式顯示(例 1.2k tokens)
expandedboolean—受控的展開狀態
defaultExpandedboolean—非受控模式的初始展開狀態;未提供時依狀態決定(failed 展開,其餘收合)
onExpandedChange(expanded: boolean) => void—展開狀態變動時回呼
depthnumber1巢狀層級,每層左縮排 16px 並畫連接線
iconReact.ReactNode—名稱前的自訂圖示(例如子代理頭像)
stiffnessnumber120進度條 spring 的剛性
dampingnumber20進度條 spring 的阻尼
durationnumber200展開動畫與色彩過渡的時長(毫秒)
classNamestring—透傳到最外層容器

SubagentStatusCard.Group

欄位型別預設值說明
childrenReact.ReactNode—子代理卡片(通常是多個 SubagentStatusCard)
staggernumber60子卡依序進場的間隔(毫秒)
aria-labelstring"子代理"群組的無障礙名稱
classNamestring—透傳到最外層容器

細節

  • 進度條以 scaleX spring 推進,stiffness/damping 可調;status 為 done 時一律補滿,queued 時歸零。
  • 不確定狀態:running 且沒有 progress 時,一條 40% 寬的亮條以 1.4 秒往返掃光。
  • 輸出區最大高度 240px、內部捲動;使用者停在底部時新內容會自動貼底,往上捲閱讀時不會被拉回。
  • 非受控模式下,使用者尚未手動切換前,展開狀態跟著 status 走——轉為 failed 時自動展開讓錯誤一眼可見。
  • 外層寫入 --wb-subagent-status-card-duration,色彩與 Chevron 旋轉過渡都使用它,可在全域覆寫。
  • 每層 depth 左縮排 16px;SubagentStatusCard.Group 在左側畫一條共用主幹線,各卡以短橫線接上,子卡間隔 60ms 依序進場(opacity 與 x 位移)。

可及性

  • 每張卡為 role="group",aria-label 完整描述狀態,例如「子代理:資料蒐集員,執行中,進度 40%」
  • 有輸出時標頭是 button,帶 aria-expanded 與指向輸出區的 aria-controls,可用鍵盤 Tab 聚焦、Enter/Space 切換,聚焦時有 focus-visible 外框
  • 進度條為 role="progressbar" 並提供 aria-valuenow;不確定狀態時省略數值、以 aria-valuetext 說明進行中
  • 狀態變化透過 aria-live="polite" 區域宣告;連接線與裝飾圖示皆 aria-hidden
  • 使用者系統開啟「減少動態效果」時,進度條直接到位、不確定掃光改為靜態條、狀態圖示不彈跳、輸出區直接出現、Group 不做依序進場