前言¶
DSH 的理念是「一切皆插件」,Web UI 一侧通过 ctx.slots 提供 sidebar.panellist、main 这类槽位,第三方插件可以把整页面板挂进去。如果你的诉求是在浏览器里读英文文章时顺手查词、记生词,逐个查词再手动抄进 Anki 之类工具成本不低。下面介绍的插件就是把这一套动作塞进 DSH 侧边栏的一个入口里。
这个插件叫 dsh-wordlink,由 lukebest 维护,分类为客户端插件,目前在社区目录上星级 0,版本 1.1.0,许可证 MIT。它做的事一句话概括:在侧边栏加一个 WordLink 入口,打开后是独立的阅读 / 查词 / 复习面板,全部数据只保存在浏览器本地。安装前应该先读一遍源码,确认槽位注入方式与当前 DSH 版本兼容。
核心功能¶
下面按 README 里列出的能力逐条说明。每条都是已核实的既有功能,不涉及任何未公开能力。
分级词义标注。内置三篇分级英文文章(A2/B1/B2),词典约 110 条高频词条,按 CEFR 等级(A1–C1)给单词标注中文释义。词典本身是精选小词表,README 明确说明主要用于演示标注链路,实际阅读时可用后面的「点按未收录词补充释义」继续扩充。
难度阈值。不做满屏注释:只标注高于所选难度的词,可选全部 / A2+ / B1+ / B2+ / C1。阈值越低注释越密。
点词查词。点击任意英文单词弹出卡片,显示音标、词性、等级、中文释义、例句,并可播放发音。
未收录词自建释义。点按词典里没有的词,可以直接输入自己的中文释义保存,保存后立即进入词典与生词本。这是扩充词表的正式入口,不是 hack。
粘贴任意文本。把网页或文章里的英文粘进「我的文本」,实时分词并套用同一套标注与查词逻辑。也就是说不依赖内置文章,自己的材料也能用同一套链路。
批量导入生词。在生词本里粘贴文本,或选择 .txt / .csv 文件,按「单词 + 中文释义」批量导入。分隔符支持 Tab、逗号、分号、=、空格。只有单词没有释义的行也能先导入,之后再补释义。
生词本与排序。收藏和移除单词,按到期时间排序,到期词高亮。
间隔重复复习。SM-2 变体,三档评分:Again / Hard / Good,对应键盘 1 2 3,空格揭示释义。插件按记忆难度自动安排下次复习。
学习统计。面板给出收藏数、今日到期、已掌握、连续学习天数、正确率、近 7 天学习柱状图、生词难度分布。
界面与主题。中英双语随 DSH Client locale 自动切换(en / zh / zh-CN / zh-Hans);明暗主题只使用宿主提供的 --dsw-alias-* 主题 token,不自带一套配色。
本地持久化。学习数据写入 localStorage 的 wordlink.state.v1 键下,不上传、无网络请求。清除站点数据会清空生词本与统计。
安装与启用¶
先说明一点:README 里已发布到 npm 的安装命令与源码安装命令写的是两种写法,因为该插件同时声明了 npm 名与 git 地址。两种方式都来自资料原文,首选源码安装。
从源码安装(不需要 npm 包):
dsh plugin --profile web add github:lukebest/dsh-wordlink
从 npm 安装(README 标注「已发布到 npm 后」):
dsh plugin --profile web add dsh-wordlink
装完重启或刷新 DSH Web 页面即可,侧边栏会出现 WordLink 图标。如果没看到图标,可以留意两个备用入口:侧边栏底部与「会话标题栏」。账号权限、模板类型、基础参数这些插件没有涉及,因为它是纯客户端插件,不申请文件、网络、命令权限。
目录结构对应几个关键文件,改动前先看一眼:
package.json # bundle 清单:dsh.bundle.patch + dsh.client
cordis.patch.yml # 向 Host 组合插入 dsh-wordlink
index.js # Host 半(纯 Client 插件,空实现)
client.js # Web Client 半:槽位注册、UI、词典、SRS
locale/en.json # 插件元信息(英文)
locale/zh.json # 插件元信息(中文)
icon.svg # 侧边栏图标
典型用法¶
这一节不用引号,直接说可复现的操作。以下步骤都来自 README 描述的功能路径。
1、装好插件,刷新页面,点侧边栏的 WordLink 入口打开整页面板。
2、在难度阈值里从「全部」切到「B1+」,内置三篇文章里高于 B1 的词才会带中文释义,避免满屏注释。
3、读文章时点任意英文单词,弹卡显示音标、词性、等级、中文释义、例句,卡片里有发音按钮。
4、点到一个词典里没有的词,在弹出的输入框里写自己的中文释义并保存,这个释义立刻进入词典与生词本。
5、想读自己的材料,把英文文本粘进「我的文本」,标注与点词查词逻辑自动套用,和内置文章一致。
6、整理生词:用批量导入,在生词本粘贴「单词 + 中文释义」,分隔用 Tab、逗号、分号、= 或空格都可以;只有单词的行先导入,之后再补释义。导入完成后生词按到期时间排序,到期词高亮。
7、复习时按 1(Again)、2(Hard)、3(Good)为每个词打分,空格揭示释义。面板右侧的学习统计会同步更新收藏数、今日到期、已掌握、连续学习天数、正确率和近 7 天柱状图。
练习完退出聊天即可,插件不含任何聊天侧行为。
实现要点¶
这个插件同时按两个角色注册,理解这一点对后面排错有帮助。
它是纯 Client 插件。client.js 通过 window.__ModuleLoader__.load({ id: 'dsh-wordlink', factory(require) {...} }) 注册,React 只从宿主模块表 require('react') 获取,不 import 任何 Harness Client 内部包。index.js 是 Host 半的空实现,的唯一作用是让 cordis.patch.yml 的 bundle patch 找到这个包。因此 package.json 里 dsh.bundle.patch 指向 ./cordis.patch.yml,dsh.client 声明 platform: 'web'、inject: ['@deepseek-ai/dsh-client-ui-conversation', '@deepseek-ai/dsh-client-locale']。
槽位注册有四处,全部在 apply(ctx) 里完成。ctx.get('locale') + ctx.effect 先为插件注册 wordlink 命名空间的中英文字典,再通过 locale.bind('wordlink') 拿翻译函数;ctx.slots.inject('sidebar.panellist', ...) 注册侧边栏入口(id: 'wordlink',order: 30);ctx.slots.inject('main', ...) 注册整页面板(key: 'wordlink'),侧边栏按同名 id 分发打开。另外 sidebar.footer.action 与 conversation.session.header.utilities 提供两个备用入口,点击后调用 layout.selectPanel('wordlink')。
样式方面不操作宿主 DOM、不使用 iframe,组件内联 <style>,只使用 --dsw-alias-* 主题 token。继承宿主侧边栏与主区的背景、边框层级,改动主题 token,插件配色跟着走,不建议在插件里硬写 background: 色值。
适用场景与注意¶
适合这几类人:想在 DSH Web UI 里读英文文章时顺手做词汇学习;不想把生词导出到第三方工具、希望边界就在浏览器内;需要用 SM-2 间隔重复而非自定义调度。插件定位是「学习面板」,不解决流畅度问题,也不内置真人发音之外的 AI 精读讲解。
几点需要留意:
- 这是客户端插件,运行在当前 DSH 进程的用户权限下。它不申请文件、网络、命令权限,学习数据写入浏览器
localStorage,清除站点数据会同时清空生词本和统计,需要备份的在导出前完成。 - 内置词典只有约 110 词,README 标注「主要用于演示标注链路」,冷启动时新词的释义要靠「点按未收录词补充释义」逐个补,或靠批量导入补齐。
- 目前尚未提供浏览器视觉回归截图,README 说明遇到排版问题请提交 Issue。
- 组合上只声明依赖
@deepseek-ai/dsh-client-ui-conversation和@deepseek-ai/dsh-client-locale,版本约束宽松,安装前按当前工程版本核对一下,再确认插件源码与许可证是否可接受(MIT)。 - 开发验证环境是 DSH
0.2.1-rc.5与 Node26.x。 - 架构上它是
platform: 'web'、immediately: true的插件,只对 Web UI 生效,不进入服务端与 CLI 启动流程,其他环境装了也不会有入口。 - 插件不发起外部网络请求、无额外 npm 依赖,意味着装好以后即使断网也能完整用。
结尾¶
一句话回顾:dsh-wordlink 在 DSH Web UI 里提供分级标注、点词查词、生词本和 SM-2 复习的完整链路,数据留在浏览器本地,适合把日常英文阅读的词汇积累一次性收进面板里。插件信息与源码为 https://github.com/lukebest/dsh-wordlink ,目录页为 https://www.skillhub.cn/plugins/lukebest/dsh-wordlink ,许可证 MIT,版本 1.1.0。