Skip to main content

🤔 aiduMEM — AI 思想引擎

优忆思理念——有上下文优化,有记忆体系,有思考集成

不只是记忆 — 是思考。

优化不是改重构代码,而是植入优秀的逻辑;
记忆不是记事,而是不忘过往的点点滴滴;
思考不是 reasoning,而是做所有事都有 reason,有 result。

Version PyPI Docker Image License: MIT Python 3.12+ Built on mem0

中文 | 📖 English


aiduMEM 是什么?

aiduMEM(优忆思)是一个 AI 思想引擎 —— 为 AI Agent 提供持久化记忆与推理能力。它不是简单的键值存储,而是让 AI 会记忆、会思考、会进化

基于 mem0 构建,aiduMEM 在其之上搭建了一套完整的 认知架构

层级 做什么 核心特性
🧠 记忆 在对的时间找到对的回忆 Ebbinghaus 遗忘曲线 + BM25/trigram + 向量混合检索
🔍 闸门 只检索真正相关的内容 相关性闸门拦截无关上下文 —— 快 100 倍
🌊 潮浪 批量 LLM 提取,不逐条调用 合并队列:异步短消息 → 单次 LLM 调用
📊 进化 知识生长与自我纠错 信任评分、用户纠正感知、知识整合
遗忘 遗忘是特性,不是 bug 情绪轨道加速衰减、身份轨道零衰减
🕰️ 克罗诺斯 时间感知的有效期 双时间轴(valid_from / valid_to),过期事实降权
🏛️ 万神殿 多 Agent 共享一套记忆 联邦身份 + MoE 门控 + 四级降级检索
🛡️ 埃癸斯 零硬编码,换机即跑 身份/路径/词表全部环境变量注入
🌈 伊里斯 走宿主官方记忆通道 Hermes MemoryProvider 插件:压缩前抢救 · 记忆镜像 · 工具直连

架构

┌──────────────────────────────────────────────────┐
│              🤔 aiduMEM — AI 思想引擎             │
│              FastAPI REST API :8767               │
├──────────────────────────────────────────────────┤
│  hot/        → 搜索、添加、增删改查(主路径)       │
│  speed/      → 异步合并 + 快速通道                 │
│  pipeline/   → 召回漏斗 + 混合检索                 │
│  salience/   → 信任评分 + 冲突检测                 │
│  legacy/     → 事实、观察、场景                    │
│  extended/   → 自动记忆、工作区、广播               │
│  federation/ → 多 Agent 联邦 · MoE 门控             │
├──────────────────────────────────────────────────┤
│  mem0(向量记忆)+ Qdrant(向量存储)              │
│  facts.db(结构化知识)                            │
│  FTS5 trigram(全文搜索兜底)                      │
└──────────────────────────────────────────────────┘

快速开始

方式一:从 PyPI 安装(最快捷)

pip install aidumem

方式二:Docker 容器运行(GitHub Packages / GHCR)

docker pull ghcr.io/monkey2jack/aidumem:latest
docker run -d -p 8767:8767 --name aidumem ghcr.io/monkey2jack/aidumem:latest

方式三:源码克隆运行

# 1. 克隆
git clone https://github.com/monkey2jack/aiduMEM.git
cd aiduMEM

# 2. 创建虚拟环境
python3.12 -m venv venv
source venv/bin/activate

# 3. 安装依赖
pip install -r requirements.txt

# 4. 配置(复制并编辑)
cp mem0_config_local.json.example mem0_config_local.json
# 编辑 mem0_config_local.json,填入你的 LLM 和 Embedding API Key

# 5. 启动
python api_server.py
# API 运行在 http://localhost:8767

接口列表

方法 路径 说明
POST /search 搜索记忆(混合:向量 + BM25 + 相关性闸门)
POST /add 添加记忆(默认异步合并)
DELETE /delete 按 ID 删除记忆
GET /health 健康检查 + 探针诊断
POST /search_trace 带完整执行链路的搜索
POST /graduate 扫描并毕业低价值记忆
POST /scene/cluster 将观察聚类为场景
GET /usage Token 用量统计
GET /add/coalesce/stats 潮浪合并统计
GET /federation/recall 联邦检索(MoE 门控自动决策热/联邦通道)
POST /federation/facts/add 联邦写入(自动去重 + 分层 + 归属)
GET /federation/agents Agent 列表(含事实数与在线状态)
POST /federation/agents/register 注册 Agent 到联邦
GET /federation/broadcast 拉取其他 Agent 的新共享事实
GET /federation/awareness 联邦态势摘要
GET /federation/tiers 分层分布与衰减配置

示例:搜索

curl -s -X POST http://localhost:8767/search \
  -H "Content-Type: application/json" \
  -d '{"query": "我之前说过项目截止日期是什么?", "user_id": "me", "limit": 5}'

示例:添加记忆

curl -s -X POST http://localhost:8767/add \
  -H "Content-Type: application/json" \
  -d '{"messages": "[{\"role\":\"user\",\"content\":\"项目截止日期是3月15号\"}]", "user_id": "me"}'

aduMEM 的独特之处

🔮 相关性闸门(Relevance Gate)

普通 RAG 系统对每条消息都去搜索记忆。aiduMEM 的相关性闸门用启发式 + 动态实体匹配判断当前消息是否真的需要记忆检索。日常闲聊直接跳过 → Token 消耗降低 100 倍,响应速度从 10ms 降到 1ms。

🌊 潮浪并忆(Tidal Coalescing)

短消息不逐条调用 LLM。异步缓冲后按 session 分组,一次 LLM 调用处理多条。Tech/intimate/default 三档策略,快冲慢攒各取所需。

⏳ 遗忘曲线衰减(Ebbinghaus Decay)

记忆有保质期。Identity 和 Preference 是永久轨道(零衰减),Emotion 是加速衰减(1.5 倍),一般事实按标准遗忘曲线自然消退。让 AI 学会忘记不重要的事。

🕰️ 克罗诺斯双时间轴(Chronos Dual Timeline)

valid_from / valid_to 时间窗口:过期事实降权但不删除,未生效事实排在后面。所有铁律类记忆(identity/preference lane)永不过期。

🏛️ 万神殿联邦记忆(Pantheon Federation)

万神殿里住着所有神,但每次只请出需要的那一位。

借鉴 MoE(Mixture-of-Experts)思想:底层建成完整的多 Agent 联邦基础设施,日常只激活当前 Agent 的热通道

  • 联邦身份:每条记忆都带 agent_id / profile / shared,多个 Agent 可共用一套库而互不污染
  • MoE 门控:默认走热通道(一次 SQL,5ms 级);仅在显式请求或查询含联邦意图时才唤起其他 Agent。单 Agent 环境永远不付联邦成本
  • 四级无缝降级:L1 本 Agent → L2 分层加权 → L3 同 profile 联邦 → L4 跨 profile 全局。任何一级异常自动跳下一级,永不整链失败
  • 分层衰减episodic 事件 30 天、semantic 配置 180 天、procedural 铁律永不衰减。衰减只降权不删行
  • 写入去重:Jaccard 三态判定——≥0.85 合并、≥0.70 更新、<0.70 新增。不写垃圾比事后清理便宜一百倍
  • 游标广播:拉取其他 Agent 的新共享事实,不重不漏、只读聚合不产生副本
# 注册一个 Agent 到联邦
curl -X POST "http://localhost:8767/federation/agents/register?agent_id=agent_b&profile=default"

# 联邦检索(门控自动决策)
curl "http://localhost:8767/federation/recall?query=项目截止日期&agent_id=agent_b&top_k=5"

🛡️ 埃癸斯护盾(Aegis · v14 新增)

神盾护住的不是代码,是代码背后的人。

仓库里没有任何硬编码的身份、绝对路径、服务器地址或密钥。仓库根由 __file__ 自动解析,一切可变项走环境变量注入(见 环境变量)。克隆到任何目录、任何机器,python api_server.py 直接跑。

🌈 伊里斯彩虹桥(Iris · v15 新增)

信使不只送信,还要确认信真的送到了。

v15 起 aiduMEM 提供 Hermes Agent 官方 MemoryProvider 插件,不再依赖 shell hook 解析 payload 字段:

cp -r integrations/hermes-plugin/aidumem ~/.hermes/plugins/
hermes config set memory.provider aidumem

接通后拿到全套生命周期钩子——turn 开头注入常驻块与相关检索、每轮后台归档、 压缩前把即将丢掉的对话先落进长期记忆、镜像宿主内置 MEMORY.md 写入、 三个可直接调用的工具(aidumem_search / aidumem_remember / aidumem_status)、 数据目录纳入宿主备份。详见 integrations/INTEGRATION_GUIDE.md

同版本一并修掉了三类静默失效——注入链断了不出声、词表漏配了不出声、 启动缺配置不出声。现在都会明确告警:

  • shell hook 的 payload 解析改为三层兼容(extra.conversation_history / 顶层 / 旧 messages
  • 相关性闸门与实体抽取的词表改为惰性编译 + 热更新,不再在 import 时定死
  • AIDUMEM_ENTITY_KEYWORDS 未配置时,启动日志与 /health 探针都会显式提示

🔧 零配置混合检索

BM25 trigram(零延迟兜底) + BGE-M3 向量 + Reranker 重排序 + 召回漏斗相关性排序。向量服务超时自动热切换到本地全文搜索。

接入 Hermes Agent

方式 能力 何时用
A. MemoryProvider 插件(推荐) 全生命周期钩子 + 工具 + 备份 默认选这个
B. Shell Hook 仅 turn 开头注入 宿主不方便装插件时

两种方式不要同时开(会重复注入白烧 token)。完整步骤、验证方法与回滚见 integrations/INTEGRATION_GUIDE.md

⚠️ 安全:aiduMEM 服务自身不做鉴权,默认只监听 127.0.0.1。要跨机访问请在前面 挂带认证 + TLS 的反向代理,别把服务直接暴露到公网——那等于把全部记忆公开可读可写。

技术栈

  • 运行时:Python 3.12+、FastAPI、Uvicorn
  • 记忆内核:mem0 v2.0.5
  • 向量存储:Qdrant(通过 qdrant-client)
  • 结构化数据:SQLite(facts.db、observations.db、scenes.db)
  • 全文搜索:SQLite FTS5 + trigram 分词器
  • 向量化:可配置(兼容 OpenAI Embedding API)
  • 重排序:可配置(兼容 OpenAI Rerank API)
  • 大模型:兼容任何 OpenAI 格式的 API

配置说明

aiduMEM 从 mem0_config_local.json 读取配置。主要字段:

{
  "llm": {
    "provider": "openai",
    "config": {
      "model": "你的模型",
      "api_key": "你的密钥",
      "base_url": "你的接口地址"
    }
  },
  "embedder": {
    "provider": "openai",
    "config": {
      "model": "BAAI/bge-m3",
      "api_key": "你的密钥",
      "base_url": "your-embedding-endpoint"
    }
  },
  "vector_store": {
    "provider": "qdrant",
    "config": {
      "collection_name": "aidu_mem",
      "host": "localhost",
      "port": 6333
    }
  }
}

环境变量

v14 Aegis 起,所有与部署环境相关的可变项都通过环境变量注入,全部可选——不设置就走安全默认值。

变量 默认值 说明
AIDUMEM_HOME 仓库根(__file__ 自动解析) 覆盖仓库根目录
AIDUMEM_DATA_DIR <repo>/data 数据库与向量库落盘位置
AIDUMEM_LOG_DIR <repo>/logs 日志目录
AIDUMEM_CONFIG_FILE <repo>/mem0_config_local.json mem0 配置文件路径
AIDUMEM_DEFAULT_USER_ID default 默认 user_id
AIDUMEM_DEFAULT_AGENT_ID default 联邦默认 agent_id
AIDUMEM_DEFAULT_AGENT_NAME Default Agent 联邦默认 agent 显示名
AIDUMEM_API_BASE http://127.0.0.1:8767 脚本调用 API 的基址
AIDUMEM_SERVICE aidumem-api systemd 服务名(升级检查脚本用)
AIDUMEM_ENTITY_KEYWORDS 相关性闸门的自定义实体词表,| 分隔,如 Alice|Bob|ProjectX
AIDUMEM_SERVER_KEYWORDS 运维类查询的自定义关键词
AIDUMEM_DATE_KEYWORDS 日期类查询的自定义关键词
AIDUMEM_L0_CATEGORIES 铁律,暗号,认证 零衰减(L0)category 白名单
AIDUMEM_L1_PREFIXES 按前缀归入 L1 的 category
AIDUMEM_HOST_STATE_DB 宿主 Agent 的 state.db,用于自动记忆抽取;不设则跳过
AIDUMEM_HOST_MEMORY_MD 宿主 MEMORY.md 路径,用于 mem0_sync.py
AIDUMEM_ROUTER_* 可选的上游 LLM 网关用量采集(见 ducky/router_usage.py 头注释)
AIDUMEM_URL http://127.0.0.1:8767 Hermes 插件 / hook 访问服务的地址
AIDUMEM_USER_ID default Hermes 插件 / hook 使用的记忆命名空间
AIDUMEM_MIN_HISTORY 6 shell hook:会话历史少于这个条数就不注入

完整清单连注释见仓库根的 .env.examplecp .env.example .env 起步。 systemd 单元模板见 deploy/aidumem-api.service

例:把数据放到独立盘、自定义实体词表

export AIDUMEM_DATA_DIR=/data/aidumem
export AIDUMEM_ENTITY_KEYWORDS="Alice|Bob|ProjectX"
python api_server.py

路线图

  • MCP(Model Context Protocol)服务端模式
  • 多 Agent / 多 Profile 联邦记忆(v13.0 Pantheon ✅)
  • 零硬编码可移植部署(v14.0 Aegis ✅)
  • Hermes 官方 MemoryProvider 插件(v15.0 Iris ✅)
  • 跨机器联邦(HTTP 对端拉取,非同库)
  • 多用户工作区隔离
  • 记忆整合仪表盘
  • 自定义衰减曲线插件系统
  • REST API → GraphQL 适配器

参与贡献

欢迎贡献!请先开一个 Issue 讨论你想做的改动。

许可证

MIT 许可证 — 详见 LICENSE


思考版本 · Iris·伊里斯 | 由 monkey2jack & Aowen 构建

Release files for aidumem 17.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aidumem 17.0.2
File Size Uploaded
aidumem-17.0.2.tar.gz 158.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aidumem 17.0.2
File Interpreter ABI Platform
aidumem-17.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 350.5 kB

Release files / aidumem-17.0.2.tar.gz

Download URL aidumem-17.0.2.tar.gz
Size 158.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a16ef05ecbd46b4eb8022c4cbf9d0dca3588986f3208f7425111961dd0f72aa3
BLAKE2b-256 checksum
How to use checksums
ca6dc312d09bcf28d626b2ec58eac7b59bfabf283d6e01e4c36498834084e842
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / aidumem-17.0.2-py3-none-any.whl

Download URL aidumem-17.0.2-py3-none-any.whl
Size 191.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ea00b44549c90ed072766212db8643c32e79969e24c7c57b18c72b829739a66e
BLAKE2b-256 checksum
How to use checksums
c6de07aa8a2117c603ae227f9ad6847fa555b3de0d7443b95888ace5280df941
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

17.0.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page