Skip to content

Releases

v0.2.2 — 适配 DSH 0.2.0-rc.1

Choose a tag to compare

@Max-Null Max-Null released this 28 Sep 22:32

适配 DSH 0.2.0-rc.1:内核 peer 放宽为覆盖两代。

改了什么

  • 4 个 @deepseek-ai/dsh-* 的 peerDependencies 与 devDependencies(各一处):
    • dsh-llm / dsh-session:^0.1.7-rc.2 → >=0.1.7-rc.2 <0.3.0
    • dsh-storage / dsh-storage-json:^0.1.1-rc.1 → >=0.1.1-rc.1 <0.3.0
  • 判断调用的 source 改为生产者自有 kind:{ kind: 'plugin', plugin: 'dsh-habit' } → { kind: 'plugin:dsh-habit' }。
  • README:截图段的行为描述与实现对齐(原文承诺「在会话中给出相应提示」,而插件并不向会话注入任何内容);补上空置的「SSID 系列」段与新的 Dependencies 段。
  • pnpm-lock.yaml / pnpm-workspace.yaml 纳入版本控制。

为什么

caret 的上界是「下一个 minor」——^0.1.7-rc.2 展开为 >=0.1.7-rc.2 <0.2.0-0,对 0.2.0-rc.1 判定 false。而 peer 不满足时插件不会被加载,也不出现在 did not activate 列表里:它在进入 fiber 图之前就被跳过,界面不报错,只表现为少一批功能。

判据在 DSH 的 packages/boot/app-boot/src/plugin-compatibility.ts:只检查名为 @deepseek-ai/dsh 或以 @deepseek-ai/dsh- 开头的 peer,用 semver.satisfies(runtimeVersion, requirement, { includePrerelease: true })(@deepseek-ai/cordis 不在其中,未动)。

source 那条同理:v4 会话格式拒绝退役的 { kind: 'plugin', plugin: … } 包装形式(session-format-v3-to-v4 对 { kind: 'plugin', plugin: 'compact' } 抛 producer-owned source kind),接受生产者自有 kind —— 与 dsh-llm 的 MessageSourceMap 所述「每个生产者声明自己的 kind」一致。

判据

semver 7.7.4,runtime 0.2.0-rc.1,satisfies(v, r, { includePrerelease: true }):^0.1.7-rc.2 与 ^0.1.1-rc.1 均为 false;>=0.1.7-rc.2 <0.3.0 与 >=0.1.1-rc.1 <0.3.0 均为 true。

验证

  • pnpm typecheck && pnpm test(11/11)&& pnpm build 三绿。
  • 类型检查用的是 0.2.0-rc.1 的类型定义:在临时副本里把 devDependencies 的 4 个内核包钉到 0.2.0-rc.1 实装后跑 tsc --noEmit —— 零错误,说明本插件没有使用新内核改动过的 API,属「宽范围两边都能跑」那一类。故下限保持原值,只放开上界。
  • 钉精确版本是必需的:peer 里写的范围 >=0.1.7-rc.2 <0.3.0 在 pnpm install 时解析到的是 0.1.7-rc.2(prerelease 选择规则),靠范围装不到 0.2.0-rc.1。
  • 未做隔离实例实机加载(该做法见 dsh-memory v0.12.2)。

兼容性

  • 0.1 线与 0.2 线都可装载;比各包下限更早的内核未验证,不声称支持。

说明

  • 本仓库的第一个 GitHub Release:v0.1.0 / v0.2.0 此前只有 tag。
  • v0.2.1 的变更并入本次:0.2.1 曾发布到 npm(2026-09-27)但未打 tag、未建 Release,其内容(source kind 修正与文档同步)包含在 v0.2.2 里。