Skip to content

Releases

dsh-engram v0.9.0 — 产品没变,证据变了

Choose a tag to compare

@skepsun skepsun released this 29 Oct 04:58

dsh-engram v0.9.0

这一版几乎没改产品代码,改的是「我们凭什么说自己有用」——评测从「跑得动」变成了「作弊不了」。

从 0.8.8 到这里共 22 个 commit,lib/ 一行未动,唯一的用户可见改动是 CLI 的一处
preset 扫描优先级。剩下的全部落在 eval/、test/ 和 docs/:把上一版还只能"声称"的
东西变成能复现的读数。

修复

  • web-compaction 的 preset 扫描不再被陈旧的 legacy 目录抢占:--presets-dir
    现在优先于一切。此前一个更早的 checkout 留在机器上时,它会先认领 preset id,
    声明式 patch 文件按 id 被去重掉,于是 status 报的是 legacy 布局、
    而声明式那份被显示成 custom。三条 Linux CLI 测试抓到了这个组合
    (scripts/dsh-engram.mjs)。

评测基础设施(本版真正的内容)

  • G6 有了网络围栏(--sandbox --net-fence --net-endpoint host:port):
    bwrap 搭挂载树 → setpriv 掉到专用 uid → 三条按 uid 生效的 iptables 规则,
    默认 REJECT,只放行 loopback 和一个模型端点。按 uid 而不是按进程过滤,
    所以开发会话、harness、Web GUI 的网络不受影响。
    跑矩阵前有两个自证,不通过就不计分:出网探针(端点可达 / github 000 / DNS 死)
    和写目录探针(臂必须能在自己的 workspace 里落盘)。
  • 第九轮结果:9 任务 × 2 seed × 2 臂,p-a 18/18 vs p-b 0/18,Δ +100.0pp,
    18 对配对,infraRows 0,contaminated 0(eval/g6/runs/r9-net/)。
    18 份控制日志里有 4 份试图出网,全部拿到 exit 124 / "network unavailable"——
    这是第七轮「控制臂去 GitHub 查到答案」的反面。
  • 语料第 4 条自证:工作区 stub 必须导出 prompt 点名的函数,参数个数必须与 prompt 一致
    (oracle 可以少传、不能多传)。这条当场抓出三处不一致:retry 的 stub 签的是
    shouldRetry(status, code, attempt)、ranking/dedupe 的 stub 导出名 prompt 从未提过。
    一份靠"猜哪份文档算数"得来的通过不是证据。
  • 污染判定改为三分类(classifyLeak → memory / artifact / network),
    并提供 quality-ab.mjs classify 从既有日志重算:围栏下"试过出网"不再等于"拿到了"。
  • G7 从「未测」变成实测:账本自身开销最坏操作 0.2956%(闸门 < 0.5%),
    1123 条真实 step 延迟,npm run bench:ledger 可复现。

其他

  • 证据面汇总见 docs/GATES.zh.md:G2 激活率 83.3% PASS · G4 陈旧率 0.0% PASS ·
    G6 Δ +100pp PASS · G7 0.2956% PASS · G1/G1b/G5 仍未测(未测即未测,不猜)。
  • G6 方法、十二道缝与失效模式见 docs/G6-quality-ab.zh.md §16。

这一版不是 1.0,也请不要这样读

0.9.0 表示"证据链条够了",不表示"公共面稳定了"。三条至少还挡在 1.0 前面:

  1. 宿主还是 rc(peer >=0.1.2-alpha.2 <0.3.0-0,本机 dsh 0.2.1-rc.2):
    1.0 承诺"不无故破坏",在 rc 宿主上做不到。
  2. 旗舰收益未测:账本 avoided 0c、净 −1.46M token、G1 未测——
    因为省钱的两条路(boundaryPrune、gcReplacesCompaction)默认关闭。
    一次开着的实测周(≥5 个 opportunity 会话)才能让 G1 第一次有读数。
  3. 减法债:14 个工具(目标 ≤10)、70 个配置键(面向用户目标 ≤12)、
    client bundle 291KB(目标 <150KB);存储格式仍无 schemaVersion/迁移。

DSH 版本支持

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.3.0-0
  • peer 声明:
    • @deepseek-ai/dsh-compaction: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-compaction-basic: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-llm: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-settings: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-storage-domain: >=0.1.2-alpha.2 <0.3.0-0
  • 验证版本:dsh 0.2.1-rc.2(本机 CLI + web)
  • 最后验证日期:2026-10-29
  • 安装方式已验证:dsh plugin --profile web add <path|dsh-engram>
  • 兼容性:配置键与数据格式与 0.8.8 完全一致,无需迁移;无破坏性改动。

验证

