🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

可视化卡片 MCJF28/dsh-visual-card

DeepSeek Harness
MCJF2815 天前有提交已提供中文文档扫描:含敏感能力

把 AI 生成的 HTML 渲染成可交互卡片,支持全屏与导出

29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MCJF28/dsh-visual-card
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · vision
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 15 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 14 处,展示前 14 条)
  • 读取本地文件
    index.js:89
    const parsed = JSON.parse(readFileSync(SETTINGS_FILE, 'utf8'))
  • 写入本地文件
    index.js:98
    mkdirSync(STORE_DIR, { recursive: true })
  • 写入本地文件
    index.js:99
    writeFileSync(SETTINGS_FILE, JSON.stringify(settings, undefined, 2), 'utf8')
  • 读取本地文件
    index.js:120
    const parsed = JSON.parse(readFileSync(STORE_FILE, 'utf8'))
  • 写入本地文件
    index.js:138
    mkdirSync(STORE_DIR, { recursive: true })
  • 写入本地文件
    index.js:150
    writeFileSync(STORE_FILE, JSON.stringify(out), 'utf8')
  • 读取本地文件
    index.js:166
    if (existsSync(STORE_FILE)) bytes = statSync(STORE_FILE).size
  • 读取本地文件
    index.js:166
    if (existsSync(STORE_FILE)) bytes = statSync(STORE_FILE).size
  • 删除本地文件
    index.js:450
    rmSync(STORE_FILE, { force: true })
  • 写入剪贴板
    client.js:148
    await navigator.clipboard.writeText(text)
  • 发起网络请求
    client.js:496
    const response = await fetch(
  • 发起网络请求
    client.js:652
    const response = await fetch('/dsh-visual/settings')
  • 发起网络请求
    client.js:661
    const response = await fetch('/dsh-visual/settings', {
  • 发起网络请求
    client.js:674
    const response = await fetch('/dsh-visual/clear', { method: 'POST' })
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

把 AI 生成的 HTML 渲染成 DeepSeek Harness 会话里的交互卡片:可播放演示、全屏、复制和下载。

README

由 DeepSeek 最新模型翻译生成
dsh-visual-card 可视化回答插件:AI 交一段 HTML,在对话里渲染成一个可交互的窗口——能点、能用键盘操作、能全屏、能导出。 效果 工具调用后,本轮回答下方出现一个窗口: - 顶部工具条:标题 + 全屏 / 复制 / 下载 - 内容区是 AI 写的 HTML,脚本会真正执行(按钮、canvas、动画都能跑) - 颜色自动跟随当前亮/暗主题 能做什么 - 图表、色板、布局示意 - 可点击的演示(切换状态、翻页、展开细节) - 完整的小游戏(WASD 移动、canvas 逐帧动画) - 需要键盘操作时,点进窗口才接管键盘,窗口外按键照常进输入框 键盘规则 | 操作 | 行为 | | 点进窗口 | 窗口接管键盘,标题栏提示「键盘已交给窗口」 | | 按 Esc | 释放键盘,回到输入框 | | 点窗口外 | 自动释放 | | 鼠标 | 始终正常(悬停、滚动、点击都不用先聚焦) | 实现上用了 iframe:AI 生成的脚本通常监听 document 的键盘事件,如果和宿主共用同一个文档,窗口外按键也会触发它。iframe 有独立的事件作用域,焦点不在里面就收不到键。
展开完整文档(README 剩余 1 节)
dsh-visual-card

可视化回答插件:AI 交一段 HTML,在对话里渲染成一个可交互的窗口——能点、能用键盘操作、能全屏、能导出。

效果

工具调用后,本轮回答下方出现一个窗口:

- 顶部工具条:标题 + 全屏 / 复制 / 下载
- 内容区是 AI 写的 HTML,脚本会真正执行(按钮、canvas、动画都能跑)
- 颜色自动跟随当前亮/暗主题

能做什么

- 图表、色板、布局示意
- 可点击的演示(切换状态、翻页、展开细节)
- 完整的小游戏(WASD 移动、canvas 逐帧动画)
- 需要键盘操作时,点进窗口才接管键盘,窗口外按键照常进输入框

键盘规则

| 操作 | 行为 |
| 点进窗口 | 窗口接管键盘,标题栏提示「键盘已交给窗口」 |
| 按 Esc | 释放键盘,回到输入框 |
| 点窗口外 | 自动释放 |
| 鼠标 | 始终正常(悬停、滚动、点击都不用先聚焦) |

实现上用了 iframe:AI 生成的脚本通常监听 document 的键盘事件,如果和宿主共用同一个文档,窗口外按键也会触发它。iframe 有独立的事件作用域,焦点不在里面就收不到键。

工具

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

高度是自动的:宽度固定后,内容多高卡片就多高,不套固定框。内容超过设置的比例上限时,改为卡片内部滚动 —— 再大的卡片也不会逼你滚动整个对话才能看全貌。

写 HTML 时用主题变量,不要写死颜色:

--v-bg-base、--v-bg-layer-1/2、--v-border、--v-text、--v-text-dim、--v-brand、--v-success/warn/error

设置

设置 → 可视化:

| 项 | 作用 |
| 高度上限 | 卡片高度按内容自动决定;超过这个比例(40–100% 视口高)就改成卡片内部滚动,不逼你滚动整个对话才能看全貌 |
| 允许执行脚本 | 关掉后按钮、动画、小游戏都不运行,只显示静态内容。脚本运行在宿主页面里,这是唯一的安全风险来源 |
| 每个会话保留轮数 | 超出的旧轮次在写入时丢弃(10–2000) |
| 每轮最多卡片数 | 一轮里超过这个数量只留最新的(1–50) |
| 清空历史 | 清掉 cards.json,带二次确认 |

改动即时保存到 ~/.dsh/visual/settings.json。

存储

卡片按「会话 + 轮次」落盘到 ~/.dsh/visual/cards.json,重启后仍在。保留轮数与每轮上限由设置决定。

删掉这个目录只会丢失历史可视化,不影响功能。

安装

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

dsh-visual-card

安装程序会自动写进 dsh.profile.bundles,不用手改任何文件。

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

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

然后把包名加进 dsh.profile.bundles,重启应用。

安全说明

AI 生成的脚本运行在宿主页面里,不是沙箱。这是「能点击、能跑小游戏」的必然代价。

插件只约束「不引用外部资源」,不做代码审查。自己用没问题;如果要在不信任 AI 输出的场景里用,请先自行加沙箱。

已知限制

- 卡片固定渲染在本轮回答下方,不能插入正文中间——宿主的对话节点是固定 19 种,插件无法新增节点类型
- turnTail 槽位只在本轮结束后渲染,所以流式输出期间看不到卡片

DeepSeek Harness 的可视化回答:模型交出一段 HTML,在对话里渲染成一个可交互的窗口——能点、能用键盘操作、能全屏、能导出。

效果

工具调用后,本轮回答下方出现一个窗口:

- 工具条:标题 + 全屏 / 复制 / 下载
- 内容区是模型的 HTML,脚本会真正执行(按钮、canvas、动画都能跑)
- 颜色自动跟随当前亮/暗主题

能做什么

- 图表、色板、布局示意
- 可点击的演示(切换状态、翻页、展开细节)
- 完整的小游戏(WASD 移动、canvas 逐帧动画)
- 演示需要键盘时,点进窗口才接管键盘;窗口外按键照常进输入框

键盘规则

| 操作 | 行为 |
| 点进窗口 | 窗口接管键盘,标题栏会提示 |
| 按 Esc | 释放键盘,回到输入框 |
| 点窗口外 | 自动释放 |
| 鼠标 | 始终正常——悬停、滚动、点击都不用先聚焦 |
实现用 iframe 隔离。模型生成的脚本通常监听 document 上的 keydown;如果它们和宿主文档共用同一个 document,你在任何地方按键都会传到脚本里。iframe 有独立的事件作用域,只有焦点在 iframe 内时才会收到按键。

工具

render_visual({
title: 'Title',
html: '...',
// height is optional; omit it and the card sizes itself to its content (recommended)
})

高度自动:宽度固定后,卡片高度随内容变化,没有固定画框。内容超过配置的上限时,卡片内部滚动,所以再大的卡片也不会逼你滚动整个对话。

用主题变量,不要写死颜色:

--v-bg-base、--v-bg-layer-1/2、--v-border、--v-text、--v-text-dim、--v-brand、--v-success/warn/error

设置

设置 → 视觉:

| 项 | 作用 |
| 高度上限 | 卡片高度跟随内容;超过视口的这个比例(40–100%)后,卡片内部滚动,不再撑出页面滚动条 |
| 允许脚本 | 关闭后,按钮、动画、游戏都不运行,只渲染静态内容。脚本在宿主页面内运行,这里是唯一的风险来源 |
| 每对话保留轮数 | 写入时丢弃更早的轮次(10–2000) |
| 每轮最大卡片数 | 单轮超过这个数量时只保留最新的(1–50) |
| 清除历史 | 删除 cards.json,需二次确认 |

改动立即保存到 ~/.dsh/visual/settings.json。

存储

卡片按对话和轮次持久化到 ~/.dsh/visual/cards.json,重启后仍在。保留策略由上面的设置控制。

删掉这个目录只会丢失视觉历史,功能不受影响。

安装

推荐用内置插件安装器。 打开设置 → 内置插件,粘贴包名,点安装,然后重启应用:

dsh-visual-card

安装器会替你写入 dsh.profile.bundles 条目,不用手动改文件。

从命令行安装(先完全退出应用):

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

把包名加进 dsh.profile.bundles,重启应用。

安全

模型生成的脚本在宿主页面内运行,这不是沙箱。这是「可点击、能跑游戏」绕不开的代价。

插件只强制「不加载外部资源」,不做代码审查。个人使用没问题;如果你要指向不信任的模型输出,先加沙箱。

已知限制

- 卡片始终渲染在当轮回答下方,无法插到正文中间:宿主只支持固定的 19 种对话节点类型,插件加不了新类型
- turnTail 槽位要等轮次结束后才渲染,所以回答还在流式输出时看不到卡片
预览分享卡片长什么样 ↓MCJF28/dsh-visual-card
分享 · DeepSeek Harness Hub
MCJF28/dsh-visual-card

把 AI 生成的 HTML 渲染成可交互卡片,支持全屏与导出

回到顶部