前言¶
DeepSeek Harness(DSH)把持久记忆落在 $DSH_HOME/sessions 里各会话日志的已提交事件上,并没有单独的「记忆库」界面。会话一多,靠翻 session.v4.jsonl.zstd 或零散回顾很难看出 fork 血缘、共同话题和同工作区之间的关联。
dsh-memory-cloud(维护者 faruzanCN,npm 包名 dsh-memory-cloud,当前版本 1.3.2,MIT)是 DSH 社区「记忆」类插件:冷读全部会话日志,把每个会话折叠成一个记忆星云团,再按关联规则连边,用纯 Canvas 2D 自实现 3D 投影渲染;可选「神经元信号」皮肤。插件对会话与 profile 只读,不写入 DSH 状态。
下面介绍它的数据来源、能力边界、安装方式与典型打开路径。
这是什么¶
一句话:把当前 DSH 的全部会话记忆聚合成一幅可交互 3D 星云(或神经元)图,并支持缩放分级、搜索与实时记忆流。
数据路径与格式:
- 每条持久记忆对应
$DSH_HOME/sessions下某个会话日志里的一条已提交事件。 - 插件解码所有
session.v4.jsonl.zstd(concatenated zstd frames 包裹的 JSONL),提取标题、真实工作目录、消息碎片、工具集、fork 血缘、关键词,并过滤运行时上下文、技能目录、纯标点等注入文本。
运行环境:package.json 要求 Node >=22.15.0;客户端面向 DSH Web profile(@deepseek-ai/dsh-client-ui-layout / sidebar 注入)。
核心功能¶
记忆聚合与关联图¶
- 记忆聚合:zstd 分帧解码后折叠为每会话一个「星云团」;碎片数、事件数会映射到云团凝聚核、光斑、纤维密度等视觉规模。
- 关联边:TF-IDF 加权话题余弦相似度,叠加共享工具、同工作区、时间邻近、fork 血缘;边带
kind、权重与共享词;并对每节点设全局上限,抑制「万能 hub」。
两种皮肤¶
- 星云(默认):不规则絮状气体云,团间细电弧连接;电流沿线明暗渐变传递。
- 神经元:细胞体、递归分叉树突、突触终扣与弯曲轴突,共用同一套信号波与流速。
分级细节(LOD)与交互¶
缩放即钻取:放大一级多露出一层记忆;2 级以上会平滑「飞入」目标星团,双击星团可直接钻到底。
| 等级 | 徽章 | 触发缩放 | 显示内容 |
|---|---|---|---|
| 0 | 全景 | < 1.5× | 云团 + 会话标题 |
| 1 | 星团 | ≥ 1.5× | 标题 + 记忆条数/对话数/工具数 |
| 2 | 记忆摘要 | ≥ 2.8× | 聚焦最近星团,碎片摘要 + 话题关键词 |
| 3 | 记忆全文 | ≥ 5× | 按需拉取该会话完整未截断碎片 |
交互包括:拖拽/单指旋转、滚轮/双指缩放、悬停 tooltip、点击云团展开记忆、按标题/正文/工作区搜索、图例聚焦工作区;移动端做了 safe-area、触摸命中放大等适配。
实时记忆流¶
插件订阅 Host 的 session/event(提交后追加),经 SSE 把「记忆正在写入 / 正在被读取」推到页面;HUD 显示写入/读取计数与活动流,画布上有写入向外、读取向内的涟漪效果。对话开始时若会话尚未落盘,会先出现临时星云团,落盘后并入正式数据。
性能与缓存¶
服务端用 $DSH_HOME/storages/dsh-memory-cloud/cache.json 持久化磁盘元数据,已缓存的历史会话可避免重复 zstd 解压;未缓存文件走多帧流式解压与协作式时间片调度。客户端批量绘制、离屏渐变缓存;页面不可见时降低对账频率。
安装与启用¶
包已发布到 npm:https://www.npmjs.com/package/dsh-memory-cloud。
官方 README 给出的安装方式如下(任选其一):
# 方式一:DSH CLI
dsh plugin --profile web add dsh-memory-cloud
在对话中也可让 agent 执行:
plugin_manager install_bundle dsh-memory-cloud
还可以在 Settings → Plugins 里安装;安装后 bundle 会在当前 profile 全局启用。
本地开发时可安装本地目录(软链接,改动即时生效),README 示例为 Windows 路径,可按实际目录替换:
plugin_manager install_bundle D:\dsh-memory-cloud
卸载:
dsh plugin --profile web remove dsh-memory-cloud
典型用法¶
- 按上一节完成安装并确保使用 web profile。
- 在 DSH 左侧栏底部点击 「记忆星云」 打开全屏视图。
- 或在本机浏览器直接访问(README 说明该路由带 Host 头校验,仅允许 localhost,无需 Web GUI 启动 token):
http://127.0.0.1:3080/memory-cloud/
- 滚轮缩放查看 LOD 0–3;需要全文时在最高缩放级别等待按需拉取;可用搜索框按标题、正文或工作区筛选。
- 在界面中切换「星云 / 神经元」皮肤(选择保存在浏览器
localStorage,为插件侧仅有的持久化写入)。
HTTP API(摘要,完整字段见 README):
GET /memory-cloud/api/memories— 聚合摘要(每会话最多maxFragments条抽样碎片)。GET /memory-cloud/api/session/:id— 单会话完整碎片(LOD 3)。GET /memory-cloud/api/live— SSE 实时记忆活动流。
配置项¶
在 cordis.patch.yml 中可调整(默认值如下):
sessionsDir: !!js dshHomePath('sessions') # 会话日志目录
maxSessions: 400 # 最多聚合多少个会话
maxFragments: 28 # 每个会话抽样的记忆碎片上限
maxFragmentChars: 220 # 单条碎片字数上限
trustedHosts: [] # 额外允许访问插件路由的 Host
会话量大时可先调低 maxSessions 或抽样上限以减轻首次扫描耗时。
适用场景与注意¶
适合谁:长期在 DSH 里积累多会话、需要宏观查看记忆分布、fork 关系与工作区聚类,并在对话进行时观察读写活动的开发者。
权限与安全:插件以当前 DSH 进程权限读取 $DSH_HOME/sessions 并通过本地 HTTP 提供服务;安装前建议阅读仓库源码与 MIT 许可证,确认 trustedHosts 等配置是否符合你的暴露面要求。
生态说明:DSH 奉行「一切皆插件」;社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系,本文安装命令与行为均以 GitHub README 为准。
结尾¶
dsh-memory-cloud 把分散在会话日志里的记忆收成一张可旋转、可缩放、可搜索的 3D 关联图,并用 SSE 接上正在发生的读写。若你已经在用 DSH Web profile,用 CLI 或 Plugin Manager 装上包后,从侧栏「记忆星云」或 http://127.0.0.1:3080/memory-cloud/ 即可进入。