npm test        → 519/519
npm run typecheck → ok
npm run eval    → BENCH PASS
npm run build:client → 无 diff(bundle 新鲜)
npm pack        → 459KB / 94 files

dsh-engram v0.8.8

Choose a tag to compare

@skepsun skepsun released this 27 Oct 07:47

dsh-engram v0.8.8

0.8.7 的推送腿遥测写错了一层目录——装上真机、重启、看一眼状态,5 分钟内就露馅了。

修复:push-legs.jsonl 写到了 engram/engram/

0.8.7 引入的推送腿遥测,engramHome() 已经以 engram/ 结尾,写入端又拼了一次
engram,于是文件落在 ~/.dsh/engram/engram/push-legs.jsonl;而 dsh-engram status
读的是 ~/.dsh/engram/push-legs.jsonl。

结果是一个工作正常的遥测,在状态里显示成「还没记录」——正好是这一版想消灭的那种
「看起来像没发生」。单测没抓到,因为测试自己造目录、两边用的是同一个临时路径。

现在把契约写死在一处:pushLegsPath(engramDir) 的参数就是 engram 目录本身,
写入端传 engramHome()、读取端传 <dsh home>/engram,注释里写明为什么不能拼第二次。
新增一条回归测试直接断言 pushLegsPath(dir) === join(dir, "push-legs.jsonl")。

顺带得到的一个真数据点

修好路径、把线上那条记录归位之后,本机(dsh 0.2.1-rc.2 CLI + web)的答案是:

推送腿:事件日志读法 snapshotEvents · 最近 2026/10/27 15:44:35 · snapshotEvents×1

也就是说我们自己的宿主走的是 snapshotEvents——ctx.sessionQuery 在这套组合里
没挂上(宿主已把它标为 deprecated,但仍在)。这解释了为什么 0.8.6 补的
seq+eventAt 第四手值得留着:桌面运行时那类宿主一旦连 snapshotEvents 也去掉,
eventAt 就是最后的退路。

证据

  • npm test 489/489(+1 路径契约回归)
  • npm run typecheck 通过;prepublishOnly 真实 tarball + peers 后 host/client 双入口导入通过
  • 真机验证:dsh-engram status 打印出上面那行读法;~/.dsh/engram/engram/ 这个错误
    目录已清理,记录已归位到 ~/.dsh/engram/push-legs.jsonl

DSH 版本支持(必填)

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.3.0-0
  • 验证版本:dsh 0.2.1-rc.2(本机 CLI + web)
  • 最后验证日期:2026-10-27
  • 安装方式已验证:prepublishOnly 用真实 tarball 装 peers 后导入 host/client 双入口
  • peer 声明:@deepseek-ai/dsh-{settings,storage-domain,compaction,compaction-basic,llm}@>=0.1.2-alpha.2 <0.3.0-0、@deepseek-ai/cordis@^4.0.2、@deepseek-ai/schemastery@^3.18.2

dsh-engram v0.8.7

Choose a tag to compare

@skepsun skepsun released this 27 Oct 07:39

dsh-engram v0.8.7

「特性睡着了」这件事,现在有离线证据可查;顺手拆掉一句永远不会兑现的状态承诺。

0.8.6 修了 issue #9 的能力问题(宿主不暴露批量读接口时退回 seq+eventAt)。
这一版补的是可观测问题:就算下一次再遇到同类宿主,也不该有人靠解 zstd 帧
才能证明「不是还没触发,是根本不会触发」。

新增:推送腿(push legs)有了落盘证据

[RECALL]、会话 episode、[RESUME] 简报、会话结束的 todo sink —— 这四件事共享
同一个前提:会话事件日志可读。它们一起醒,也一起睡。

以前这里只有一个 warn,打在一个没人留着的终端上。现在每个会话装配时,插件把
实际走了哪条读法追加进 $DSH_HOME/engram/push-legs.jsonl(有界:超 32 KB 只留尾 50 行):

{"at":1793086321920,"pid":59392,"sessionId":"session-…","source":"sessionQuery"}

source 就是 sessionEventsSource() 的裁决:legacy / sessionQuery /
snapshotEvents / eventAt / none。

dsh-engram status 多一行:

推送腿:事件日志读法 sessionQuery · 最近 2026/10/27 15:32:01 · sessionQuery×3 · eventAt×1
推送腿:⚠ 事件日志不可读(none)—— [RECALL]/episode/resume/todo-sink 休眠中 · 2026/10/27 15:32:01 · none×1

第二条就是 issue #9 那台机器的样子——不用开日志、不用解帧,一眼能看出是休眠还是没触发。

修复:minimal 预设的状态行在撒谎

