dsh-explain-note:在 AI 回答里选中一词,侧栏开一张可拖拽的解释便签

前言

在 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 须同时填写或同时留空;只填一项会退回默认选择。

典型用法

  1. 在 DSH 中打开一段助手回答,用鼠标拖选需要澄清的词或短语。
  2. 在选区上右键,点「解释」。
  3. 在左侧空隙查看便签中的 brief、语境说明和补充 note;需要时可固定位置、折叠让出空间,或用「复制解释」带走纯文本。
  4. 若界面语言为 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
羽毛球分组比赛记分
小程序二维码

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

小夜