Back to home

UnKnownFish125

dsh-deepmemory

DeepSeek Harness 长期记忆系统:跨会话记忆 + 无限上下文(设计对齐 AstrBot livingmemory,作者 lxfight;AGPL-3.0)

Stars
0
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 16, 2026

Introduction

deepmemory — DeepSeek Harness 长期记忆系统

License: AGPL v3 Platform: DeepSeek Harness

为 DeepSeek Harness 构建的长期记忆系统:让 agent 拥有跨会话记忆无限上下文能力。 设计概念对齐 AstrBot livingmemory,实现为 DSH 平台独立移植。

功能特性

  • 自动记忆抽取:每轮对话结束后用便宜 LLM 抽取事实/偏好/决定/计划/事件,结构化解构为记忆条目、记忆原子、实体与关系边
  • 混合检索召回:BM25 + 向量 + 图谱三路检索 → RRF 融合 → 相关性/重要性/新鲜度三因子加权;检索缓存(TTL,命中不更新访问)
  • 静默注入:工作区状态卡 + 长期记忆 Top-K 经 systemPrompt 注入(不污染消息流)
  • 记忆图谱:实体节点 + 关系边,Obsidian 风格交互(节点拖拽 / 悬停高亮 / 滚轮缩放 / 平移),点击节点查看关联记忆
  • 生命周期管理:每日重要性衰减(访问强化、保护阈值)、原子 TTL、归档软删除、快照备份、索引重建、记忆整合(可选 LLM 摘要)
  • 原文追溯:记忆条目保留抽取原文切片 + 来源会话 id
  • WebUI:记忆管理面板(分区/域手动调整、中英双语)、实体图谱、归档管理、维护(备份/重建/整合/衰减)、配置中心(12 组参数)
  • 三种预设形态:agent preset(重启自动加载)、动态插件(临时挂载)、web bundle(HMR 热更新)

架构

┌─ 写入 ────────────────────────────────────────────┐
│ ① 廉价 LLM 自动抽取(turn-stopping 达阈值触发)    │
│ ② memory_save 模型工具(主动写入)                 │
│ ③ /memory 命令 + 记忆面板(手动)                  │
└──────────────┬────────────────────────────────────┘
               ▼
   memory-server(Python,systemd 常驻 :6230)
   SQLite + FAISS(IndexFlatL2) + BM25(jieba)
   RRF 融合 + α相关性+β重要性+γ时间衰减 加权
   近重复合并 / 每日衰减 / 归档恢复 / persona 字段
               ▼
┌─ 召回注入 ────────────────────────────────────────┐
│ agent/pre-step 静默注入 system 消息                │
│ [工作区状态卡] + [长期记忆召回 Top-K]              │
│ 三层作用域:session / workspace / global           │
└───────────────────────────────────────────────────┘

组件

目录说明
memory-server/Python 记忆后端(SQLite+FAISS+BM25,HTTP API),systemd 服务 dsh-memory-server
web-plugin/DSH web 层插件 dsh-deepmemory:同源代理路由 /mem-api/* + 对话页「记忆」视图面板
agent-preset/Agent preset「记忆增强模式」:pre-step 注入 + 自动抽取 + 工具 + /memory 命令

安装 / 升级(一键,幂等)

git clone https://github.com/UnKnownFish125/dsh-deepmemory.git && cd dsh-deepmemory
sudo bash scripts/install.sh

或下载 最新 Releasedeepmemory-vX.Y.Z.tar.gz 解压安装。install.sh 重复执行安全(幂等):

  1. memory-server:同步源码(排除运行时数据,绝不覆盖已部署的 data/)→ 写 systemd unit → 重启 → 健康检查
  2. web 插件:复制 dsh-deepmemoryprofiles/web/package.json 的 bundles 幂等注册 → client.js 自动转换为 __ModuleLoader__ 格式(无需手工)
  3. agent preset:复制 harness-memory${DSH_HOME}/.agent-presets/——用该 preset 的会话重启后自动加载记忆插件,无需 define+run 动态插件

脚本最后打印 dsh web 重启清单(不自动重启 web,安全交给管理员)。环境变量可覆盖:DSH_HOME / APP_DIR / VENV_PY

部署要点

  1. memory-server/opt/AstrBot/venv/bin/python3 server.py,端口 6230
    • 依赖:fastembed(bge-small-zh-v1.5, 512维)、faiss-cpu、jieba
    • 模型下载走镜像:HF_ENDPOINT=https://hf-mirror.com
    • systemd unit:dsh-memory-server.service
  2. web 插件:放入 profiles/web/node_modules/dsh-deepmemory/profiles/web/package.jsondsh.profile.bundles 加入 "dsh-deepmemory"
  3. agent preset:目录放至 ${DSH_HOME}/.agent-presets/harness-memory/

记忆模型(对齐 AstrBot livingmemory 策略)

  • 层级:原始消息(sessionPersistence 原生归档)→ 记忆条目(summary/key_facts/persona_summary/canonical_summary)→ 图谱(实体+关系边)→ 记忆原子(TTL/衰减/强化)
  • 双域:work(状态卡+决策链+派发)/ life(原子生命周期)
  • 检索:BM25 + 向量 + 图谱三路 → RRF → 三因子加权;检索缓存(TTL 45s,命中不更新访问)
  • 生命周期:每日重要性衰减(幂等)、访问强化参数组、保护阈值、归档软删除
  • 维护:快照备份(create/list/restore/delete)、索引重建(指纹+影子重建)、记忆整合(相似聚合 canonical_summary)、schema 迁移框架(v2:图谱索引)

HTTP API 摘要

端点说明
POST /v1/memories/add add_batch写入(近重复合并、原文保留、原子/实体/关系抽取)
POST /v1/memories/search三路 RRF 检索 + 访问强化 + 缓存
GET /v1/memories/list GET /v1/memories/<id> PUT DELETE条目管理(分区/域手动调整)
GET /v1/memories/<id>/source原文回查
GET /v1/graph图谱(节点+关系边)
POST /v1/maintenance/decay衰减(force)
POST /v1/maintenance/consolidate记忆整合
POST /v1/maintenance/rebuild索引重建
POST /v1/backups/create GET /v1/backups/list POST /v1/backups/restore DELETE /v1/backups/<name>备份管理
GET/POST /v1/config-schema /v1/config配置中心(10 组 38 项)

WebUI(dsh-deepmemory「记忆」视图)

记忆管理(分区/域/标签中文)· 实体图谱 · 归档管理 · 维护(备份/重建/整合/衰减)· 配置中心 · 中英双语切换

设计依据

核心概念的理论来源(推荐阅读顺序):

致谢与许可

设计致谢:本项目的记忆模型分层(原始消息 → 记忆条目 → 图谱 → 记忆原子)、混合检索融合(RRF + 三因子加权)、访问强化、每日衰减、记忆整合、备份迁移等概念体系,来自 AstrBot 插件 livingmemory(作者 lxfight。特此致谢原作者的开源工作与设计沉淀。

实现说明:deepmemory 是面向 DeepSeek Harness 平台的独立移植——Python 记忆后端(HTTP 服务 + SQLite + FAISS + BM25)与 JavaScript 插件(Cordis 架构)均为独立编写,非代码搬运。

许可:本项目以 AGPL-3.0 发布,与 livingmemory 相同许可证。任何基于本项目的修改、衍生与分发(含网络服务提供)须遵守 AGPL 条款:保留版权与许可声明、修改开源、向使用者提供完整源码。