dsh-math-copy:在 DSH Web UI 中复制公式的 LaTeX 源码

前言

在 DSH Web UI 里阅读带公式的对话或文档时,选中 KaTeX 渲染后的数学式再复制,剪贴板里往往是视觉 glyph 文本(例如上标 x^2 会变成 x2),而不是可再编辑、可粘贴进论文或 Markdown 的 TeX。对需要在智能体输出里摘公式、写笔记或对接 LaTeX 工作流的开发者来说,这是日常小摩擦。下面介绍客户端插件 dsh-math-copy(维护者 YizhouLouisLu),它拦截复制行为,把选区内的公式换成带分隔符的 LaTeX 再写入剪贴板。

这是什么

dsh-math-copy 是 DeepSeek Harness 的客户端插件:在浏览器端监听 copy 事件,当用户选中的内容 intersect 至少一处 KaTeX 公式时,用公式 accessibility 子树里保留的 application/x-tex 注解替换可见 glyph,并按配置包裹行内或块级数学分隔符,写入 text/plain(可选同时改写 text/html)。选区不含公式时不做任何处理,与系统默认复制一致。

插件归属社区生态;目录页见 skillhub.cn,源码与说明见 GitHub。DSH 本身遵循「一切皆插件」的扩展方式,社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

与默认复制的差异

Web UI 用 KaTeX 渲染数学式。DOM 结构大致为:外层 katex,内层 katex-mathml 含 <annotation encoding="application/x-tex">…</annotation>,另有 katex-html 承载可见 glyph。浏览器按可见布局走选复制,得到的是 glyph 文本;本插件克隆选区、标记相交的公式节点,逐块换成 TeX 并取消默认复制。

选区行为

  1. 选区覆盖完整公式或多个公式:剪贴板为对应 LaTeX(加配置的分隔符)。
  2. 只选中公式的一部分:仍输出整段该公式的 TeX,避免半截 glyph。
  3. 选区无数学内容:插件不介入。

可配置项

在 插件 (Plugins) → dsh-math-copy → math-copy 行 → configuration 中修改,经 settings 写入当前 profile 的 Cordis patch,重启 DSH 后仍保留。

字段 默认值 含义
Inline formula delimiter "$" 行内公式外包裹符;留空则只输出裸 TeX
Display formula delimiter "$$" 块级公式外包裹符;留空则只输出裸 TeX
Also replace the rich-text flavor true 为 true 时在 text/html 里也替换公式;为 false 时 HTML 风味保持原选区 markup,便于富文本粘贴目标

Host 侧字段在 index.js 的 export const Config 中声明并标记 .volatile();客户端通过 ctx.configForms.get("math-copy") 订阅并与内置默认值合并。

安装与启用

安装命令以仓库 README 为准(需具备 Full access 的会话):

# from a session with Full access:
# plugin_manager action=install_bundle target=<this directory>

将 <this directory> 换成本插件 bundle 所在目录(例如通过市场或本地包安装后指向该目录的路径,具体以你环境中的 plugin_manager 用法为准)。

安装后:

  1. 重新加载 Web UI 页面,让新的 client bundle 进入启动图。
  2. 若之后修改了 host 半部分(index.js),需重启 DSH:host 模块生成在进程生命周期内缓存,且 profile 的 HMR 对 host 为 root: [](不监听源码)。仅改 client.js 时,刷新页面即可。

README 写明开发与验证环境为 dsh core 0.2.0-rc.2(DSH Desktop 2.0.15-beta.1)。package.json 中版本 0.1.0,许可证 MIT;尚未在 engines.dsh 中声明兼容范围。

典型用法

无需单独命令行操作:在 Web UI 中像平时一样用鼠标选中含公式的文本(或只选中公式的一部分),执行复制(Ctrl+C / 系统复制)。若选区含 KaTeX 公式,剪贴板 plain 文本应为 LaTeX,例如默认分隔符下块级公式类似:

$$\frac{a}{b}$$

而非 \frac{a}{b} 被渲染后对应的 glyph 串。将结果粘贴到支持 $…$ / $$…$$ 的编辑器、或 TeX 源文件中即可继续编辑。

若你主要粘贴到 Word 等富文本环境,可根据需要关闭 Also replace the rich-text flavor,保留 HTML 选区结构;需要纯 LaTeX 字符串时保持默认开启即可。

适用场景与注意

适合谁

  • 经常从 DSH 对话里复制公式到 Obsidian、LaTeX、Markdown 或代码注释的开发者。
  • 希望复制结果可直接作为 $…$ / $$…$$ 片段的用户。

权限与安全

插件以当前 DSH 进程及 Web 客户端上下文运行。安装前请自行查看 GitHub 源码 与 MIT 许可证,确认 bundle 来源可信;勿在未审阅的情况下从不可信路径执行 install_bundle。

实现细节(可选阅读)

  • 配置面板注册在 plugins.row.config slot,键名为 dsh-math-copy#math-copy;无内置 UI 自动渲染该表单,由插件自行渲染。
  • 目录安装时 @deepseek-ai/schemastery 通常可直接解析;目录 bundle 链入 profile 时可能走 fallback,无 schema 时仍可按默认复制,仅配置表单缺失。

结尾

dsh-math-copy 解决的是 Web UI 复制 KaTeX 公式得到 glyph 而非 LaTeX 的问题,通过 document 级 copy 监听与 TeX 注解回填,让剪贴板内容与公式语义一致。需要安装 bundle、刷新页面,并在改 host 配置后重启 DSH。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye