Doramagic 项目包 · 项目说明书
mind-mem 项目
生成时间:2026-05-16 01:43:31 UTC
MIND-Mem简介
MIND-Mem 是一个用于 AI 代理的结构化记忆与推理框架,它为多代理协作场景提供持久化记忆存储、检索和治理能力。该项目基于文件系统存储,采用 Markdown 格式管理记忆块,并通过 MCP(Model Context Protocol)协议对外提供服务接口。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
项目概述
MIND-Mem 是一个用于 AI 代理的结构化记忆与推理框架,它为多代理协作场景提供持久化记忆存储、检索和治理能力。该项目基于文件系统存储,采用 Markdown 格式管理记忆块,并通过 MCP(Model Context Protocol)协议对外提供服务接口。
MIND-Mem 的核心设计理念是:记忆永不直接修改,只能通过治理流程变更。这一 invariant 确保了记忆系统的完整性和可审计性。
资料来源:SPEC.md
系统架构
整体架构图
graph TD
subgraph 用户层
CLI[CLI工具<br/>mm命令]
MCP[MCP客户端]
Web[Web控制台]
API[REST API]
end
subgraph MCP服务层
MS[MCP Server<br/>mcp_server.py]
KERNEL[Kernel工具]
GOVERNANCE[治理工具]
AUDIT[审计工具]
MEMORY[内存操作工具]
end
subgraph 核心存储层
FTS[FTS5全文索引]
BLOCKS[记忆块文件<br/>.md格式]
CT[Compiled Truth<br/>编译真相页]
LEDGER[多代理事实账本]
end
CLI --> MS
MCP --> MS
Web --> API
API --> MS
MS --> FTS
MS --> BLOCKS
MS --> CT
MS --> LEDGER核心组件
| 组件名称 | 文件路径 | 功能描述 |
|---|---|---|
| MCP Server | src/mind_mem/mcp_server.py | MCP协议服务核心,处理所有MCP工具调用 |
| CLI工具 | src/mind_mem/mm_cli.py | 统一命令行接口,支持recall、context、inject等命令 |
| 记忆块解析器 | src/mind_mem/block_parser.py | 解析和管理.md格式的记忆块文件 |
| 编译真相 | src/mind_mem/compiled_truth.py | 实体真相页面的聚合和编译 |
| 质量门 | src/mind_mem/quality_gate.py | 预存储过滤器,验证记忆块质量 |
| Web控制台 | web/ | 基于Next.js的可视化界面 |
资料来源:mm_cli.py:1-20
核心功能
2.1 记忆检索与上下文管理
MIND-Mem 提供多种检索方式满足不同场景需求:
#### CLI命令接口
mm recall "<query>" # BM25语义搜索
mm context "<query>" # 生成token预算受限的片段
mm inject --agent <name> "<q>" # 为特定代理渲染片段
mm vault scan <vault_root> # 列出解析的vault块
mm status # 工作区摘要
资料来源:mm_cli.py:1-20
#### MCP资源接口
| 资源标识 | 功能 |
|---|---|
mind-mem://decisions | 活动决策列表(DECISIONS.md) |
mind-mem://tasks | 所有任务(TASKS.md) |
mind-mem://entities/{type} | 项目、人员、工具、事件实体 |
mind-mem://signals | 自动捕获的信号 |
mind-mem://contradictions | 检测到的矛盾 |
mind-mem://health | 工作区健康摘要 |
mind-mem://recall/{query} | BM25召回搜索 |
mind-mem://ledger | 共享多代理事实账本 |
2.2 编译真相系统
编译真相(Compiled Truth)是 MIND-Mem 的核心知识沉淀机制:
graph LR
subgraph 证据收集
MD1[memory/xxx.md]
MD2[memory/yyy.md]
MD3[DECISIONS.md]
end
subgraph 处理流程
SC[句子提取]
NORM[规范化]
COUNT[出现计数]
end
subgraph 真相页生成
CT[Compiled Truth Page<br/>compiled/xxx.md]
ENTRY[Evidence Entry<br/>证据条目]
end
MD1 --> SC
MD2 --> SC
MD3 --> SC
SC --> NORM
NORM --> COUNT
COUNT -->|min_mentions≥3| CT
CT --> ENTRY核心特性:
- 自动从多个 Markdown 文件中提取和聚合事实
- 支持证据条目的时间戳、来源和置信度
- 提供
recompilation重新编译功能 - 支持证据条目的
superseded标记
2.3 治理与审计
MIND-Mem 遵循"记忆永不直接修改,只通过治理变更"的原则:
#### 治理工具集
| 工具名称 | 功能 |
|---|---|
propose_update | 将新决策/任务暂存为 SIGNAL |
approve_apply | 应用暂存的提案(默认dry-run) |
rollback_proposal | 从预应用快照恢复工作区 |
scan | 完整性扫描(矛盾/漂移/待处理) |
list_contradictions | 枚举检测到的矛盾 |
memory_evolution | 获取记忆块的A-MEM元数据 |
资料来源:mcp/tools/governance.py:1-60
#### 审计工具集
| 工具名称 | 功能 |
|---|---|
verify_merkle | 验证块的Merkle包含证明 |
verify_chain | 验证SHA3-512哈希链完整性 |
list_evidence | 枚举治理证据对象 |
mind_mem_verify | 暴露独立验证CLI |
2.4 质量门控
质量门(Quality Gate)是预存储过滤器,确保进入系统的记忆块符合标准:
graph TD
INPUT[候选记忆块] --> QG{质量门}
QG --> E1{空块?}
QG --> E2{过短?}
QG --> E3{过大?}
QG --> E4{UTF-8错误?}
QG --> E5{仅停用词?}
QG --> E6{近似重复?}
QG --> E7{注入标记?}
QG --> OK[通过]
E1 -->|是| LOG1[日志记录]
E2 -->|是| LOG2[日志记录]
E3 -->|是| LOG3[日志记录]
E4 -->|是| LOG4[日志记录]
E5 -->|是| LOG5[日志记录]
E6 -->|是| LOG6[日志记录]
E7 -->|是| LOG7[日志记录]
LOG1 --> OK
LOG2 --> OK
LOG3 --> OK
LOG4 --> OK
LOG5 --> OK
LOG6 --> OK
LOG7 --> OK八条质量规则:
| 规则ID | 规则名称 | 判定条件 | 默认行为 |
|---|---|---|---|
| 1 | empty | 块内容为空或仅空白 | 接受+日志 |
| 2 | too_short | 少于32个非空白字符 | 接受+日志 |
| 3 | oversize | 超过64KB UTF-8字节 | 拒绝 |
| 4 | malformed_utf8 | 包含孤立代理符 | 拒绝 |
| 5 | stopwords_only | 所有token都是停用词 | 接受+日志 |
| 6 | near_duplicate | 与24h内块相似度≥0.97 | 接受+日志 |
| 7 | injection_marker | 匹配已知注入模式 | 拒绝 |
| 8 | ok | 无规则触发 | 接受 |
支持 strict=True 模式,所有规则均变为硬性拒绝。
资料来源:quality_gate.py:1-50
MCP工具分类
3.1 Kernel工具
提供对 .mind 内核配置文件的读写访问:
list_mind_kernels— 列出可用内核get_mind_kernel— 获取特定内核配置compiled_truth_load— 加载真相页compiled_truth_add_evidence— 添加证据compiled_truth_contradictions— 检测矛盾
资料来源:mcp/tools/kernels.py:1-40
3.2 内存操作工具
工作区生命周期和内省接口:
index_stats/reindex— FTS5索引状态和重建delete_memory_item— 原子性记忆块删除export_memory— JSONL格式导出get_block/memory_health— 块查询和健康仪表盘compact/stale_blocks— 压缩和陈旧块管理
资料来源:mcp/tools/memory_ops.py:1-60
3.3 架构思维工具
整合 arch-mind 二进制工具作为 MCP 工具:
arch_baseline— 初始化基准arch_delta— 计算delta分数arch_history— 列出历史事件arch_check_rules— 应用规则检查arch_session_start/arch_session_end— 会话管理arch_metric_explain— 指标分解
资料来源:mcp/tools/arch_mind.py:1-50
工作区结构
{workspace}/
├── DECISIONS.md # 活动决策
├── TASKS.md # 任务列表
├── SIGNALS.md # 待审查信号
├── memory/ # 记忆块存储
│ ├── *.md
│ └── ...
├── entities/
│ └── compiled/ # 编译真相页
│ └── *.md
├── .mind/ # 内核配置
│ └── *.mind
└── index.db # FTS5全文索引
Web控制台
基于 Next.js 的可视化界面,提供三种视图:
graph TD
subgraph Web控制台
SUBMIT[查询提交]
API[REST API调用]
subgraph 三面板展示
GRAPH[力导向图<br/>GraphView]
TIMELINE[时间轴<br/>TimelineView]
FACTS[事实列表<br/>FactList]
end
end
SUBMIT --> API
API --> GRAPH
API --> TIMELINE
API --> FACTS启动方式:
cd web
pnpm install
pnpm dev # → http://localhost:3000
资料来源:web/README.md:1-40
快速开始
安装
pip install -e .
CLI基本用法
# 初始化工作区
export MIND_MEM_WORKSPACE=/path/to/workspace
# 搜索记忆
mm recall "PostgreSQL决策历史"
# 生成上下文
mm context "最近的架构变更"
# 注入特定代理上下文
mm inject --agent claude "当前项目技术栈"
API使用
from mind_mem import recall
results = recall("/path/to/workspace", "query", limit=10)
v4.0 预览
MIND-Mem v4.0 正在开发中,带来以下新特性(当前默认关闭,需通过 mind-mem.json 开启):
| 功能组 | 特性 | 状态 |
|---|---|---|
| A. 认知/模型层 | 分层记忆、认知内核、惊喜权重检索 | 规划中 |
| B. 知识图谱 | 实体/概念提取、长上下文召回、LLM融合、流式检索、对话层 | 规划中 |
| C. 知识治理 | 空闲后台摄入、AI lint、矛盾状态机、自愈索引 | 规划中 |
资料来源:v4/__init__.py:1-50
总结
MIND-Mem 是一个设计严谨的 AI 记忆框架,通过以下核心机制保障系统的可靠性和可追溯性:
- 文件系统优先 — Markdown格式存储,便于版本控制和人类阅读
- 治理驱动变更 — 记忆只能通过正式提案→审批流程修改
- 多协议支持 — 同时提供CLI、MCP和REST API接口
- 质量门控 — 预存储过滤器确保数据质量
- 可审计性 — Merkle证明和哈希链验证数据完整性
资料来源:[SPEC.md](https://github.com/star-ga/mind-mem/blob/main/SPEC.md)
核心功能一览
mind-mem 是一个多智能体记忆管理系统,提供了完整的信息召回、治理、压缩和长期记忆维护能力。本页概述系统的核心功能模块,包括 MCP 工具、CLI 接口、编译事实系统和 v4.0 特性预览。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
1. 系统架构总览
mind-mem 采用分层架构设计,核心组件包括:
graph TD
subgraph "接口层"
CLI[CLI 命令行工具<br/>mm]
MCP[MCP 服务器<br/>Model Context Protocol]
REST[REST API<br/>v3.2.0+]
end
subgraph "功能域"
RECALL[召回 Recall]
GOV[治理 Governance]
CONSOL[记忆整合 Consolidation]
MEMOPS[记忆操作 Memory Ops]
end
subgraph "核心引擎"
FTS[FTS5 全文索引]
BLOCK[Block Parser]
COMPILED[Compiled Truth]
COGNITIVE[认知遗忘 Cognitive Forget]
end
subgraph "存储层"
WORKSPACE[Workspace 目录]
MIND[MIND 内核配置]
DB[(SQLite FTS5)]
end
CLI --> RECALL
MCP --> RECALL
MCP --> GOV
MCP --> CONSOL
MCP --> MEMOPS
RECALL --> FTS
GOV --> BLOCK
CONSOL --> COGNITIVE
FTS --> DB
BLOCK --> WORKSPACE
COMPILED --> WORKSPACE
COGNITIVE --> WORKSPACE2. MCP 工具集
MCP(Model Context Protocol)服务器提供标准化工具接口,支持 Claude Code、Codex CLI、Cursor、Windsurf 等 AI 客户端直接调用记忆功能。工具按功能域分为以下类别:
2.1 KERNELS 域 — MIND 内核配置
负责管理和配置召回、排序和管道参数的内核文件访问。
| 工具名称 | 功能描述 | 资料来源 |
|---|---|---|
list_mind_kernels | 列出所有可用的 .mind 内核配置文件 | kernels.py:28-48 |
get_mind_kernel | 获取指定内核配置详情 | kernels.py:28-48 |
内核配置控制项包括:
- 召回权重调优(recall tuning)
- 重排序参数(reranking)
- RM3 扩展配置
- 管道级联参数
2.2 GOVERNANCE 域 — 治理与生命周期
治理域是"记忆永不直接修改"原则的核心实现,所有变更必须经过治理流程。
| 工具名称 | 功能描述 | 资料来源 |
|---|---|---|
propose_update | 提案新决策或任务,写入 SIGNALS.md 待人工审核 | governance.py:39-70 |
approve_apply | 应用已批准提案(默认干运行模式) | governance.py:39-70 |
rollback_proposal | 从预应用快照恢复工作区 | governance.py:39-70 |
scan | 完整性扫描(矛盾检测/漂移检测/待处理项) | governance.py:39-70 |
list_contradictions | 列出检测到的矛盾项 | governance.py:39-70 |
memory_evolution | 获取区块的 A-MEM 元数据 | governance.py:39-70 |
治理工作流:
graph LR
A[propose_update<br/>提案阶段] --> B{SIGNALS.md}
B --> C[人工审核]
C --> D{approve_apply<br/>批准应用}
D -->|干运行 OK| E[正式应用]
D -->|发现问题| F[rollback_proposal<br/>回滚]
E --> G[区块更新]
F --> H[快照恢复]2.3 CONSOLIDATION 域 — 记忆整合
"记忆随时间沉淀"表面,实现认知遗忘和自动整合机制。
| 工具名称 | 功能描述 | 资料来源 |
|---|---|---|
plan_consolidation | 认知遗忘周期干运行 | consolidation.py:26-55 |
propagate_staleness | 跨引用扩散陈旧度分数 | consolidation.py:26-55 |
project_profile | 会话启动情报摘要 | consolidation.py:26-55 |
dream_cycle | 自主记忆丰富(实体发现/断裂引用扫描/整合候选/自动修复) | consolidation.py:26-55 |
2.4 MEMORY_OPS 域 — 记忆操作
工作区生命周期和内省操作,处理索引、删除、导出等管理任务。
| 工具名称 | 功能描述 | 资料来源 |
|---|---|---|
index_stats | FTS5 索引状态查询 | memory_ops.py:28-60 |
reindex | 重建全文索引 | memory_ops.py:28-60 |
delete_memory_item | 原子化管理员范围区块移除 | memory_ops.py:28-60 |
export_memory | JSONL 格式完整导出 | memory_ops.py:28-60 |
get_block | 单区块查询 | memory_ops.py:28-60 |
memory_health | 健康状态仪表盘 | memory_ops.py:28-60 |
compact | 存储压缩 | memory_ops.py:28-60 |
stale_blocks | 陈旧区块标记管理 | memory_ops.py:28-60 |
2.5 BENCHMARK 域 — 基准测试
| 工具名称 | 功能描述 | 资料来源 |
|---|---|---|
governance_health_bench | 矛盾检测/审计完整性/漂移/可扩展性探测 | benchmark.py:24-50 |
category_summary | 类别蒸馏器查询 | benchmark.py:52-75 |
2.6 ARCH_MIND 域 — 架构知识管理
包装 arch-mind 二进制工具,提供架构基线、历史记录、规则检查和会话管理。
| 工具名称 | 功能描述 | 资料来源 |
|---|---|---|
arch_baseline | 初始化架构基线 | arch_mind.py:26-50 |
arch_delta | 计算当前扫描与基线的差异 | arch_mind.py:26-50 |
arch_history | 列出架构历史事件 | arch_mind.py:26-50 |
arch_check_rules | 应用规则文件检查 | arch_mind.py:26-50 |
arch_session_start | 开启会话证据节点 | arch_mind.py:26-50 |
arch_session_end | 关闭会话并写入增量证据 | arch_mind.py:26-50 |
arch_metric_explain | 单指标详细分解 | arch_mind.py:26-50 |
3. CLI 命令行工具
mm 命令提供 MCP 之外的轻量级接口,适用于非 MCP 智能体。
mm recall "<query>" # 搜索记忆
mm context "<query>" # 生成预算限制的片段
mm inject --agent <name> "<q>" # 为特定智能体渲染片段
mm vault scan <vault_root> # 列出解析的 vault 块
mm vault write <vault_root> <id> --type <t> --body <b>
mm status # 工作区摘要
mm trace --live # 实时流式 MCP 调用日志
mm trace --last 20 --tool xxx # 最近 N 次工具调用
资料来源:mm_cli.py:1-50
4. 编译事实系统
编译事实(Compiled Truth)是按实体聚合证据并重新编译权威理解的关键机制。
4.1 核心概念
graph TD
subgraph "来源"
SOURCE1[memory/决策A.md]
SOURCE2[memory/任务B.md]
SOURCE3[memory/事件C.md]
end
subgraph "候选提取"
SENTENCE[句子提取<br/>频率≥3]
CANDIDATE[事实候选]
end
subgraph "编译事实页"
ENTITY[实体标识]
EVIDENCE[证据条目列表]
CANONICAL[权威摘要]
VERSION[版本号]
LAST_COMPILED[最后编译时间]
end
SOURCE1 --> SENTENCE
SOURCE2 --> SENTENCE
SOURCE3 --> SENTENCE
SENTENCE --> CANDIDATE
CANDIDATE --> EVIDENCE
EVIDENCE --> CANONICAL
CANONICAL --> ENTITY4.2 编译事实数据结构
| 字段 | 类型 | 说明 |
|---|---|---|
entity_id | str | 实体唯一标识 |
evidence_entries | list | 证据条目列表 |
compiled_summary | str | 权威摘要文本 |
version | int | 编译版本号 |
last_compiled | datetime | 最后编译时间 |
superseded_entries | list | 已废弃条目 |
4.3 关键函数
| 函数 | 功能 | 资料来源 |
|---|---|---|
extract_compiled_truth_candidates | 从 memory/ 目录提取候选事实 | compiled_truth.py:30-80 |
supersede_evidence_entry | 标记证据条目为已废弃 | compiled_truth.py:150-175 |
recompile_truth | 从非废弃证据重新生成摘要 | compiled_truth.py:180-200 |
5. MCP 资源声明
通过 @mcp.resource 暴露只读视图,提供工作区信息的统一访问:
| 资源 URI | 内容描述 |
|---|---|
mind-mem://decisions | 活动决策(DECISIONS.md) |
mind-mem://tasks | 所有任务(TASKS.md) |
mind-mem://entities/{type} | 项目/人员/工具/事件实体 |
mind-mem://signals | 自动捕获信号 |
mind-mem://contradictions | 检测到的矛盾 |
mind-mem://health | 工作区健康摘要 |
mind-mem://recall/{query} | BM25 召回搜索 |
mind-mem://ledger | 共享多智能体事实账本 |
资料来源:resources.py:1-50
6. 模型溯源系统
model_provenance.py 定义了发布商注册表和来源发现机制:
| 发布商 | Slugs | 描述 |
|---|---|---|
| Mistral | mistralai | Mistral / Mixtral / Codestral 家族 |
| Google Gemma | google | Gemma / Gemma-2 / PaLM 家族 |
| IBM Granite | ibm-granite, ibm | Granite-3 / Granite-Code 家族 |
| OpenAI | openai | Whisper / CLIP 及开源模型 |
| Anthropic | anthropic | Anthropic 发布产物 |
| DeepSeek | deepseek-ai | DeepSeek-V2 / V3 / R1 家族 |
| Microsoft Phi | microsoft | Phi-2 / Phi-3 / Phi-4 家族 |
| TII Falcon | tiiuae | Falcon-7B / 40B / 180B 家族 |
7. v4.0 功能预览
v4.0 采用显式功能开关设计,默认关闭以保持 v3.x 行为兼容。
graph TD
subgraph "v4.0 功能门"
CONFIG[mind-mem.json<br/>v4 feature flag]
end
subgraph "A. 认知/模型层"
TIER[tier-aware block schema]
COG_KRN[Cognitive Mind Kernel API]
SURPRISE[surprise-weighted retrieval]
end
subgraph "B. 知识图谱"
KINDS[entity/concept kinds]
LONG_CTX[long-context recall]
FUSION[LLM-driven fusion]
STREAM[streaming recall]
CHAT[conversational chat]
PROMPT_SCHEMA[prompt schema]
end
subgraph "C. 治理/UX"
IDLE[idle-only ingest]
LINT[AI lint + auto-fix]
CONTRAD[contradiction state machine]
SELF_HEAL[self-healing index]
end
CONFIG --> TIER
CONFIG --> KINDS
CONFIG --> IDLE资料来源:v4/__init__.py:1-40
8. 智能体集成
mind-mem 支持多种 AI 编码客户端集成,通过 hook_installer.py 管理:
| 智能体 | 配置格式 | 说明 |
|---|---|---|
| Claude | JSON | Anthropic Claude 家族 |
| Claude Code | JSON block | 支持 MCP 配置 |
| Codex CLI | JSON block | OpenAI Codex |
| Cursor | JSON block | Cursor IDE |
| Windsurf | mcp-json-windsurf | Codeium Windsurf |
| aider | YAML block | aider CLI (paul-gauthier) |
| OpenClaw | JSON hooks | 开源 AI 助手 |
| NanoClaw | JSON hooks | 紧凑型 Claw 变体 |
| NemoClaw | JSON hooks | 记忆聚焦型 Claw |
MCP 服务器路径解析优先级:
MIND_MEM_MCP_SERVER环境变量<package_dir>/../mcp_server.py(源码检出布局)<package_dir>/mcp_server.py(打包安装布局)
9. 观察压缩
observation_compress.py 实现记忆压缩专家系统,支持多种查询类型:
| 类型 | 用途 |
|---|---|
direct | 直接事实查询 |
comparative | 对比分析 |
denial | 否定证据识别 |
temporal | 时序/因果关系 |
multi-hop | 多跳推理连接 |
资料来源:observation_compress.py:1-60
10. 总结
mind-mem 的核心功能可归纳为以下维度:
| 维度 | 核心能力 |
|---|---|
| 召回 | BM25/混合检索、FTS5 全文索引、长上下文模式 |
| 治理 | 提案-审批-回滚流程、矛盾检测、快照恢复 |
| 整合 | 认知遗忘周期、陈旧度扩散、自主丰富 |
| 操作 | 索引管理、原子删除、JSONL 导出、健康监控 |
| 事实 | 编译事实页、证据聚合、版本化管理 |
| 可观测性 | 结构化日志、MCP 调用追踪、trace 工具 |
所有核心功能均通过 MCP 工具接口或 CLI 提供,确保与主流 AI 编码客户端的广泛兼容性。
资料来源:[mm_cli.py:1-50](src/mind_mem/mm_cli.py)
系统架构
mind-mem 是一个面向多智能体协作的持久化记忆系统,旨在为 AI 编码助手提供持久化上下文记忆能力。该系统通过 Model Context Protocol (MCP) 向各类 AI 客户端暴露统一的记忆接口,支持记忆检索、上下文注入、治理决策追踪和完整性审计等核心功能。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
1. 整体架构概览
mind-mem 采用分层架构设计,核心由 MCP 服务层、记忆操作层、数据持久化层和治理审计层组成。
graph TD
subgraph 客户端层
CLAUDE["Claude Code"]
COPILOT["GitHub Copilot"]
CODY["Sourcegraph Cody"]
QODO["Qodo Gen"]
end
subgraph 接口层
MCP["MCP Server<br/>(mcp_server.py)"]
CLI["CLI 工具<br/>(mm)"]
WEB["Web 控制台<br/>(Next.js)"]
end
subgraph 服务层
RECALL["Recall API"]
GOVERNANCE["Governance Tools"]
AUDIT["Audit Tools"]
CONSOLIDATION["Consolidation Tools"]
KERNELS["Mind Kernel Tools"]
end
subgraph 数据层
FTS["FTS5 全文索引"]
HASH["Hash Chain v2"]
EVIDENCE["Evidence Chain"]
TRUTH["Compiled Truth"]
end
subgraph 持久化层
MARKDOWN["Markdown 记忆文件"]
SQLITE["SQLite 数据库"]
CORPUS["语料库目录"]
end
CLIENTS[AI 客户端] --> MCP
CLIENTS --> CLI
MCP --> RECALL
MCP --> GOVERNANCE
MCP --> AUDIT
CLI --> RECALL
RECALL --> FTS
FTS --> MARKDOWN
GOVERNANCE --> HASH
GOVERNANCE --> EVIDENCE
AUDIT --> TRUTH2. MCP 服务架构
MCP (Model Context Protocol) 是 mind-mem 的核心对外接口协议。系统将 MCP 服务分解为多个工具域,每个域对应特定的功能模块。
2.1 工具域划分
| 工具域 | 文件路径 | 核心工具 |
|---|---|---|
| governance | mcp/tools/governance.py | propose_update, approve_apply, rollback_proposal, scan |
| audit | mcp/tools/audit.py | verify_merkle, verify_chain, list_evidence, mind_mem_verify |
| kernels | mcp/tools/kernels.py | list_mind_kernels, get_mind_kernel, compiled_truth_* |
| memory_ops | mcp/tools/memory_ops.py | index_stats, reindex, delete_memory_item, export_memory |
| consolidation | mcp/tools/consolidation.py | plan_consolidation, propagate_staleness, dream_cycle |
| benchmark | mcp/tools/benchmark.py | governance_health_bench, category_summary |
| arch_mind | mcp/tools/arch_mind.py | arch_baseline, arch_delta, arch_session_* |
2.2 MCP 资源声明
MCP 服务还暴露一组只读资源,提供对工作区记忆的查询视图:
graph LR
R1["mind-mem://decisions<br/>决策记录"]
R2["mind-mem://tasks<br/>任务列表"]
R3["mind-mem://entities/{type}<br/>实体查询"]
R4["mind-mem://signals<br/>信号数据"]
R5["mind-mem://contradictions<br/>矛盾检测"]
R6["mind-mem://health<br/>健康状态"]
R7["mind-mem://recall/{query}<br/>BM25 检索"]
R8["mind-mem://ledger<br/>多智能体账本"]资料来源:src/mind_mem/mcp/resources.py:1-30
2.3 MCP 服务启动流程
# 资料来源:src/mind_mem/hook_installer.py
def mcp_server_spec(workspace: str) -> dict[str, Any]:
"""生成 MCP 服务调用规范"""
return {
"command": _sys.executable or "python3",
"args": [_mcp_server_path()],
"env": {"MIND_MEM_WORKSPACE": workspace},
}
MCP 服务器路径按以下优先级解析:
MIND_MEM_MCP_SERVER环境变量(显式覆盖)<package_dir>/../mcp_server.py(源码 checkout 布局)<package_dir>/mcp_server.py(打包安装布局)
资料来源:src/mind_mem/hook_installer.py
3. CLI 工具架构
mm 是面向非 MCP 智能体的统一 CLI 工具,提供命令行记忆操作能力。
3.1 CLI 子命令
| 子命令 | 功能描述 |
|---|---|
mm recall "<query>" | BM25 记忆检索 |
mm context "<query>" | 生成符 合 token 预算的上下文片段 |
mm inject --agent <name> "<q>" | 为指定智能体渲染记忆片段 |
mm vault scan <vault_root> | 列出解析的 vault 块(JSON 格式) |
mm vault write <vault_root> <id> | 写入 vault 记忆块 |
mm status | 工作区状态摘要 |
资料来源:src/mind_mem/mm_cli.py:1-25
3.2 工作区解析
def _workspace() -> str:
ws = os.environ.get("MIND_MEM_WORKSPACE", "").strip()
if not ws:
ws = os.getcwd()
return os.path.realpath(ws)
工作区路径通过 MIND_MEM_WORKSPACE 环境变量或当前工作目录确定。
4. 记忆检索系统
4.1 Recall API
Recall 是核心检索引擎,支持 BM25 全文搜索和上下文感知记忆提取。
graph TD
Q["查询输入"] --> PARSE["查询解析"]
PARSE --> FTS["FTS5 索引查询"]
FTS --> RERANK["重排序"]
RERANK --> PACK["预算打包<br/>(pack_to_budget)"]
PACK --> RESULT["记忆片段"]
subgraph 记忆来源
MEMORY["memory/ 目录"]
TASKS["TASKS.md"]
DECISIONS["DECISIONS.md"]
end
FTS --> MEMORY
FTS --> TASKS
FTS --> DECISIONS4.2 记忆类型映射
记忆文件使用特定前缀标识类型:
| 前缀 | 类型 | 说明 |
|---|---|---|
[[ | Obsidian 风格链接 | 跨块引用 |
TASK | 任务块 | 任务追踪 |
DECISION | 决策块 | 架构决策记录 |
SIGNAL | 信号块 | 待审批提案 |
5. 治理与决策系统
5.1 治理原则
mind-mem 遵循"记忆仅通过治理修改"的不变性原则。所有记忆变更必须经过提议、审批、生效的完整治理流程。
stateDiagram-v2
[*] --> SIGNAL: propose_update
SIGNAL --> REVIEW: 提交提案
REVIEW --> APPROVED: approve_apply
REVIEW --> REJECTED: 拒绝/超时
APPROVED --> ACTIVE: 写入记忆
ACTIVE --> SUPERSEDED: rollback_proposal
SUPERSEDED --> [*]资料来源:src/mind_mem/mcp/tools/governance.py:1-30
5.2 治理工具集
| 工具 | 功能 |
|---|---|
propose_update | 提议新决策或任务,写入 SIGNALS.md |
approve_apply | 应用已审批提案(默认 dry-run) |
rollback_proposal | 从预应用快照恢复工作区 |
scan | 完整性扫描(矛盾/漂移/待处理) |
list_contradictions | 矛盾列表查询 |
6. 编译真相系统 (Compiled Truth)
6.1 系统设计
编译真相系统通过聚合证据来维护实体的规范理解,支持基于句子级出现频率的事实提取。
# 资料来源:src/mind_mem/compiled_truth.py
def extract_common_facts(workspace: str, min_mentions: int = 3) -> list[dict]:
"""从 memory/ 目录提取高频事实"""
# 1. 遍历所有 .md 文件
# 2. 句子级分词
# 3. 统计归一化后的句子出现次数
# 4. 返回出现 >= min_mentions 次的事实
6.2 真相页结构
每个真相页维护以下数据结构:
| 字段 | 说明 |
|---|---|
entity_id | 实体唯一标识 |
evidence_entries | 证据条目列表 |
compiled_summary | 编译后的摘要 |
version | 版本号 |
last_compiled | 最后编译时间 |
6.3 证据管理
graph LR
E1["新证据"] --> VALIDATE["验证"]
VALIDATE --> ADD["添加证据"]
ADD --> COMPILE["重新编译"]
COMPILE --> SUMMARY["生成摘要"]
E2["旧证据"] --> SUPERSEDE["标记 superseded"]
SUPERSEDE --> COMPILE7. 完整性审计系统
7.1 审计层设计
审计系统通过哈希链和默克尔树保证记忆的不可篡改性。
| 组件 | 用途 |
|---|---|
| Hash Chain v2 | SHA3-512 追加式账本 |
| Evidence Chain | 结构化治理证据 |
| Merkle Tree | 块级包含证明 |
| Integrity Manifest | 发布完整性清单 |
7.2 验证工具
| 工具 | 功能 |
|---|---|
verify_merkle | 验证块的默克尔包含证明 |
verify_chain | 验证哈希链和证据链完整性 |
list_evidence | 枚举治理证据对象 |
mind_mem_verify | 独立验证 CLI |
7.3 验证退出码
| 退出码 | 含义 |
|---|---|
| 0 | 所有检查通过 |
| 1 | 通用失败(路径缺失) |
| 2 | 哈希链完整性违规 |
| 3 | 规范哈希绑定漂移 |
| 4 | 证据链完整性违规 |
| 5 | 默克尔根不匹配 |
| 6 | 链头/快照锚点不匹配 |
资料来源:src/mind_mem/verify_cli.py:1-45
8. 智能体集成系统
8.1 支持的智能体
| 智能体 | 配置格式 | 配置路径 | 说明 |
|---|---|---|---|
| claude | JSON | ~/.claude/settings.json | Anthropic Claude Code |
| copilot | Text Block | .github/copilot-instructions.md | GitHub Copilot |
| cody | JSON | .cody/config.json | Sourcegraph Cody |
| qodo | Text Block | .codium/ai-rules.md | Qodo Gen |
资料来源:src/mind_mem/hook_installer.py
8.2 集成机制
graph TD
INSTALL["hook_installer"] --> DETECT["检测智能体"]
DETECT --> SPEC["生成 AgentSpec"]
SPEC --> WRITE["写入配置文件"]
WRITE --> PREPEND["注入记忆锚点"]
PREPEND --> QUERY["mm inject --agent <name>"]
QUERY --> CONTEXT["返回记忆上下文"]8.3 智能体规范定义
@dataclass(frozen=True)
class AgentSpec:
name: str # 智能体键名
description: str # 人类可读描述
config_fmt: str # 配置格式 (json-claude/path-toml/text-block)
path_tmpl: str # 配置文件路径模板
content_tmpl: str # 注入内容模板
always_offer: bool # 是否自动推荐
detect_paths: tuple # 检测路径
detect_binaries: tuple # 检测二进制
9. 记忆操作工具
9.1 索引操作
| 工具 | 功能 |
|---|---|
index_stats | 查询 FTS5 索引状态 |
reindex | 重建全文索引 |
9.2 生命周期管理
| 工具 | 功能 |
|---|---|
delete_memory_item | 原子性记忆块删除(带追加式恢复日志) |
get_block | 块内容查询 |
memory_health | 健康状态仪表盘 |
compact | 存储压缩 |
stale_blocks | 陈旧块标记管理 |
9.3 导出功能
def export_memory(
max_items: int = 10000,
include_metadata: bool = True,
max_size_mb: int = 50
) -> str:
"""导出所有记忆块为 JSONL 格式"""
资料来源:src/mind_mem/mcp/tools/memory_ops.py:1-40
10. 记忆整合系统
10.1 认知遗忘周期
graph TD
START["开始整合"] --> CONFIG["ConsolidationConfig"]
CONFIG --> SCORE["BlockCognition 评分"]
SCORE --> THRESHOLD{"重要度阈值?"}
THRESHOLD -->|高| KEEP["保留"]
THRESHOLD -->|低| STALE["标记陈旧"]
STALE --> AGE{"超过归档天数?"}
AGE -->|是| ARCHIVE["归档"]
AGE -->|否| GRACE["宽限期"]
KEEP --> COMPLETE["完成"]
ARCHIVE --> COMPLETE
GRACE --> COMPLETE10.2 整合工具
| 工具 | 功能 |
|---|---|
plan_consolidation | 认知遗忘周期预演 |
propagate_staleness | 陈旧度跨引用扩散 |
project_profile | 会话启动情报摘要 |
dream_cycle | 自主记忆丰富化 |
资料来源:src/mind_mem/mcp/tools/consolidation.py:1-30
11. v4.0 架构演进
v4.0 作为架构演进版本,默认关闭,通过 feature flag 启用。
11.1 功能组映射
| 组别 | 功能 | 模块 |
|---|---|---|
| A | 认知层/模型层 | tier_memory, cognitive_kernel, surprise_retrieval |
| B | 知识图谱 | block_kinds, long_context_recall, fusion, streaming_recall, chat, prompt_schema |
| C | 知识图谱治理 | idle_ingest, lint, contradiction_states, self_heal |
| D | 基准测试 | arch_baseline, arch_delta |
| E | 高级记忆 | block_cognition, consolidation |
| F | 多租户 | tenant_audit, tenant_kms |
资料来源:src/mind_mem/v4/__init__.py:1-50
11.2 特征门控
class FeatureDisabledError(Exception):
"""v4 功能未启用时抛出"""
pass
所有 v4.0 功能均需在 mind-mem.json 配置文件的 v4 键下显式启用。
12. 完整性保护机制
12.1 关键模块保护
系统维护一份关键模块清单,用于完整性验证:
| 关键模块 | 说明 |
|---|---|
| recall.py | 检索核心 |
| recall_vector.py | 向量检索 |
| apply_engine.py | 治理应用引擎 |
| audit_chain.py | 审计链 |
| encryption.py | 加密模块 |
| graph_recall.py | 图检索 |
| consensus_vote.py | 共识投票 |
| tenant_audit.py | 租户审计 |
资料来源:src/mind_mem/protection.py:30-50
12.2 完整性报告
@dataclass(frozen=True)
class IntegrityReport:
ok: bool
module: str
expected_hash: str
actual_hash: str
13. Web 控制台架构
mind-mem 提供基于 Next.js 的 Web 控制台,提供可视化记忆查询界面。
graph LR
API["REST API<br/>/v1/recall<br/>/v1/health"] --> PAGE["app/page.tsx"]
PAGE --> GRAPH["GraphView<br/>(d3-force)"]
PAGE --> TIMELINE["TimelineView"]
PAGE --> FACTS["FactList"]
GRAPH --> NODES["节点: 按状态着色"]
GRAPH --> EDGES["边: 按谓词着色"]组件说明:
| 组件 | 功能 |
|---|---|
| GraphView.tsx | 力导向图可视化 |
| TimelineView.tsx | 时间线视图 |
| FactList.tsx | 提取的事实列表 |
| lib/api.ts | 类型化 API 客户端 |
资料来源:web/README.md
14. 依赖关系总览
graph BT
subgraph 核心依赖
BLOCK["block_parser"]
FTS["sqlite_index<br/>(FTS5)"]
COGNITIVE["cognitive_forget"]
end
subgraph MCP 工具
GOVERNANCE["governance.py"]
AUDIT["audit.py"]
MEMORY_OPS["memory_ops.py"]
CONSOLIDATION["consolidation.py"]
end
subgraph 基础设施
OBSERVE["observability"]
CONFIG["config"]
WORKSPACE["workspace"]
end
MCP["mcp_server.py"] --> GOVERNANCE
MCP --> AUDIT
MCP --> MEMORY_OPS
MCP --> CONSOLIDATION
GOVERNANCE --> BLOCK
GOVERNANCE --> FTS
AUDIT --> BLOCK
MEMORY_OPS --> FTS
CONSOLIDATION --> COGNITIVE
BLOCK --> FTS
COGNITIVE --> FTS15. 总结
mind-mem 的系统架构围绕以下核心设计原则构建:
- 协议分离:通过 MCP 协议将核心功能暴露给 AI 客户端,CLI 作为补充
- 治理优先:所有记忆修改必须经过治理流程,保证可追溯性
- 完整性保证:多层审计机制(哈希链、默克尔树、证据链)确保记忆不可篡改
- 智能体无关:通过可扩展的 hook 系统支持多种 AI 编码助手
- 演进能力:v4.0 架构通过 feature flag 逐步引入新功能,不影响现有系统
资料来源:[src/mind_mem/mcp/resources.py:1-30]()
数据流与处理管道
数据流与处理管道是 mind-mem 系统的核心组成部分,负责管理从数据捕获、存储、处理到检索的完整生命周期。该管道遵循"内存永不直接修改,只能通过治理机制变更"的核心不变量,确保所有数据变更都经过审批和追踪流程。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
数据流与处理管道是 mind-mem 系统的核心组成部分,负责管理从数据捕获、存储、处理到检索的完整生命周期。该管道遵循"内存永不直接修改,只能通过治理机制变更"的核心不变量,确保所有数据变更都经过审批和追踪流程。
整体架构
graph TD
subgraph 数据捕获层
CAPT[数据捕获]
SIG[信号生成]
end
subgraph 存储抽象层
BS[BlockStore 抽象]
MB[MarkdownBlockStore]
PG[PostgresBlockStore]
ES[EncryptedBlockStore]
end
subgraph 处理引擎层
APPLY[ApplyEngine]
SNAP[快照管理]
DIFF[差异计算]
end
subgraph 治理层
PROP[提案机制]
APPROVE[审批应用]
ROLLBACK[回滚机制]
end
subgraph 检索层
RECALL[Recall 检索]
BM25[BM25 检索]
VECTOR[向量检索]
HYBRID[混合检索]
end
CAPT --> BS
SIG --> BS
BS --> APPLY
APPLY --> SNAP
APPLY --> DIFF
PROP --> APPROVE
APPROVE --> ROLLBACK
RECALL --> BM25
RECALL --> VECTOR
RECALL --> HYBRID核心组件
BlockStore 抽象层
BlockStore 是数据持久化的核心抽象,支持多种后端实现:
| 组件 | 类名 | 用途 | 配置键 |
|---|---|---|---|
| 默认后端 | MarkdownBlockStore | Markdown 文件存储 | block_store.backend: markdown |
| Postgres 后端 | PostgresBlockStore | 关系型数据库存储 | block_store.backend: postgres |
| 加密包装器 | EncryptedBlockStore | 加密数据存储 | mind-mem.json passphrase 设置 |
资料来源:src/mind_mem/apply_engine.py:1-50
ApplyEngine 处理引擎
ApplyEngine 负责数据变更的实际执行,提供快照、回滚和差异对比功能:
def _store_for(ws) -> BlockStore:
"""根据配置获取对应的 BlockStore 实现"""
def create_snapshot(ws, ts, files_touched=None) -> str:
"""创建应用前快照,返回快照目录路径"""
def restore_snapshot(ws, snap_dir) -> None:
"""从快照目录恢复工作空间"""
def snapshot_diff(ws, snap_dir) -> list[str]:
"""返回当前工作空间与快照的差异文件列表"""
资料来源:src/mind_mem/apply_engine.py:30-55
数据流阶段
阶段一:数据捕获
数据捕获层负责收集外部信号和用户输入,生成标准化的 Block 结构:
graph LR
A[外部输入] --> B[Capture 模块]
B --> C[Block 结构化]
C --> D[信号写入]
D --> E[SIGNALS.md]关键流程:
- 接收外部数据源(CLI、API、MCP 工具)
- 解析为标准 Block 格式
- 写入 SIGNALS.md 待审批队列
阶段二:存储抽象
存储层根据配置选择合适的持久化后端:
graph TD
A[写入请求] --> B{配置检查}
B -->|passphrase 设置| C[EncryptedBlockStore]
B -->|postgres 配置| D[PostgresBlockStore]
B -->|默认| E[MarkdownBlockStore]
C --> F[加密后写入]
D --> G[SQL 写入]
E --> H[Markdown 文件写入]资料来源:src/mind_mem/block_store.py:1-80
阶段三:检索与召回
Recall 模块提供多种检索策略:
| 检索模式 | 参数 | 说明 |
|---|---|---|
| BM25 | strategy: bm25 | 基于词频的稀疏检索 |
| 向量检索 | strategy: vector | 密集向量相似度检索 |
| 混合模式 | strategy: hybrid | BM25 + 向量加权融合 |
| 自动模式 | strategy: auto | 根据查询特征自动选择 |
资料来源:src/mind_mem/recall.py:1-60
治理与变更流程
提案-审批模式
所有数据变更必须通过治理机制:
sequenceDiagram
participant U as 用户
participant P as 提案模块
participant A as ApplyEngine
participant S as 快照
participant R as 检索系统
U->>P: propose_update(block_type, statement)
P->>P: 生成 SIGNAL
P->>S: create_snapshot(ws, timestamp)
Note over S: 创建预应用快照
U->>A: approve_apply(signal_id)
A->>S: snapshot_diff()
A->>R: 更新索引
Note over A: 应用变更回滚机制
当变更需要撤销时,系统通过快照恢复:
# 回滚流程
snap_dir = create_snapshot(ws, ts) # 变更前创建快照
# ... 执行变更 ...
restore_snapshot(ws, snap_dir) # 需要回滚时恢复
资料来源:src/mind_mem/apply_engine.py:40-50
编译真相机制
Compiled Truth 模块负责证据聚合和事实编译:
graph TD
A[原始证据] --> B[EvidenceEntry 解析]
B --> C[证据池累积]
C --> D[检测矛盾]
D -->|无矛盾| E[recompile_truth]
D -->|存在矛盾| F[矛盾标记]
E --> G[CompiledTruthPage]关键函数:
add_evidence(): 向真相页添加新证据recompile_truth(): 重新编译真相摘要detect_contradictions(): 检测证据矛盾
资料来源:src/mind_mem/compiled_truth.py:1-100
MCP 工具集成
MCP 工具层提供外部系统交互接口:
| 工具类别 | 工具名称 | 功能 |
|---|---|---|
| 内核管理 | list_mind_kernels | 列出可用内核配置 |
| 内核管理 | get_mind_kernel | 获取指定内核详情 |
| 真相管理 | compiled_truth_add_evidence | 添加证据到真相页 |
| 真相管理 | compiled_truth_contradictions | 检测真相矛盾 |
| 治理工具 | propose_update | 提交变更提案 |
| 治理工具 | approve_apply | 审批并应用变更 |
| 治理工具 | rollback_proposal | 回滚提案 |
资料来源:src/mind_mem/mcp/tools/kernels.py:1-50
配置参数
BlockStore 配置
在 mind-mem.json 中的配置结构:
{
"block_store": {
"backend": "markdown|postgres|encrypted",
"passphrase": "<加密密钥>",
"connection": "<Postgres 连接字符串>"
}
}
检索配置
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
strategy | string | auto | 检索策略选择 |
limit | int | 20 | 结果数量限制 |
active_only | bool | false | 仅返回活跃块 |
错误处理与容错
系统采用分层错误处理策略:
- BlockStore 层:异常时回退到 MarkdownBlockStore 默认实现
- ApplyEngine 层:快照操作失败时记录日志但不阻断主流程
- Recall 层:单一检索失败时尝试降级到其他策略
try:
return get_block_store(ws)
except Exception:
return MarkdownBlockStore(ws) # 降级保底
资料来源:src/mind_mem/apply_engine.py:40-45
性能考量
- 快照开销:create_snapshot 在变更频繁场景下可能产生 IO 压力
- 检索延迟:混合检索模式需要并行执行 BM25 和向量检索
- 存储选择:Postgres 后端适合高并发写入场景,Markdown 适合简单部署
资料来源:[src/mind_mem/apply_engine.py:1-50](https://github.com/star-ga/mind-mem/blob/main/src/mind_mem/apply_engine.py)
存储后端
mind-mem 采用插件化的存储后端架构,支持多种持久化方案以适应不同的部署场景。所有存储操作通过统一的 BlockStore 接口抽象,确保上层逻辑与具体存储技术解耦。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
架构概述
存储后端系统采用工厂模式(Factory Pattern)进行后端实例化。get_block_store() 工厂函数根据工作区配置动态选择合适的存储实现。
graph TD
A[应用层代码] --> B[get_block_store 工厂函数]
B --> C{mind-mem.json 配置}
C -->|backend: markdown| D[MarkdownBlockStore]
C -->|backend: encrypted| E[EncryptedBlockStore 包装器]
C -->|backend: postgres| F[PostgresBlockStore]
E --> D
F --> G[(PostgreSQL 数据库)]
D --> H[/workspace/memory/\*.md]资料来源:src/mind_mem/storage/__init__.py:53-70
支持的后端类型
| 后端类型 | 配置值 | 说明 | 依赖 |
|---|---|---|---|
| Markdown | markdown | 默认后端,将块存储为 Markdown 文件 | 无 |
| 加密存储 | encrypted | 在 Markdown 后端基础上添加加密层 | MIND_MEM_ENCRYPTION_PASSPHRASE 环境变量 |
| PostgreSQL | postgres | 企业级关系数据库存储 | psycopg[binary]、dsn 配置 |
资料来源:src/mind_mem/storage/__init__.py:55-68
工厂函数 API
get_block_store(workspace, config=None)
storage/__init__.py 中定义的工厂函数,负责根据配置实例化正确的后端。
函数签名:
def get_block_store(workspace: str, config: dict[str, Any] | None = None) -> BlockStore:
参数说明:
| 参数 | 类型 | 必填 | 说明 | |
|---|---|---|---|---|
workspace | str | 是 | mind-mem 工作区根目录路径 | |
config | dict \ | None | 否 | 完整配置字典,为空时自动从 mind-mem.json 加载 |
返回值:
返回 BlockStore 实例(MarkdownBlockStore、EncryptedBlockStore 或 PostgresBlockStore)。
异常处理:
| 异常类型 | 触发条件 |
|---|---|
ValueError | backend 值无法识别 |
ValueError | 使用 encrypted 后端但未设置环境变量 |
ValueError | 使用 postgres 后端但配置中缺少 dsn |
ImportError | 使用 postgres 后端但未安装 psycopg |
资料来源:src/mind_mem/storage/__init__.py:30-50
配置读取逻辑
工厂函数首先尝试从工作区目录加载 mind-mem.json 配置文件:
def _load_workspace_config(workspace: str) -> dict[str, Any]:
config_path = os.path.join(workspace, "mind-mem.json")
if os.path.isfile(config_path):
with open(config_path, encoding="utf-8") as f:
return json.load(f)
return {}
如果配置文件不存在或解析失败,返回空字典,工厂函数将使用默认值 markdown。
资料来源:src/mind_mem/storage/__init__.py:16-28
核心接口:BlockStore
BlockStore 是所有存储后端的基类,定义了统一的存储操作接口。关键方法包括快照管理,这是实现"内存永不直接修改"治理不变量的基础。
快照操作
快照机制是 apply_engine 实现回滚功能的核心。当需要修改工作区内容时,系统首先创建快照,然后对快照进行操作,验证通过后才正式应用。
| 方法 | 功能 |
|---|---|
snapshot(snap_dir, files_touched) | 创建预应用快照 |
restore(snap_dir) | 从快照目录恢复工作区 |
diff(snap_dir) | 比较当前工作区与快照的差异 |
sequenceDiagram
participant AE as ApplyEngine
participant BS as BlockStore
participant WS as Workspace
participant SNAP as Snapshot Dir
AE->>BS: create_snapshot(ws, ts)
BS->>WS: 读取当前文件
WS-->>BS: 文件内容
BS->>SNAP: 写入快照目录
Note over BS: Markdown: 复制文件树<br/>Postgres: SQL 转储
BS-->>AE: snap_dir 路径资料来源:src/mind_mem/apply_engine.py:26-38
Markdown 后端
MarkdownBlockStore 是默认存储后端,将每个块存储为独立的 Markdown 文件。
存储结构
workspace/
├── memory/
│ ├── decisions/
│ │ └── D-20260213-001.md
│ ├── tasks/
│ │ └── T-20260213-001.md
│ └── signals/
│ └── S-20260213-001.md
└── intelligence/
└── applied/
└── 20260213-120000/ # 快照目录
块格式规范
每个 Markdown 块遵循固定格式,包含标识头和键值对字段:
[ID]
Statement: 决策内容描述
Date: 2026-02-13
Status: active
Confidence: high
Tags: architecture, backend
[ID]
CANONICAL_FIELD_ORDER 定义了字段的标准顺序,确保块序列化的一致性:
_CANONICAL_FIELD_ORDER: tuple[str, ...] = (
"Statement", "Date", "Status", "Priority", "Risk",
"Type", "Subject", "Object", "Tags", "Rationale",
"Evidence", "Source", "Confidence", "ContentHash",
"Excerpt", "Action",
)
资料来源:src/mind_mem/block_store.py:75-90
PostgreSQL 后端
PostgresBlockStore 为企业级部署提供关系数据库存储能力。适用于需要事务支持、并发访问和高可用性的生产环境。
配置示例
{
"block_store": {
"backend": "postgres",
"dsn": "postgresql://user:password@localhost:5432/mindmem"
}
}
与 Markdown 后端的差异
| 特性 | Markdown | PostgreSQL |
|---|---|---|
| 快照方式 | 文件复制 | SQL 转储 |
| 并发支持 | 文件锁 | 数据库事务 |
| 查询能力 | 全文搜索 | SQL 查询 |
| 部署复杂度 | 简单 | 需要数据库服务 |
加密存储包装器
EncryptedBlockStore 是一个包装器后端,它在底层 Markdown 后端基础上添加加密功能。当设置了 MIND_MEM_ENCRYPTION_PASSPHRASE 环境变量时,存储模块会自动返回加密包装后的实例。
资料来源:src/mind_mem/storage/__init__.py:65-67
在 Apply Engine 中的应用
apply_engine 模块通过 _store_for(ws) 函数获取当前配置的 BlockStore 实例,所有存储操作都通过该实例进行路由:
def _store_for(ws):
try:
from .storage import get_block_store
return get_block_store(ws)
except Exception:
return MarkdownBlockStore(ws) # 容错降级
这种设计确保了 apply_engine 的韧性:在首次运行或配置错误的工作区,系统会优雅降级到默认的 Markdown 后端。
资料来源:src/mind_mem/apply_engine.py:20-26
删除日志
当块被删除时,后端会将删除收据写入 memory/deleted_blocks.jsonl 文件:
{"block_id": "D-20260213-001", "deleted_at": "2026-02-13T12:00:00+00:00", "content": "..."}
这一机制与 MCP 工具 delete_memory_item 保持一致,两条删除路径最终汇聚到同一恢复日志。
资料来源:src/mind_mem/block_store.py:45-60
配置建议
| 场景 | 推荐后端 | 原因 |
|---|---|---|
| 本地开发 / 个人使用 | Markdown | 简单、无依赖、易于调试 |
| 小团队协作 | Markdown + Git | 利用版本控制进行协作 |
| 企业级生产环境 | PostgreSQL | 事务支持、并发控制、备份恢复 |
| 安全敏感数据 | Encrypted | 静态数据加密保护 |
资料来源:[src/mind_mem/storage/__init__.py:53-70]()
检索管道
检索管道(Retrieval Pipeline)是 mind-mem 系统中的核心组件,负责从工作空间内存中定位和召回与用户查询相关的记忆块。该管道采用多阶段架构,结合了稀疏检索(BM25)、密集检索(向量检索)和重排序(Re-ranking)等多种技术,以实现高质量的检索结果。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
检索管道(Retrieval Pipeline)是 mind-mem 系统中的核心组件,负责从工作空间内存中定位和召回与用户查询相关的记忆块。该管道采用多阶段架构,结合了稀疏检索(BM25)、密集检索(向量检索)和重排序(Re-ranking)等多种技术,以实现高质量的检索结果。
检索管道的主要职责包括:
- 解析用户查询并执行多路召回
- 对多条召回路径的结果进行融合排序
- 应用质量过滤和后处理逻辑
- 返回符合置信度和活跃状态要求的结果集
架构概览
检索管道采用三层架构设计,各层职责分明:
graph TD
A[用户查询] --> B[查询扩展层]
B --> C[多路召回层]
C --> D[结果融合层]
D --> E[重排序层]
E --> F[最终结果]
C --> C1[BM25 稀疏检索]
C --> C2[向量检索]
C --> C3[RM3 扩展检索]
D --> D1[RRF 融合]
D --> D2[加权融合]查询扩展层
查询扩展机制
查询扩展(Query Expansion)是检索管道的入口阶段,负责增强原始查询的语义表达能力。通过分析查询意图,系统可以引入相关术语和同义词,从而扩大检索范围。
查询扩展支持多种策略:
- RM3 扩展:基于伪相关反馈的扩展方法,从初始检索结果中提取高权重词项
- 同义词扩展:利用预定义的同义词库进行术语扩展
- 概念扩展:识别查询中的实体概念并引入相关概念
配置参数
查询扩展的行为可以通过 .mind 内核配置文件进行调优,主要参数包括:
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
rm3_expansion_terms | int | 10 | RM3 扩展的词项数量 |
rm3_collection_weight | float | 0.9 | 文档权重系数 |
expansion_enabled | bool | true | 是否启用扩展 |
多路召回层
多路召回是检索管道的核心阶段,通过并行执行多种检索算法来最大化召回率。
BM25 稀疏检索
BM25(Best Matching 25)是一种经典的稀疏检索算法,基于词项频率和文档频率的统计模型计算相关性评分。
BM25 的核心公式:
Score(D, Q) = Σ IDF(qi) × (f(qi, D) × (k1 + 1)) / (f(qi, D) + k1 × (1 - b + b × |D|/avgdl))
其中:
f(qi, D):词项 qi 在文档 D 中的频率|D|:文档长度avgdl:平均文档长度k1,b:可调参数(通常 k1=1.2, b=0.75)
BM25 内核配置文件(mind/bm25.mind)允许调整以下参数:
| 参数 | 说明 | 典型值 |
|---|---|---|
k1 | 词频饱和参数 | 1.2 |
b | 文档长度归一化参数 | 0.75 |
avgdl | 平均文档长度基准 | - |
向量检索
向量检索(Vector Recall)使用密集嵌入表示进行语义级别的相似度匹配。系统将记忆块和查询都编码为高维向量,然后通过最近邻搜索找到相关结果。
向量检索的流程:
graph LR
A[记忆块文本] --> B[Embedding 模型]
B --> C[向量索引]
C --> D[查询向量]
D --> E[向量相似度计算]
E --> F[Top-K 结果]向量检索的主要配置参数:
| 参数 | 类型 | 说明 |
|---|---|---|
model_name | str | 嵌入模型名称 |
dimension | int | 向量维度 |
similarity_metric | str | 相似度度量(cosine/dot/euclidean) |
top_k | int | 返回的最近邻数量 |
RM3 扩展检索
RM3 是一种伪相关反馈方法,通过以下步骤扩展查询:
- 执行初始检索获取 Top-N 结果
- 从结果中提取高权重词项和词组
- 将扩展词项加入原始查询
- 执行二次检索
RM3 扩展检索的实现位于 query_expansion.py,其核心逻辑包括:
- 词项权重计算:基于文档内频率和逆文档频率
- 词组提取:识别连续的高频词序列
- 权重融合:将扩展词项与原始查询词项按权重合并
结果融合层
多路召回产生多个候选结果集,融合层负责将这些结果合并为一个统一的排序列表。
倒数排序融合(RRF)
倒数排序融合(Reciprocal Rank Fusion)是一种简单而有效的多路召回结果融合算法。RRF 不依赖各路召回的绝对分数,而是利用相对排名信息进行融合。
RRF 公式:
RRF_score(d) = Σ 1 / (k + rank(d, Ri))
其中:
d:目标文档Ri:第 i 路召回的排名列表k:常量平滑因子(通常 k=60)rank(d, Ri):文档 d 在第 i 路召回中的排名
RRF 内核配置文件(mind/rrf.mind)定义融合参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
k | 60 | RRF 平滑因子 |
enabled | true | 是否启用 RRF |
加权融合
除了 RRF,系统还支持基于分数的加权融合方法:
fusion_score(d) = Σ wi × norm(scorei(d))
其中 wi 是各路召回的可配置权重,norm() 是归一化函数。
重排序层
重排序(Re-ranking)阶段对融合后的候选结果进行精细化排序,以提高最终结果的相关性。
重排序策略
重排序器(rerank_ensemble.py)支持多种重排序策略:
- Cross-Encoder 重排序:使用更强大的模型对 Top-K 候选进行精确评分
- Learning-to-Rank:基于特征的训练模型进行排序
- 级联重排序:多轮渐进式重排序
排序特征
重排序阶段考虑的特征包括:
| 特征类别 | 具体特征 |
|---|---|
| 相关性特征 | BM25 分数、向量相似度、语义匹配度 |
| 质量特征 | 块完整性、置信度评分、来源权重 |
| 时效性特征 | 创建时间、最后更新时间、活跃状态 |
| 关联性特征 | 引用次数、依赖关系、实体匹配 |
混合检索流程
完整的混合检索流程如下:
sequenceDiagram
participant 用户
participant 管道
participant BM25
participant 向量引擎
participant 融合器
participant 重排序器
participant 结果
用户->>管道: 提交查询
管道->>BM25: 发起 BM25 检索
管道->>向量引擎: 发起向量检索
管道->>BM25: 获取 Top-K 结果
管道->>向量引擎: 获取 Top-K 结果
BM25-->>管道: BM25 结果集
向量引擎-->>管道: 向量结果集
管道->>融合器: 合并多路结果
融合器-->>管道: 融合排序列表
管道->>重排序器: 精细化重排序
重排序器-->>管道: 最终排序结果
管道-->>用户: 返回 Top-N 结果集成接口
Python API
检索管道通过 recall 模块提供核心检索接口:
from mind_mem.recall import recall
results = recall(
workspace,
query,
limit=10,
active_only=True,
format="blocks"
)
MCP 工具接口
在 MCP 服务器中,检索管道通过以下工具暴露:
| 工具名称 | 功能描述 |
|---|---|
recall | 基础检索接口 |
recall_with_persona | 带角色投影的检索 |
list_mind_kernels | 列出可用的检索内核配置 |
get_mind_kernel | 获取特定内核配置详情 |
CLI 接口
命令行工具 mm 提供检索访问:
mm recall "查询内容" --limit 10 --active-only
mm context "查询内容" --budget 4096
配置管理
内核配置文件
检索管道的各项参数通过 .mind 内核配置文件进行管理:
mind/
├── bm25.mind # BM25 检索参数
├── rrf.mind # RRF 融合参数
└── rerank.mind # 重排序参数
运行时配置
检索管道支持运行时配置覆盖:
recall(
workspace,
query,
backend="auto", # auto/bm25/hybrid
format="json", # json/blocks/bundle
)
性能优化
索引优化
- FTS5 索引:使用 SQLite FTS5 实现高效的全文搜索
- 向量索引:采用近似最近邻(ANN)算法加速向量检索
- 缓存策略:对高频查询结果进行缓存
查询优化
- 早停机制:当累计分数达到阈值时提前终止
- 分层检索:先用轻量级方法过滤,再用重排序精细化
- 并行执行:多路召回并行执行以降低延迟
故障排除
常见问题
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 检索结果为空 | 索引未建立 | 执行 reindex 工具 |
| 结果不相关 | 查询扩展过度 | 调整 expansion_enabled |
| 延迟过高 | 向量索引未优化 | 检查 ANN 参数配置 |
| 排名异常 | 内核参数冲突 | 检查 .mind 配置文件 |
扩展阅读
来源:https://github.com/star-ga/mind-mem / 项目说明书
MCP服务器
MCP服务器(Model Context Protocol Server)是mind-mem项目提供的AI记忆管理服务接口,通过MCP协议为AI智能体(Agent)提供记忆存储、检索和上下文管理能力。该服务器使AI应用能够持久化存储对话上下文和记忆数据,并在后续对话中动态加载相关记忆,实现跨会话的上下文连续性。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
MCP服务器(Model Context Protocol Server)是mind-mem项目提供的AI记忆管理服务接口,通过MCP协议为AI智能体(Agent)提供记忆存储、检索和上下文管理能力。该服务器使AI应用能够持久化存储对话上下文和记忆数据,并在后续对话中动态加载相关记忆,实现跨会话的上下文连续性。
核心架构
架构组件
| 组件 | 职责 | 文件位置 |
|---|---|---|
| MCP Server | MCP协议服务端实现,处理客户端请求 | src/mind_mem/mcp/server.py |
| MCP Entry | 服务入口点,负责初始化和启动 | src/mind_mem/mcp_entry.py |
| 记忆存储引擎 | 管理记忆数据的持久化存储 | 内部模块 |
| 检索引擎 | 支持语义检索和关键词匹配 | 内部模块 |
数据流架构
graph TD
A[AI Agent] -->|MCP Protocol| B[MCP Server]
B --> C[记忆存储引擎]
C --> D[向量数据库]
C --> E[键值存储]
B --> F[检索引擎]
F --> D
F --> E
G[外部应用] -->|REST/gRPC| B服务启动
启动方式
MCP服务器支持两种启动方式:
- 直接启动脚本:
mcp_server.py提供了独立运行的入口点 - 模块导入启动:通过
src/mind_mem/mcp_entry.py导入并初始化
启动配置
服务器启动时需要配置以下参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
| host | 服务监听地址 | 0.0.0.0 |
| port | 服务监听端口 | 8080 |
| storage_path | 记忆存储路径 | ./memory_data |
| vector_dim | 向量维度 | 768 |
MCP协议接口
核心工具
MCP服务器通过MCP协议暴露以下核心工具:
| 工具名称 | 功能 | 输入参数 |
|---|---|---|
| store_memory | 存储记忆 | user_id, content, metadata |
| retrieve_memories | 检索记忆 | query, user_id, limit |
| update_memory | 更新记忆 | memory_id, content |
| delete_memory | 删除记忆 | memory_id |
| list_memories | 列出记忆 | user_id, filters |
资源管理
服务器提供以下MCP资源:
graph LR
A[Resources] --> B[memory://user/{user_id}]
A --> C[memory://conversation/{conv_id}]
A --> D[memory://summary/{user_id}]集成方式
客户端集成
项目文档 docs/mcp-integration.md 描述了与AI智能体的集成方式:
sequenceDiagram
participant Agent as AI Agent
participant MCP as MCP Client
participant Server as MCP Server
Agent->>MCP: 连接服务器
MCP->>Server: 握手协商
Server-->>MCP: 连接确认
MCP-->>Agent: 就绪状态
Agent->>MCP: 发送记忆存储请求
MCP->>Server: store_memory()
Server-->>MCP: 存储成功
MCP-->>Agent: 确认响应
Agent->>MCP: 发送检索请求
MCP->>Server: retrieve_memories()
Server-->>MCP: 相关记忆
MCP-->>Agent: 返回上下文集成配置示例
{
"mcp_servers": {
"mind-mem": {
"command": "python",
"args": ["mcp_server.py", "--port", "8080"],
"env": {
"MEMORY_STORAGE_PATH": "./data/memory"
}
}
}
}
记忆管理机制
存储策略
| 策略类型 | 说明 | 适用场景 |
|---|---|---|
| 即时存储 | 实时保存每次交互 | 重要对话记录 |
| 批量存储 | 定时批量写入 | 低优先级日志 |
| 压缩存储 | 自动摘要后存储 | 长对话历史 |
检索机制
服务器支持多种检索模式:
- 语义检索:基于向量相似度匹配相关记忆
- 关键词检索:精确匹配关键词
- 时间范围检索:按时间筛选记忆
- 混合检索:结合语义和关键词的混合搜索
安全特性
| 安全措施 | 说明 |
|---|---|
| 用户隔离 | 不同用户记忆严格隔离 |
| 访问控制 | 基于用户ID的访问验证 |
| 数据加密 | 敏感数据加密存储 |
| 审计日志 | 记录所有操作日志 |
使用示例
存储记忆
from mind_mem import MCPClient
client = MCPClient("http://localhost:8080")
client.store_memory(
user_id="user123",
content="用户偏好使用中文交流",
metadata={"source": "conversation", "timestamp": "2024-01-01"}
)
检索记忆
memories = client.retrieve_memories(
query="用户偏好",
user_id="user123",
limit=5
)
for memory in memories:
print(memory.content)
配置选项
环境变量配置
| 变量名 | 说明 | 示例值 |
|---|---|---|
| MEMORY_STORAGE_PATH | 存储路径 | /data/memory |
| MCP_PORT | 服务端口 | 8080 |
| MCP_HOST | 服务地址 | localhost |
| VECTOR_DB_TYPE | 向量数据库类型 | qdrant/chroma |
| MAX_MEMORY_SIZE | 最大记忆大小 | 10000 |
运行时配置
server:
host: 0.0.0.0
port: 8080
workers: 4
storage:
backend: sqlite
path: ./data/memory.db
vector:
model: text-embedding-ada-002
dimension: 1536
相关文档
来源:https://github.com/star-ga/mind-mem / 项目说明书
MCP工具集
MCP工具集(Model Context Protocol Tools)是mind-mem项目为非MCP智能体提供的统一命令行接口(CLI)以及MCP服务端工具集。该工具集涵盖了记忆管理的完整生命周期,包括记忆召回、上下文打包、记忆操作、治理、归档和基准测试等核心功能。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
MCP工具集(Model Context Protocol Tools)是mind-mem项目为非MCP智能体提供的统一命令行接口(CLI)以及MCP服务端工具集。该工具集涵盖了记忆管理的完整生命周期,包括记忆召回、上下文打包、记忆操作、治理、归档和基准测试等核心功能。
MCP工具集的设计遵循以下核心原则:
- 记忆不可直接修改原则:记忆只能通过治理流程进行修改
- 自愈式遗忘:记忆通过认知遗忘机制自动衰减和归档
- 知识核调优:通过
.mind内核文件调整召回和排序策略
资料来源:src/mind_mem/mcp/tools/memory_ops.py:1-30
架构总览
MCP工具集采用模块化架构,按功能域划分为多个工具子模块:
graph TD
subgraph MCP服务端
A[mcp_server.py] --> B[tools/]
B --> C[memory_ops]
B --> D[governance]
B --> E[consolidation]
B --> F[kernels]
B --> G[core]
B --> H[arch_mind]
B --> I[benchmark]
B --> J[recall]
B --> K[graph]
end
subgraph 基础设施层
L[infra/observability]
M[infra/workspace]
N[infra/config]
end
C --> L
D --> L
E --> L
G --> M
H --> M
I --> M工具域分类
记忆操作工具域(memory_ops)
记忆操作工具域提供了记忆的索引重建、生命周期管理和健康检查功能。
资料来源:src/mind_mem/mcp/tools/memory_ops.py:1-50
#### 核心工具
| 工具名称 | 功能描述 |
|---|---|
index_stats | 获取FTS5全文索引状态 |
reindex | 重建全文索引 |
delete_memory_item | 原子性记忆块删除 |
export_memory | 导出记忆为JSONL格式 |
get_block | 获取单个记忆块 |
memory_health | 记忆健康状态仪表板 |
compact | 记忆压缩 |
stale_blocks | 陈旧记忆块管理 |
#### 块前缀映射表
工具内部维护了_BLOCK_PREFIX_MAP,用于快速定位不同类型记忆块的文件路径:
| 前缀 | 文件路径 |
|---|---|
DEC | decisions/DECISIONS.md |
TSK | tasks/TASKS.md |
SIG | signals/SIGNALS.md |
ENT | entities/*.md |
资料来源:src/mind_mem/mcp/tools/memory_ops.py:100-150
治理工具域(governance)
治理工具域是mind-mem的核心模块,遵循"记忆只能通过治理流程修改"的不变式。
资料来源:src/mind_mem/mcp/tools/governance.py:1-40
#### 治理工具集
| 工具名称 | 功能描述 |
|---|---|
propose_update | 将新决策/任务暂存为SIGNAL |
approve_apply | 应用暂存的提案(默认干跑) |
rollback_proposal | 从预应用快照恢复工作区 |
scan | 完整性扫描(矛盾/漂移/待处理) |
list_contradictions | 矛盾列表枚举 |
memory_evolution | 获取记忆块的A-MEM元数据 |
#### 治理工作流
graph LR
A[propose_update] --> B{SIGNALS.md}
B --> C[人工审核]
C --> D{approve_apply}
D -->|干跑模式| E[预览变更]
D -->|执行模式| F[应用变更]
F --> G[快照记录]
G --> H[rollback可用]记忆整合工具域(consolidation)
记忆整合工具域实现了"记忆随时间沉淀"的能力,通过认知遗忘循环维护记忆健康度。
资料来源:src/mind_mem/mcp/tools/consolidation.py:1-35
#### 整合工具集
| 工具名称 | 功能描述 |
|---|---|
plan_consolidation | 认知遗忘周期干跑 |
propagate_staleness | 跨引用扩散陈旧度评分 |
project_profile | 会话启动智能摘要 |
dream_cycle | 自主记忆富化(实体发现、损坏引用扫描、整合候选) |
#### 整合配置参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
importance_threshold | float | 0.25 | 重要性阈值 |
stale_days | int | 14 | 陈旧天数 |
archive_after_days | int | 60 | 归档天数 |
grace_days | int | 30 | 宽限期 |
知识核工具域(kernels)
知识核工具域提供了对.mind内核配置文件的只读访问,用于调整召回、排序和RM3扩展策略。
资料来源:src/mind_mem/mcp/tools/kernels.py:1-40
#### 内核工具集
| 工具名称 | 功能描述 |
|---|---|
list_mind_kernels | 列出可用内核配置文件 |
get_mind_kernel | 获取指定内核配置详情 |
compiled_truth_load | 加载实体真值页面 |
compiled_truth_add_evidence | 添加证据到真值页面 |
compiled_truth_contradictions | 检测真值页面的矛盾 |
上下文核心工具域(core)
上下文核心工具域封装了CoreRegistry单例,管理.mmcore便携式块的打包和知识图归档。
资料来源:src/mind_mem/mcp/tools/core.py:1-45
#### 核心工具集
| 工具名称 | 功能描述 |
|---|---|
build_core | 从活跃工作区构建.mmcore包 |
load_core | 加载.mmcore包到内存 |
unload_core | 卸载已加载的核心 |
list_cores | 列出已注册的核心 |
#### mmcore包结构
graph TD
A[.mmcore归档] --> B[manifest.json]
A --> C[blocks/]
A --> D[edges/]
A --> E[retrieval_policies.json]
A --> F[ontology.json]
C --> C1[block_001.json]
C --> C2[block_002.json]
D --> D1[edge_001.json]
D --> D2[edge_002.json]Arch-Mind工具域(arch_mind)
Arch-Mind工具域将arch-mind二进制程序封装为7个MCP工具,提供架构基线管理和会话级指标追踪。
资料来源:src/mind_mem/mcp/tools/arch_mind.py:1-50
#### Arch工具集
| 工具名称 | 功能描述 |
|---|---|
arch_baseline | 初始化架构基线 |
arch_delta | 计算当前扫描与基线的差异 |
arch_history | 列出架构事件历史 |
arch_check_rules | 应用规则到新扫描 |
arch_session_start | 打开会话证据节点 |
arch_session_end | 关闭会话并写入增量证据 |
arch_metric_explain | 逐指标解释 |
基准测试工具域(benchmark)
基准测试工具域提供了治理健康度和类别摘要的评估工具。
资料来源:src/mind_mem/mcp/tools/benchmark.py:1-40
#### 基准工具集
| 工具名称 | 功能描述 |
|---|---|
governance_health_bench | 治理健康基准测试(矛盾检测、审计完整性、漂移检测、可扩展性探测) |
category_summary | 类别摘要蒸馏查找 |
MCP工具元数据
所有MCP工具均通过以下装饰器实现统一观测:
装饰器链
@mcp_tool_observe # 观测性装饰器
@_traced("tool_name") # 追踪装饰器
def tool_function(args):
...
返回格式
所有工具返回JSON格式字符串,包含标准模式版本头:
{
"_schema_version": "3.2.0",
"tool_name": "result_data"
}
资料来源:src/mind_mem/mcp/tools/governance.py:40-80
工作区感知
MCP工具集通过统一的_workspace()函数解析工作区路径:
graph LR
A[MIND_MEM_WORKSPACE环境变量] -->|优先级1| B[显式覆盖]
A -->|未设置| C[当前工作目录]
C --> D[realpath解析]
B --> D
D --> E[工作区根目录]工作区检查通过_check_workspace()验证:
- 工作区目录存在
- 必需的子目录结构完整
- 必要的配置文件可读
资料来源:src/mind_mem/mcp/tools/consolidation.py:20-50
CLI命令映射
MCP工具集同时提供命令行接口(CLI),位于mm_cli.py:
| CLI命令 | 对应工具域 |
|---|---|
mm recall | 记忆召回 |
mm context | 上下文打包 |
mm inject | 智能体上下文注入 |
mm vault | 知识库扫描/写入 |
mm status | 工作区摘要 |
mm explain | 指标解释 |
mm trace | MCP调用日志追踪 |
资料来源:src/mind_mem/mm_cli.py:1-80
错误处理
MCP工具集采用统一的错误处理模式:
错误类型
| 错误类型 | 说明 | 处理方式 |
|---|---|---|
WorkspaceError | 工作区路径无效 | 返回错误JSON |
BlockCorruptedError | 记忆块损坏 | 隔离并记录 |
CoreLoadError | mmcore包解析失败 | 验证并报告 |
SQLiteBusyError | 数据库锁定 | 重试或等待 |
错误响应格式
{
"_schema_version": "3.2.0",
"error": "error_description"
}
配置集成
MCP工具集通过基础设施层获取配置:
from ..infra.config import _get_limits, _load_extra_categories
from ..infra.workspace import _workspace, _check_workspace
可配置项包括:
- 最大类别结果数
- 额外类别定义
- 全文索引限制
- 导出大小上限
扩展机制
自定义工具域
新增工具域需要:
- 在
mcp/tools/目录下创建新模块 - 实现工具函数并添加装饰器
- 在
mcp_server.py中注册 - 更新本文档
观测性扩展
工具函数通过mcp_tool_observe装饰器自动集成到观测系统:
- 调用计数(metrics.inc)
- 日志记录(_log.info)
- 追踪(traced decorator)
相关文档
资料来源:[src/mind_mem/mcp/tools/memory_ops.py:1-30]()
治理与矛盾检测
治理与矛盾检测是 mind-mem 系统的核心安全机制,确保记忆体的变更遵循"记忆永不直接修改,只能通过治理流程变更"的不变式。该模块涵盖了从提议、审批、应用到回滚的完整生命周期,同时提供矛盾检测、漂移检测和审计链验证等多层次防护。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
治理与矛盾检测是 mind-mem 系统的核心安全机制,确保记忆体的变更遵循"记忆永不直接修改,只能通过治理流程变更"的不变式。该模块涵盖了从提议、审批、应用到回滚的完整生命周期,同时提供矛盾检测、漂移检测和审计链验证等多层次防护。
核心设计原则:
- 治理驱动变更:所有决策和任务的修改必须通过提议-审批流程
- 证据链完整:每条证据都有时间戳、来源和可信度标记
- 矛盾优先检测:在编译真理页面时自动检测冲突证据
- 可审计可回滚:所有操作记录在案,支持快照回滚
资料来源:src/mind_mem/mcp/tools/governance.py:1-20
架构总览
graph TD
subgraph 治理层
A[提议 Propose] --> B[审批 Apply]
B --> C[回滚 Rollback]
C --> D[扫描 Scan]
D --> E[矛盾列表]
end
subgraph 证据层
F[CompiledTruthPage] --> G[detect_contradictions]
G --> H[EvidenceEntry]
H --> I[superseded 标记]
end
subgraph 审计层
J[verify_merkle] --> K[Merkle Tree]
L[verify_chain] --> M[SHA3-512 Hash Chain]
N[verify_evidence] --> O[Evidence Chain]
end
B --> J
B --> L
F --> G核心组件
1. 治理门 (Governance Gate)
治理门是记忆修改的守门人,确保所有变更必须通过标准流程。
# 伪代码展示治理门工作流程
def governance_check(block):
if is_proposal(block) and is_approved(block):
return APPLY
elif is_contradiction_detected(block):
return REJECT_CONFLICT
else:
return QUEUE_FOR_REVIEW
治理门配置参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
require_approval | bool | true | 是否要求审批 |
contradiction_threshold | float | 0.7 | 矛盾检测阈值 |
drift_tolerance | int | 3 | 漂移容忍度 |
资料来源:src/mind_mem/governance_gate.py
2. 矛盾检测器 (Contradiction Detector)
矛盾检测器分析编译真理页面的证据条目,识别相互冲突的陈述。
graph LR
A[Evidence Entry 1] --> D{矛盾检测}
B[Evidence Entry 2] --> D
C[Evidence Entry 3] --> D
D --> E[冲突报告]
E --> F[标记为 superseded]核心检测逻辑:
def detect_contradictions(page: CompiledTruthPage) -> list[Contradiction]:
"""检测证据条目间的矛盾"""
contradictions = []
for i, entry_i in enumerate(page.evidence_entries):
for j, entry_j in enumerate(page.evidence_entries[i+1:], i+1):
if _is_contradictory(entry_i, entry_j):
contradictions.append(Contradiction(
entry_a=i,
entry_b=j,
severity=_calculate_severity(entry_i, entry_j)
))
return contradictions
检测维度:
| 维度 | 说明 | 优先级 |
|---|---|---|
| 时间矛盾 | 同一事件的时间陈述不一致 | 高 |
| 属性矛盾 | 实体属性值冲突 | 高 |
| 因果矛盾 | 因果关系陈述相反 | 中 |
| 语义矛盾 | 否定/肯定陈述冲突 | 中 |
| 数值矛盾 | 数值范围或精度不匹配 | 低 |
资料来源:src/mind_mem/contradiction_detector.py
3. 漂移检测器 (Drift Detector)
漂移检测器监控决策或任务的实际执行与原始声明之间的偏离。
graph TD
A[原始声明] --> B[版本化快照]
C[当前状态] --> D{漂移计算}
B --> D
D --> E{超出容忍度?}
E -->|是| F[触发告警]
E -->|否| G[继续监控]漂移检测触发条件:
- 决策状态与预期不符
- 任务优先级发生非预期变更
- 截止日期与原计划偏差超过阈值
- 关联实体发生未记录变更
资料来源:src/mind_mem/drift_detector.py
4. 审计链 (Audit Chain)
审计链提供加密可验证的完整性证明,确保记忆体的历史不可篡改。
graph LR
A[Block 1] -->|SHA3-512| B[Block 2]
B -->|SHA3-512| C[Block 3]
C -->|SHA3-512| D[Block N]
D --> E[Merkle Root]
F[Merkle Proof] --> G[验证包含性]审计工具清单:
| 工具 | 功能 | 输入 | 输出 |
|---|---|---|---|
verify_merkle | Merkle包含证明 | block_id, content_hash | 证明 + ok标志 |
verify_chain | 哈希链验证 | workspace路径 | 完整性报告 |
list_evidence | 证据枚举 | block_id, action过滤 | 证据列表 |
mind_mem_verify | CLI审计入口 | snapshot路径 | 验证结果 |
资料来源:src/mind_mem/mcp/tools/audit.py:1-50
MCP 治理工具
propose_update - 提议更新
创建新的决策或任务提议,写入 SIGNALS.md 待人工审核。
函数签名:
def propose_update(
block_type: str,
statement: str,
rationale: str = "",
tags: str = "",
confidence: str = "medium"
) -> str
参数说明:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
block_type | str | 是 | 块类型 (DECISION/TASK) |
statement | str | 是 | 核心陈述 |
rationale | str | 否 | 变更理由 |
tags | str | 否 | 逗号分隔标签 |
confidence | str | 否 | 可信度 (low/medium/high) |
返回值示例:
{
"_schema_version": "3.2.0",
"signal_id": "SIG-20260115-001",
"message": "Proposal queued for review"
}
资料来源:src/mind_mem/mcp/tools/governance.py:50-80
approve_apply - 审批应用
应用已通过的提议,支持干运行模式。
核心流程:
graph TD
A[加载提议] --> B[干运行验证]
B --> C{验证通过?}
C -->|否| D[返回错误]
C -->|是| E[创建快照]
E --> F[应用变更]
F --> G[更新索引]
G --> H[清理信号]关键特性:
- 默认干运行 (
dry_run=True) - 自动快照回滚点
- 原子性事务保证
资料来源:src/mind_mem/mcp/tools/governance.py:100-150
rollback_proposal - 回滚提案
从预应用快照恢复工作区状态。
graph LR
A[当前状态] --> B[快照恢复]
B --> C[索引回退]
C --> D[信号重建]约束条件:
- 只能回滚处于待应用状态的提案
- 快照必须在有效期内(默认7天)
- 回滚本身会产生新的治理记录
资料来源:src/mind_mem/mcp/tools/governance.py:150-200
scan - 完整性扫描
执行综合健康检查,覆盖矛盾检测、漂移检测和待处理项。
def scan(workspace: str) -> dict:
return {
"contradictions": detect_all_contradictions(workspace),
"drift": detect_drift(workspace),
"pending": list_pending_signals(workspace),
"health_score": calculate_health_score(workspace)
}
扫描子项:
| 子项 | 说明 | 阈值 |
|---|---|---|
| 矛盾数量 | 检测到的冲突证据对 | > 0 需关注 |
| 漂移事件 | 偏离原声明的变更 | > 3 需关注 |
| 待审批 | 队列中的提案数 | 无限制 |
| 审计完整性 | 哈希链连续性 | 必须完整 |
资料来源:src/mind_mem/mcp/tools/governance.py:200-250
list_contradictions - 矛盾列表
返回枚举的矛盾详情,支持富文本输出。
输出格式:
{
"contradictions": [
{
"entity_id": "PRJ-alpha",
"severity": "high",
"entries": [
{
"index": 0,
"timestamp": "2026-01-10T09:00:00Z",
"observation": "项目截止日期为 Q1",
"confidence": "HIGH",
"source": "decisions.md"
},
{
"index": 3,
"timestamp": "2026-01-12T14:30:00Z",
"observation": "项目截止日期为 Q2",
"confidence": "MEDIUM",
"source": "tasks.md"
}
]
}
]
}
资料来源:src/mind_mem/mcp/tools/governance.py:250-300
governance_health_bench - 健康基准测试
运行治理健康基准测试套件,验证矛盾检测、审计完整性、漂移检测和可扩展性。
测试子项:
| 测试 | 覆盖范围 | 预期结果 |
|---|---|---|
| 矛盾检测探针 | 人工构造的矛盾场景 | 100%检出 |
| 审计完整性探针 | 哈希链断裂注入 | 正确检测 |
| 漂移探针 | 状态偏离注入 | 正确识别 |
| 可扩展性探针 | 大规模数据压力 | 性能可接受 |
返回值结构:
{
"_schema_version": "3.2.0",
"tests_run": 12,
"passed": 11,
"failed": 1,
"results": [...]
}
资料来源:src/mind_mem/mcp/tools/benchmark.py:20-60
编译真理页面 (Compiled Truth Page)
编译真理页面是矛盾检测的核心载体,聚合实体的所有证据并自动编译权威理解。
数据结构
@dataclass
class CompiledTruthPage:
entity_id: str # 实体标识符
entity_type: str # 实体类型 (PER/PRJ/TOOL/INC)
compiled_section: str # 编译后的权威理解
evidence_entries: list[EvidenceEntry] # 证据条目列表
last_compiled: str # ISO时间戳
version: int # 版本号
证据条目
@dataclass
class EvidenceEntry:
timestamp: str # ISO 8601 时间戳
source: str # 来源文件
observation: str # 观察内容
confidence: str # HIGH/MEDIUM/LOW
superseded: bool # 是否已被取代
矛盾检测集成
编译真理页面在重新编译时自动调用矛盾检测:
def recompile_truth(page: CompiledTruthPage) -> CompiledTruthPage:
"""从非取代证据重新生成编译部分"""
# 过滤非取代证据
active_entries = [e for e in page.evidence_entries if not e.superseded]
# 检测矛盾
contradictions = detect_contradictions(page)
# 生成报告
for conflict in contradictions:
_log.warning(
"contradiction_detected",
entity_id=page.entity_id,
entry_a=conflict.entry_a,
entry_b=conflict.entry_b
)
# 按时间戳排序,生成摘要
...
资料来源:src/mind_mem/compiled_truth.py:100-150
证据取代机制
当检测到矛盾时,可通过治理流程标记旧证据为 superseded:
def supersede_evidence(
page: CompiledTruthPage,
entry_index: int,
reason: str
) -> CompiledTruthPage:
"""将证据标记为已取代"""
new_entry = dataclasses.replace(
page.evidence_entries[entry_index],
superseded=True
)
new_entries = list(page.evidence_entries)
new_entries[entry_index] = new_entry
return dataclasses.replace(page, evidence_entries=new_entries)
取代规则:
- 被取代证据仍保留在历史中,但计算时忽略
- 取代操作本身产生新的治理记录
- 新版本触发重新编译
资料来源:src/mind_mem/compiled_truth.py:150-200
工作流示例
决策变更完整流程
sequenceDiagram
participant Agent
participant MCP as MCP Server
participant Store as Block Store
participant Audit as Audit Chain
participant Truth as Compiled Truth
Agent->>MCP: propose_update(DECISION, "变更X")
MCP->>Store: 写入SIGNALS.md
Note over MCP: 状态: PENDING
Agent->>MCP: approve_apply(SIG-xxx, dry_run=true)
MCP->>Truth: 检查矛盾
Truth-->>MCP: 无冲突
Agent->>MCP: approve_apply(SIG-xxx, dry_run=false)
MCP->>Store: 创建快照
MCP->>Store: 应用变更
MCP->>Audit: 更新哈希链
Note over MCP: 状态: APPLIED
Agent->>MCP: scan()
MCP-->>Agent: 健康报告矛盾处理流程
graph TD
A[检测到矛盾] --> B{自动解决可能?}
B -->|否| C[人工审核]
C --> D[审查证据]
D --> E[选择保留哪条]
E --> F[取代旧证据]
B -->|是| G[自动取代低可信度]
G --> F
F --> H[重新编译]
H --> I[生成新版本]
I --> J[更新审计链]配置选项
矛盾检测配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
contradiction_min_confidence_gap | 0.3 | 最低可信度差距 |
auto_supersede_low_confidence | true | 自动取代低可信度 |
contradiction_alert_threshold | 2 | 告警阈值 |
审计配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
hash_algorithm | SHA3-512 | 哈希算法 |
merkle_update_on_write | true | 写入时更新Merkle树 |
audit_retention_days | 365 | 审计保留天数 |
漂移检测配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
drift_check_interval_hours | 24 | 检查间隔 |
drift_tolerance_priority | 2 | 优先级容差 |
drift_tolerance_date_days | 7 | 日期容差 |
相关命令
mm CLI 治理命令
# 提议新决策
mm governance propose --type DECISION --statement "采用新技术栈"
# 应用审批
mm governance approve SIG-20260115-001
# 回滚操作
mm governance rollback SIG-20260115-001
# 运行健康扫描
mm governance scan
# 列出矛盾
mm governance contradictions --entity PRJ-alpha
# 验证审计链
mm verify --type chain
MCP 工具调用
{
"tool": "propose_update",
"arguments": {
"block_type": "DECISION",
"statement": "迁移至微服务架构",
"rationale": "提升可扩展性",
"tags": "architecture, refactor",
"confidence": "high"
}
}
最佳实践
1. 矛盾预防
- 在添加新证据前先查询现有编译真理页面
- 使用高可信度来源标注证据
- 避免重复提交相似陈述
2. 治理流程
- 干运行优先,正式应用前验证
- 保持提议的原子性描述
- 定期运行健康扫描
3. 审计合规
- 验证哈希链完整性作为CI/CD环节
- 保留足够的快照以支持回滚
- 监控审计链验证失败事件
总结
治理与矛盾检测模块为 mind-mem 提供了企业级的记忆管理安全保障。通过"提议-审批-应用-回滚"的完整生命周期管理,确保了所有变更的可追溯性和可控性。矛盾检测与编译真理页面的深度集成,使得知识库的权威性得到持续维护,而审计链则为整个系统提供了密码学级别的完整性保证。
资料来源:[src/mind_mem/mcp/tools/governance.py:1-20]()
质量保障与验证
mind-mem 采用多层次的质量保障体系,确保记忆块的可靠性、一致性和安全性。系统从内容存储前的预处理、解析时的验证、到运行时的矛盾检测,形成了完整的质量闭环。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
质量门禁(Quality Gate)
质量门禁是记忆块写入前的第一道防线,位于 src/mind_mem/quality_gate.py。它是一个确定性、基于内容的预存储过滤器,对候选块进行检查并返回结构化裁决。
核心规则
质量门禁包含八条规则,全部为确定性规则,不依赖外部服务:
| 规则标识 | 规则名称 | 检查条件 | 处理方式 |
|---|---|---|---|
empty | 空块检测 | 块内容为纯空白字符 | 标记并可拒绝 |
too_short | 过短检测 | 非空白字符少于 32 个 | 标记并可拒绝 |
oversize | 超大检测 | UTF-8 编码超过 64 KiB | 标记并可拒绝 |
malformed_utf8 | UTF-8 损坏检测 | 包含孤立代理或无法通过 UTF-8 往返 | 标记并可拒绝 |
stopwords_only | 停用词检测 | 所有 token 均为停用词,无语义内容 | 标记并可拒绝 |
near_duplicate | 近似重复检测 | 与 24 小时内块编辑距离相似度 ≥ 0.97 | 标记并可拒绝 |
injection_marker | 注入标记检测 | 匹配已知提示注入模式 | 标记并可拒绝 |
ok | 通过 | 无规则触发 | 接受 |
裁决模式
质量门禁支持两种裁决模式:
- 顾问模式(默认):每条规则都会被记录,但裁决仍返回
accept - 严格模式(strict):任何规则触发都导致
reject
严格模式可通过以下方式启用:
- 调用时传入
strict=True关键字参数 - 工作区
QualityGateConfig(mode="strict") - 工作区配置
mind-mem.json中的quality_gate_mode = "strict"
工作流程
graph TD
A[接收候选块] --> B[执行 8 条规则检查]
B --> C{触发任何规则?}
C -->|否| D[裁决: accept]
C -->|是| E{strict 模式?}
E -->|否| F[记录日志]
F --> D
E -->|是| G[裁决: reject]
D --> H[写入存储]
G --> I[返回错误信息]返回数据结构
@dataclass
class Verdict:
decision: Literal["accept", "reject"]
fired_rules: list[str] # 触发的规则列表
score: float # 质量分数 0.0-1.0
reason: Optional[str] # 拒绝原因描述
资料来源:src/mind_mem/quality_gate.py:1-100
块解析质量控制
src/mind_mem/block_parser.py 负责从文本中解析记忆块,解析过程内置了多项质量验证机制。
UTF-8 BOM 处理
解析器首先检查并处理 UTF-8 BOM(Byte Order Mark):
if text.startswith(''):
text = text[1:]
这确保第一个块头不会被 BOM 字符遮挡,保证解析的一致性。
否定块识别
系统内置否定块检测正则表达式,用于识别语义反转的声明:
_NEGATION_RE = re.compile(
r"\b(not|never|don't|won't|shouldn't|cannot|can't|..."
r"|no\s+\w+|none)\b",
re.IGNORECASE,
)
这对于矛盾检测和语义理解具有重要意义。
ConstraintSignature 解析
v2.0 版本支持结构化的 ConstraintSignature 解析,识别以下嵌套字段:
| 字段名 | 用途 |
|---|---|
scope | 约束作用范围 |
axis | 约束维度 |
lifecycle | 生命周期阶段 |
解析器维护内部状态机,正确处理嵌套结构和操作符列表。
资料来源:src/mind_mem/block_parser.py:1-80
编译真相与矛盾检测
编译真相(Compiled Truth)是 mind-mem 的核心概念之一,位于 src/mind_mem/compiled_truth.py。它通过聚合证据来维护实体的规范理解。
证据条目结构
@dataclass
class EvidenceEntry:
timestamp: str # ISO 时间戳
source: str # 来源标识
observation: str # 观察内容
confidence: str # 置信度: high/medium/low
superseded: bool # 是否已被替代
编译真相页面结构
| 字段 | 说明 |
|---|---|
entity_id | 实体唯一标识符 |
entity_type | 实体类型 |
compiled_section | 当前规范理解(摘要) |
evidence_entries | 证据条目列表 |
last_compiled | 最后编译时间 |
version | 版本号 |
矛盾检测
系统提供 detect_contradictions() 函数用于检测编译真相页面中的矛盾:
def detect_contradictions(page: CompiledTruthPage) -> list[ContradictionPair]:
"""检测页面中的矛盾证据对"""
矛盾检测通过以下步骤工作:
- 遍历所有未废弃的证据条目
- 比较语义相反的陈述
- 识别否定关系(如 "应该使用 X" vs "不应该使用 X")
- 返回矛盾对列表
证据替代机制
当新证据与旧证据矛盾时,系统支持标记旧证据为已废弃:
def supersede_evidence(
page: CompiledTruthPage,
entry_index: int,
reason: str
) -> CompiledTruthPage:
替代后的旧证据保留在历史中,但不影响规范理解的生成。
资料来源:src/mind_mem/compiled_truth.py:1-150
治理工具与矛盾扫描
MCP 工具提供程序化的质量保障能力,位于 src/mind_mem/mcp/tools/governance.py。
可用工具
| 工具名称 | 功能 |
|---|---|
propose_update | 提议新决策或任务,写入 SIGNALS.md 待人工审核 |
approve_apply | 应用已提议的更新(默认干跑模式) |
rollback_proposal | 从预应用快照恢复工作区 |
scan | 完整性扫描(矛盾/漂移/待处理) |
list_contradictions | 矛盾列表的富文本展示 |
memory_evolution | 获取块的 A-MEM 元数据 |
扫描操作
scan 工具执行三类检查:
- 矛盾检测:识别同一实体的相互冲突的证据
- 漂移检测:检测规范理解与实际证据的不一致
- 待处理检测:列出未处理的信号和提案
SQLite 锁处理
扫描操作使用 SQLite 数据库,工具内置锁冲突处理:
def _is_db_locked(exc: Exception) -> bool:
return "database is locked" in str(exc)
def _sqlite_busy_error(result: str, exc: Exception) -> str:
return json.dumps({"error": f"DB locked: {exc}", "retry": True})
资料来源:src/mind_mem/mcp/tools/governance.py:1-100
模型溯源验证
src/mind_mem/model_provenance.py 提供模型出处检查能力,确保引用的模型信息准确。
支持的发布商
| 发布商 | Slug 标识 | 模型家族 |
|---|---|---|
| Meta Llama | meta-llama | Llama 2/3/4 |
| Mistral | mistralai | Mistral/Mixtral/Codestral |
| Google Gemma | google | Gemma/Gemma-2/PaLM |
| IBM Granite | ibm-granite, ibm | Granite-3/Granite-Code |
| DeepSeek | deepseek-ai | DeepSeek-V2/V3/R1 |
| Microsoft Phi | microsoft | Phi-2/Phi-3/Phi-4 |
| TII Falcon | tiiuae | Falcon-7B/40B/180B |
ProvenanceFinding 结果
@dataclass
class ProvenanceFinding:
passed: bool # 检查是否通过
publisher: Optional[str] # 识别的发布商
model_family: Optional[str] # 模型家族
confidence: float # 置信度 0.0-1.0
资料来源:src/mind_mem/model_provenance.py:1-100
删除恢复与审计
系统维护删除操作的全量审计日志,支持误删恢复。
删除收据格式
删除块时,系统将删除收据写入 memory/deleted_blocks.jsonl:
{
"block_id": "D-20260213-001",
"deleted_at": "2026-03-15T10:30:00+00:00",
"content": "原始块内容..."
}
块定位逻辑
删除收据记录使用与 mcp.tools.memory_ops.delete_memory_item 相同的边界规则:
- 块从
[<id>]行开始 - 块结束于下一个
[<ID>]头行、孤立的---分隔符或 EOF
这确保两个删除路径收敛到同一恢复日志格式。
资料来源:src/mind_mem/block_store.py:1-100
配置与指标
质量门禁配置优先级
1. 函数调用 strict=True 参数(最高优先级)
2. QualityGateConfig(mode="strict") 对象
3. mind-mem.json 中的 quality_gate_mode 设置
4. 默认值(advisory 模式)
质量指标
系统通过 metrics.inc() 追踪质量事件:
| 指标名称 | 触发场景 |
|---|---|
truth_pages_loaded | 编译真相页面加载 |
evidence_entries_superseded | 证据被替代 |
mcp_compiled_truth_add_evidence | 添加新证据 |
contradictions_detected | 检测到矛盾 |
日志记录
质量事件通过结构化日志记录:
_log.info(
"evidence_superseded",
entity_id=page.entity_id,
index=entry_index,
reason=reason,
)
日志输出到 MIND_MEM_LOG_FILE 或标准输出。
最佳实践
启用严格模式
对于生产环境,建议在工作区配置中启用严格模式:
{
"quality_gate_mode": "strict"
}
定期扫描
使用 MCP 工具 scan 定期检查工作区一致性:
mm mcp call scan --scan-type full
矛盾审查
当检测到矛盾时,通过 list_contradictions 工具获取详细信息:
mm mcp call list_contradictions
删除恢复
误删块后,可通过 deleted_blocks.jsonl 恢复内容:
# 查看最近删除
tail -n 10 memory/deleted_blocks.jsonl资料来源:[src/mind_mem/quality_gate.py:1-100](https://github.com/star-ga/mind-mem/blob/main/src/mind_mem/quality_gate.py)
失败模式与踩坑日记
保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。
可能增加新用户试用和生产接入成本。
可能增加新用户试用和生产接入成本。
可能增加新用户试用和生产接入成本。
安装可能改变本机 AI 工具行为,用户需要知道写入位置和回滚方法。
Pitfall Log / 踩坑日志
项目:star-ga/mind-mem
摘要:发现 21 个潜在踩坑项,其中 0 个为 high/blocking;最高优先级:安装坑 - 来源证据:PG-backed: mm doctor --rebuild-cache errors=263 (no such table: blocks)。
1. 安装坑 · 来源证据:PG-backed: `mm doctor --rebuild-cache` errors=263 (no such table: blocks)
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:PG-backed:
mm doctor --rebuild-cacheerrors=263 (no such table: blocks) - 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_366d8c18c1aa45ffb07174af516285d4 | https://github.com/star-ga/mind-mem/issues/524 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
2. 安装坑 · 来源证据:PG-backed: `mm recall` returns [] despite direct PG FTS finding matches
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:PG-backed:
mm recallreturns [] despite direct PG FTS finding matches - 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_ba0bc6a7eec24a3a963611eac1e66e9f | https://github.com/star-ga/mind-mem/issues/525 | 来源类型 github_issue 暴露的待验证使用条件。
3. 安装坑 · 来源证据:Perf regression: build_index on a fresh 80KB workspace takes ~55s
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:Perf regression: build_index on a fresh 80KB workspace takes ~55s
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源问题仍为 open,Pack Agent 需要复核是否仍影响当前版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_af7792e47f904c0ea9362c21e6944c19 | https://github.com/star-ga/mind-mem/issues/530 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
4. 配置坑 · 可能修改宿主 AI 配置
- 严重度:medium
- 证据强度:source_linked
- 发现:项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主,或安装命令涉及用户配置目录。
- 对用户的影响:安装可能改变本机 AI 工具行为,用户需要知道写入位置和回滚方法。
- 建议检查:列出会写入的配置文件、目录和卸载/回滚步骤。
- 防护动作:涉及宿主配置目录时必须给回滚路径,不能只给安装命令。
- 证据:capability.host_targets | github_repo:1160652179 | https://github.com/star-ga/mind-mem | host_targets=mcp_host, claude, claude_code, cursor
5. 能力坑 · 能力判断依赖假设
- 严重度:medium
- 证据强度:source_linked
- 发现:README/documentation is current enough for a first validation pass.
- 对用户的影响:假设不成立时,用户拿不到承诺的能力。
- 建议检查:将假设转成下游验证清单。
- 防护动作:假设必须转成验证项;没有验证结果前不能写成事实。
- 证据:capability.assumptions | github_repo:1160652179 | https://github.com/star-ga/mind-mem | README/documentation is current enough for a first validation pass.
6. 维护坑 · 来源证据:test_rollback_removes_new_files fails on macOS + Windows runners (passes on Linux)
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题:test_rollback_removes_new_files fails on macOS + Windows runners (passes on Linux)
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_e1922336b59a45f889940eab33dba770 | https://github.com/star-ga/mind-mem/issues/515 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
7. 维护坑 · 维护活跃度未知
- 严重度:medium
- 证据强度:source_linked
- 发现:未记录 last_activity_observed。
- 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
- 建议检查:补 GitHub 最近 commit、release、issue/PR 响应信号。
- 防护动作:维护活跃度未知时,推荐强度不能标为高信任。
- 证据:evidence.maintainer_signals | github_repo:1160652179 | https://github.com/star-ga/mind-mem | last_activity_observed missing
8. 安全/权限坑 · 下游验证发现风险项
- 严重度:medium
- 证据强度:source_linked
- 发现:no_demo
- 对用户的影响:下游已经要求复核,不能在页面中弱化。
- 建议检查:进入安全/权限治理复核队列。
- 防护动作:下游风险存在时必须保持 review/recommendation 降级。
- 证据:downstream_validation.risk_items | github_repo:1160652179 | https://github.com/star-ga/mind-mem | no_demo; severity=medium
9. 安全/权限坑 · 存在评分风险
- 严重度:medium
- 证据强度:source_linked
- 发现:no_demo
- 对用户的影响:风险会影响是否适合普通用户安装。
- 建议检查:把风险写入边界卡,并确认是否需要人工复核。
- 防护动作:评分风险必须进入边界卡,不能只作为内部分数。
- 证据:risks.scoring_risks | github_repo:1160652179 | https://github.com/star-ga/mind-mem | no_demo; severity=medium
10. 安全/权限坑 · 来源证据:ACL `_get_request_scope` fail-open on token-introspection exception (acl.py:139-142)
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:ACL
_get_request_scopefail-open on token-introspection exception (acl.py:139-142) - 对用户的影响:可能影响授权、密钥配置或安全边界。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_0a6d1439d14f4eb79c2e37a14ed436b0 | https://github.com/star-ga/mind-mem/issues/526 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
11. 安全/权限坑 · 来源证据:FederationClient: no scheme allowlist, no redirect cap, no response-size cap, no TLS pinning (federation_client.py:240-…
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:FederationClient: no scheme allowlist, no redirect cap, no response-size cap, no TLS pinning (federation_client.py:240-251)
- 对用户的影响:可能影响授权、密钥配置或安全边界。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_1e9c9207806f46a6a90a83828e99c173 | https://github.com/star-ga/mind-mem/issues/529 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
12. 安全/权限坑 · 来源证据:THREE_WAY_MERGE doesn't bump vclock — resolved conflicts recur on every detect_conflict pass (federation.py:359-360)
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:THREE_WAY_MERGE doesn't bump vclock — resolved conflicts recur on every detect_conflict pass (federation.py:359-360)
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_ea39fdeb939e484a9be8751555483fc5 | https://github.com/star-ga/mind-mem/issues/527 | 来源类型 github_issue 暴露的待验证使用条件。
13. 安全/权限坑 · 来源证据:[CRITICAL] N-01 / T-002: Default-on ACL gate (admin tools open with MIND_MEM_ADMIN_TOKEN unset)
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[CRITICAL] N-01 / T-002: Default-on ACL gate (admin tools open with MIND_MEM_ADMIN_TOKEN unset)
- 对用户的影响:可能影响授权、密钥配置或安全边界。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_d71f093408f04636bc91f85df44c811d | https://github.com/star-ga/mind-mem/issues/508 | 来源类型 github_issue 暴露的待验证使用条件。
14. 安全/权限坑 · 来源证据:[HIGH] T-006: Bound vault_scan / vault_sync filesystem walks (arbitrary host markdown exfil)
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[HIGH] T-006: Bound vault_scan / vault_sync filesystem walks (arbitrary host markdown exfil)
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_7bf148881d754982a8b6bbb0959436d0 | https://github.com/star-ga/mind-mem/issues/509 | 来源类型 github_issue 暴露的待验证使用条件。
15. 安全/权限坑 · 来源证据:[MEDIUM] N-02: REST rollback_proposal silently drops 'reason' field
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[MEDIUM] N-02: REST rollback_proposal silently drops 'reason' field
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_afb67087422e43678c941140da7019de | https://github.com/star-ga/mind-mem/issues/510 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
16. 安全/权限坑 · 来源证据:[MEDIUM] N-03: Rate limiter collapses all stdio clients into 'default' bucket
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[MEDIUM] N-03: Rate limiter collapses all stdio clients into 'default' bucket
- 对用户的影响:可能影响授权、密钥配置或安全边界。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_0917cf4b43b34ffe8d43e599d353665c | https://github.com/star-ga/mind-mem/issues/513 | 来源类型 github_issue 暴露的待验证使用条件。
17. 安全/权限坑 · 来源证据:[MEDIUM] N-04: staged_change rollback dispatcher silently drops 'reason'
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[MEDIUM] N-04: staged_change rollback dispatcher silently drops 'reason'
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_ad9e7a85457041afbc88c886568b2657 | https://github.com/star-ga/mind-mem/issues/511 | 来源类型 github_issue 暴露的待验证使用条件。
18. 安全/权限坑 · 来源证据:[MEDIUM] T-003: propose_update input bounds bypass (rationale/tags written verbatim to SIGNALS.md)
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[MEDIUM] T-003: propose_update input bounds bypass (rationale/tags written verbatim to SIGNALS.md)
- 对用户的影响:可能增加新用户试用和生产接入成本。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_32106da2cae04c0185f7a6331cd1ef8a | https://github.com/star-ga/mind-mem/issues/512 | 来源类型 github_issue 暴露的待验证使用条件。
19. 安全/权限坑 · 来源证据:`_handle_fed_resolve` accepts caller-supplied merged_payload without validating it against the conflict (http_transport…
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:
_handle_fed_resolveaccepts caller-supplied merged_payload without validating it against the conflict (http_transport.py:687-694) - 对用户的影响:可能影响授权、密钥配置或安全边界。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_7bba956cb937439b85b35fb2c150b7e2 | https://github.com/star-ga/mind-mem/issues/528 | 来源讨论提到 python 相关条件,需在安装/试用前复核。
20. 维护坑 · issue/PR 响应质量未知
- 严重度:low
- 证据强度:source_linked
- 发现:issue_or_pr_quality=unknown。
- 对用户的影响:用户无法判断遇到问题后是否有人维护。
- 建议检查:抽样最近 issue/PR,判断是否长期无人处理。
- 防护动作:issue/PR 响应未知时,必须提示维护风险。
- 证据:evidence.maintainer_signals | github_repo:1160652179 | https://github.com/star-ga/mind-mem | issue_or_pr_quality=unknown
21. 维护坑 · 发布节奏不明确
- 严重度:low
- 证据强度:source_linked
- 发现:release_recency=unknown。
- 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
- 建议检查:确认最近 release/tag 和 README 安装命令是否一致。
- 防护动作:发布节奏未知或过期时,安装说明必须标注可能漂移。
- 证据:evidence.maintainer_signals | github_repo:1160652179 | https://github.com/star-ga/mind-mem | release_recency=unknown
来源:Doramagic 发现、验证与编译记录