dsh-lattice:DeepSeek Harness 的本地记忆插件

前言

在用 DeepSeek Harness(DSH)开发智能体或做长期对话时,积累下来的知识如果只是散落在历史记录里,想复用就很难:要么为了省上下文让每条记录彼此独立、不重复,结果换一种问法就找不到;要么为了找得到让同一件事有多个说法、多处出现,结果上下文被填满,还可能让模型悄悄用错信息且不会报错。

dsh-lattice 的做法是把「知识本体」与「检索入口」分开:一份知识只存一份(知识正交),检索入口可以冗余(同一个意思有多个说法可命中),知识之间的关系写出来(链接显式)。数据存在本地 SQLite,向量模型首次使用时下载,之后离线可用。

插件定位

dsh-lattice 是 DeepSeek Harness 的本地记忆插件,由维护者 topkie 开发。它的核心价值是提供一个结构化、可检索、可重建的本地知识库,适合需要长期沉淀对话与工作知识的场景。

插件以「原子」为单位组织记忆,主题由聚类派生,可随时重算。除记忆本体外的一切都能从本体重算,备份与升级都很轻。向量模型是可选依赖,没装就退回词面检索。

核心功能

本地优先

数据存在本地 SQLite,无云端依赖。第一次加载编码器时才从 Hugging Face 或 ModelScope 下载 Xenova/bge-small-zh-v1.5 模型(约 23 MB),之后离线可用。

零第三方依赖

不引入第三方运行时依赖,只依赖宿主提供的 @deepseek-ai/* peer 包。向量模型是可选依赖,安装时可用 --omit=optional 跳过。

中文友好

针对中文查询的两层检索索引,短词也能命中。

可降级

向量模型不可用时自动退回词面检索,功能缩水但不崩。降级事件写入独立的日志库(只记白名单内的字段,不含查询文本),设置页可导出 CSV 或清空。

可视化管理

设置页的「lattice 记忆库」页能直接看库里有什么、搜到某一条、不借模型把它删掉。每条会显示来源、被取回次数与是否已被取代。

写入把关

过短或过长的内容会被拦下并说明怎么办,与已有内容重复的会被提示(只提示、不阻止)。

安装

四种装法,从最省事到最灵活。四种装完都要重启宿主。

一、让助手装(最省事)

把下面整段发给一个能执行命令的助手(DSH 自己、Claude Code、Codex 都行),让它把剩下的步骤做完。

我要在这台机器上装 dsh-lattice 这个 DSH 插件。请执行并逐步报结果:

1. 找到 DSH 的 profile 目录:在 ~/.dsh/profiles/ 下找含 package.json 的那一层,名字通常是 desktop。
   找不到就停下来问我要路径,不要自己编一个。
2. 把插件装进去:没有源码目录就先
   git clone https://github.com/topkie/dsh-lattice.git
   进目录跑 pnpm install --no-frozen-lockfile 与 pnpm run build;
   然后回到 profile 目录跑 pnpm add "file:<dsh-lattice 源码目录的绝对路径>"。
3. 在 profile 目录的 package.json 里,把 "dsh-lattice" 加进 dsh.profile.bundles 数组
   (没有这个数组就按同目录其它条目的写法新建)。
4. 叫我重启宿主。重启后调用一次 lattice_ping,把返回里的 version、dataDir、
   caches.encoder.loaded 三项报给我。
5. caches.encoder.loaded 不是 true,说明模型没下成:把 attempts 数组原文贴给我,
   不要自己改编码器配置重试。

前置条件:Node 22.13 以上、git、pnpm 9 以上,且 node 在 PATH 里。
不要用管理员权限,不要动 profile 里其它插件的条目。

二、插件管理器(图形化)

在宿主的插件管理界面里搜索 dsh-lattice,点安装,重启宿主。依赖登记与插件清单由界面代做,不需要手改文件。

三、npm

在宿主 profile 目录(通常在用户目录下 .dsh/profiles/<profile 名>/)里装:

pnpm add dsh-lattice

再把 dsh-lattice 加进同一目录 package.json 里 dsh.profile.bundles 那个数组,重启宿主。要固定版本就写 pnpm add dsh-lattice@0.11.1;之后升级用 pnpm update dsh-lattice 再重启。

四、GitHub 源码

想改代码、或者要用还没发到 npm 的提交时走这条。需要 Node 22.13 以上、git 与 pnpm ≥ 9。

仓库有两个长期分支:main 只放发布,dev 是开发汇总。默认 clone 拿到 main,「还没发到 npm 的提交」在 dev 上,所以要显式切过去。

git clone https://github.com/topkie/dsh-lattice.git
cd dsh-lattice
git checkout dev
pnpm install --no-frozen-lockfile
pnpm run build

然后在 profile 目录把它登记为依赖,路径换成上一步那个目录的绝对路径:

pnpm add "file:<dsh-lattice 目录的绝对路径>"

再把 dsh-lattice 加进同一目录 package.json 里 dsh.profile.bundles 那个数组,重启宿主。

配置

在 profile 的 cordis.patch.yml 里配置以下参数:

键 默认 说明
enabled true 总开关
dataDir 空(即 <数据目录>/lattice) 数据目录;留空按 DSH_HOME/lattice 解析,未设置 DSH_HOME 时用 ~/.dsh/lattice,连用户目录都取不到时退到当前目录的 .lattice
encoderEnabled true 关掉即为纯词面模式
encoderModel Xenova/bge-small-zh-v1.5 向量模型
encoderMirror 空 第二下载源。留空等于 https://modelscope.cn(魔搭);官方源总是先试一次,填成官方地址就只试官方
encoderCacheDir 空 模型缓存目录;留空用运行时默认位置
tauJoin 0.78 并入已有主题所需的余弦阈值(可调范围 0.6~0.95)
tauLex 0.05 并入所需的词面重叠阈值(0.02~0.5)
tauLexOnly 0.1 只靠词面就判同主题的阈值(0.02~0.6)
tauNew 0.5 新建主题的余弦阈值(0.2~0.8)
viewBudget 5000 单次注入的字符预算
topN 24 注入层的候选数
mmapSize 0 SQLite mmap 窗口字节数;0 = 按机器内存与库大小自动
cacheSize 0 SQLite 页缓存字节数;0 = 自动
busyTimeout 0 写锁等待上限毫秒;0 = 自动

其中 viewBudget 与 topN 能在设置页「lattice 记忆库 → 配置」里直接改,改完即时生效;其余十三项要在 profile 的 cordis.patch.yml 里改,然后重启宿主。

典型用法

安装完成后,在设置的「lattice 记忆库」页能看到入口。可以:

  • 看库里有什么
  • 搜到某一条
  • 不借模型把它删掉
  • 改运行参数
  • 把整库导出成 JSON 或 Markdown

日常使用时,模型决定什么时候调用 lattice_write 写入,什么时候调用 lattice_recall 召回。确认装好了可以调用 lattice_ping:它返回插件版本、数据目录、编码器配置,以及五处缓存的实时占用。编码器是否真的加载成功,看 caches.encoder.loaded 是否为 true。

适用场景与注意

适合需要长期沉淀对话与工作知识、希望知识可检索、可重建、可降级的场景。

插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。记忆数据在独立的数据目录里,换装法不会丢数据。降级留痕日志与记忆数据互不影响。

参考资源

  • 插件目录页:https://www.skillhub.cn/plugins/topkie/dsh-lattice
  • GitHub 仓库:https://github.com/topkie/dsh-lattice
  • DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness
羽毛球分组比赛记分
小程序二维码

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

小夜