Repository navigation
Releases
v0.2.2 — 适配 DSH 0.2.0-rc.1
适配 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.0dsh-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 里。