dsh-read-zoom
给 DeepSeek Harness(DSH)的每条回答加一个固定位置的「放大阅读」入口:点开是一个两栏的全屏阅读区 —— 右边是这一轮「提问 + 回答」的大字号正文,左边是本会话的轮次列表与一个随手写字的输入框。公式、表格、代码、图片都按原样保留。
动机很朴素:会话里的正文字号偏小,长时间读长回答(尤其带推导、公式、化学式的)眼睛累。DSH 设置里能调全局字号,但「只想把这一条看大一点」去改全局设置并不划算。
它做了什么
- 回答操作行常驻按钮:在每条回答底部的操作行里、
用量图标的左边插入一个「放大」按钮。位置固定,不跟随鼠标、不随滚动漂移;外观复用同排原生按钮的 class,深浅色主题自动一致。 - 两栏阅读浮层(v0.3.0):右边是整轮「提问 + 回答」的 DOM 克隆(KaTeX 公式、表格、代码块、图片都在),用 CSS
zoom整体等比放大,默认 140%,范围 80%–300%。 - 左栏轮次列表(v0.3.0):列出本会话每一轮(带提问摘要),点任意一行或按
↑/↓切换到那一轮的提问 + 回答,当前轮高亮。 - 左栏输入框(v0.3.0):写完点「填入输入框」把文字写进 DSH 的真实输入框,只填入、不自动发送,你确认后再按回车;
Ctrl/⌘ + Enter同效。这样看完一大段推导可以接着问,不用先退出浮层。 - 公式友好(v0.3.0):渲染失败的公式(DSH 会显示成红字
.katex-error)在浮层里降级为灰底等宽原文,不再刺眼;超宽的独立公式按可用宽度等比缩小,不再只能横向滚动;顶栏公式规约一键复制数学 / 化学的输出规约(9 条)。 - 顶部工具栏:
A−/A+步进 10%、百分比数字(点击回到 140%)、复制文字、公式规约、关闭。 - 其它入口:右下角常驻
Aa小按钮、Alt+Z快捷键;浮层内Ctrl/⌘+ 滚轮缩放、Esc或点空白处关闭。 - 缩放比例记在
localStorage(键dsh-read-zoom:zoom),下次打开沿用。
不替换 DSH 的 Markdown 渲染器、不改 app.asar、不新增依赖、不联网——纯粹在渲染结果上做 DOM 增强。
界面
操作行里的「放大」按钮(位于 用量 左边):

两栏阅读区:左栏轮次列表 + 输入框,右边是这一轮的提问与回答(140%):

单栏面板与 200% 的效果:


在浮层里接着写下一句(只填入 DSH 输入框,不自动发送):

截图来自本地渲染验证环境:用的是 DSH 前端自身的样式表与真实的 KaTeX 资源,字号、配色、公式排版与真实界面一致。
数学 / 物理 / 化学
插件不打包 KaTeX(DSH 自带 0.18.7),也不改它的渲染管线;它把「公式为什么红」的解法做成了可分发的东西:
| 问题 | 处理 |
|---|---|
模型写了 KaTeX 不支持的宏(\label、\ref、行内 \tag、\SI、\qty、\unit、\ce、\pu) |
DSH 会渲染成 .katex-error 红字;浮层里改成灰底等宽原文,可复制后改写 |
| 行间公式太宽,DSH 原生只能横向滚动 | 浮层里按可用宽度等比缩小(下限 0.45em),整条公式看得全 |
| 不知道怎么写才不红 | 顶栏「公式规约」一键复制 9 条规约(数学 8 条 + 化学 1 条),可粘进 AGENTS.md 或直接发给模型 |
规约是从 DSH 0.2.2 的真实 KaTeX 版本(0.18.7)逐条测出来的:52 个典型公式里 41 个直接通过,补 mhchem 后 44 个;剩下 8 个是 KaTeX 本身不支持,只能用替代写法。化学式建议用 \mathrm{} + \rightarrow / \rightleftharpoons / \xrightarrow{\text{…}} / \downarrow,不要用 \ce{} / \pu{} / \SI{} / \qty{} / \unit{}。
安装
# 从 npm(若已发布)
dsh plugin add dsh-read-zoom
# 或直接从 GitHub 源码安装
dsh plugin add github:liuyifeng-code/dsh-read-zoom
也可以在 DSH Web 的左侧栏「插件 → 添加插件」里粘贴仓库地址或本地目录。
装好后让页面重新加载一次(Ctrl+Shift+R;不行就彻底退出 DSH 再启动),新按钮才会出现。
使用
- 每条回答底部出现一排操作图标:复制 / 点赞 / 点踩 / 分支 / 放大 / 用量 / 时间——点「放大」即可。
- 浮层里:左栏点选轮次或
↑/↓换轮;底部写下一句后「填入输入框」;右上角A−/A+/ 百分比复位 /复制文字/公式规约/关闭。 - 键盘:
Alt+Z打开最近一条回答,Esc关闭,Ctrl/⌘ + 滚轮缩放。
兼容性
- 在 DSH 0.2.2-rc.1(桌面版,Web 前端)上开发与验证。
- 插件纯前端(client 半边),Host 半边是空实现:不注册服务、不改路由、不加依赖,所以版本升级后失效的最大代价是「按钮不出现」,不会影响会话本身。
- 定位依赖 DSH 前端的三处稳定标记:操作行根节点
data-turn-tail、操作行内的_endInfo容器、时间线的[data-chat-turn]/[data-conversation-session];缺失时会逐级退化成「插在操作行末尾」「只显示单条回答」,不影响其它功能。
卸载
在「插件」页移除,或:
dsh plugin remove dsh-read-zoom
调试
浏览器控制台:
window.__DSH_READ_ZOOM__ // { version, openLast(), close(), messages(), peek() }
window.__DSH_READ_ZOOM__.peek() // { version, overlayOpen, tailButtons, fab, panelTurns, activeTurn, compose }
window.__DSHZR_LOG__ // 最近 200 条内部日志
peek().version 可以确认当前加载的是哪个版本;tailButtons 是已插入的按钮数量;panelTurns 是左栏列出的轮数。
更新记录
- 0.3.0:两栏阅读区 —— 左栏轮次列表(点击 /
↑↓切换提问+回答)+ 底部输入框(只填入、不发送);公式相关增强(失败公式降级、超宽公式缩放、公式规约一键复制)。 - 0.2.2:修「切换会话后点放大,面板里是上一个会话的回答」—— 先按会话容器
data-conversation-session、再按轮次data-chat-turn定位。 - 0.2.1:移除悬停药丸(会跟消息/滚动漂移),入口改为操作行常驻按钮。
- 0.2.0:放大按钮常驻到每条回答操作行的「用量」左边。
- 0.1.0:首个版本,悬停药丸 + 右下角
Aa+Alt+Z。
English
dsh-read-zoom adds a fixed "enlarge" button to every answer's action row in DeepSeek Harness and opens a two-pane full-screen reading view. The right pane is a clone of that turn's prompt and answer, so KaTeX math, tables, code blocks, Mermaid diagrams and images keep their exact rendering, scaled with CSS zoom (80%–300%, default 140%). The left pane lists every turn in the current session (with prompt summaries) for one-click jumping and lets you compose the next message — it is written into DSH's real composer but never auto-sent. Formula helpers: failed KaTeX renders fall back to grey monospace source instead of red text, overly wide display math is scaled down to fit, and a 公式规约 button copies a tested set of math/chemistry output rules. No renderer replacement, no app.asar patching, no dependencies, no network access.
License
MIT © 2026 liuyifeng-code
No comments yet. Be the first to write one.