跳到主内容

dsh-better-markdown

18Star3Fork4Issue0Watching

把 DSH Web 对话里的流式 Markdown 替换为 markstream-react,支持数学公式、Mermaid 图表和 Shiki 代码高亮,完成时不切渲染器。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
master
ai-chatdeepseek-harnessdshdsh-pluginllmmarkdownmarkstream-reactmermaid

安装

命令web profile
$ dsh plugin --profile web add dsh-better-markdown

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 zerob13/dsh-better-markdown:先查看仓库 https://github.com/zerob13/dsh-better-markdown 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

把 DeepSeek Harness Web 对话里的流式 Markdown 渲染替换成 markstream-react,让助手消息从首个 token 开始就有正确的格式高亮,结束时不会突然换一套渲染器;额外带来数学公式、Mermaid 图表和 Shiki 代码高亮。

核心能力

  • 在助手消息还在流式生成时,就按 Markdown、表格、任务列表、引用、图片、链接的最终形态渲染(markstream-react 持续解析未闭合结构)
  • 流式输出和已完成的助手消息共用同一个渲染器,避免在流结束瞬间把整段内容切回另一套实现
  • 在 fenced code 块上使用 Shiki 做流式高亮,并保留语言标题、复制按钮和展开操作;未知语言回退为可见纯文本
  • 渲染 KaTeX 数学公式(行内 + 块级)和 Mermaid 图表(已打包 Mermaid 11,离线可用)
  • 跟随 DSH Web 的深色主题(CSS token 亮度 + data-ds-dark-theme + 系统偏好),主题切换时自动重新渲染
  • 保留 Harness 原生的图片画廊、文件引用和中断标识

技术实现

  • 语言: TypeScript(ESM, "type": "module"),入口用 tsdown 打包
  • 关键依赖: markstream-react 0.0.55(核心解析与渲染)、stream-markdown 0.0.16(流式代码块 AST)、shiki 4.4.3 + @shikijs/langs/themes(代码高亮)、katex ^0.18.4(数学公式)、mermaid 11.16.1(图表)
  • 架构模式: 客户端单边插件——通过 Harness 的 client-module + slot shadowing API,以 priority: -100 注册到 conversation.chat.node 槽位的 assistant-step key,原始 Harness renderer 仍以 priority: 0 留在槽里作为自动 fallback;同步通过 setCustomComponents 注入 4 个 Markstream 自定义组件(code_block / image / inline_code / link)
  • 入口文件: src/index.ts(Cordis host 半边,导出 name + 空 apply() 让 client-module 注册被发现),src/client/index.ts(浏览器半边,真正执行注入),cordis.patch.yml(bundle row)

适用场景

在 DSH Web 对话里,模型经常输出代码、长公式、流程图或大段 Markdown,原生渲染在流式期间会出现格式跳动或完成瞬间整体重排。装上这个插件后,从首个 token 开始就能看到正确排版的代码块、公式和图表,流结束后也不会突然闪一下。如果你经常让模型画架构图、写 LaTeX 公式、或者粘贴大段带格式的代码,这个插件能明显改善可读性。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness>= 0.1.0-rc.5package.json#peerDependencies 声明需要 @deepseek-ai/cordis >=4 与 @deepseek-ai/dsh-client-* >=0.1.0-rc.5;低于此版本因无 priority-based slot shadowing 会加载失败
React>= 18peerDependencies 声明 react/react-dom >=18
Node.js>= 20(源码构建建议 22.19+)README.md:102 注明源码安装需要 Node 20+ / pnpm 10+;engines 字段未显式声明
平台跨平台纯浏览器端 JS bundle,无原生模块依赖
原生模块无dependencies 中无 node-gyp 模块;Mermaid 和 Shiki 都以纯 JS 形式打包
Markstream React0.0.55硬依赖,与更高版本的兼容性未在 README 中承诺

安装方式

dsh plugin --profile web add github:zerob13/dsh-better-markdown

配置项

本插件无需额外配置。运行时只读取宿主 DSH 提供的对话节点(block 数组、运行状态、文件引用、国际化函数等),不暴露用户可调的开关或参数;如需禁用,把插件从 dsh 配置里移除即可。

常见问题

Q: 安装后怎么确认插件已经生效?

A: 在 Web 对话里让模型输出任意 Markdown 消息,用浏览器开发工具检查根节点——会看到一个带 data-markdown-renderer="markstream-react" 属性的 div;如果没有这个属性,说明插件没有加载。

Q: 卸载插件后会留下渲染残留吗?

A: 不会。客户端在 effect 析构时会撤销 Markstream component policy 并注销 assistant slot 的低优先级 shadow,原 Harness renderer 会立即接管,不需要额外清缓存。

Q: Plan review、轨迹回放这些面板也会被替换吗?

A: 不会。插件只替换 assistant-step 这一路 Web 对话的 slot;plan review、trajectory 等静态 surface 仍由 Harness 原 MarkdownText 处理。

Q: 需要安装 Mermaid 或 Shiki 吗?

A: 都不需要。插件已经把 Mermaid 11.16.1、Shiki 4.4.3(含 34 种常用语言)打包进 bundle,离线也能用。

Q: 深色模式会自动切换吗?

A: 会。插件通过 DSH shell 的 CSS token 亮度、data-ds-dark-theme 属性和系统深色偏好三层信号判断主题;用户手动切主题后会通过 MutationObserver 在约 80ms 内重新渲染。

Q: 流式输出时遇到不完整的代码块怎么办?

A: markstream-react 专为 LLM token 流设计:未闭合的代码围栏、列表、表格、数学表达式会被持续解析并增量渲染,不会因为格式"暂时不完整"就崩;流结束后同一个 renderer 继续显示,不会切换到另一套实现。

Q: 这个插件安全吗?会执行模型生成的 HTML 吗?

A: 不会。raw HTML 会被强制转义为可见文本(htmlPolicy="escape");链接只允许 http:、https:、mailto:;图片只允许 http(s):;Mermaid 在 strict mode 下运行,不存在脚本注入面。

上手难度

入门 — 一条命令安装即用,没有需要填的配置项;不修改宿主文件,卸载即还原。

已知问题与限制

  • 浏览器 bundle 较大:当前约 7.40 MB(gzip 约 1.59 MB),因为 Shiki 和 Mermaid 都已打包以保证离线可用;如果不需要 Mermaid,从源码构建时移除该依赖能明显减小体积
  • 代码高亮只覆盖 34 种常用语言:未知语言会回退为可见纯文本而不是高亮;可选的 Monaco runtime、D2、Infographic 等 peer 没有打包
  • 只替换 assistant-step 这一路:plan review、trajectory 等静态 surface 没有共享替换槽,仍用 Harness 原 renderer;如果以后 Harness 暴露更多 slot,插件需要更新才能覆盖
  • 需要 priority-based slot shadowing:DSH < 0.1.0-rc.5 没有这套机制,加载会直接报错而不是"双渲染器共存",避免出现视觉异常
  • 图片加载必须有可用服务:插件不内置图片加载实现,必须由宿主通过 loadImage 回调提供;缺失时点击图片会返回 serviceUnavailable 错误
  • DSH 客户端版本约束较紧:peerDependencies 同时锁住 7 个 @deepseek-ai/dsh-client-* 包要 >=0.1.0-rc.5,DSH 主版本升级时插件可能要发新版兼容

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/zerob13/dsh-better-markdown)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录