## 正文 ### 问题概述 v0.7.8 作为 "DSH 0.1.2-rc.1 兼容修复发布"(PR #60 / #58 #59),在 `src/inject.js`、`src/summarize.js` 中已将 `session.events` 改为 `snapshotEvents?.() ?? session.events` 双兼容写法并补了测试。但 **`lib/`(npm 实际加载的产物)从未同步**——不仅发布管道,连 GitHub `main` 分支上的 `lib/` 都仍是旧代码。用户在 DSH 0.1.2-rc.1 下安装 0.7.8,运行的仍是未适配代码。 ### 证据 1. **运行时入口指向 lib**(模拟 `require('@modusensus/dsh-mneme')` 实测解析到 `dsh-mneme/lib/index.js`;`main` 与 `exports["."]` 均指向 lib)。 2. **lib 无适配痕迹**:`lib/` 全目录搜 `snapshotEvents` = 0 处。`lib/inject.js` L11 仍是: ```js const events = ctx?.agent?.session?.events; ``` `lib/summarize.js` L81 仍是: ```js for (const event of session.events ?? []) { ... } ``` 3. **src 已适配**(GitHub main 与 npm 包一致): ```js const events = ctx?.agent?.session?.snapshotEvents?.() ?? ctx?.agent?.session?.events; ``` 4. **GitHub main 分支 src/lib 不一致**:`raw.githubusercontent.com/.../main/dsh-mneme/{lib,src}/inject.js` 对比,lib 旧 / src 新。 5. **PR #60 未触碰 lib**:改动文件仅 `src/inject.js`、`src/summarize.js`、`test/*` 与文档;`lib/inject.js` 提交历史停在 `2026-08-31`(#42)。 6. **发布流程无 sync 校验**(`.github/workflows/publish.yml`):直接 `npm publish` 当前 git 内容,无 build/sync 步骤,无法发现 lib 落后。 7. **历史正常对照**:v0.7.6 的 lib/src 哈希一致;v0.7.8 全目录对比仅 `inject.js`、`summarize.js` 两个文件不一致——恰好是 rc.1 需要改的两个。 8. **测试引用 src**(`import ... from "../src/inject.js"`),全绿但覆盖不到发布产物。 ### 影响 DSH 0.1.2-rc.1 起 `Session.events` 已被 `snapshotEvents()` 等按需 API 取代。npm 版 0.7.8 在 rc.1 下,热记忆注入(取最近用户提问)与会话摘要实际读不到事件;因代码带 `?.` / `?? []` / try-catch 容错,**不报错但功能静默失效**,属隐性回归。 ### 建议 1. 将 `src/` 的适配同步到 `lib/` 并发布 **v0.7.9**; 2. 在发布流程加 lib/src 一致性校验(发布前断言两目录对应文件哈希一致),避免再次发生; 3. 补充针对 lib 产物的冒烟测试(或测试改为同时覆盖 lib)。 ### 环境 - 插件:`@modusensus/dsh-mneme@0.7.8`;DSH:`@deepseek-ai/dsh@0.1.2-rc.1`;平台:Windows ---
Activity
[-][Bug] v0.7.8 的 rc.1 snapshotEvents 适配只改了 src/,lib/ 未同步——npm 包实际运行的仍是旧代码(GitHub main 上亦如此)[/-][+][Bug] v0.7.8 的 rc.1 snapshotEvents 适配只改了 src/,lib/ 从未同步——npm 包实际运行的仍是旧代码(GitHub main 上 lib 亦未更新)[/+]fix: v0.7.8 的 snapshotEvents 适配未同步 lib/,加发布前 src/lib 一致性校验 (issue #65) (
Anans-Amarre commentedon Sep 6, 2026
感谢 @LiMeSawa 的详细排查,证据链非常完整(lib 无适配痕迹、src/lib 哈希对比、PR #60 未触碰 lib、publish.yml 无校验),定位完全准确 👍
已修复并发布 v0.7.9(PR #66):
lib/inject.js(2 处)、lib/summarize.js(1 处)补齐snapshotEvents?.() ?? .events兼容垫片,与src/逐文件一致。npm tarball 已验证(lib/含修复、main 指向lib/index.js)。scripts/check-sync.js,rootprepack钩子调用——发布前断言src/↔lib/逐文件一致,漂移直接阻断发布。根因是 root 层npm publish不触发子目录prepack → sync,此后再也不会发出 src/lib 不一致的包。test/lib-smoke.test.js,从lib/直接导入复跑 snapshotEvents 注入/摘要用例 + 静态一致性断言,每次 CI 全量测试拦截。验证:全套 815 测试通过(含 3 个新用例);check-sync 实测 lib 注入漂移 → prepack exit 1 阻断。发布 workflow success,
@modusensus/[email protected]已在 registry 上线。麻烦你在 DSH 0.1.2-rc.1 环境升级 0.7.9 后验证一下热记忆注入与会话摘要是否恢复,有异常随时反馈(issue 先保持 open)。
LiMeSawa commentedon Sep 6, 2026
验证通过,0.7.9 已解决此问题,可以关闭 ✅
在 @deepseek-ai/[email protected](Windows)环境下将插件升级到 @modusensus/[email protected] 后做了验证:
代码层面:npm 实际加载的产物已同步——lib/inject.js(2 处)、lib/summarize.js(1 处)均为 snapshotEvents?.() ?? session.events 双兼容写法,与 src/ 一致;scripts/check-sync.js、test/lib-smoke.test.js 也已随包到位。
运行时读写:通过插件的记忆工具做了完整往返验证——memory_save 写入 → memory_search(keyword 模式)精确命中 → memory_delete 清理,均正常。
记忆注入恢复:会话上下文中 dsh-mneme 的跨会话记忆注入恢复正常显示——这正是此前在 0.7.8 下静默失效的链路,说明 lib/inject.js 通过 snapshotEvents() 读取会话事件的修复已实际生效。
issue #65 可以关闭
感谢大佬!!
chore(ci): 恢复 check-sync.js(v0.7.12 重写删除,但 CI/发布闸门仍引用)
ci: 测试矩阵扩展为 windows/linux × node 22/24,发布改为完整流水线 (#75)