dsh-a2ui:在 DSH 对话里渲染标准 A2UI,动作有界、回放不重复执行

前言

在 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 会话。

  1. 点击 Stream synthetic example,编辑 Workshop topic,再点 Preview request,标准 action 信封出现在 log。
  2. 点击 Stream validation example,输入 bad 可见字段错误与禁用按钮;输入 CD34 并 Preview valid code 记录合法 action。
  3. 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
羽毛球分组比赛记分
小程序二维码

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

小夜