前言¶
在 DSH 里读模型长回答时,常会碰到术语、缩写或上下文里的专有说法:切出去查百科,和当前段落、用户问题往往对不上;把「这个词什么意思」写进下一条消息,又会占会话上下文、打断阅读节奏。DeepSeek Harness 的插件模型允许在客户端侧扩展交互,而不必改宿主源码。下面介绍社区插件 dsh-explain-note(维护者 Plyhi,GitHub:Plyhi/dsh-explain-note):在 AI 回答区域 拖选文字后右键「解释」,在会话区与左侧栏之间的空隙里弹出一张便签,由当前配置的模型结合选区段落、整段回答和用户问题生成释义,而不是查百科。
这是什么¶
dsh-explain-note 是 DSH 客户端插件(package.json 中 dsh.client.platform 为 web)。它只做一件事:在助手回答里选中词或短语,通过自绘右键菜单触发一次旁路模型调用,把结果展示在可拖拽、可折叠、可固定的便签 UI 里。便签不写会话历史、不占后续对话 token;刷新页面后消失(仅会记住字号缩放比例)。菜单、便签标签和解释正文跟随 DSH 当前界面语言(中文 / English)。README 写明已在 DSH 0.2.0-rc.2 桌面端验证宿主路由、客户端 bundle 和真实模型解释。
核心功能¶
选区与右键菜单¶
仅在 [data-chat-flow-kind="assistant*"] 内的选区接管右键:原生菜单被替换成「复制 / 解释」两项;输入框、侧边栏、用户消息等处仍为原生菜单。点「复制」复制选中文字;点「解释」在左侧空隙新建便签,先显示骨架屏,模型返回后填入释义。
便签交互¶
| 操作 | 结果 |
|---|---|
| 拖标题栏 | 移动便签,始终夹在窗口内,且不会钻进 Windows 标题栏 |
| 固定(📌) | 锁住位置、禁止拖动,并置顶 |
| 折叠(⌃) | 收成约 300px 宽的栏;再点展开 |
| 关闭(×) | 关闭并中止尚未返回的请求 |
| A− / A+ | 字号在 85%–160% 之间缩放;新便签会记住比例 |
| 复制解释 | 把标题、释义、语境、原文摘录拼成纯文本复制 |
同一段回答里对同一个词重复解释会复用已有便签(展开、置顶、闪一下),不会无限堆叠。新便签默认在左侧空隙从上往下堆,放不下时换到右侧一列。
解释怎么生成¶
宿主半端(index.js)提供 POST /api/explain-note/explain:只接受本机同源请求,在可用时先过 DSH 信任栅栏;通过 ctx.llm.stream() 发起独立请求(temperature 0.35、maxTokens 480、90 秒超时)。Prompt 要求模型输出 JSON 四字段:term、brief、in_context、note;服务端会剥代码块、兜底解析并裁剪长度。同时最多 3 个解释请求,超出返回 429。
主题与字体¶
便签不硬编码配色,而是从页面实际生效样式读取 DSH 的 --dsw-* token;根节点 role="dialog"、菜单 role="menu",以便主题皮肤覆盖 dialog/menu。字体从选区段落的 getComputedStyle 取 font-family / font-size,代码块用同段 <code> 的等宽字体。MutationObserver 监听主题变化,已打开的便签会重新取色取字。
安装与启用¶
用 DSH 插件管理器从 GitHub 安装(命令来自项目 README):
dsh plugin --profile <你的 profile> add github:Plyhi/dsh-explain-note
桌面版 dsh 位于安装目录的 resources\runtime\cli\bin\dsh.cmd;也可在插件管理器中直接填写 Plyhi/dsh-explain-note。装完通常由插件管理器热挂载;若右键菜单未出现,先刷新页面(Ctrl+R),仍无效则重启 DSH。
卸载:
dsh plugin --profile <你的 profile> remove dsh-explain-note
需要 DSH 0.2.0-rc.2 或相近版本。插件不依赖 npm 包,也不 import @deepseek-ai/*,只通过 ctx 拿服务。当前 package 版本为 0.1.1,许可证 MIT。
配置模型¶
默认跟随「设置 → 模型」里 agentDefaultModel 当前选中的路线。若要固定为其他模型,在 cordis.patch.yml 中取消注释并填写:
- insert:
- id: explain-note
name: dsh-explain-note
config:
provider: deepseek-account
model: deepseek-flash
provider 与 model 须同时填写或同时留空;只填一项会退回默认选择。
典型用法¶
- 在 DSH 中打开一段助手回答,用鼠标拖选需要澄清的词或短语。
- 在选区上右键,点「解释」。
- 在左侧空隙查看便签中的 brief、语境说明和补充 note;需要时可固定位置、折叠让出空间,或用「复制解释」带走纯文本。
- 若界面语言为 English,菜单与标签会随
ctx.locale切换;已打开便签的正文不会自动重译,需重新点一次「解释」。
不安装插件也可本地预览 UI(使用仓库内 preview/preview.html,假数据、不调用模型),例如:
start preview/preview.html?auto=1
参数 ?menu=1 只弹菜单,?dark=1 深色,?serif=1 宋体示例。
适用场景与注意¶
适合:长时间阅读模型回答、希望在当前问答语境里快速弄清某个词,又不想把解释写进聊天记录或额外开浏览器查百科的 DSH 用户。
边界(README 已说明):
- Electron 原生右键菜单无法从插件主进程扩展,因此只在回答区自绘菜单;其他区域行为不变。
- 依赖聊天 DOM 标记(如
data-chat-flow-kind);宿主若调整标记,插件需同步更新readSelection()。 - 便签不持久化到 localStorage 或会话日志。
- 解释是旁路调用,不进入会话历史。
安全与信任:插件以当前 DSH 进程权限运行,会向本机同源 API 发起解释请求并调用配置的 LLM。安装前建议在 GitHub 仓库 阅读源码与 MIT 许可证,确认符合你的使用环境。社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-explain-note 把「选中 → 解释 → 便签」收进 DSH 客户端:释义绑定当前回答与用户问题,UI 跟主题和字体走,且不污染对话上下文。需要安装命令、配置项与实现细节时,以 README 为准。
- 目录页:https://www.skillhub.cn/plugins/Plyhi/dsh-explain-note
- GitHub:https://github.com/Plyhi/dsh-explain-note