Components / Rich & Interactive

AI Agent Input

Agent 输入框:hairline 白卡 + 附件 chips + 发送/spinner + enhancing 渐变环。优先级 P2,已移植(1:1 aicss.dev;MVP 接线核心交互,菜单系样式类全量入库)。

① 活体演示

可真实输入、增删附件 chip。四态映射(输入端组件语义):empty(无输入,placeholder)/ ok(有内容,发送钮反色激活)/ running(已提交,spinner)/ error(发送失败,hairline 染 danger)。「Enhancing」开关演示 conic 渐变环 + 文本 shimmer(上游特色态)。

② 对比台

左:wb-ui 活体(带附件 chip 的就绪态);右:aicss.dev 原站截图存档(2026-08-13 采集,可滚动)。

wb-ui 活体
aicss.dev 原站截图(design/reference/aicss/ai-agent-input/screenshot.png)
aicss.dev ai-agent-input 原站截图

③ 真实字段说明

无消费型真实事件,输入端组件:本组件不消费 run event(字段真源 packages/contracts/workbench-events.mjs:11-77 的 9 个 type 都是产出侧),而是产生输入——文本经 composer 提交为 POST /runs 的 prompt,附件走 WORKBENCH_RUN_DIR/attachments 物化管道。run 状态只用于回显发送钮形态:

数据流向字段 / 通道驱动行为
产出:提交 promptPOST /runs(composer 现有提交管道)onSend(text) 回调,随后 running(spinner)
产出:附件composer 附件上传 → run 目录 attachments/chips 增删(渲染层,不改上传管道)
回显:workbench.run.statuspayload.statusrunning → spinner;终态恢复可输入;提交失败 → error
(未输入)—empty 态:placeholder

上游完整交互中的「+菜单 / 技能 pill / slash 面板 / 模型 flyout」样式类已全量入库(ai-agent-input.css),MVP 行为层未接线——workbench 已有自己的命令面板(docs/71)与模型选择,接入轮按需复用这些类,不重复造轮子。

④ 用在 workbench 哪个位置

接入点:composer 输入区(apps/web/index.html 底部输入框与发送钮)——轮 3b 在 ?ui=next 灰度下 composer 换皮:frame/hairline/按钮行/chips 用本组件样式。硬红线(契约 3.D.4):不改 Enter/IME 发送行为,cc:test:composer-keys 必绿——只换 class 与视觉,键盘事件处理逻辑一行不动。

⑤ 复制即用代码

引入 tokens + 组件 CSS/JS。全部相对路径、零依赖。

<link rel="stylesheet" href="design/wb-ui/lib/tokens.css">
<link rel="stylesheet" href="design/wb-ui/lib/components/ai-agent-input.css">
<script src="design/wb-ui/lib/components/ai-agent-input.js"></script>
var h = WbUI.promptInput.render(el, {
  placeholder: "Ask anything",
  chips: [{ name: "design.pdf" }],
  onSend: function (text) {      // 对接 composer 现有提交管道
    h.set("running");            // POST /runs 后 spinner
  }
});
h.set("ok");                     // run 终态恢复
h.set("error");                  // 提交失败(hairline 染 danger)
h.setEnhancing(true);            // 上游 enhancing:conic 环 + shimmer
Ported from aicss.dev/components/ai-agent-input, fetched 2026-08-13. Internal use only(上游无 license 声明,对外使用前须确认授权——docs/86 R1)。