前言¶
在 DeepSeek Harness(DSH)里,模型往往用长段 Markdown 或表格把比较、趋势、步骤讲清楚。读者要在文字里来回扫读,难以一眼对齐比例或连续调整参数。另开浏览器标签页可以做得更直观,但会打断会话节奏,状态和追问也要自己衔接。
DSH Better Answer View 是面向 DSH 的客户端插件:让模型在合适时把内容渲染成回答正文里的图文块,支持本机保存交互状态与页面修订历史。维护者为 solstice621,在 SkillHub 目录中归类为「客户端」。仓库 dsh-better-answer-view 采用 MIT 许可证;插件以当前 DSH 进程权限运行,安装前建议自行查看源码与许可证。
这是什么¶
插件全称 DSH Better Answer View,安装标识同为 dsh-better-answer-view。它是 DSH 的内嵌可视化与交互扩展:模型通过工具生成 HTML 片段,客户端在聊天流中按位置标记插入图表、卡片或带滑块、按钮的交互块;参数写入本机,模型更新 HTML 时在兼容的状态契约下保留用户选择,并可回看历史版本。
README 写明已在 DeepSeek Harness 网页版 0.1.5-rc.3 与 桌面版 0.2.1-rc.3 上验证;插件不设 Harness 版本白名单,SDK 以 peer 方式接受宿主提供的版本,启动时会检查所需工具注册与认证 Fetch 接口,缺失时会明确报错。其他版本仍需自行验证。
0.3.3 起将旧包名 dsh-web-answer / better-view-for-dsh 统一为本名;升级时应先停用并移除旧包再装新包,避免同名工具重复注册。页面存储目录与回执格式保持兼容,历史回答与已保存状态仍可读取。
核心功能¶
正文内嵌,而非整页外链¶
安装后正常提问即可,无需在提示词里要求「用网页展示」或「生成卡片」。当趋势、比较、步骤或交互结构有助于理解时,插件通过模型指令引导使用紧凑内容块;简单事实、普通说明、确认和代码问答仍保持普通文字。视觉内容只出现一次,周围文字负责引入与衔接,不在 Markdown 里再抄一遍整表。
0.2.0 起支持同一条回答中 文字 → 图文块 → 后续文字 的顺序,不另开新页。0.2.1 起默认按主题拆分:两个及以上独立可视化主题时,通常分 2–4 个小块嵌入正文;多个卡片堆进单个 HTML 不算独立嵌入。0.3.0 起提供统一的紧凑样式(比较图、关键数字、时间线、决策依据、交互控件共用明暗主题与间距),嵌入块按内容自然展开,移除原先的高度上限与「展开高度」按钮。
本机状态与修订¶
页面数据默认保存在 $DSH_HOME/web-answer/;未设置 DSH_HOME 时使用 ~/.dsh/web-answer/。可在插件配置中用绝对路径指定 storageDir。
模型侧通过 render_answer、get_answer、update_answer 创建与更新页面;HTML 存本机,聊天里只返回小型回执。回执中的 embed 字段为位置标记,形如独占行的 :::web-answer <页面 UUID> 与闭合的 :::,客户端在该处渲染块。更新前应先 get_answer 取最新 expectedRevision,避免覆盖并发修改。相同 stateSchemaVersion 时更新 HTML 会保留当前状态;变更该版本号须提供新的 initialState。
页面内可通过 window.answer.getState()、setState()、ask() 等 Bridge API 保存参数并向当前会话准备追问(用户确认发送后才提交)。
页面编写约定(模型生成 HTML 时)¶
优先提交表达一个视觉主题的 HTML 片段;可复用 .answer-metric-grid、.answer-bar-list、.answer-timeline 等内置类,或使用 --answer-fg 等主题变量。支持内联 CSS 与经典 JavaScript、原生 SVG/Canvas;不支持 CDN、外链脚本和 type="module"。脚本应在 DOM 已插入后直接初始化,不要等待 DOMContentLoaded。卡片使用自然高度,避免 100vh 壳层与把普通长文塞进固定高度滚动面板。
安装与启用¶
推荐从仓库 main 分支安装;仓库已含预构建客户端入口,一般无需本地构建。
CLI / Web 环境:
dsh plugin --profile web add "github:solstice621/dsh-better-answer-view#main"
DSH 桌面版在插件管理器中填写:
github:solstice621/dsh-better-answer-view#main
桌面应用与单独安装的 CLI/Web 使用不同 profile,插件不会自动同步:桌面管理器使用 desktop profile,上述 CLI 命令只安装到该 CLI 的 web profile。若 DSH 已在运行,安装后需重启并刷新页面。
从源码构建并链接到指定 profile 时,在项目目录执行(将 web 换成实际 profile 名):
npm run build
dsh plugin --profile web add "link:$PWD" --ignore-scripts --offline
dsh --profile web
移动项目目录会使 link: 失效。历史 GitHub Release 带有各自版本的兼容说明,可按需选用。
典型用法¶
日常问答¶
与平时一样提问。README 中的示例如:比较两个收费方案在不同使用次数下的成本并说明临界点;或询问财报与股价反应——回答可先表格比较,再用正文解释,并用时间线区分不同时点。简单算术(如「17 乘以 6」)仍直接文字回答,不会强行加卡片。
交互与状态(独立演示)¶
仓库提供不依赖模型的本地演示:需 Node.js 22+,在项目目录执行 npm ci --legacy-peer-deps、npm run build、npm run demo,浏览器打开 http://127.0.0.1:3091。可拖动滑块重算升级天数、刷新后保留参数、使用预设按钮改需求并查看修订效果;页面内「讨论当前阶段」会在会话外准备追问文本,点击发送才提交。环境变量 PORT 可改端口,WEB_ANSWER_DATA_DIR 可改演示数据目录(默认 work/demo-data/)。
在 DSH 中可尝试类似提示:设计带三阶段 XP 的升级计算器,允许调整每次任务奖励并比较各阶段天数——模型生成的块可本地重算,状态持久化到上述存储目录。
适用场景与注意¶
适合:需要在同一会话里阅读比较表、趋势、时间线或轻量交互(调参、选阶段后再追问)的 DSH Web/桌面用户;希望 HTML 与状态留在本机、可修订而非每次全量重问的场景。
注意:
- 插件依赖宿主注册的工具与客户端注入能力;缺少接口时启动会报错,需与 README 中已测 DSH 版本对照或自行验证。
- 模型是否拆分多块、是否使用卡片,由模型指令与真实回答决定,README 强调应以实际模型测试为准。
- 只解析同轮成功工具回执中的 embed 标记,不执行用户粘贴的示例标记。
- 安装第三方插件等同于扩展 DSH 能力边界,请在信任维护者与许可证的前提下使用。
结尾¶
DSH Better Answer View 把「更适合用图或控件表达」的部分放进回答正文,并为本机页面保留状态与版本,减少在纯 Markdown 与外链页面之间来回切换。目录页:https://www.skillhub.cn/plugins/solstice621/dsh-better-answer-view;源码与完整说明:https://github.com/solstice621/dsh-better-answer-view。