关于 Aimemo
Aimemo 是面向 AI Agent 的本地优先 MCP 记忆服务,以无依赖的单个 Go 二进制文件分发。它将项目上下文存入 `.aimemo/`,对记忆进行排序搜索,并提供 CLI 管理同一数据。
主要功能
- 01项目本地 SQLite 记忆
- 02排序后的全文搜索
- 03存储、关联和遗忘记忆
- 04通过 CLI 检查和编辑
- 05支持 Markdown 与 JSON 导入导出
- 06为技能记忆设置独立上下文
适用场景
- 01在不同编码会话间延续项目上下文
- 02找回先前的决策和阻塞事项
- 03为每个 OpenClaw 技能隔离记忆
- 04在终端检查或导出 Agent 记忆
MCP 相关
以 stdio MCP 服务运行,提供加载、存储、搜索、遗忘和关联记忆的工具。兼容 MCP 的客户端可将其作为本地进程管理,`aimemo` CLI 也能访问同一数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
aimemo
为 AI Agent 提供零依赖的 MCP 记忆服务——持久化、可搜索、本地优先、单一二进制文件。
$ claude "let's keep working on the payment service"
╭─ memory_context ──────────────────────────────────────────────────╮
│ [project: payment-service] │
│ │
│ Last session (3 days ago): │
│ • Stripe webhook signature verification — DONE │
│ • Idempotency key refactor — IN PROGRESS │
│ • Blocked: race condition in concurrent refund handler │
│ │
│ Related: Redis connection pool, pkg/payments/refund.go │
╰───────────────────────────────────────────────────────────────────╯
Picking up where we left off. The race condition in the refund
handler looks like a missing mutex around the in-flight map.
Let me check pkg/payments/refund.go ...
[... Claude works through the fix ...]
╭─ memory_store (journal) ──────────────────────────────────────────╮
│ Resolved refund race — added sync.Mutex around inFlightRefunds. │
│ Tests passing. Next: load test with k6 at 500 rps. │
╰───────────────────────────────────────────────────────────────────╯
🧠 为什么选择 aimemo
- 无需维护基础设施。 单一 Go 二进制文件。无需 Docker、Node.js 运行时、云账户或 API 密钥。30 秒即可通过
brew install安装。 - 记忆随项目保存。 数据存储在代码旁边的
.aimemo/中——可以提交到 Git,也可以添加到.gitignore。切换分支时,记忆会随目录一起保留。 - Claude 能准确接续上次的工作。 每次会话开始时都会自动调用
memory_context。Claude 可以看到之前在做什么、遇到了什么阻碍、做出了哪些决定。你无需再反复说明。 - 全文搜索,排序准确。 使用 FTS5 和 BM25 评分,并根据近期程度和访问频率加权。相关记忆优先显示;过时内容会自然淡出。
- 支持并发会话,不会损坏数据。 SQLite WAL 模式允许多个 Claude 窗口同时写入,互不阻塞。
- 一切由你掌控。 Claude 能使用的每个工具,你都能在终端中使用。检查、编辑、撤回、导出。你的记忆采用可读的 Markdown 或 JSON 格式,绝不会被锁定在专有格式中。
⚡ 快速开始
# 1. Install
# Linux/macOS (one-line install):
curl -sSL https://raw.githubusercontent.com/MyAgentHubs/aimemo/main/install.sh | bash
# Or macOS via Homebrew:
brew install MyAgentHubs/tap/aimemo
# 2. Initialize memory for your project (run from project root)
aimemo init
# 3. Register with Claude Code
claude mcp add-json aimemo-memory '{"command":"aimemo","args":["serve"]}'
重启 Claude Code。在下次会话中,Claude 会自动加载项目上下文。
OpenClaw 快速开始
如果你使用 OpenClaw 技能,请参阅下方的 OpenClaw 集成部分,了解如何隔离每项技能的记忆。
🔧 工作原理
aimemo serve 会作为 stdio MCP 服务运行;Claude Code 会管理其进程生命周期,因此你无需自行维持进程运行。Claude 开始会话时,会调用 memory_context 加载相关的历史上下文;工作过程中,会调用 memory_store 和 memory_link 记录决策和关系。你可以随时调用 aimemo search、aimemo list 或 aimemo get,在终端中读取或编辑相同的数据。所有数据都存储在 .aimemo/ 中的 SQLite 数据库里,程序会从当前目录向上查找该数据库——方式与 Git 查找 .git/ 相同。
🛠 MCP 工具
| 工具 | 描述 | Claude 调用时机 |
|---|---|---|
memory_context | 返回当前项目中按相关性排序的近期观察记录 | 会话开始时——自动调用 |
memory_store | 保存一条观察记录(事实、决策、日志条目、待办事项) | 完成任务或做出决定后 |
memory_search | 对所有观察记录进行全文搜索,并按 BM25 排序 | 需要回忆具体内容时 |
memory_forget | 根据 ID 软删除一条观察记录 | 收到指示要丢弃内容时 |
memory_link | 在两条观察记录之间创建具名关系 | 发现依赖关系或关联时 |
所有工具架构的总长度不到 2,000 个 token。每次调用都有严格的 5 秒超时——服务绝不会让会话卡住。空状态查询可在 5 ms 内返回。
📋 CLI 参考
设置
| 命令 | 描述 |
|---|---|
aimemo init | 在当前目录中创建 .aimemo/ |
aimemo serve | 启动 MCP stdio 服务(由 Claude Code 自动调用) |
aimemo doctor | 验证数据库健康状态、FTS5 支持、WAL 模式和 MCP 注册情况 |
记忆
| 命令 | 描述 |
|---|---|
aimemo add <name> <type> [observations...] [--tag] | 添加一个包含一条或多条观察记录的实体 |
aimemo observe <entity-name> <observation> | 为现有实体添加一条新观察记录 |
aimemo retract <entity-name> <observation> | 从实体中移除一条指定的观察记录 |
aimemo forget <entity-name> [--permanent] | 软删除实体(可恢复);使用 --permanent 可永久删除 |
aimemo search <query> | 全文搜索并按相关性排序显示结果 |
aimemo get <entity-name> | 显示实体及其所有观察记录和关系 |
aimemo link <from> <relation> <to> | 在两个实体之间创建指定类型的关系 |
aimemo append <entity-name> <observation> | 为实体添加一条观察记录(observe 的别名) |
日志
| 命令 | 描述 |
|---|---|
aimemo journal | 打开交互式日志条目(遵循 $EDITOR 设置) |
aimemo journal <text> | 快速记录一条内联日志 |
检查与导出
| 命令 | 描述 |
|---|---|
aimemo list | 列出最近的观察记录 |
aimemo tags | 列出所有正在使用的标签 |
aimemo stats | 显示数据库大小、观察记录数量和最近写入时间 |
aimemo export --format md | 将所有记忆导出为 Markdown |
aimemo export --format json | 将所有记忆导出为 JSON |
aimemo import <file> | 从 JSONL 或 JSON 导出文件导入 |
所有命令都接受 --context <name>,用于指定命名上下文(.aimemo/ 中的独立 .db 文件)。
⚙️ 配置
~/.aimemo/config.toml — 全局默认值,所有配置项均为可选:
[defaults]
context = "main" # default context name
max_results = 20 # observations returned by memory_context
[scoring]
recency_weight = 0.7 # 0–1, weight of recency vs. access frequency
[server]
timeout_ms = 5000 # hard timeout on every MCP call
log_level = "warn" # "debug" | "info" | "warn" | "error"
项目级覆盖配置位于项目根目录的 .aimemo/config.toml 中,使用相同的键;项目配置优先于全局配置。
🤖 Claude Code 集成
在每台机器上注册一次服务:
claude mcp add-json aimemo-memory '{"command":"aimemo","args":["serve"]}'
将以下内容添加到项目的 CLAUDE.md,以便 Claude 知道记忆功能可用以及如何使用:
## Memory
This project uses aimemo for persistent memory across sessions.
- Call `memory_context` at the start of every session to load prior context.
- Call `memory_store` with `type: journal` before ending a session to record
what was completed, what is still in progress, and any blockers.
- Use `memory_link` to connect related observations (e.g. a bug to its fix,
a decision to its rationale).
- Do not store secrets, credentials, or PII.
🦞 OpenClaw 集成
aimemo 通过按技能隔离记忆和零基础设施,解决 OpenClaw“什么都记住,却什么都不理解”的问题。
为什么为 OpenClaw 选择 aimemo?
问题:
- OpenClaw 原生的 Markdown 记忆会随着使用越来越糟
- 技能共享记忆,导致相互污染
- 上下文压缩会丢失重要内容
解决方案:
- ✅ 零依赖 — 单个 Go 二进制文件,无需 Docker/Node.js/数据库
- ✅ 按技能隔离 — 每个技能都有自己的记忆数据库
- ✅ 真正有效 — BM25 搜索 + 重要性评分,帮你找到重要内容
- ✅ 本地优先 — 所有数据都保留在你的机器上
与其他解决方案对比:
| aimemo | Cognee | memsearch | Supermemory | |
|---|---|---|---|---|
| 依赖项 | 无 | Neo4j/Kuzu | Milvus | 云服务 |
| 安装 | 30 秒 | 复杂 | 复杂 | 需要注册 |
| 技能隔离 | 内置 | 手动 | 手动 | 不适用 |
| Linux 支持 | ✅ 原生 | ✅ | ✅ | 不适用 |
5 分钟快速设置
# 1. Install (Linux amd64/arm64)
curl -sSL https://raw.githubusercontent.com/MyAgentHubs/aimemo/main/install.sh | bash
# 2. Register MCP server with OpenClaw
claude mcp add-json aimemo-memory '{"command":"aimemo","args":["serve"]}'
# Or add to ~/.openclaw/openclaw.json:
# {
# "mcpServers": {
# "aimemo-memory": {
# "command": "/usr/local/bin/aimemo",
# "args": ["serve"]
# }
# }
# }
# 3. Initialize workspace memory
cd ~/.openclaw/workspace
aimemo init
# 4. Restart OpenClaw Gateway
# Linux: systemctl --user restart openclaw-gateway
# macOS: launchctl stop com.openclaw.gateway && launchctl start com.openclaw.gateway
按技能隔离记忆
通过使用 context 参数,为每个技能提供独立的记忆:
在你的 SKILL.md 中:
---
name: my-skill
description: A skill with persistent memory
---
# My Skill
## Instructions
When doing work:
1. **Load memory FIRST**:
memory_context({context: "my-skill"})
2. Do your task with loaded context
3. **Store learnings**:
memory_store({ context: "my-skill", entities: [{ name: "preferences", entityType: "config", observations: ["User prefers snake_case"] }] })
**CRITICAL**: Always pass `context: "my-skill"` to prevent memory pollution.
结果:
~/.openclaw/workspace/.aimemo/
├── memory.db # Shared/default (no context)
├── memory-skill-a.db # Skill A's isolated memory
├── memory-skill-b.db # Skill B's isolated memory
└── memory-skill-c.db # Skill C's isolated memory
完整示例
参见 examples/openclaw-github-pr-reviewer/,了解一个可完整运行的技能,该技能可以:
- 审查 GitHub PR
- 学习代码风格偏好
- 跨会话记住模式
- 保存反馈以持续改进
文档
- OpenClaw 集成指南 — 分步设置
- OpenClaw 工作流 — 深入了解架构
- 示例技能 — 完整实现
调试
# List a skill's memory
aimemo list --context my-skill
# Search within a skill
aimemo search "keyword" --context my-skill
# Export for inspection
aimemo export --context my-skill --format json > memory.json
# Get database stats
aimemo stats --context my-skill
🖥 客户端支持
aimemo 可与任何兼容 MCP 的 AI 编码客户端配合使用。服务命令始终为 aimemo serve。
PATH 提示(macOS/Homebrew): 图形界面应用可能无法继承 shell PATH。如果客户端找不到
aimemo,请改用绝对路径/opt/homebrew/bin/aimemo。
Claude Code
claude mcp add-json aimemo-memory '{"command":"aimemo","args":["serve"]}'
也可以将 .mcp.json 提交到项目根目录(示例请参阅本仓库中的文件)。
Cursor
项目本地配置(.cursor/mcp.json)或全局配置(~/.cursor/mcp.json):
{
"mcpServers": {
"aimemo-memory": {
"command": "aimemo",
"args": ["serve"]
}
}
}
Windsurf
编辑 ~/.codeium/windsurf/mcp_config.json(仅限全局配置):
{
"mcpServers": {
"aimemo-memory": {
"command": "aimemo",
"args": ["serve"]
}
}
}
OpenAI Codex CLI
项目本地配置(.codex/config.toml)或全局配置(~/.codex/config.toml):
[mcp_servers.aimemo-memory]
command = "aimemo"
args = ["serve"]
Cline(VS Code)
编辑 ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json:
{
"mcpServers": {
"aimemo-memory": {
"command": "aimemo",
"args": ["serve"],
"disabled": false,
"alwaysAllow": []
}
}
}
Continue(VS Code / JetBrains)
项目本地配置(.continue/mcpServers/aimemo-memory.yaml):
name: aimemo-memory
version: 0.0.1
schema: v1
mcpServers:
- name: aimemo-memory
command: aimemo
args:
- serve
或者在全局 ~/.continue/config.yaml 的 mcpServers: 键下添加配置。
Zed
在 ~/.zed/settings.json(全局)或 .zed/settings.json(项目本地)中配置:
{
"context_servers": {
"aimemo-memory": {
"source": "custom",
"command": "aimemo",
"args": ["serve"],
"env": {}
}
}
}
🤝 贡献
请通过 GitHub Issues 提交错误报告和功能请求。欢迎提交 Pull Request——对于任何较大的改动,请先创建 issue,以便我们在你投入时间编写代码前就方向达成一致。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。