前言¶
在 DeepSeek Harness(DSH)里跑长会话时,上下文一旦被压缩,对话线索往往会变成「摘要的摘要」:决策依据、约束和未完成事项容易被抹平。常见做法是手动触发「记住这段」或依赖压缩后的短摘要,既慢又容易丢细节。
dsh-memory-observer 把记忆工作放在后台:在你正常对话的同时,按阈值把近期对话提炼成 observations(观察)和 reflections(反思),再注入 system prompt,而不是往会话事件里塞额外消息。下面介绍它是什么、怎么装、怎么用,以及使用时要注意什么。
这是什么¶
- 名称:npm 包
dsh-memory-observer,GitHub 仓库 AntonyLang/dsh-memory-observer。 - 维护者:AntonyLang。
- 分类:DSH 社区目录中的「记忆」类插件;目录页见 skillhub.cn/plugins/AntonyLang/dsh-memory-observer(独立社区站点,与 DeepSeek / 幻方无官方从属关系)。
- 版本与许可:当前 package 版本为
0.1.0,MIT 许可证;要求 DSH 引擎^0.2.1-rc.2。 - 定位:README 概括为 Background observational memory for DeepSeek Harness——长会话通过观察与反思自我浓缩,保留决策、约束与理由。实现思路参考
elpapi42/pi-observational-memory,但围绕 DSH 的扩展点:每 agent 的 system-prompt 段落、host storage、同源 settings API、以及与 compaction 的衔接。
工作原理(概要)¶
每轮 turn/end 之后,若自上次观察以来 surface tokens 达到阈值,后台会走 observer → observations → reflector → reflections 链路;活跃记忆渲染进 system prompt,条目带 12 字符 id,可通过 memory_recall 拉回对应源事件。
turn/end
│ (source tokens since the last observation reach the threshold)
▼
observer ──▶ observations ──▶ reflector ──▶ reflections
│ │
└──── active memory rendered into the system prompt
│
memory_recall (id ──▶ exact source events)
核心功能¶
以下均来自官方 README,未在资料中出现的功能不写。
- Observations:每轮结束后静默记录决策及理由、约束、偏好、已验证结果、未完成工作、精确标识符等。
- Reflections:从观察中蒸馏出跨多次压缩仍能 orient 会话的 durable facts。
- 不污染对话:不向 session 追加事件;记忆通过 system-prompt 段落进入模型,fork、resume、replay、compaction 仍可按 DSH 原有语义工作。
- 带来源的 recall:每条记忆有 12 字符 id;
memory_recall工具返回该 id 背后的精确源事件。 - 设置页:Settings →「观察式记忆 / Observational Memory」可调节奏、预算、worker 模型与行为,并查看 live status、一键 reset;覆盖项存在
observational_memory_settings存储域,立即生效。 - 快速压缩:当
dsh-compaction-basic请求摘要时,可用已准备好的 memory 渲染结果,避免再打一局长模型 summarization(需fastCompaction与 compaction 后端配合)。 - 持久化:记忆与设置在 DSH storage domain;插件 reload 或应用重启后可恢复。
Bundle 安装时会插入一行 observational-memory 并启用自带的 compaction-basic 引擎;若 profile 必须保持无 compaction,需从 cordis.patch.yml 去掉最后一条 compaction-basic,记忆层与 memory_recall 仍可工作。
安装与启用¶
推荐从 npm 安装:
dsh plugin add dsh-memory-observer
在 DSH 会话内用 bundle manager:
plugin_manager install_bundle { target: "dsh-memory-observer" }
本地目录安装(路径按你的环境替换):
plugin_manager install_bundle { target: "E:\\path\\to\\dsh-memory-observer" }
首次完成 client-half 安装后,刷新 Web 页面一次,以便 Settings 里注册观察式记忆面板。
配置与设置¶
除 UI 外,插件 row 的 config 支持如下键(默认值见 README 配置表)。改动 enabled 需 reload;passive: true 时停止 proactive 后台任务,已准备的 memory 与 recall 仍可用。
| Key | Default | 含义(摘要) |
|---|---|---|
enabled |
true |
是否挂载插件 |
passive |
false |
关闭 proactive 后台工作 |
observeAfterTokens |
8000 |
两次 observer 之间的 surface tokens |
reflectAfterTokens |
12000 |
两次 reflection 之间的 surface tokens |
injectAfterTokens |
0 |
超过该压力才注入 memory;0 表示有 memory 即注入 |
maxObservations |
80 |
活跃 observation 上限 |
maxReflections |
20 |
渲染层 reflection 上限 |
observationPoolTokens |
2400 |
注入 prompt 的 observation token 预算 |
maxSourceChars |
36000 |
单次 observer 使用的 transcript 字符(较新片段优先) |
agentMaxTokens |
2500 |
单次 memory-worker 输出上限 |
debounceMs |
1200 |
turn 结束后开始后台工作的 quiet 延迟 |
fastCompaction |
true |
压缩摘要是否来自 prepared memory |
includeSubagents |
false |
是否分别跟踪 subagent 会话 |
debugLog |
false |
每次 observer/reflector 打一行 host log |
model |
session model | 可选 worker 路由 { provider, model, reasoningEffort } |
Settings 里「Reset to row config」会清掉 UI 覆盖,回到插件 row 的 config。
典型用法与验证¶
- 正常进行长会话,等待 turn 结束且 token 达到阈值后,后台会自动观察与反思。
- 在会话中调用已注册的 per-agent 工具
memory_recall,用条目 id 查看源事件。 - 用 slash 命令自检(外观未覆盖自动化测试,以实际界面为准):
-/om-status:计数与 source-token 时钟;
-/om-view:打印当前渲染的 memory 块。 - 确认当前
system/message含## Observational memory段落。 - 桌面端可在
~/.dsh/storages/*.json中查看observational_memory与observational_memory_settings持久化数据。
适用场景与注意¶
适合:需要在 DSH 里长时间 coding / agent 任务、又不想频繁手动「记住这段」、又希望压缩后仍能保留决策与约束的开发者。
限制(README Limits):
- Worker 默认用 session 模型,除非
model覆盖;池 pruning 按最旧优先,非模型驱动。 - Fast compaction 仅在加载 compaction 后端且以
purpose: "compaction"调用 session 模型时生效。 - Memory 是派生状态;会话 log 仍是 source of truth。
- 使用 reasoning 很重的 worker 可能占满输出 cap 而吐不出 JSON,文档建议 disable 或 minimize reasoning。
安全与信任:插件以当前 DSH 进程权限运行,会读写 host storage 并可能调用你配置的 worker 模型处理 transcript。安装前请阅读仓库源码与 MIT 许可证,确认符合你的环境策略;不要安装未审阅来源的 bundle。
结尾¶
dsh-memory-observer 把观察式记忆做成 DSH 后台能力:会话边跑边 condensed,压缩时还能借 prepared memory 减负。需要细节时查 README 配置表与 Settings 页即可。