dsh-client-ui-skill-fuzzy
DeepSeek Harness 的 web 端技能引用插件:把聊天框 / 菜单里的 skill 候选从前缀过滤(startsWith)升级为 fzf 风格模糊匹配,行为与命令面板(/)完全一致——大小写不敏感、子序列匹配、前缀/边界加分排序。
作为 @deepseek-ai/dsh-client-ui-skill 的 drop-in 替代品,node half 为空、浏览器 half 复用其实现,仅替换候选过滤逻辑(fuzzyScore / boundaryBonus 提取自命令面板源码)。
上游基线版本
| 项目 | 版本 | 说明 |
|---|---|---|
| 官方上游 | @deepseek-ai/dsh-client-ui-skill@0.1.2-alpha.1 |
本插件内置其 client.js 基线(来自本地 DSH 仓库构建,npm 上尚未发布该版本) |
| 核对日期 | 2026-08-28 | 核对本地 DSH 仓库 master(HEAD cd5ef8148)构建的上游 |
| 本插件版本 | 0.1.0 |
与 plugins/dsh-client-ui-skill-fuzzy 仓库 origin/main 同步 |
核对方法(上游发布新版本后):
- 查上游最新版:若已发布到 npm,用
npm view @deepseek-ai/dsh-client-ui-skill version比对;若尚未发布(本地分支/构建),以本地dsh仓库profiles/node_modules/@deepseek-ai/dsh-client-ui-skill的实际版本为准。 - 取上游对应版本的
lib/client.js与lib/index.js:npm 上已发布则npm pack @deepseek-ai/dsh-client-ui-skill@<new-version>解包,本地构建则直接读其node_modules副本。 - 与本插件的
lib/client.js/lib/index.js做规范化对比(忽略id/tagId/dsh-client-ui-skill-fuzzy字样及 CSS 类名哈希差异)。除 fuzzy 过滤逻辑(boundaryBonus/fuzzyScore/fuzzyCandidates,约 50 行)外应无其它差异;若有,把官方新增/修改同步进(candidates()内仍用fuzzyCandidates替换官方startsWith过滤)。 - 更新后同步修订上表并以
git commit记录。
注:官方上游即
@deepseek-ai/dsh-client-ui-skill(web 端 skill 菜单),而非@deepseek-ai/dsh-skill(后者是/命令面板的包)。
效果示例
| 输入 | 内置(前缀) | 本插件(模糊) |
|---|---|---|
/rpa |
空 | yingdao-rpa → ecommerce-rpa-toolkit → karpathy-guidelines |
/ecrpa |
空 | ecommerce-rpa-toolkit |
/commit |
commit-and-push-all | commit-and-push-all → conventional-commit → … |
目录结构
lib/
index.js # node half(无宿主行为)
client.js # 浏览器 half:candidates() 用 fuzzyScore 过滤
cordis.patch.yml # bundle patch:禁用内置 ui-skill 并挂载自身
package.json
安装
方式 A:自动安装(推荐)
用 dsh 的插件命令(转发到 pnpm)安装到 web profile:
dsh plugin --profile web add "git+https://github.com/CnsMaple/dsh-client-ui-skill-fuzzy.git"
安装后确认依赖已登记:
cd ~/.dsh/profiles/web && pnpm ls dsh-client-ui-skill-fuzzy
后续更新版本:
dsh plugin --profile web up dsh-client-ui-skill-fuzzy
注意:本插件以 bundle 形式交付(
dsh.bundle.patch),dsh plugin add装包后会把它 reconcile 进dsh.profile.bundles并自动应用自带 patch,无需手动修改cordis.patch.yml。
若本机 pnpm 报 lockfile / peer 冲突(如既有
dsh-mobile依赖导致 ERESOLVE),可先提交 lockfile 变更或改用方式 B。
方式 B:手动安装
- 把本包放入
profiles/web/node_modules/dsh-client-ui-skill-fuzzy/(或用pnpm add的等价手动方式)。 - 在
profiles/web/package.json的 dependencies 中登记:
"dsh-client-ui-skill-fuzzy": "git+https://github.com/CnsMaple/dsh-client-ui-skill-fuzzy.git"
挂载(自动)
插件自带 cordis.patch.yml(禁用内置 ui-skill 前缀过滤、挂载自身),装包后由 bundle 层自动应用,无需手动修改 profiles/web/cordis.patch.yml。
从旧版(手动 insert)升级时清理:
- 移除
profiles/web/cordis.patch.yml里此前的两段:- id: ui-skill / disabled: true与- insert: { id: ui-skill-fuzzy, ... },避免重复挂载。 - 重启
dsh --profile web,__DSH_BOOT__中应出现dsh-client-ui-skill-fuzzy且不再有内置@deepseek-ai/dsh-client-ui-skill;聊天框输入/ecrpa应命中 ecommerce-rpa-toolkit。
注意
- 与命令面板一致:输入含空格(如
/meegle b)不匹配;仅匹配技能名称,不匹配描述。 exports必须暴露./package.json子路径,否则dsh-client-modules的require.resolve('<pkg>/package.json')报ERR_PACKAGE_PATH_NOT_EXPORTED导致插件不进 boot。
License
MIT
No comments yet. Be the first to write one.