dsh-memory-context-lab
Identified★ 3按 DSH 会话启用的上下文降温插件:已执行完的操作沉入隔离冷库,攒批归档保持前缀缓存命中
dsh-memory-context-lab
面向 DeepSeek Harness 的会话级上下文管理插件(v3 单引擎)。它把会话历史持续摄入每会话隔离的影子库,在每一步按当前用户输入检索历史、把命中要点回注到上下文;已完成的回合或步骤可以被压缩成一条可恢复的回执,从而在不丢失原文的前提下控制上下文增长。
插件只改模型可见的投影,不改写 DSH 的 append-only 会话日志与命令审计。原始历史始终留在会话日志里,回执可按凭证恢复。
当前源码版本 0.14.0-beta.50(测试版)。
功能
- 全历史摄入:每个
agent/pre-step把新增的 user / assistant / tool call / tool result 归一化写入本会话隔离库(后台异步,不阻塞首字)。 - 按需回注:以人类本回合输入为查询词检索历史,命中足够时生成有字符上界的回注包,追加到本步消息批次末尾;每回合只注入一次。
- 两种归档时机:
- 按轮归档:回合结束后压缩已完成回合,适合长程多轮;
- 按步归档:同一回合内实时压缩已完成且不在工作集的旧步骤,适合长步数任务,受上下文占用闸门控制。
- 可恢复:每次压缩生成带记录 ID / 原序号的回执;
/memory-lab restore [序号|all]按回执正文定位并恢复原文。 - 保护边界:当前回合/步骤、未完成工具对、插件回执、pin 记录不会被压缩;读租约只保护当前工作集(按步归档),不拖住已完成的上一轮。
- T1 / T2 双后端:默认本地 Node store + 词法索引(T1);检测到
@furongjun1999/dsh-memory0.9.10 且 Python 可用时,按会话启动独立MDCG_ROOT的隔离 MCP(T2),检索融合本地与隔离灵枢;T2 不可用时如实回 T1。 - 图形入口:composer 工具行 chip + 弹层控制本对话启用/回注/计划/模式/条数;全局参数在插件设置页。
- 可观测:
/memory-lab status | t2 | history | working-set | file-status只读查看摄入、索引、归档、T2 与回注观测。
0.14.0-beta.50 更新(相比 beta.48)
- 按轮归档在 dsh 判定下恢复连续可用(beta.49 + beta.50):滞后
currentTurn不再把整段历史误判为当前轮;系统提示 / 开发者消息作为结构边界不参与轮组,归档回执也不再把下一轮永久堵死。 - 空正文回合不再净增:净收益门槛覆盖 0 字正文,这类回合保留在活动面。
- 脱敏补漏:补前缀键、PEM 私钥、全角冒号与 URL 编码;导出对已遗忘 / 已清除凭证剥离回执正文,保留
metaOnly/structure往返。 - 状态更诚实:回执按「回合数 / 步骤数」写;判负原因对
status/dry-run可见,/memory-lab now可显式重试。 - 兼容性不变:v3 单引擎、命令与设置项不变,升级后重启 DSH 生效。
0.14.0-beta.48 更新(相比 beta.46)
- 恢复不再丢工具调用参数:摄入时把 assistant 消息里的
tool-call块(脱敏后)一并存进记录结构;restore会带回工具名与参数,按 ID 回读即可还原。索引、正文与净收益判据不变,16000 字窗口守卫仍是失败关闭。 - 损坏库自动截断尾部半行:
transactions/vouchers/forgotten/redactions日志末尾若是崩溃留下的半行(无结尾换行且 JSON 不可解析),打开时会在写锁内重读并截到最后一条完整行;中段损坏或账实不符绝不截断。也可用/memory-lab repair [status|apply]手动审计/修复,截断前先写repair-log.jsonl。 - 崩溃恢复与记录会计:归档意图区分按轮/按步并沿用事务号;恢复结果按「已恢复 / 跳过 / 已遗忘」分桶;隐私面清除失败可见,撤销遗忘会恢复 pin 保护。
- 按轮归档的轮次判定可切换(beta.47):设置页新增
turnBasis——human(默认,真人消息算一轮)或dsh(按界面「N 轮」计数,目标自动继续也会开新轮)。两种判定的判负游标独立,切换不会误跳未评估的轮。 - 稳定性:索引重建移到写锁外并在锁内复核新鲜度;
fileExists只把 ENOENT 当「没有」;状态行的「按步归档闸门」与「下一次归档」使用同一次 dry-run 的事实。
0.14.0-beta.46 更新(相比 beta.45)
- 修复按步归档的「停摆」:某段 span 因记录正文过小被判「净收益为负」后,它后面的步骤再也压不动。现在判负的 span 会被跳过(保持在活动面上、不压缩),归档从它之后继续。
- 只跳过「不划算」这一种情况;pin / 未完成工具对 / 无记录 / 插件回执仍是硬边界,照常拦住。
/memory-lab status的「下一次归档」与真实执行使用同一判据,预览不会再显示一个压不了的候选。
0.14.0-beta.45 更新(相比 beta.44)
- 修复会话级「按步归档闸门」覆盖在 composer 弹层不可见:状态投影与覆盖键集合同源(
limit+gate),写入的值能回显、清空能真正移除覆盖。 - 按轮归档不再被读租约钉住:回注命中的上一轮在下一个 pre-step 照常归档,不再等 5 分钟;按步归档与显式
pin的保护不变。 /memory-lab status的「下一次归档」、now、dry-run直接说明没归档的原因(当前回合 / 工作集 / pin / 无记录 / 未完成工具 / 不连续)。- 状态行「生效回注设置」显示会话覆盖的闸门,不再恒为全局默认 20%。
完整历史见 CHANGELOG。
兼容性
| 项 | 要求 |
|---|---|
| DSH Desktop | 0.2.x(按 app.asar 内 agent/pre-step / commands.register / session.append 契约实现) |
| Node.js | ≥ 22.19 |
| T2(可选) | @furongjun1999/dsh-memory 0.9.10 + Python;未安装时自动走 T1 |
| 工具集 | 不增删任何模型可见工具;不改写 DSH 日志 |
安装
从 Releases 下载 dsh-memory-context-lab-<版本>.tgz,加入 DSH profile 的依赖并安装:
cd "$DSH_HOME/profiles/<profile>"
pnpm add "file:/path/to/dsh-memory-context-lab-0.14.0-beta.50.tgz"
或把 tgz 路径写进 profile 的 package.json 后执行 pnpm install。安装后重启 DSH,服务端半才会加载新版本;客户端半在页面刷新后重新装配。
也可以从源码打包:
npm pack
使用
唯一命令是 /memory-lab:
/memory-lab status 摄入位点/库健康/本对话/回注/T2
/memory-lab on|off 本对话启用/停用
/memory-lab inject on|off 本对话自动回注
/memory-lab mode 按轮归档|按步归档|仅回注
/memory-lab set|unset limit <1-20> 本对话条数覆盖
/memory-lab set|unset gate <0-95> 本对话按步归档闸门
/memory-lab planfirst on|off|approve
/memory-lab now|compact|dry-run 归档/摘要/预览
/memory-lab history|working-set 列凭证/当前工作集
/memory-lab restore [序号|all] 恢复回执
/memory-lab pin|unpin <ID>、pins 保护/取消保护
/memory-lab forget preview|apply|undo|status <ID…>
/memory-lab export|adopt|adopt-from
/memory-lab file-status|verify <ID|all>
/memory-lab t2 [backfill [N]|backfill cancel|backfill status|cleanup]
/memory-lab recall <词> | read <ID>
/memory-lab help
设置
设置页在 插件 → dsh-memory-context-lab,包含 bundle 详情页与组件行配置两个槽位。字段:
| 字段 | 默认 | 说明 |
|---|---|---|
enabled | true | 新会话默认回注;本对话可单独关闭 |
fullHistory | true | 新会话默认按轮归档;关闭后默认按步归档 |
turnBasis | human | 按轮归档的轮次判定:human 真人消息(默认);dsh 按界面「N 轮」,目标自动继续也算 |
planFirst | false | 计划期间暂停归档与自动回注 |
autoRestore | true | 停用/手动恢复时是否还原回执 |
limit | 10 | 单次回注条数(1–20) |
packMinScore | 0.5 | 装包阈值;0 表示不过滤 |
previewChars | 160 | 每条命中首部字符数(40–4000) |
queryMaxChars | 512 | 查询词只取用户消息前 N 个字符 |
coolingGate | 20 | 按步归档的上下文占用闸门(0–95) |
工作原理
- 摄入:
agent/pre-step后异步读取本步新增事件,批量写入会话隔离库;断点持久化,重放不双计。 - 归档:选择连续的活动面 span → 生成回执 → 写 archive-intent → 宿主
surfaceOp.replace→ 追加 voucher;失败不推进位点,崩溃按 intent 对账。 - 隔离:数据根
$DSH_HOME/.memory-context-lab/v3/sessions/<会话隔离键>/;每会话一个写锁(15s 心跳 / 60s TTL / stale 接管);T2 只写本会话t2-mdcg/。 - 失败关闭:读不到 / 损坏的状态文件按默认或失败处理,不用 0 冒充未知;写锁、索引与账本均有损坏可见的失败路径。
安全与隐私
- 工具结果与工具参数在摄入前做凭据形态脱敏(Authorization、api_key、token、password、AWS/GitHub/Slack/Google/Stripe/JWT 等);脱敏是本地副本与导出的保护层,DSH 的 append-only 日志仍保留原文。
forget是逻辑遗忘:记录不再可按 ID 回读、不出现在索引/导出/T2 镜像中;正文仍保留在本地记录文件里以支持 undo,宿主日志也有原文。需要物理擦除请删除对应会话数据根。- T2 使用独立
MDCG_ROOT、独立令牌与策略,不读写正式灵枢根。 - 插件不隐藏/屏蔽工具,不改写 DSH 日志;所有归档都可通过 voucher 恢复。
开发与测试
npm test # 全量套件
npm run test:all # 逐文件汇总,失败不中断
npm run probe:host -- --asar "<DSH>/resources/app.asar"
npm run t2:smoke # 需要 dsh-memory;无环境时按设计 SKIP/退出
要求 Node.js ≥ 22.19。测试使用临时数据根,不写正式灵枢根。
许可
MIT。见 LICENSE。
Comments
Loading…
From the same category
by ranxianglei
基本稳定可用 100K tokens is enough. Universal context-compression proxy for ALL AI coding agents,10w上下文足矣
★ 3.4k
↓ 495.7k/wk
MIT
TypeScript
Oct 30, 2026
dsh plugin --profile web add billion-contextA DeepSeek coding agent harness: persistent shell, Ultra subagents, auto approval, Chrome MCP and session telemetry
★ 1k
MIT
JavaScript
by Han-1413141
DeepSeek Harness session cost meter plugin: session/daily cost, budget, history, OpenCode Go quota, official & custom-provider balance, Codex-like token heatmap, peak/off-peak pricing with pre-switch
★ 578
↓ 26k/wk
MIT
JavaScript
Oct 29, 2026
dsh plugin --profile web add dsh-cost-meterby Yuuyuko-uu
DSH 鱼的记忆:给会话一份会淡忘的长期记忆,每条都带时间
★ 394
MIT
JavaScript
Oct 29, 2026
dsh plugin --profile web add dsh-fish-memoryby MichengAI
DSH Archive Manager — 在 DeepSeek Harness 中安全查看、恢复和管理已归档会话 · Safely view, restore, and manage archived sessions in DSH
★ 268
Apache-2.0
JavaScript
Oct 29, 2026
dsh plugin --profile web add @michengai/dsh-archive-managerby Nwflower
Import 14+ external agent chat histories (Claude Code, Codex, ChatGPT, Cursor, Gemini, Reasonix, opencode, ZCode, Grok Build, OpenClaw, Pi, Hermes, Kimi CLI, DSH) into DeepSeek Harness as resumable se
★ 266
MIT
JavaScript
Oct 28, 2026
dsh plugin --profile web add dsh-chat-import