前言¶
DeepSeek Harness (DSH) 采用插件化架构,扩展了其原生 Web UI 的能力。针对 Typst 文档的编写,开发者通常需要在外部工具中查看渲染结果。dsh-typst-preview 插件解决了这个问题,它将 tinymist 的实时预览能力直接集成到 DSH 的右侧边栏中,提供与内置 Markdown 预览一致的 Tab 切换体验。
安装与启用¶
此插件需要本地安装 tinymist 工具。安装插件后,需重启 DSH 应用使配置生效。
dsh plugin --profile web add github:Limbo-137/dsh-typst-preview
核心功能¶
插件通过本地启动 tinymist 进程来处理渲染和语法高亮,不涉及任何远程调用或数据上传。
- 文件读取:仅读取当前已打开的
.typ文件标签页内容,且为只读操作,不会修改源文件。 - 网络行为:无出站流量,无遥测数据。所有请求均为同源请求(
/api/typst-preview/*)或回环连接。 - 命令执行:在本地直接启动
tinymist二进制文件(用于preview和lsp),不使用 Shell,不进行远程安装。 - 环境依赖:不读取 Token、密钥或 Cookie,仅用于解析
tinymist路径和用户主目录。
使用方法¶
安装并重启后,在 DSH Web UI 中打开右侧边栏(Files),点击 .typ 文件即可进入预览。
- 预览与源码切换:打开文件后,侧边栏会出现两个 Tab:Preview 和 Source。
- Preview:这是
tinymist preview渲染的页面,通过 WebSocket 驱动。当你编写文档时,它会实时更新。工具栏提供刷新、颜色模式切换(原始/跟随系统/反色,状态保存在localStorage)以及在新标签页打开的功能。 - Source:显示文件源码,利用
tinymist的语义 Token 进行语法高亮(支持标题、关键词、函数、字符串、数学公式、标签、注释及加粗/斜体标记)。支持行号、复制和“加载更多”按钮(针对大文件)。
若需将 .typ 文件强制回退到原生文本查看器,需修改源码中 src/client/index.tsx 的 typstTabDefinition(),将 priority 设置为 'fallback',并调用 openResource(address, { kind: 'typst-preview' })。
权限与限制¶
该插件被视为“高能力”插件,因此需要在商店中手动审核通过,而非自动批准。
| 能力范围 | 具体限制 |
|---|---|
| 文件 | 仅读取已打开标签页的 .typ 文件,不写入任何内容。 |
| 网络 | 无出站流量,无遥测。请求为同源或回环。 |
| 命令 | 启动本地 tinymist 二进制文件,不使用 Shell 或远程安装。 |
| 凭证 | 不读取 Token、密钥或 Cookie。 |
| 生命周期 | 安装或更新时不运行任何脚本(无 preinstall/install 等钩子)。 |
外部依赖:必须安装 tinymist 并将其加入 PATH(或通过 tinymistPath 指定),已验证版本为 v0.15.0-rc1。
兼容性与注意事项¶
- DeepSeek Harness 版本:要求 DSH
>=0.1.5-rc.1(具体兼容版本范围见下文)。 - 桌面端特性:桌面应用通过修改请求头(
onBeforeSendHeaders)将 WebSocket 的 Origin 重写为应用内部 Origin,从而允许建立回环连接。 - 旧版插件:旧版插件(挂载在
dsh-better-sidebar上)已不兼容,被此新版取代。
兼容性声明:
package.json 中声明的 @deepseek-ai/dsh-client-ui-primitives peer 依赖范围是 DSH 实际强制执行的部分。evaluatePluginCompatibility 会检查运行时版本是否满足 semver.satisfies 范围。
- DSH 版本范围:
>=0.1.5-rc.1 <0.1.6-0 || >=0.1.7-rc.1 <0.2.0-0 || >=0.2.0-rc.1 <0.3.0-0 - 测试版本:
0.1.5-rc.1,0.1.5-rc.2,0.1.7-rc.2,0.2.0-rc.1均已验证。
总结¶
dsh-typst-preview 为 DSH 用户提供了原生的 Typst 实时预览能力。它通过本地编译器和精简的权限模型,在侧边栏内实现了高效的文档开发流程。