dsh-eli5: DSH Select-to-Explain without consuming main conversation context

前言

在 DSH Web 里读 Agent 输出、翻仓库代码或对着报错排查时,经常遇到「这个词/这段输出到底什么意思」——若每次都回到主对话里追问,主 Session 的轮次、token 和压缩阈值都会跟着涨。DeepSeek Harness 社区插件 dsh-eli5(维护者 pandarayc)走另一条链路:在界面里选中文字,用独立辅助模型查询给出大白话说明;必要时只读当前会话工作区,且不写 Session 存储。下面介绍它是什么、能做什么,以及如何在 web profile 里启用。

这是什么

dsh-eli5 是 DSH 的 Web 端划词解释插件,分类属于「模型推理」。一句话定位:选中不懂的词、句子、代码或报错,用最直白的话说明它是什么;需要结合仓库时只读 read_file / grep / glob,结果落在浏览器侧浮层,不污染你正在读的主对话。

版本 0.6.0(MIT 许可证),Node >=20,宿主侧零运行时依赖。目录页:SkillHub — dsh-eli5;源码:github.com/pandarayc/dsh-eli5。SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。

主对话与讲人话:两条链路

主对话 dsh-eli5
入口 在输入框发送 选中文字 → 点 ✦ → 环形菜单选动作(或 Ctrl/⌘+Shift+E 直接解释)
去向 Agent 循环 → Session 日志 POST /eli5/ask → 独立的 ctx.llm.prepareCall(必要时几轮只读工具)
结果 写入 Session,上下文逐轮变长 只在浏览器内存;Host 侧最多 80 条进程内缓存
对当前会话的影响 每一轮都计入 零

解释请求只读两样外部信息:页面上可见的对话节选(从 DOM 读取,非 Session 日志)与会话 cwd 下的文件;随请求发一次、用完即弃。解释按配置的 provider / model 单独计费;浮层历史不落盘。

核心功能

环形菜单四个动作

选中文字后,选区旁浮出 ✦,点开后为四个扇区(键盘 1–4 可直接选):

动作 作用 会读工作区
解释 大白话说清「这东西是什么」 会
翻译 译成中文,代码、路径、标识符原样保留 不会
找错误 先给出「有错 / 没错 / 证据不足」,再逐条说明 会
总结 一句话结论 + 最多三条要点 不会

翻译与总结不挂载只读工具,避免为「更准确」多花时间翻仓库。

只读工作区与预算

工具根目录为会话创建时的 cwd(从 Session 头读取一次)。拒绝 ../、绝对路径、指向外部的符号链接;拒绝 .env*、*.pem、*.key、id_rsa*、.npmrc 等;不进入 .git、node_modules、.venv、dist。

预算由代码写死:最多 3 轮工具往返、6 次调用、累计读 200 KB、工具阶段总时长 60 秒。浮层顶部「看了这些 · N 次成功」列出每次 read_file / grep / glob;失败以红色标出,模型不能假装读过。

回答格式与追问

系统提示要求:第一行用「这东西就是……」句式;术语就地括号翻译;不写「我先搜一下」这类过程叙述。浮层内可 Enter 追问,Shift+Enter 换行;引用卡右侧「并回对话」把结论(及可选引用)放进 composer 草稿,不自动发送。选中超过 4000 字会拒绝(413),更适合直接问主对话。

Mermaid 子集图

涉及流程、层级、状态或对比时,模型可输出 mermaid,由内置 mermaid-lite.js 渲染(非完整 Mermaid:仅 flowchart/graph、最多 24 节点等)。首个图出现时宿主才加载 /eli5/mermaid-lite.js。

安装与启用(web profile)

插件声明 dsh.client.platform: web,仅 Web GUI 可用。官方 README 给出的 web profile 步骤如下。

npm 发布后可用:

dsh plugin --profile web add dsh-eli5

本地 link 方式(README 示例):

ln -sfn ~/.dsh/plugins/dsh-eli5 ~/.dsh/profiles/web/node_modules/dsh-eli5

在 ~/.dsh/profiles/web/cordis.patch.yml 末尾插入:

- insert:
    - id: eli5
      name: dsh-eli5
      config:
        provider: fancyhub
        model: deepseek-flash

可选:在 ~/.dsh/profiles/web/package.json 的 dependencies 中登记 "dsh-eli5": "link:../../plugins/dsh-eli5",避免下次 pnpm install 删掉符号链接。

浏览器端(lib/client.js)改完刷新页面即可;宿主侧(lib/index.js、service.js 等)默认需重启 DSH,或通过 profile 里配置 @deepseek-ai/dsh-hmr 监听插件源码目录实现存盘 reload(reload 会中断进行中的解释并清空进程内缓存)。卸载时删除 patch 中的 insert、删除符号链接并重启。

典型用法

  1. 在 DSH Web 对话或页面中选中一个词、一句说明、一段代码或报错文本。
  2. 点击选区旁的 ✦,在环形菜单选「解释 / 翻译 / 找错误 / 总结」,或按 Ctrl+Shift+E(macOS ⌘+Shift+E)直接解释。
  3. 在右侧浮层阅读答案;需要时在底部输入框追问,或用快捷追问(再直白点、举个例子、画个图等)。
  4. 若答案依赖仓库,展开「看了这些」核对读取轨迹;满意后点 「并回对话」 将结论带回输入框再编辑发送。

调试时可在浏览器控制台使用 window.__dshEli5.open('选中的文字', '可选上文') 在不选字的情况下打开浮层。健康检查:GET /eli5/health。

配置要点

patch 里 config 字段存盘后对新请求生效(每次请求读取配置)。常用项包括:

键 默认 说明
provider / model fancyhub / deepseek-flash 留空则自动挑选
maxOutputTokens 1200 单次输出上限
maxContextChars 4000 附带上文字数;0 表示不带上文
enableTools true 关闭则纯辅助查询、不读文件
cacheEntries 80 进程内缓存条数(用过工具的回答不缓存)

完整字段见仓库 README.zh.md「换模型 / 调参数」一节。

适用场景与注意

适合:在读长 Agent 回复或代码时快速消歧,又不想把「这个词什么意思」写进主 Session;需要结合当前仓库定义或实现位置时,让插件在预算内只读查证。

注意:

  • 插件以当前 DSH 进程权限运行,安装前应阅读源码与 MIT 许可证,确认路由与只读沙箱符合你的安全预期。
  • 仅 Web;TUI/桌面无对应 DOM。
  • 工具 cwd 固定为会话创建时目录,会话内 cd 不会改变解释时的读根。
  • 涉及读文件的解释常见 8–20 秒延迟;同一段纯解释无工具时可命中进程内缓存,避免重复计费。

结尾

dsh-eli5 把「讲人话」做成与主 Agent 并行的辅助查询:划词即用、必要时只读工作区、不写 Session。若你在 web profile 里做智能体或仓库协作开发,值得把它放进工具栏习惯里。

  • 目录页:https://www.skillhub.cn/plugins/pandarayc/dsh-eli5
  • GitHub:https://github.com/pandarayc/dsh-eli5
羽毛球分组比赛记分
小程序二维码

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

Xiaoye