dsh-engram status 对未接管的预设一直打印「出厂布局,重启 dsh web 后自动接管」。
但 DSH 0.2.1-rc.2 的 minimal.patch.yml 里 compaction 组缺 tool-result-pruner 行,
换行不变量(要标准形状)不成立,swapCompactionRow 返回 null,boot 时记的是
skipped / layout-mismatch——那句承诺永远不会兑现,重启多少次都是 stock。

现在对 stock 再做一次换行探测,换不动就直说:

minimal: stock — 出厂布局但与标准形状不同(行不全),自动接管不会发生;要 Context GC 请手工接线或改用 standard

证据

  • npm test 488/488(+5:push-legs 落盘、最新裁决、休眠措辞、有界重写、坏文件不抛)
  • npm run typecheck 通过;prepublishOnly 真实 tarball + peers 装上后 host/client 双入口导入通过
  • 本机 0.8.6 实机取证:状态快照 pid 59392(15:31:47 写入)→ recall-injections.json
    的 lastInjection 为 15:32:01,即重启后 14 秒推送腿真的动了

升级后请做的一件事(如果你在 issue #9 里报过障)

npx dsh-engram status

把「推送腿」那一行贴回 issue。如果它写 none,说明桌面运行时的 Session 连
eventAt 都不给,那才需要走「直接读 session.v4.jsonl.zstd」这条重路子
(Node 22 无内置 zstd,要引依赖);如果写 eventAt 或 sessionQuery,说明已经修好。

DSH 版本支持(必填)

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.3.0-0
  • 验证版本:dsh 0.2.1-rc.2(本机 CLI + web)
  • 最后验证日期:2026-10-27
  • 安装方式已验证:prepublishOnly 用真实 tarball 装 peers 后导入 host/client 双入口
  • peer 声明:@deepseek-ai/dsh-{settings,storage-domain,compaction,compaction-basic,llm}@>=0.1.2-alpha.2 <0.3.0-0、@deepseek-ai/cordis@^4.0.2、@deepseek-ai/schemastery@^3.18.2

dsh-engram v0.8.6

Choose a tag to compare

@skepsun skepsun released this 27 Oct 07:18

dsh-engram v0.8.6

桌面宿主上那三个「一直在休眠」的特性,修好了;顺手把「静默」改成会说话。

这是 0.8.x 第一次发布到 npm(上一版 npm latest 还是 0.7.4),
所以从 npm 升级的用户这一跳是 0.7.4 → 0.8.6,0.8.0–0.8.5 的内容一起到达——
见文末「0.8.0–0.8.6 一次性带给你什么」。如果你只是想知道自己踩的坑修没修:
issue #9 修了。

修复:宿主没有批量读接口时,退回逐条读

episode(会话沉淀)、[RESUME] 简报、[RECALL] 启动召回、会话结束的 todo sink,
四件事都读会话事件日志。lib/session-events.js 原本有三手:

  1. session.events(DSH ≤0.1.x 的旧字段)
  2. ctx.sessionQuery.live()(≥0.2.x 的正规租约)
  3. session.snapshotEvents()(宿主已标 deprecated 的同步批量读)

Windows 桌面运行时(@deepseek-ai/dsh-desktop-runtime 0.2.1-rc.2)三样都没有,
于是四项特性一起休眠,且没有任何配置能绕过。issue #9 的报障就是这么来的。

现在有第四手:

  1. session.seq + session.eventAt(seq) —— 逐条读。这是上面所有批量读底下
    的原语,宿主可以砍掉批量接口而留下它。慢一点,但能让特性活着。

顺序不变,前一手能用就不走后面;sessionEventsSource() 也把 "eventAt" 报进状态,
/stats 与冒烟检查都能看见这一轮到底走了哪条路。

「静默休眠」本身也是 bug

报障的同学是解 session.v4.jsonl.zstd 的帧才确认「不是还没触发,是根本不会触发」的。
这个成本不该由用户付。两处改进:

  • 休眠时的 warn 现在报出它有什么:
    … no session.events, no ctx.sessionQuery, no snapshotEvents, no eventAt … Session surface: seq, eventAt, append
    —— 下一份报障带上这一行,就能直接判定对面是哪代宿主。
  • README 的 episode 小节加了明确的宿主要求段:哪些接口能满足、三样都没有时会休眠、
    以及存储与 engram_recall/engram_detail 仍然照常工作。已知案例点名桌面运行时。

证据

  • npm test 483/483(新增:只有 seq+eventAt 也能读出日志、episode 仍能生成、
    完全没有可读接口时 sessionEventsSource === "none" 且 surface 探测能报出它有什么)
  • npm run typecheck 通过;prepublishOnly 真实打包 + 装上 peers 后 host/client 双入口导入通过
  • G6 第五轮(同批):20 对配对,Δ = +90.0pp(带记忆 20/20,裸臂 2/20),
    在三条不可推导约定上 15/15 vs 0/15 —— 见 docs/G6-quality-ab.zh.md §12

0.8.0–0.8.6 一次性带给你什么(相对 npm 上的 0.7.4)

  • 0.8.0 证据化 procedure — procedure 记忆要带「验证过」的证据才进索引,并有失效检测
  • 0.8.1 Skill 导出 — 验证过的 procedure 能导出成真正的 DSH Skill
  • 0.8.2 subagent 交接胶囊 — 留档做全(替换做不了,理由写在代码里)
  • 0.8.3 审批门 — 证据让你进索引,人点头才让你写文件
  • 0.8.4 审批门 GUI + G6 门方向修正 — 单边门(Δ ≥ −2pp)与隐藏规格语料
  • 0.8.5 记忆行上的文件信号 — ⚠file-changed / ⚠file-missing,让「这条记忆指向的文件变过」可见
  • 0.8.6 本版 — issue #9 修复 + 休眠不再静默

逐版细节见 docs/RELEASE-NOTES-v0.8.{0,1,2,3,4,5}.md。

DSH 版本支持(必填)

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.3.0-0
  • 验证版本:dsh 0.2.1-rc.2(本机 CLI + web,dsh --version)
  • 最后验证日期:2026-10-27
  • 安装方式已验证:prepublishOnly 用真实 tarball 装 peers 后导入 host/client 双入口
  • peer 声明:@deepseek-ai/dsh-{settings,storage-domain,compaction,compaction-basic,llm}@>=0.1.2-alpha.2 <0.3.0-0、@deepseek-ai/cordis@^4.0.2、@deepseek-ai/schemastery@^3.18.2

已知限制:桌面运行时(@deepseek-ai/dsh-desktop-runtime)若不暴露
sessionQuery / snapshotEvents / eventAt 中的任何一个,四项注入特性仍会休眠
(存储与工具不受影响),此时请把 warn 里的 Session surface: 一行贴进 issue。

v0.7.0 — 从事件记录到当前真相:episode / 实体页 / 锚点

Choose a tag to compare

@skepsun skepsun released this 19 Oct 06:15

dsh-engram v0.7.0

自 v0.6.0 以来:把「记忆」从事件记录推进到可维护的当前真相——会话结束自动沉淀
episode、新会话给恢复简报、esr_node 升级为实体页、文件锚点让过期真相可被检测。

功能

  • 会话 episode(v0.7-A) — session/disposed 时用零 LLM 规则把事件日志压成一条紧凑
    纪要:改过哪些文件、跑过哪些命令、哪些失败后修复(cmd×N→fixed)、git commit 主题、
    仍挂着的 todo。只在有实质内容时写(纯 ls 会话不写),永不进 [ENGRAM] 索引,
    每个 workspace 保留最近 20 条。
  • 恢复简报(v0.7-D) — 新会话第一次组装时,取最近 7 天最新的 episode,注入
    ≤240 字符的 [RESUME] 行 + engram_detail 指针;与 [ENGRAM]/[RECALL] 一起按会话冻结。
    没有近期 episode 就不注入。
  • 实体页 + 实体卡(v0.7-B) — esr_node 升级为可读页面:truth(preference 优先、
    superseded 剔除)/ timeline / open loops(active 任务 + 证据缺口)/ conflicts
    (无序对去重)/ relations。[ENGRAM] 为活跃实体前置最多 2 张一行卡
    (truth 首条 + mem/open + 下钻指针),被代表的实体不再重复平铺行;
    engram_detail(entity="<name|id>") 返回完整页。
  • 可重验证锚点(v0.7-C) — 带 filePath 的记忆在写入时记录
    {path, mtimeMs, size, hash?}(≤256KB 存 sha256);会话启动时有界重验证(≤40 条),
    文件改动/缺失 → 打 stale 标签,索引与实体 truth 不再展示,timeline 标注 · stale,
    engram_detail 仍可重取(不删除)。
  • 分层 TTL(v0.7-C) — preference / procedure 永久;episode 14 天;error 60 天;
    其余按 expireDays(默认 180 天)。仍然只有 GC 归档、没有硬删。

兼容性说明

  • 存储 schema 只新增字段:memories.anchor(nullable,默认 null)与新的 memory kind
    episode。旧数据读取自动补默认值,无需迁移;真实实例冒烟用 256 条既有记忆验证通过。
  • 只有新写入且带 filePath 的记忆会落锚;既有记忆不会被回溯锚定(避免一次性把历史
    事实全部标 stale)。需要时可后续加显式 backfill 命令。
  • 新增设置键(均默认开):episodeEnabled、resumeBriefEnabled、entityCardsEnabled、
    anchorRevalidate;隐藏可调 episodeMaxPerWorkspace、resumeBriefMaxAgeDays、
    resumeBriefMaxChars、entityCardsMax、entityCardChars、episodeTtlDays、
    errorTtlDays。GUI 旋钮总数 34。
  • 升级后需重启 dsh web;episode 要等一个会话结束、resume brief 在下一个新会话生效。

其他

  • 测试 381/381(新增 episode 9 例、entity 7 例、anchor 6 例);npm run eval BENCH PASS;
    npm run typecheck 通过;lib/client.js 重建。
  • 文档:中英 README(episode / 实体页 / 锚点三节)、docs/PROPOSAL-evolution.zh.md
    (v0.7 A/B/C/D 状态)、设置卡新增「会话纪要 / 恢复简报 / 实体卡」开关。

DSH 版本支持

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.3.0-0
  • peer 声明:
    • @deepseek-ai/dsh-compaction: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-compaction-basic: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-llm: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-settings: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-storage-domain: >=0.1.2-alpha.2 <0.3.0-0
  • 验证版本:dsh 0.2.0-rc.2
  • 最后验证日期:2026-10-19
  • 安装方式已验证:dsh plugin --profile web add dsh-engram

v0.6.0 — 上下文投资组合:Context Ledger / 默认值纠偏 / JIT 推送

Choose a tag to compare

@skepsun skepsun released this 19 Oct 05:20

dsh-engram v0.6.0

自 v0.5.1 以来:从「记忆插件」转向上下文投资组合——先把省 token 变成可审计的账本,
再用账本纠正默认值、否决不划算的剪枝,并按确定性事件把记忆推给模型。

功能

  • Context Ledger(上下文净收益账本) — 每个模型请求记一次账:
    net = avoided − injected − rewriteChars × (1 − cacheDiscount)。
    注入的 [ENGRAM]/[RECALL]/[ESR]/[JIT] 块按存活请求计成本;BoundaryPrune 剪掉的
    结果按后续请求计节省;每次剪枝/推送按前缀重写计价(默认缓存折价 0.1)。
    GET /api/dsh-engram/stats 与 /overview 返回 ledger(totals / byWorkspace / byDay),
    落盘 ~/.dsh/engram/ledger.json(原子写、按天滚动、delta flush)。
    设置键:ledgerEnabled(默认开)、ledgerCacheDiscount(默认 0.1)。
  • GUI 账本可视化 — 遥测页新增「Context Ledger · 上下文净收益」面板(净 token 大数字、
    节省/注入/重写罚金三卡、近 14 天红绿柱、JIT 推送次数);记忆概览新增「上下文净 token」卡。
  • BoundaryPrune 默认开 + 账本否决 — boundaryPrune 默认 true、resultPack 默认 true
    (默认剪枝由归档兜底、无损);新增 boundaryPruneAdaptive(默认开):某 workspace 真实剪枝
    后净收益为负且 ≥3 次时,账本自动否决后续剪枝(fail-open,日志一行)。
  • JIT 推送(v0.6-C) — 三类确定性事件,命中已有记忆/任务才推,append-only、每会话 ≤3 行、
    每行 ≤220 字符、无命中沉默:错误复发(同 cmd: 第 2 次失败 + 已有 error/procedure)、
    文件焦点(同文件连续第 2 次编辑 + filePath/dir 锚定记忆)、goal 完成(有 active ESR 任务)。
    新增 [JIT] section(order 40.75)、/stats.jit 计数、jitEnabled 开关。
  • 设置卡 — 新增「剪枝自适应」「JIT 推送」两个开关。

破坏性变更(默认值纠偏)

键 v0.5.1 v0.6.0
boundaryPrune false true
boundaryPruneAdaptive — true
resultPack false true
gcReplacesCompaction true false(opt-in)
autoWebCompaction true false(opt-in)
  • 默认剪枝现在开启,但被剪中段默认归档到 resultpack/(7 天),可用
    result_recall(callId) 召回。要回到纯记忆模式:boundaryPrune:false(或
    resultPack:false 接受不可召回)。
  • Context GC 接管改为 opt-in。已接管的 web 预设保持 wired,但默认挂宿主
    BasicCompactionEngine(DSH 自己的 LLM 摘要),除非显式打开
    gcReplacesCompaction:true(web 还需 autoWebCompaction:true)。
  • 升级后需重启 dsh web;账本从下一次会话开始累计。

其他

  • 测试 359/359(新增 ledger 13 例、jit 9 例、adaptive gate 4 例、settings/API/client 渲染用例);
    npm run eval BENCH PASS;npm run typecheck 通过;lib/client.js 重建。
  • 文档:docs/PROPOSAL-evolution.zh.md(演进提案)、中英 README、docs/CONTEXT-GC-GUIDE.zh.md
    (Context GC 改为 opt-in 的 4 步启用)。
  • 真实实例冒烟(dsh 0.2.0-rc.2,临时将 profile 的 dsh-engram 指向工作树后还原):
    /overview 返回 ledger、/stats 返回 jit,defaults 与上表一致,compaction.host = default。

DSH 版本支持

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.3.0-0
  • peer 声明:
    • @deepseek-ai/dsh-compaction: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-compaction-basic: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-llm: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-settings: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-storage-domain: >=0.1.2-alpha.2 <0.3.0-0
  • 验证版本:dsh 0.2.0-rc.2
  • 最后验证日期:2026-10-19
  • 安装方式已验证:dsh plugin --profile web add dsh-engram

dsh-engram v0.5.1 — 会话扫描修复(session.v<N>.jsonl.zstd)+ 数据导出/导入 + 替换/冲突可视化

Choose a tag to compare

@skepsun skepsun released this 19 Oct 03:05

dsh-engram v0.5.1

补丁版:修复会话日志扫描对版本化文件名的硬编码(issue #8,所有会话扫描
功能静默返回 0),并补齐记忆查看器的数据导出/导入与替换/冲突可视化
(issue #3 收尾)。

修复

  • 会话扫描识别 session.v<N>.jsonl.zstd(#8)—— lib/usage.js、
    lib/boundary-prune.js、lib/session-cjk.js 曾硬编码 session.jsonl.zstd;
    当前 DSH 把会话格式版本写进文件名(0.1.x → session.v3.jsonl.zstd,
    0.2.x → session.v4.jsonl.zstd),statSync 抛 ENOENT 后被循环 continue
    静默吞掉,导致:

    • 设置页 → 遥测恒为「样本不足(0 次)」,GET /stats、GET /toolstats 全 0;
    • BoundaryPrune 的 workspaceHistory()(L0 偿还输入)看不到任何会话;
    • CJK 跨会话搜索恒返回 []。

    新增 sessionLogFile(dir):正则匹配 session[.v<N>].jsonl.zstd,取目录内
    mtime 最新的一个(迁移会话可能 v3/v4/legacy 并存,最新 = 宿主正在追加的
    文件),无匹配时回退历史名、调用方保留原有 ENOENT 处理。四处调用点统一改用它。
    本机实测(14 天窗口):files 0 → 17、events 0 → 643。

功能

  • 数据备份面板(#3)—— 设置页 → Engram 记忆 →「数据备份」:一键导出当前
    工作区(或全部)为 dsh-engram/export v1 JSON 并下载;导入支持 dry-run 预览
    → merge(只补缺失,幂等)/ replace(需勾选确认,宿主要求
    confirm:"restore")。宿主端的 GET /export、POST /import 早已存在,本版只补
    GUI 入口,GUI 与 API 走同一格式。
  • 替换 / 冲突可视化(#3)—— 记忆表给被替代的旧行挂「已替换」徽标、给新行挂
    「替代 #id」跳转;记忆详情面板新增「替换 / 冲突」双向链(出边来自记录的
    supersedes/contradicts,入边由已加载列表反查),元数据露出
    source/conditions/filePath。

测试

  • 334/334(新增 5 个 #8 用例:版本化/纯 legacy/v3+v4+legacy 混合/陈旧 legacy
    不遮蔽 v4/无关文件名不被误选,以及 CJK 版本化读取与 workspaceHistory 计数)。
  • npm run typecheck、npm run prepublish-check 通过;lib/client.js 重新构建。

DSH 版本支持

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.3.0-0
  • peer 声明:
    • @deepseek-ai/dsh-compaction: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-compaction-basic: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-llm: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-settings: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-storage-domain: >=0.1.2-alpha.2 <0.3.0-0
  • 验证版本:dsh-v0.2.0-rc.2(与 0.5.0 相同的宿主依赖集;本版只改会话日志
    解析与纯客户端界面,未触碰设置/注入路径)
  • 最后验证日期:2026-10-19
  • 安装方式已验证:dsh plugin --profile web add dsh-engram

dsh-engram v0.5.0 — DSH 0.2.x 兼容(settings 迁移到 entry-id volatile Config)+ 版本范围修正

Choose a tag to compare

@skepsun skepsun released this 15 Oct 09:35

dsh-engram v0.5.0

DSH 0.2.x 兼容修复版:0.1.7 起 @deepseek-ai/dsh-settings 移除了
settings.installSection,设置卡改为条目式 volatile Config 模型;本版本把设置
绑定迁移到新模型(entry-id engram),并把声明范围修到能覆盖 DSH 0.2.x 全系,
使插件在最新 DSH 上恢复加载与设置卡读写。

功能

  • DSH ≥0.1.7 / 0.2.x 设置模型支持 — 插件 Config(lib/index.js 导出的
    Config)声明全部 48 个 DEFAULTS 键;27 个 GUI 旋钮为 .volatile() 字段,
    设置表单由 DSH 以 profile 条目 id engram 对外提供,卡片编辑经
    loader/volatile-update 热提交到运行配置(新会话即时生效,已冻结块保持
    冻结——插件既有契约)。其余键普通声明,profile patch 里的内部旋钮不再被校验丢弃。
  • 双代际特性检测 — installEngramSettings 自动识别宿主:DSH ≤0.1.5
    回退旧的 settings.installSection 命名空间(dsh-engram),行为与 0.4.0 完全
    一致;≥0.1.7 / 0.2.x 走新模型(无挂载调用)。HTTP wire 命名空间两代际都保持
    dsh-engram,客户端 bundle 零改动。

修复

  • 版本范围:engines.dsh + 5 个 @deepseek-ai/dsh-* peer 从
    >=0.1.2-alpha.2 <0.2.0-0 修正为 >=0.1.2-alpha.2 <0.3.0-0——原范围把
    DSH 0.2.0-rc.x 全部排除(semver 预发布窗口),插件在最新 DSH 上被兼容门槛拒绝。
    新范围已用 DSH 自身的 includePrerelease 检查实测:0.2.0-rc.2 与整个 0.2.x
    线放行,0.3.0-0 拒绝。
  • 宿主设置崩溃:移除对已不存在的 settings.installSection 的无条件调用
    (其在 dsh-settings 0.1.7-alpha.2 起被删除),改为特性检测。
  • boundaryPruneThresholdChars 默认 null → 0:与设置卡长期使用的
    “0=用宿主 8192” 语义一致(0 与 null 在剪枝判定中等价),并让 describe 的
    表单值完整包含该键。

其他

  • 测试 329/329 通过(新增 test/settings-v2.test.mjs 6 个用例,覆盖 volatile
    Config 校验/解包/热同步与两代际安装路径;test/api.test.mjs 随 ns 语义更新)。
  • settings 投影与写路径针对真实 dsh-settings 0.2.0-rc.2 工具函数
    (volatileForm/projectForm/isVolatilePath/plainConfig)验证;
    真实 cordis 4.0.4 集成验证 Config 校验与热提交。
  • 真机烟测通过(隔离 profile,dsh 0.2.0-rc.2,--port 3099):插件启动无
    版本拒绝、/api/dsh-engram/settings 提供 27 键表单、
    GET → PUT(mutate,revision 0→1)→ unset 往返落盘并读回。
  • scripts/prepublish-check.mjs 随新导出面与 peer 范围更新,prepublishOnly
    在 0.2.x peer 集上通过。

DSH 版本支持

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.3.0-0
  • peer 声明:
    • @deepseek-ai/dsh-compaction: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-compaction-basic: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-llm: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-settings: >=0.1.2-alpha.2 <0.3.0-0
    • @deepseek-ai/dsh-storage-domain: >=0.1.2-alpha.2 <0.3.0-0
  • 验证版本:dsh-v0.2.0-rc.2(全局 DSH CLI,并针对真实
    dsh-settings / cordis / schemastery 依赖集)
  • 最后验证日期:2026-10-15
  • 安装方式已验证:dsh plugin --profile web add dsh-engram

dsh-engram v0.4.0 — BoundaryPrune + 会话语料测量工具链

Choose a tag to compare

@skepsun skepsun released this 14 Sep 09:04

dsh-engram v0.4.0

以 SoL-Pi(NVIDIA Labs)的 harness 效率研究为方法论起点:先量化、再造机制。本版本新增会话语料测量工具链与第一个由数据驱动的上下文效率机制。

功能

  • BoundaryPrune(子任务边界剪枝,默认关) — 在 todo 完成推进 / goal 终态边界,主动调用 DSH 自带 toolResultPruner(确定性 surface-replace、零 LLM、replay-safe),让超阈值旧工具结果停止在后续每个请求里整段重放。含偿还门(预计剩余请求 < boundaryPruneMinRemaining(默认 50)不剪;先验下界 + ×2 外推,长会话不被挡死)、pruner 服务特性检测(缺席即禁用)、fail-contained。配置 boundaryPrune(默认关)/ boundaryPruneMinRemaining。
  • 证据链工具链(eval/,零 LLM、确定性,读 ~/.dsh/sessions 真实日志):
    • oracle-analysis.mjs — 浪费源量化:结果重放暴露(97 会话实测 2.77B–7.53B 字符,96% 字节来自 bash/read/run_code,中位会话 top-10 结果占 46%)、edit→exec 融合候选、插件机制激活率、goal/todo 边界与 splice 事件捕获。
    • simulate-boundary-prune.mjs — L0 反事实仿真:阈值 × 边界策略 × 偿还门扫掠;todo 边界覆盖 79% 暴露,偿还门全配置提升净收益 12–32%。
    • dryrun-boundary-prune.mjs — BoundaryPrune 全量干跑:77 会话激活 38%,303 结果首剪 ≈3.47M 字符。
  • 文档:docs/ORACLE-ANALYSIS.zh.md(测量报告)、docs/PROPOSAL-resultpack.zh.md(接缝盘点 + L0/L1 记录;严格首插改写需上游 PR,已论证)。

修复

  • (无 — 本版本为纯新增;boundaryPrune 默认关,不开即零行为变化)

其他

  • 测试 279/279 过(新增 6 个 BoundaryPrune 用例);prepublishOnly 真实 tarball 安装双入口导入验证过。
  • README 中英双语新增 BoundaryPrune 小节与 eval 工具说明;配置示例更新。

DSH 版本支持

  • 支持的 DSH 范围:>=0.1.2-alpha.2 <0.2.0-0
  • peer 声明:
    • @deepseek-ai/dsh-compaction: >=0.1.2-alpha.2 <0.2.0-0
    • @deepseek-ai/dsh-compaction-basic: >=0.1.2-alpha.2 <0.2.0-0
    • @deepseek-ai/dsh-llm: >=0.1.2-alpha.2 <0.2.0-0
    • @deepseek-ai/dsh-settings: >=0.1.2-alpha.2 <0.2.0-0
    • @deepseek-ai/dsh-storage-domain: >=0.1.2-alpha.2 <0.2.0-0
  • 验证版本:dsh-v0.1.5-alpha.1(本地 deepseek-harness checkout)
  • 最后验证日期:2026-09-14
  • 安装方式已验证:dsh plugin --profile web add dsh-engram

dsh-engram v0.3.6

Choose a tag to compare

@skepsun skepsun released this 09 Sep 01:30

v0.3.6

自 v0.3.5 以来的三个功能/修复提交,解决 open issues #4 / #3 / #5。

修复

  • #4 遥测仪表盘恒为 0(zstd 解码) — lib/usage.js 完全移除对外部 zstd CLI 的依赖:
    • 自实现 zstd 多帧扫描 + 复用单个 Node 解码句柄(node:zlib),正确读取追加式多帧 session.jsonl.zstd 日志;
    • Windows / 无系统 zstd 的宿主开箱即用,/stats 与 /toolstats 不再返回空。

功能

  • #3 记忆 source / conditions 字段 — engram_store 可选 source(manual | session | report | upstream | handoff)与 conditions(何时该被召回);engram_detail 全量展示;导出/导入全链路透传,向后兼容(默认 null)。

  • #5 跨工作区召回(recallScope) — 新增可选配置 recallScope: "workspace" | "global"(默认 workspace,保持严格隔离与 token 纪律)与 engram_recall 的 scope 参数:

    • 本工作区命中弱/空时,跨工作区池按 recency/origin 加权召回;
    • 跨工作区命中带 [W:<workspace>] 来源标记,模型能识别上下文来源;
    • global 模式下放开 search_sessions 的 cwd 过滤;
    • 设置页配置卡新增「召回范围」下拉。
  • 会话启动自动召回(autoRecallOnStart) — 首次装配新会话时按首条消息确定性 BM25 召回并注入 [RECALL] 块(本轮一并带上)。

  • 数据契约导出/导入(/api/dsh-engram/export + /import) — 四个记忆表 dsh-engram/export v1 格式,merge / replace 两种模式 + 安全模型文档(本轮一并带上)。

发布面

  • engines: node >= 22.19.0(node:zlib 提供 zstd,无新增运行时依赖)
  • CLI 工具与 web 面板与 0.3.5 一致,仅本轮功能增量

DSH 版本支持

  • 支持的 DSH 范围:仅旧版 —— 0.1.0-rc.7 / 0.1.0-rc.8 / 0.1.1-rc.1 / 0.1.1-rc.2
  • peer 声明:@deepseek-ai/dsh-settings / dsh-storage-domain / dsh-compaction / dsh-compaction-basic / dsh-llm 均为 ^0.1.0-rc.7;@deepseek-ai/cordis@^4.0.1、@deepseek-ai/schemastery@^3.18.1
  • ⚠️ 本版本与 DSH >=0.1.2-alpha.2 不兼容:该版本起 @deepseek-ai/dsh-settings 移除了本插件直接 import 的 settingsNamespace / installSettingsSection(改 settings.installSection),client 注入集也从 dsh-client-runtime 换为 dsh-api-remotes 等。升级 DSH 前请先升级插件到下一个发布版本。