deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
用 markstream-react
替换 DeepSeek Harness Web 的流式 Markdown 渲染链路。
dsh-better-markdown 是一个 DeepSeek Harness Web 客户端插件。安装后,Web 对话中所有带流式状态的 assistant Markdown 都由 markstream-react 解析和渲染;同一消息流结束后继续使用同一个 renderer,不会在完成瞬间切回另一套 Markdown 实现。
markstream-react是Simon-He95/markstream-vuemonorepo 提供的 React 版本。本插件在 Harness 中使用的是 React package,不会引入 Vue runtime。
MarkdownCodeBlockNode 与 stream-markdown 渲染,使用 Shiki 流式高亮,并保留语言标题、复制和展开操作;reasoning、附件、停止状态仍保持 Harness 原行为。htmlPolicy="escape";链接、图片和 settled file mention 继续执行 Harness 的限制策略;Mermaid 使用 strict mode。
| 能力 | 行为 |
|---|---|
| Assistant streaming Markdown | 全部交给 markstream-react |
| Settled assistant Markdown | 继续使用同一个 Markstream renderer |
| Mermaid | 插件内置 mermaid@11.16.1,无需额外安装 |
| Math | KaTeX inline / display math |
| Code fences | 使用 Markstream MarkdownCodeBlockNode + stream-markdown + Shiki;未知语言回退为可见纯文本 |
| Raw HTML | 转义为文本,不注入 DOM |
| Links and images | 仅允许安全的外部协议 |
| Plan review / trajectory 等静态 surface | 继续使用 Harness 内置 MarkdownText;这些 surface 没有统一替换 slot |
插件使用 Harness 公开的 client module 与 slot shadowing,不修改 Harness 源码,也不替换全局 React。
Assistant token stream
-> Harness session projection
-> conversation.chat.node / assistant-step
|- priority -100: BetterAssistantNodeView
| -> markstream-react (active)
| `- fenced code -> stream-markdown -> Shiki
`- priority 0: Harness built-in (fallback)
低优先级 shadow entry 负责正常渲染;如果插件 renderer 抛错或被卸载,Harness 原 renderer 仍在 slot 中并自动接管。
在 DSH 终端执行(仓库已打 dsh-plugin 主题,可被 DSH 插件目录 发现):
dsh plugin add github:statem-li/dsh-better-markdown
安装后重启 dsh web 生效。如需锁定版本:dsh plugin add github:statem-li/dsh-better-markdown#<commit-sha>。
以下是手动安装方式(备用):
前置条件:DeepSeek Harness Web 可以正常启动。
dsh plugin --profile web add dsh-better-markdown
dsh --profile web --dump-config
dsh --profile web
更新插件:
dsh plugin --profile web add dsh-better-markdown@latest
前置条件:DeepSeek Harness Web 可以正常启动,Node.js 20+,pnpm 10+。
git clone https://github.com/statem-li/dsh-better-markdown.git
cd dsh-better-markdown
pnpm install
pnpm run check
pnpm run build
dsh plugin --profile web add "$(pwd)"
dsh --profile web --dump-config
dsh --profile web
Windows PowerShell 将 "$(pwd)" 替换为 (Get-Location).Path。
配置输出应包含:
# == dsh-better-markdown
- id: better-markdown
name: dsh-better-markdown
打开 Web 后,assistant Markdown 根节点会带有:
<div data-markdown-renderer="markstream-react">
Git dependency 会执行本仓库的 prepare 构建。pnpm 10/11 可能要求在 Web profile 的 pnpm-workspace.yaml 中显式允许:
allowBuilds:
dsh-better-markdown: true
然后安装:
dsh plugin --profile web add git+https://github.com/statem-li/dsh-better-markdown.git
dsh --profile web
建议生产环境固定 commit SHA,而不是长期跟随默认分支。
移除插件:
dsh plugin --profile web remove dsh-better-markdown
卸载会释放 slot shadow 和 Markstream component policy,Harness 内置 renderer 随即恢复。
markstream-react: 0.0.55mermaid: 11.16.1stream-markdown: 0.0.16shiki: 4.4.3如果不需要 Mermaid,移除其 dependency 可以明显减小 bundle,但 Mermaid fence 将无法生成图形预览。
pnpm install
pnpm run check
pnpm run build
pnpm pack --dry-run
维护者发布流程:先让 package.json 版本与 vX.Y.Z tag 保持一致,再发布对应的 GitHub Release。publish.yml 会验证版本、执行测试与构建,并通过 npm trusted publishing 发布公开包;prerelease 不会发布。
主要文件:
src/client/index.ts:注册 Markstream component policy 和 assistant slot shadowsrc/client/renderer.tsx:assistant node 与 Markdown renderersrc/client/shiki.ts:单文件插件使用的 fine-grained Shiki bundlesrc/client/styles.css:Harness token 适配cordis.patch.yml:插件 bundle rowtests/plugin.spec.tsx:streaming、fallback、安全与 Mermaid 路由测试0.1.0-rc.5 及以上assistant-step本仓库为官方 dsh-better-markdown 的本地维护版,在官方 v0.1.1 基础上增加:
更新上游:重新 clone 官方仓库对比,或直接修改本仓库 src/ 后 pnpm run build。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。