dsh-visual-card:在 DSH 对话里渲染可交互的 HTML 卡片

前言

在 DeepSeek Harness(DSH)里做智能体或日常对话时,模型经常输出图表说明、布局示意或可点按的演示,但纯 Markdown 或代码块只能「看」,很难在同一轮回答里直接操作。把 HTML 贴进外部浏览器又打断对话流。

dsh-visual-card 是面向 DSH 客户端的插件:模型通过工具交出一段 HTML,插件在本轮回答下方渲染成带工具条的可交互窗口,支持全屏、复制与下载,并能把卡片按会话与轮次持久化。下面介绍它的定位、能力与安装用法。

这是什么

  • 包名:dsh-visual-card(仓库 MCJF28/dsh-visual-card)
  • 维护者:MCJF28
  • 分类:客户端(dsh.client,平台 web,immediately: true)
  • 版本:1.0.0(以 package.json 为准)
  • 许可证:MIT

插件解决的是「可视化回答落在对话内」:AI 生成交互式 HTML,用户在 Harness 里即可点击、用键盘操作(在规则范围内)、全屏查看或导出,配色跟随当前亮/暗主题。

核心功能

渲染形态

工具调用完成后,本轮回答下方出现一个窗口(宿主使用 turnTail 槽位,流式输出结束前轮次未闭合时不会出现卡片):

  • 顶部工具条:标题,以及全屏、复制、下载
  • 内容区为模型提供的 HTML,允许执行脚本时按钮、canvas、动画等会真正运行
  • 颜色通过主题变量适配,而非写死色值

能承载的内容类型

资料中列举的用途包括:图表、色板、布局示意;可点击演示(状态切换、翻页、展开细节);以及完整小游戏(例如 WASD 移动、canvas 逐帧动画)。需要键盘时,点进窗口才接管键盘;在窗口外按键仍进入输入框。

键盘与 iframe

实现上使用 iframe,使 AI 脚本监听 document 的键盘事件时,不会在窗口外误触发。规则摘要:

操作 行为
点进窗口 窗口接管键盘,标题栏提示「键盘已交给窗口」
按 Esc 释放键盘,回到输入框
点窗口外 自动释放
鼠标 悬停、滚动、点击无需先聚焦窗口

模型侧工具

模型可调用 render_visual,传入标题与 HTML;height 可选,省略时按内容自动定高(推荐)。

render_visual({
  title: '标题',
  html: '<div>...</div>',
  // height 可选:不给就按内容自动定高(推荐)
})

宽度固定后,高度随内容伸缩。超过设置中的「高度上限」比例时,改为卡片内部滚动,避免为了看一张大卡而滚动整段对话。

生成 HTML 时建议使用插件提供的主题变量,例如:--v-bg-base、--v-bg-layer-1/2、--v-border、--v-text、--v-text-dim、--v-brand、--v-success/warn/error。

设置与存储

在应用内 设置 → 可视化 可配置(改动即时写入 ~/.dsh/visual/settings.json):

项 作用
高度上限 内容高度超过视口高度的设定比例(40–100%)时,卡片内部滚动
允许执行脚本 关闭后仅静态展示;脚本是唯一的安全风险来源
每个会话保留轮数 10–2000,超出旧轮次在写入时丢弃
每轮最多卡片数 1–50,超出只保留最新
清空历史 删除 cards.json,带二次确认

卡片按「会话 + 轮次」写入 ~/.dsh/visual/cards.json,重启后仍在;保留策略由上述设置决定。删除 ~/.dsh/visual 只会丢失历史可视化,不影响插件功能。

已知限制

  • 卡片只能出现在本轮回答下方,不能插入正文中间(宿主对话节点类型固定,插件无法新增节点类型)
  • turnTail 在本轮结束后才渲染,流式过程中看不到卡片

安装与启用

DSH 生态里插件通常通过内置安装或 profile 依赖接入;本插件不要凭仓库名自行拼接未在文档出现的 CLI 命令。

推荐:内置插件安装程序。 打开「设置 → 内置插件」,粘贴包名并安装,然后重启应用:

dsh-visual-card

安装程序会自动写入 dsh.profile.bundles,无需手改文件。

命令行方式(需先完全退出应用):

cd ~/.dsh/profiles/desktop
pnpm add dsh-visual-card

将包名加入 dsh.profile.bundles 后重启应用。

插件以当前 DSH 进程权限运行;安装前可在 GitHub 查看源码与 MIT 许可证,自行评估是否满足使用场景。

典型用法

  1. 按上一节完成安装并重启 DSH。
  2. 在对话中让模型调用 render_visual,传入 title 与完整 html 字符串。
  3. 若需要交互或小游戏,在设置中保持「允许执行脚本」开启;仅展示静态页面时可关闭以降低风险。
  4. 需要长时间操作时点击卡片内部以接管键盘,用 Esc 或点击外部释放。
  5. 使用工具条全屏查看,或通过复制、下载带走 HTML。

模型写 HTML 时引用主题变量,可避免在亮/暗主题切换时出现对比度问题。

适用场景与注意

适合:个人或可信环境下的 Harness 对话——需要图表、演示页、轻量交互原型或小游戏,且希望结果留在会话里并可再次打开。

安全:README 明确说明,AI 生成的脚本运行在宿主页面里,并非隔离沙箱;这是可点击、可跑小游戏的代价。插件仅约束不引用外部资源,不做代码审查。若面对不可信模型输出,应自行增加沙箱或关闭脚本执行。

生态说明:社区目录 SkillHub 上的 dsh-visual-card 页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式。

结尾

dsh-visual-card 把「一段 HTML」变成对话内的可交互卡片,并配套高度策略、键盘焦点、持久化与导出能力。若你正在 DSH 里做可视化回答或交互演示,可按文档安装 dsh-visual-card,从 render_visual 与主题变量入手。

  • 目录页:https://www.skillhub.cn/plugins/MCJF28/dsh-visual-card
  • GitHub:https://github.com/MCJF28/dsh-visual-card
羽毛球分组比赛记分
小程序二维码

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

小夜