前言¶
在 DeepSeek Harness(DSH)里做智能体,常见做法是模型只输出 Markdown 或 JSON,前端再单独接一套 UI。对话轮次和用户点击之间若缺少统一协议,校验边界、流式预览、会话级动作回传和「只看历史、不再误提交」往往要各写一套。A2UI 是 agent 生成界面的标准消息与渲染体系;要在 DSH 会话里原生挂载,需要独立的桥接插件,而不是把私有组件表硬叫成 A2UI。
下面介绍社区插件 dsh-a2ui(维护者 sunxiuguo,分类:工作流)。它用官方 A2UI schema 与渲染栈,在对话中创建可交互界面,把用户动作作为带标签的数据进入下一轮 agent turn,并提供显式校验、流式预览、会话作用域动作,以及不重新执行历史交互的可移植回放。README 标明:这是附加项目,不能替代 DSH GenUI;当前为 0.1.0-alpha.13 开发预览,在官方 DSH Web 宿主上已通过有界合成工作流验收,在线模型与完整 A2UI 一致性尚未认证。
这是什么¶
dsh-a2ui 是面向 DSH 对话的 A2UI 协议桥:智能体通过 render_a2ui 工具调用提交标准 A2UI 消息包,插件做 schema / 兼容性与文档校验,在会话中生成 A2UI 对话节点,由 @a2ui/react 与 @a2ui/web_core 及官方 basic catalog 渲染;用户交互经校验后以 labelled data 回到所属 DSH 会话,驱动下一轮 agent turn。
无效 schema、不支持的 catalog、surface 生命周期错误或最终组件引用非法时会可见失败,不支持的能力不会被静默删掉或改写。可导出 recording:保留编辑过的字段值与模型消息,导入回放不会再次发送历史 action。
核心功能¶
对话内界面与工具链¶
典型链路(README 摘要):
Agent tool call: render_a2ui({ messages })
→ schema, compatibility and document validation
→ DSH tool-result presentation metadata
→ A2UI conversation node
→ official A2UI runtime + focused accessible TextField and Slider views
→ user interaction
→ validated action, sent as labelled data to the owning conversation
→ next agent turn
工具参数仍在流式传输时,部分参数可先出预览;在最终工具校验成功之前,预览控件不能发送 action。SDK fixture 覆盖失败/取消结果的撤回;原生宿主验收还验证了 Stop 会在成功提交前结束进行中的 preview。
标准栈与示例 fixture¶
- 使用 A2UI 消息信封与官方 basic catalog,不将专有组件词汇改名为 A2UI。
- 当前示例为 workshop 请求表单与 validation 表单,体量小,便于检查对话体验。
- alpha.13:组合 DateTimeInput 清除任一半会清空整个绑定值;带 required 的提交 Button 在空/畸形日期时间片段时会阻止提交。
- alpha.12:运行时表达式失败以 per-surface、可关闭的 notice 展示,不暴露 evaluator 载荷。
- alpha.10:Slider 命名与键盘到 action/replay 的覆盖,以及可访问 TextField view(catalog 扩展 API)。
回放与本地演示¶
独立页面录制(约 23 秒,README 链接)展示:非法输入被挡、合法 action 写入本地 log、导出 recording 重载后恢复编辑值且不重发历史 action,以及对不支持 runtime 属性的拒绝。该演示是独立合成页,不是上文 DSH Web 宿主截图场景。
已在 DSH Web 宿主验证的范围¶
Full-host acceptance run 40204726938 于 2026-10-25 在当前 alpha.13 源码上通过:官方 CLI 与 Web shell、真实 HTTP RPC 与 WebSocket、两个隔离会话、受控的 pre-admission action 失败与重试、原生 Stop 与恢复、进程优雅重启后重新打开且无需重发历史。模型 provider 与 workshop 数据为脚本合成;证据覆盖该源码与场景,不涵盖所有模型、组件或失败模式。已发送消息与 submitted-action 预览会保留;未发送的字段草稿不会。
安装与本地环境¶
验证基线为 Node 24.19.0。依赖在 package.json 中锁定;本地安装时 README 要求禁用 lifecycle scripts:
npm ci --ignore-scripts
说明:上述命令在 README 的 Quick start 中与获取源码步骤一并给出;本文不展开 clone 命令。插件打包产物通过仓库脚本构建:
npm run build:plugin
该命令执行 vite build --config vite.plugin.config.ts 与 vite.client.config.ts 的客户端构建。README 未在已公开片段中给出形如 dsh plugin add … 的单行安装语句;在 DSH Web 宿主中的原生插件安装已在 full-host 验收中 exercised,具体步骤以仓库 full-host acceptance 与 SkillHub 目录页为准。
许可证:MIT(package.json)。
典型用法¶
1. 浏览器中试渲染、校验与 replay¶
在已安装依赖的源码目录:
npm run dev
打开 Vite 打印的 loopback 地址(dev 脚本绑定 127.0.0.1)。页面 action 落入本地 log,不是 DSH 会话。
- 点击 Stream synthetic example,编辑 Workshop topic,再点 Preview request,标准 action 信封出现在 log。
- 点击 Stream validation example,输入
bad可见字段错误与禁用按钮;输入CD34并 Preview valid code 记录合法 action。 - Export recording,复制 JSON;重载页面后粘贴并 Restore recording,编辑值恢复,历史 action 不会再次发送。
Reload 不会自动保存表单或 recording 编辑器。更细的 checks 与 Button gating 见仓库 validation walkthrough。
2. 终端里走 action 进入下一轮 agent turn¶
同一源码树,先 npm run build:plugin,再:
npm run demo:loop -- "Wheel-thrown pottery"
该 walkthrough 使用真实 DSH AgentLoop、ToolRuntime、会话组装、官方 renderer 与 send controller;脚本本地模型生成表单,在 jsdom 中编辑并点击,下一轮 agent turn 收到 action 并渲染 preview。期望输出包含:
PASS: 2 completed agent turns, 4 provider calls, 2 real tool results, 1 UI action.
这是终端 walkthrough,不是交互浏览器、在线模型或完整 DSH shell;需要源码与开发依赖,插件 tarball 不包含此 demo。边界说明见 synthetic-loop。
适用场景与注意¶
适合谁
- 希望在 DSH 对话里用标准 A2UI 做表单/控件,并让点击结果结构化进入下一轮 agent 的插件与智能体作者。
- 需要显式兼容边界、流式 preview gating、Stop/取消与重启后会话恢复行为的集成与验收工作(当前证据以合成 provider 与官方 Web 宿主有界场景为主)。
务必注意
- 插件在当前 dsh 进程权限下运行;安装或启用前请自行审阅 GitHub 源码 与 MIT 许可证,勿在未审计的情况下用于生产敏感数据。
- README 多次强调:无 live model、真实账号、预订、支付或客户数据参与公开截图/验收;live models 与 complete A2UI conformance 未认证。
- 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件是其中一条工作流向的 A2UI 桥接实现。
结尾¶
dsh-a2ui 把官方 A2UI schema 与渲染器接到 DSH 对话:render_a2ui 建节点,用户动作有界回传,recording 可回放字段状态而不重复执行历史提交。若你要在本地先理解校验与 replay,从 npm run dev 入手;若要对照 AgentLoop 行为,用 demo:loop;若要对齐 Web 宿主与传输层验收,查阅 full-host 文档与 CI run 40204726938。
- 目录页:https://www.skillhub.cn/plugins/sunxiuguo/dsh-a2ui
- 仓库:https://github.com/sunxiuguo/dsh-a2ui