dsh-unified-agent-memory
One shared Obsidian vault for every agent: dependency-free Python core (search/promote/adjudicate/forget), vault template, dsh plugin (memory_search/show/submit/status).
Install
dsh plugin --profile web add dsh-unified-agent-memory
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
<div align="center">
<a href="docs/images/logo.jpg"><img src="docs/images/logo.jpg" alt="unified-agent-memory logo" width="320"></a>
🧠 unified-agent-memory
Unified Fleet-Wide Agent Memory System for DeepSeek Harness & Multi-Agent Runtimes
跨 Agent 统一持久化记忆系统 — 基于 Obsidian Vault 存储规范与 SQLite FTS5 本地索引的知识生命周期管理基座




[产品定位](#-产品定位与问题定义) • [核心优势](#-核心技术优势) • [存储结构](#-obsidian-vault-存储结构规范) • [部署](#-agent-全流程自动部署流程) • [快速开始](#-命令行快速体验-manual-quick-start) • [Standalone](#-没有-hermes--任何-agent-运行时怎么办-standalone--no-hermes-required)
</div>
📌 产品定位与问题定义
传统 Agent 记忆插件多数绑定于特定的 Agent 运行时(Single-Agent Scope),存储空间与会话相互隔离,缺乏统一的状态持久化与跨代理知识共享能力。
unified-agent-memory 为多 Agent 舰队提供统一的知识管理基座:dsh、Codex、Claude Code 与 Hermes 等多个独立代理共享同一 Obsidian Vault 知识仓库,配合纯 Python 标准库核心与 SQLite FTS5 本地索引,构建涵盖知识摄取 (Ingestion)、晋升 (Promotion)、冲突裁决 (Adjudication)、衰减遗忘 (Decay/Retention) 的全闭环生命周期管理系统。核心与 DSH 适配层以单个包发布,职责与写入边界见 [docs/DSH-MEMORY-ADAPTERS.md](docs/DSH-MEMORY-ADAPTERS.md)。
🚀 核心技术优势
- 统一单一真理来源 — 全 Fleet 代理共享一套 Markdown 知识库,Obsidian 直接可读、可审、可改。
- 纯 Python 标准库核心 —
core/零第三方依赖,SQLite FTS5 本地索引按 Vault 隔离,毫秒级检索,数据不出本机。 - 三路混合检索 — lexical(FTS5,含中英文 bigram)、语义向量、概念图谱;加权 RRF,可选 Token 预算裁剪。
- 完整生命周期管线 — 收件箱暂存 → Promoter 审核晋升 → 冲突裁决 → 版本化取代 → Forgetter 衰减归档,全程可逆、原子锁并发安全。
- 自动召回(dsh 内置) — 每轮对话开始前自动判断是否值得查记忆,命中就注入
<memory-data>上下文,模型不必记得调工具。 - 提示词隔离与凭据脱敏 — 检索输出强制
<memory-data>包装;凭据形状的行整行拒绝落盘,脱敏只在 digest 输入与检索输出侧;OneDrive 等同步冲突副本不入索引。 - 升级自愈 — 插件启动时自动核对 CLI shim、各 Agent 托管段与 vault 模版,只补不覆盖、改前备份、失败下次重试(见 [docs/DEPLOY.md › Upgrading](docs/DEPLOY.md#upgrading))。
⚖️ 系统特性对比 (Feature Matrix)
特性维度 · 🧠 unified-agent-memory · ❌ 单 Agent 存储插件 (dsh-mnemon 等) · ❌ 外部向量桥接器 (sgme 等)
跨 Agent 共享粒度 · 全 Fleet 共享 (dsh/Codex/Claude/Hermes) · 强绑定单一 Harness 运行时 · 依赖集中式向量数据库中转
核心组件依赖 · 纯 Python 标准库,无第三方依赖 · 依赖 Host 宿主插件环境 · 需要部署额外的数据库中间件
生命周期控制能力 · 包含 摄取/晋升/裁决/遗忘 全链路 · 通常仅具备 存储+召回 基础功能 · 仅实现向量空间映射
知识可视化与可介入性 · Obsidian 原生 Markdown,人类直接可读 · 数据库黑盒 / 私有 JSON 格式 · 向量数据结构不可直观校验
安全审计与防护机制 · 标签隔离包装 + 凭据正则自动脱敏 · 依赖上层应用手工干预 · 易在向量库中泄露明文凭据
📂 Obsidian Vault 存储结构规范
系统自动在指定目录生成标准化 Obsidian Vault 存储层级。事实总库位于 50-Agent-Context/:
50-Agent-Context/ ├── 上下文索引.md # 话题 → 文件映射表(入口) ├── 我的偏好摘要.md # L3 用户画像:偏好/风格/语言 ├── 常用路径与环境.md # L3 画像:路径/版本/环境/服务器 ├── 工程执行规则.md # L3 画像:工程规则/验证红线 ├── UI审美准则.md # L3 画像:界面与设计偏好 ├── 工具可用性检查.md # L3 画像:工具/服务状态 ├── Codex-Claude-Hermes协作规则.md # L3 画像:多 Agent 协作边界 ├── Agent提交区/ # 写入口:<agent>-<时间戳>.md(唯一写入通道) │ └── 已处理/ # 晋升后归档留痕 ├── 情境信息/ # L2:待晋升清单 / 冲突待裁决 / 已裁决 / 未归类 ├── 记忆遗忘区/ # 衰减降级(可逆,不删除) ├── 会话归档/ # L0:脱敏会话历史 └── Hermes会话自动归档/ # L0:Hermes 每日会话归档
记忆数据库(派生副本)在 ~/.unified-memory/index-<vault-hash>.db:docs / FTS5 /
memories(逐行记忆,带类型/重要性/版本/来源)/ embeddings(向量,可选)/ 图谱 / 审计。
🏗️ 知识生命周期控制流
提交 → 脱敏 → 收件箱 → 索引 → Promoter 审核 →(无冲突)晋升 canonical /(有冲突)裁决队列 → 衰减遗忘。完整流程图与逐步说明见 [docs/ARCHITECTURE.md › Lifecycle](docs/ARCHITECTURE.md#lifecycle)。
🤖 Agent 全流程自动部署流程 (Agent-Driven Automated Deployment)
部署工作完全由 AI Agent (DSH) 主导并自动执行,无需手动修改规则文件:
1. 挂载插件:dsh plugin --profile web add dsh-unified-agent-memory
2. 状态感知:新会话调用 memory_status / memory_setup——memory_setup 先返回部署计划(建/复用哪个 vault、改哪些指令文件),确认后才动手。
3. 全自动装配:DSH 按 [docs/AGENT-DEPLOY.md](docs/AGENT-DEPLOY.md) 任务书完成 vault 初始化、core 安装、各 Agent 指令文件托管段注入(幂等 + 自动备份),并以 selfcheck 收尾。部署决策矩阵(主控 Agent / 索引模式 / 晋升模式 / 接入范围)见任务书 [Step 0](docs/AGENT-DEPLOY.md#5-部署流程按顺序执行一步一验)。
非 DSH 环境部署:复制 [docs/AGENT-DEPLOY-PROMPT.md](docs/AGENT-DEPLOY-PROMPT.md) 中的 Prompt 发送给任意 AI 编码代理即可触发全自动部署。
💻 命令行快速体验 (Manual Quick Start)
# 1. 克隆仓库并安装 Core git clone https://github.com/Noelune/unified-agent-memory.git && cd unified-agent-memory pip install -e ./core # 2. 初始化 Vault 模版结构 python setup/setup.py init --vault ~/Documents/AgentMemory # 3. 提交与检索知识测试 memory submit "staging 服务器环境绑定在 127.0.0.1:8080" --agent alpha memory search "staging 服务器" # 4. 执行 Promoter 归纳与应用 python -m unified_memory.promoter --review python -m unified_memory.promoter --apply
新事实与既有事实冲突时默认由 Agent 先裁决(memory decide / memory advise),判不了才轮到人——命令与四种裁决的含义见 [docs/DEPLOY.md › Conflicts](docs/DEPLOY.md#conflicts--the-agent-decides-first-you-get-asked-only-when-it-cant)。
完整指南:[docs/DEPLOY.md](docs/DEPLOY.md) · 系统架构:[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) · 安全文档:[docs/SECURITY.md](docs/SECURITY.md)
🚫 没有 Hermes / 任何 Agent 运行时怎么办?(Standalone — no Hermes required)
核心完全不依赖 Hermes 或任何 Agent 运行时——vault、inbox、promoter、forgetter、SQLite FTS5 索引都是纯 Python 标准库,直接当命令行工具用即可:
# 一个完整的"人肉"工作流,无需任何 agent: python setup/setup.py init --vault ~/Documents/AgentMemory # 1. 初始化 vault memory submit "the build server is at 127.0.0.1:8080" --agent you # 2. 写一条事实 memory search "build server" # 3. 检索(FTS5 本地索引) python -m unified_memory.promoter --review # 4. 生成待晋升清单 python -m unified_memory.promoter --apply # 5. 晋升进 canonical python setup/setup.py cron --vault ~/Documents/AgentMemory # 6. 定时:每日晋升+每周遗忘,错过自动补跑
对接你自己的运行时(不一定是 Hermes)只需要三件事:
1. 写:调 memory submit(或 dsh 插件的 memory_submit)。
2. 定期晋升(dsh 默认主导,需要 Agent 参与,不是裸脚本):setup.py cron 一键注册每日晋升与每周遗忘的定时,dsh 插件在启动
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::26,最后更新 2026-11-06