Skip to content

dsh-keys-setting v0.2.1 — 去掉第三方运行时依赖(整改 DSH STORE 检查)

Choose a tag to compare

@itchenshi itchenshi released this 04 Oct 11:05
· 6 commits to main since this release

dsh-keys-setting v0.2.1

会话输入框的按键行为:让 Enter / Shift+Enter / Ctrl+Enter 各自「发送」还是「换行」。
从设置窗口的「通用」页直接改,默认与引擎一致。

这一版是回应 DSH STORE 固定 commit 自动检查(Catalog blocked)的整改。


🔧 去掉唯一的第三方运行时依赖

商城给的四条原因里,只有这一条确凿、且只属于本插件:它有运行时依赖。

四个随包插件里只有本插件的 dependencies 不空,依赖的是 npm 上非 scoped 的
schemastery;而引擎自己用的却是 scoped 的 @deepseek-ai/schemastery(3.18.4,
dsh-settings / dsh-llm-pi-ai 都 import 它)。两者同属 3.18.x、API 一致,但只有后者
随引擎而来:

  • 它在 profiles/node_modules/@deepseek-ai/ 下,插件装到哪儿都解析得到;
  • 它与引擎设置服务拿到的是同一个模块实例,比换一个同名库更安全。

做法:改用引擎自带那份,并把 dependencies 整键删掉 —— 至此四个随包插件都没有
运行时依赖,清单也保持纯 ASCII。

验证(不是只看版本号):

  • 从两个真实数据目录的插件安装位置解析 @deepseek-ai/schemastery,均成功,
    命中的都是引擎自己那份;
  • 用引擎那份 3.18.4 实构造本插件的 Config:默认值、type、dict、toJSON
    与原来(3.18.0)完全一致。

📋 补上 DSH 兼容性范围

商城说「未声明 DSH 兼容范围」这条其实不成立(清单里一直有),但既然建议了范围写法,
就补上:

"dsh": {
  "compatibility": {
    "node": ">=20",
    "dsh": ">=0.1.5-rc.2",
    "dshReleases": { "0.1.5-rc.2": "compatible" }
  }
}

原有的 dshReleases 映射保留,不影响既有读者。

📁 另外两条「信号」的说明

  • files 信号:代码里没有任何文件操作(无 node:fs)。偏好是经引擎自己的设置服务
    间接写进 settings.yaml,不是直接磁盘 I/O。
  • network 信号:页面半边那次 fetch 打的是同源路由(在引擎自己的信任围栏之后),
    不产生对外流量、不携带凭据。

🧪 一次性 Profile 的安装 / 启动 / 卸载证据

商城明确要求这一项。三环都跑过(每次都在临时数据目录里,不碰你的数据):

环节 做法 结果
安装 staging 出磁盘目录 → 引擎自己的 dsh plugin --profile web add file:… 装成功,node_modules/dsh-keys-setting/ 落地并登记进 profile
启动 同一 profile 启动引擎(dsh web --no-open --port 0) 引擎正常起来,四个插件都在 bundle 列表里 —— 宿主编译期真的 import 了本插件(含 schema 库)
卸载 引擎自己的 dsh plugin remove + 摘除 profile 登记 干净移除:bundle 登记、dependencies、catalogStatus 三者都不留痕

安装与启动由 verify:builtin 第 1-4 幕覆盖;卸载此前只是被通用用例间接覆盖,
这一版在 verify:builtin 新增第 7 幕,对本插件显式断言:

  • bundle 登记里没有了;
  • dependencies 里也没有了(留下 file: 依赖会让引擎下次启动把它 reconcile 回来);
  • catalogStatus 报未安装(设置窗口会显示成未装);
  • 另外三个随包插件不受影响。

📦 安装

# 推荐:直接从 GitHub 装(记进 profile,之后可跟着更新)
dsh plugin --profile web add github:itchenshi/dsh-keys-setting

# 备选:本 Release 的 tarball(git 协议走不通、但 HTTPS 能通时用这条)
dsh plugin --profile web add https://github.com/itchenshi/dsh-keys-setting/releases/download/v0.2.1/dsh-keys-setting-0.2.1.tgz

⬆️ 升级

  • 用 DSH Ready GUI:随包版本已抬高到 0.2.1,下次启动 GUI 时会自动重装,不需要手动操作。
  • 自己装的:按上面任一命令重装即可。偏好值存在 settings.yaml 的 composer-keys 段里,
    重装不丢。

✅ 验证

  • 本仓库 npm test:20 项通过
  • GUI 侧 npm run verify:builtin:ALL CHECKS PASSED(含新增的卸载一幕)
  • npm test(GUI 全量):全绿