Skip to content

[Bug] v0.7.8 的 rc.1 snapshotEvents 适配只改了 src/,lib/ 从未同步——npm 包实际运行的仍是旧代码(GitHub main 上 lib 亦未更新) #65

Closed

Description

@LiMeSawa

正文

问题概述

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 仍是:
    const events = ctx?.agent?.session?.events;
    lib/summarize.js L81 仍是:
    for (const event of session.events ?? []) { ... }
  3. src 已适配(GitHub main 与 npm 包一致):
    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 fix: 兼容 DSH 0.1.2-rc.1 Session snapshotEvents() API(issue #58 #59) #60 未触碰 lib:改动文件仅 src/inject.js、src/summarize.js、test/* 与文档;lib/inject.js 提交历史停在 2026-08-31(fix(issue#40,#41): escape prompt-variable braces + overlay close overlap #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)。

环境


Activity

  1. changed the title [-][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 亦未更新)[/+] on Sep 6, 2026
  2. self-assigned this
    on Sep 6, 2026
  3. Anans-Amarre commented on Sep 6, 2026

    @Anans-Amarre
    Collaborator

    感谢 @LiMeSawa 的详细排查,证据链非常完整(lib 无适配痕迹、src/lib 哈希对比、PR #60 未触碰 lib、publish.yml 无校验),定位完全准确 👍

    已修复并发布 v0.7.9(PR #66):

    1. 同步 lib:lib/inject.js(2 处)、lib/summarize.js(1 处)补齐 snapshotEvents?.() ?? .events 兼容垫片,与 src/ 逐文件一致。npm tarball 已验证(lib/ 含修复、main 指向 lib/index.js)。
    2. 发布闸门(防再犯根因修复):新增 scripts/check-sync.js,root prepack 钩子调用——发布前断言 src/↔lib/ 逐文件一致,漂移直接阻断发布。根因是 root 层 npm publish 不触发子目录 prepack → sync,此后再也不会发出 src/lib 不一致的包。
    3. lib 冒烟测试(CI 双保险):新增 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)。

  4. added
    bug功能异常、崩溃、数据错误(agent 诊断 → 人工确认)
    on Sep 6, 2026
  5. moved this from 📋 Backlog to 👀 Review in dsh-mneme 任务看板on Sep 6, 2026
  6. LiMeSawa commented on Sep 6, 2026

    @LiMeSawa
    Author

    验证通过,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 可以关闭

    感谢大佬!!

  7. moved this from 👀 Review to ✅ Done in dsh-mneme 任务看板on Sep 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bug功能异常、崩溃、数据错误(agent 诊断 → 人工确认)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions