DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Math Copy — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
M

dsh-math-copy

Math Copy

将 DSH Web UI 中渲染的数学公式复制为其 LaTeX 源代码,而不是 KaTeX 的字形文本。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:YizhouLouisLu/dsh-math-copy#581c1953a0fa566e76016e1cbada527ddc4494a8
README兼容性版本

兼容性与来源证明

Math Copy 以 dsh-math-copy 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/3

版本

0.1.0stable
2026/10/3

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/3
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。

README

dsh-math-copy

Copying rendered math from the DSH Web UI puts the formula's LaTeX source on the clipboard, instead of KaTeX's visual glyph text (x2 for x^2).

What it does

The Web UI renders math with KaTeX, and KaTeX keeps the original TeX source in the formula's accessibility subtree:

<span class="katex">
  <span class="katex-mathml"><math>…<annotation encoding="application/x-tex">\frac{a}{b}</annotation>…</math></span>
  <span class="katex-html" aria-hidden="true">…glyphs…</span>
</span>

The browser's own selection copy walks the visible layout (and the clipped MathML arm), so it produces glyph text. This plugin listens for copy on the document; when the selection intersects at least one formula it marks those formulas, clones the selection, swaps each formula for its TeX wrapped in math delimiters, writes text/plain (and text/html) and cancels the default action. A copy whose selection holds no math is left completely alone.

Selecting half a formula still yields the whole formula's TeX.

Configuration

Three fields, editable in the Plugins page:

fielddefaultmeaning
Inline formula delimiter"$"wrapped around inline math (empty → bare TeX)
Display formula delimiter"$$"wrapped around display math (empty → bare TeX)
Also replace the rich-text flavortruesubstitute math in the text/html flavor too; off keeps the untouched selection markup for rich paste targets

How the form is wired

  • index.js declares the fields on export const Config and marks each one .volatile(). Only volatile fields are projected into a form: the settings service serves them under this entry's profile row id, math-copy.
  • client.js subscribes to that form through ctx.configForms.get("math-copy") (the same way the shipped ui-chat reads its preferences) and folds it over its own defaults, so the copy handler always reads the current values.
  • The panel is registered into the plugins.row.config slot with the key <package name>#<row id> (dsh-math-copy#math-copy). No shipped client renders settings forms automatically, so the plugin renders its own.

Find it at 插件 (Plugins) → dsh-math-copy → the math-copy row → its configuration block. Writes go through the settings transport and are persisted into the active profile's Cordis patch, so they survive restarts.

Changing the host half (index.js) needs a DSH restart: the host module generation is cached for the process lifetime, and the profile's HMR entry runs with root: [] (no source watching). Client-only edits (client.js) reach the page on a reload.

Install

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

Reload the Web UI page afterwards so the new client bundle enters the boot graph.

Restarting DSH after a host-half change is required — the host module generation is cached for the process lifetime.

Status

Developed and verified against dsh core 0.2.0-rc.2 (DSH Desktop 2.0.15-beta.1). No engines.dsh range is declared yet: the plugin uses long-standing client services (slots, locale, configForms, ctx.inject), but only this version has actually been run, and a range that admits prerelease builds has to name each major.minor.patch tuple explicitly. Declare one once another version has been tested.

Development

tools/asar-extract.mjs reads Electron's app.asar (list or extract by path substring) — used to read the shipped client code that renders markdown and math:

node tools/asar-extract.mjs "/Applications/DeepSeek Harness.app/Contents/Resources/app.asar" list katex
node tools/asar-extract.mjs "/Applications/DeepSeek Harness.app/Contents/Resources/app.asar" extract dsh-client-ui-primitives /tmp/dshx

index.js resolves @deepseek-ai/schemastery through the active profile when the direct specifier misses (a directory-installed bundle is linked into the profile, so Node resolves its imports from the workspace instead). Without the schema the plugin still copies with its built-in defaults; only the form is missing. A normally installed copy (npm or GitHub, which is what dshmarket performs) resolves the direct specifier and never reaches the fallback.

submission/ holds the one-file catalog entry for awesome-dsh-plugin; see the notes inside it.