前言¶
在 DSH(DeepSeek Harness)里,助手回复默认走平台自带的 Markdown 渲染:表格是表格,列表是列表,任务清单也只是带复选框的文本。对日常对话够用,一旦模型输出结构化说明、数据表或可勾选清单,阅读和交互都还是「文档感」,很难一眼抓住层次,也很难在页面上直接点选完成项或切换图表。
dsh-rich-render 是维护者 Joe-zhouman 发布的客户端类插件(社区目录分类:客户端)。它在 Web 端接管 conversation.chat.node / assistant-step 槽位,在消息 settle 之后用纯规则把 Markdown 升格为卡片组、样式化表格与图表、清单卡片、callout、显式围栏(mindmap / tab / tree 等)以及图片卡,并额外提供 shell.overlay 水印层。流式输出期间与未命中规则的内容仍走原生 MarkdownText,异常时整段或单段回退,不拖垮会话。
下面按定位、能力、安装与用法、注意事项说明如何在 Web 或桌面 profile 里启用与验证。
这是什么¶
| 项 | 说明 |
|---|---|
| 包名 | dsh-rich-render |
| 当前版本 | 0.9.41(仓库内 private,不发布到 npm) |
| 类型 | host + client bundle(dsh.client.platform: web,自带 dsh.bundle.patch) |
| 维护者 | Joe-zhouman |
| 源码 | GitHub:Joe-zhouman/dsh-rich-render |
| 目录页 | SkillHub 插件条目 |
插件启用期间还会通过 ctx.theme.overrideTokens 覆盖三个字体 token(--dsw-font-family、--dsw-font-family-brand、--ds-font-family-code),禁用后恢复平台默认。升格组件内嵌的 $...$、\(...\) 等公式段仍交给平台 MarkdownText 排版,其余文字保持字面量,避免把标题里的 2. 误解析成有序列表。
核心功能¶
自动规则升格¶
消息流式结束后,规则引擎对整段 Markdown 做判定;未命中任意规则则保持原生渲染。
| 输入形态 | 升格结果 |
|---|---|
| H2/H3 + 紧跟有序列表(≥2 项、项首句 ≤30 字) | 卡片组 |
| GFM 表格 | 样式化表格;满足图表决策条件时默认显示图表,右上角可在表格 / 图表 / 复制 / 下载 PNG 间切换 |
GFM 任务列表(≥2 项且每项均为 - [ ] / - [x]) |
清单卡片:标题旁 x/y 项完成、进度条,点击复选框只改本地状态(不写回会话日志) |
| 引用块 | callout;首行为 GitHub 风格 [!NOTE] 等标记时分型提示框 |
| 正文中的裸绝对路径或反引号包裹的图片路径(限定扩展名与绝对路径) | settle 后重写为标准图片语法,独立段落升格为图片卡(含复制为 PNG) |
清单标题取自紧邻上一块(任意标题级、段落或独立列表);表格与图表、多列数值等规则互斥,已被消费的块不会二次认领。
表格与图表(决策 v2)¶
自动制图只看表格形式,第一行作表头、不参与数据。数据单元格须非空且为纯数字(含科学计数法);带百分号、千分位、货币或单位的单元格视为解析失败,静默保持表格。数据行超过 550 行时跳过作图以保护性能。
满足条件时优先多折线、两列文本+数值的饼图或柱状图等(饼图在 0 < sum ≤ 1 且全非负时启用,sum < 1 可补「其他」片)。不满足则始终是表格,工具条可随时切回表格视图。
显式围栏与成对标签¶
代码围栏(或 v0.9.41 起行首成对标签)支持:mindmap、stack、tab、timeline、tree、todo、prototype-choices、matplotlib。各围栏根节点共用统一外框样式;解析失败时回退显示原文。
matplotlib 围栏默认关闭:宿主执行内嵌数据的 Python 代码出图,缓存结果,不支持 seaborn、不读工作区、不联网。需在 profile 补丁中显式打开(见下文配置)。
水印与其他¶
右下角齿轮可配置水印:图片 URL 或本地文件(转 dataURL)、透明度(默认 0.12)、位置与大小,设置存于 localStorage。水印失败时不可见且不参与点击,不影响正文。
宿主启动时读取 persona.md 生成人格段落,并向系统提示词注入表格写法、可选 matplotlib 环境说明等,引导模型输出更易被规则接住的结构(若部署预设以 complete: true 整体替换系统提示词,预设会话里可能看不到围栏语法提示,属部署层面行为,见 INSTALL 常见问题)。
安装与启用¶
前置条件:可用的 DSH 运行时(源码检出或安装版桌面应用),Node ^22.19 || >=24;客户端半区按 dsh 0.1.7(2026-10)前后契约实现,大版本升级后若异常需对照 README「dsh 升级检查点」。
Web profile(CLI)¶
dsh plugin --profile web add "github:Joe-zhouman/dsh-rich-render"
# 等价:git+https://github.com/Joe-zhouman/dsh-rich-render.git
安装会把 bundle 写入 profile 的 dsh.profile.bundles。修改依赖后需重启 web 服务(例如本机上的 start-web.cmd)才加载补丁。预构建的 lib/ 随仓库提交,从 git 安装一般无需本地构建。
桌面端(安装版应用)¶
桌面 profile 不走 dsh plugin CLI。在应用内:设置 → 插件 → 添加插件,填写 https://github.com/Joe-zhouman/dsh-rich-render.git,安装后点「立即启用」,再完全退出应用(含托盘)后重开。
本地 file: 依赖(改源码时)¶
在 profile 目录执行:
pnpm add "dsh-rich-render@file:/path/to/rich-render-plugin"
并把 dsh-rich-render 追加到 dsh.profile.bundles。改源码后需 pnpm remove dsh-rich-render 再 pnpm add file:... 重装并重启;构建须在 dsh 检出内执行 pnpm run build。
可选:启用 matplotlib 围栏¶
在 profile 的 cordis.patch.yml 追加(id 与插件补丁一致为 rich-render):
- id: rich-render
config:
matplotlib:
enabled: true
python: D:/path/to/python.exe # 需能 import matplotlib 与 numpy;默认 "python"
重启后宿主探测解释器与库版本并写入 persona。脚本在插件 .cache/ 下以只读沙箱执行,无写路径、不读工作区、不联网。
验证与卸载¶
验证:重启后 Network 中应能加载 dsh-rich-render/client.js;测试消息里表格出现图表工具条、或 mindmap 围栏成树、或 H2+有序列表成卡片组,即说明接管成功。
卸载 Web:dsh plugin --profile web remove dsh-rich-render 后重启;桌面端在设置里停用或移除后重启。移除后助手消息回到原生 Markdown,persona 注入同时消失。
典型用法示例¶
下列片段可在助手回复 settle 后观察升格效果(matplotlib 需先打开配置且环境可用)。
清单卡片(上一行作标题):
本周发布检查
- [ ] 跑完 `pnpm test`
- [x] 更新 INSTALL 说明
- [ ] 重启 web 服务
显式 mindmap 围栏:
```mindmap
- 根节点
- 分支 A
- 子项 1
- 分支 B
```
可作图的简单两列表格(单元格纯数字、单位写在表头):
| 品类 | 销量 |
|------|------|
| A | 120 |
| B | 80 |
| C | 55 |
Web 安装命令(再次列出便于复制):
dsh plugin --profile web add "github:Joe-zhouman/dsh-rich-render"
适用场景与注意¶
适合谁:主要在 DSH Web 或桌面端阅读助手长回复的开发者与使用者;希望表格自动出图、任务清单可点选进度、时间线/标签页/思维导图等用围栏或自动规则呈现,而不改平台核心 UI 代码。
运行与权限:插件随当前 DSH 进程加载;matplotlib 开启时由宿主调用本机配置的 Python 解释器执行模型消息内的代码,虽为只读沙箱,安装前仍应阅读源码与仓库许可证,仅在信任的环境启用。
行为边界:流式阶段不升格;规则引擎异常整段回原生,单组件崩溃只回退该段 source。LaTeX 包裹的「数值」单元格暂不生成图表;混合或单项任务列表不升格;图片路径重写不作用于列表项、表格单元格内部(引用块内规则另有说明)。社区目录(SkillHub)为独立生态站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-rich-render 用客户端槽位与规则引擎,在不动核心 chat 组件的前提下,把助手 Markdown 升格为可交互的卡片、图表、清单与围栏视图,并保留向原生渲染的降级路径。需要条目说明与 issue 时见 SkillHub 目录页 与 GitHub 仓库(详细装机与 FAQ 见仓库 INSTALL.md)。