dsh-memory-cloud:把 DSH 会话记忆聚成可交互 3D 星云

前言

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

典型用法

  1. 按上一节完成安装并确保使用 web profile。
  2. 在 DSH 左侧栏底部点击 「记忆星云」 打开全屏视图。
  3. 或在本机浏览器直接访问(README 说明该路由带 Host 头校验,仅允许 localhost,无需 Web GUI 启动 token):
http://127.0.0.1:3080/memory-cloud/
  1. 滚轮缩放查看 LOD 0–3;需要全文时在最高缩放级别等待按需拉取;可用搜索框按标题、正文或工作区筛选。
  2. 在界面中切换「星云 / 神经元」皮肤(选择保存在浏览器 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/ 即可进入。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye