English | Français | Español | Deutsch | Italiano | Português | Nederlands | Polski | Русский | 日本語 | 中文 | العربية | 한국어
AI 智能体的永久记忆。单一二进制文件,零依赖,原生 MCP 支持。
ICM 为您的 AI 智能体提供真正的记忆——不是笔记工具,不是上下文管理器,而是真正的记忆。
ICM (Infinite Context Memory)
┌──────────────────────┬─────────────────────────┐
│ MEMORIES(主题) │ MEMOIRS(知识) │
│ │ │
│ 情节性,具有时间性 │ 永久性,结构化 │
│ │ │
│ ┌───┐ ┌───┐ ┌───┐ │ ┌───┐ │
│ │ m │ │ m │ │ m │ │ │ C │──depends_on──┐ │
│ └─┬─┘ └─┬─┘ └─┬─┘ │ └───┘ │ │
│ │decay │ │ │ │ refines ┌─▼─┐│
│ ▼ ▼ ▼ │ ┌─▼─┐ │ C ││
│ 权重随时间衰减 │ │ C │──part_of──>└───┘│
│ 除非被访问或 │ └───┘ │
│ 标记为关键 │ 概念 + 关系 │
├──────────────────────┴─────────────────────────┤
│ SQLite + FTS5 + sqlite-vec │
│ 混合搜索:BM25(30%)+ 余弦(70%) │
└─────────────────────────────────────────────────┘
两种记忆模型:
- Memories(记忆) — 按重要性进行时间衰减的存储与召回。关键记忆永不消逝,低重要性记忆自然衰减。可按主题或关键词过滤。
- Memoirs(回忆录) — 永久知识图谱。概念通过有类型的关系相互连接(
depends_on、contradicts、superseded_by等)。可按标签过滤。 - Feedback(反馈) — 记录 AI 预测错误时的纠正。在做出新预测前搜索过去的错误。闭环学习。
# Homebrew(macOS / Linux)
brew tap rtk-ai/tap && brew install icm
# 快速安装
curl -fsSL https://raw.githubusercontent.com/rtk-ai/icm/main/install.sh | sh
# 从源码编译
cargo install --path crates/icm-cli# 自动检测并配置所有支持的工具
icm init一条命令配置 17 个工具(完整集成指南):
| 工具 | MCP | 钩子 | CLI | 技能 |
|---|---|---|---|---|
| Claude Code | ~/.claude.json |
5 个钩子 | CLAUDE.md |
/recall /remember |
| Claude Desktop | JSON | — | — | — |
| Gemini CLI | ~/.gemini/settings.json |
5 个钩子 | GEMINI.md |
— |
| Codex CLI | ~/.codex/config.toml |
4 个钩子 | AGENTS.md |
— |
| Copilot CLI | ~/.copilot/mcp-config.json |
4 个钩子 | .github/copilot-instructions.md |
— |
| Cursor | ~/.cursor/mcp.json |
— | — | .mdc 规则 |
| Windsurf | JSON | — | .windsurfrules |
— |
| VS Code | ~/Library/.../Code/User/mcp.json |
— | — | — |
| Amp | JSON | — | — | /icm-recall /icm-remember |
| Amazon Q | JSON | — | — | — |
| Cline | VS Code globalStorage | — | — | — |
| Roo Code | VS Code globalStorage | — | — | .md 规则 |
| Kilo Code | VS Code globalStorage | — | — | — |
| Zed | ~/.zed/settings.json |
— | — | — |
| OpenCode | JSON | TS 插件 | — | — |
| Continue.dev | ~/.continue/config.yaml |
— | — | — |
| Aider | — | — | .aider.conventions.md |
— |
或手动配置:
# Claude Code
claude mcp add icm -- icm serve
# 紧凑模式(更短的响应,节省 token)
claude mcp add icm -- icm serve --compact
# 任意 MCP 客户端:command = "icm",args = ["serve"]icm init --mode skill为 Claude Code 安装斜杠命令和规则(/recall、/remember),为 Cursor 安装(.mdc 规则),为 Roo Code 安装(.md 规则),为 Amp 安装(/icm-recall、/icm-remember)。
icm init --mode hook为所有支持的工具安装自动提取和自动召回钩子:
| 工具 | SessionStart | PreTool | PostTool | Compact | PromptRecall | 配置 |
|---|---|---|---|---|---|---|
| Claude Code | icm hook start |
icm hook pre |
icm hook post |
icm hook compact |
icm hook prompt |
~/.claude/settings.json |
| Gemini CLI | icm hook start |
icm hook pre |
icm hook post |
icm hook compact |
icm hook prompt |
~/.gemini/settings.json |
| Codex CLI | icm hook start |
icm hook pre |
icm hook post |
— | icm hook prompt |
~/.codex/hooks.json |
| Copilot CLI | icm hook start |
icm hook pre |
icm hook post |
— | icm hook prompt |
.github/hooks/icm.json |
| OpenCode | session start | — | tool extract | compaction | — | ~/.config/opencode/plugins/icm.ts |
每个钩子的功能:
| 钩子 | 功能 |
|---|---|
icm hook start |
在会话开始时注入关键/高重要性记忆的唤醒包(约 500 token) |
icm hook pre |
自动允许 icm CLI 命令(无需权限提示) |
icm hook post |
每 N 次调用从工具输出中提取事实(自动提取) |
icm hook compact |
在上下文压缩前从对话记录中提取记忆 |
icm hook prompt |
在每次用户提示开始时注入召回的上下文 |
ICM 可通过 CLI(icm 命令)或 MCP 服务器(icm serve)使用。两者访问同一数据库。
| CLI | MCP | |
|---|---|---|
| 延迟 | ~30ms(直接二进制) | ~50ms(JSON-RPC stdio) |
| Token 开销 | 0(基于钩子,透明) | ~20-50 token/调用(工具 schema) |
| 配置 | icm init --mode hook |
icm init --mode mcp |
| 适用工具 | Claude Code、Gemini、Codex、Copilot、OpenCode(通过钩子) | 全部 17 个兼容 MCP 的工具 |
| 自动提取 | 是(钩子触发 icm extract) |
是(MCP 工具调用 store) |
| 最适合 | 高级用户,节省 token | 通用兼容性 |
# 存储
icm store -t "my-project" -c "Use PostgreSQL for the main DB" -i high -k "db,postgres"
# 召回
icm recall "database choice"
icm recall "auth setup" --topic "my-project" --limit 10
icm recall "architecture" --keyword "postgres"
# 管理
icm forget <memory-id>
icm consolidate --topic "my-project"
icm topics
icm stats
# 从文本中提取事实(基于规则,零 LLM 开销)
echo "The parser uses Pratt algorithm" | icm extract -p my-project# 创建回忆录
icm memoir create -n "system-architecture" -d "System design decisions"
# 添加带标签的概念
icm memoir add-concept -m "system-architecture" -n "auth-service" \
-d "Handles JWT tokens and OAuth2 flows" -l "domain:auth,type:service"
# 连接概念
icm memoir link -m "system-architecture" --from "api-gateway" --to "auth-service" -r depends-on
# 按标签过滤搜索
icm memoir search -m "system-architecture" "authentication"
icm memoir search -m "system-architecture" "service" --label "domain:auth"
# 检视邻域
icm memoir inspect -m "system-architecture" "auth-service" -D 2
# 导出图谱(格式:json、dot、ascii、ai)
icm memoir export -m "system-architecture" -f ascii # 带置信度条的框图
icm memoir export -m "system-architecture" -f dot # Graphviz DOT(颜色 = 置信度)
icm memoir export -m "system-architecture" -f ai # 为 LLM 上下文优化的 Markdown
icm memoir export -m "system-architecture" -f json # 包含所有元数据的结构化 JSON
# 生成 SVG 可视化
icm memoir export -m "system-architecture" -f dot | dot -Tsvg > graph.svg| 工具 | 描述 |
|---|---|
icm_memory_store |
存储,自动去重(相似度 >85% → 更新而非重复创建) |
icm_memory_recall |
按查询搜索,可按主题和/或关键词过滤 |
icm_memory_update |
就地编辑记忆(内容、重要性、关键词) |
icm_memory_forget |
按 ID 删除记忆 |
icm_memory_consolidate |
将某主题的所有记忆合并为一个摘要 |
icm_memory_list_topics |
列出所有主题及其数量 |
icm_memory_stats |
全局记忆统计 |
icm_memory_health |
按主题的健康审计(陈旧度、是否需要整合) |
icm_memory_embed_all |
为向量搜索补全嵌入向量 |
| 工具 | 描述 |
|---|---|
icm_memoir_create |
创建新的回忆录(知识容器) |
icm_memoir_list |
列出所有回忆录 |
icm_memoir_show |
显示回忆录详情及所有概念 |
icm_memoir_add_concept |
添加带标签的概念 |
icm_memoir_refine |
更新概念的定义 |
icm_memoir_search |
全文搜索,可选按标签过滤 |
icm_memoir_search_all |
跨所有回忆录搜索 |
icm_memoir_link |
在概念之间创建有类型的关系 |
icm_memoir_inspect |
检视概念及图谱邻域(BFS) |
icm_memoir_export |
导出图谱(json、dot、ascii、ai),含置信度级别 |
| 工具 | 描述 |
|---|---|
icm_feedback_record |
当 AI 预测错误时记录纠正 |
icm_feedback_search |
搜索过去的纠正以指导未来的预测 |
icm_feedback_stats |
反馈统计:总数、按主题细分、应用最多的条目 |
part_of · depends_on · related_to · contradicts · refines · alternative_to · caused_by · instance_of · superseded_by
情节记忆(主题) 捕获决策、错误、偏好。每条记忆都有一个随时间按重要性衰减的权重:
| 重要性 | 衰减 | 修剪 | 行为 |
|---|---|---|---|
critical |
无 | 永不 | 永不遗忘,永不修剪 |
high |
慢(0.5x 速率) | 永不 | 缓慢消退,永不自动删除 |
medium |
正常 | 是 | 标准衰减,权重低于阈值时修剪 |
low |
快(2x 速率) | 是 | 迅速遗忘 |
衰减是访问感知的:频繁召回的记忆衰减更慢(decay / (1 + access_count × 0.1))。在召回时自动应用(如果距上次衰减超过 24 小时)。
记忆健康内置功能:
- 自动去重:存储与同主题现有记忆相似度 >85% 的内容时,更新而非创建重复项
- 整合提示:当主题超过 7 条记录时,
icm_memory_store会提示调用者进行整合 - 健康审计:
icm_memory_health报告每个主题的条目数、平均权重、陈旧条目及整合需求 - 无静默数据丢失:关键和高重要性记忆永不自动修剪
语义记忆(回忆录) 将结构化知识捕获为图谱。概念是永久性的——它们被精炼,永不衰减。使用 superseded_by 标记过时事实,而不是删除它们。
启用嵌入时,ICM 使用混合搜索:
- FTS5 BM25(30%)— 全文关键词匹配
- 余弦相似度(70%)— 通过 sqlite-vec 进行语义向量搜索
默认模型:intfloat/multilingual-e5-base(768 维,支持 100+ 种语言)。可在配置文件中设置:
[embeddings]
# enabled = false # 完全禁用(不下载模型)
model = "intfloat/multilingual-e5-base" # 768d,多语言(默认)
# model = "intfloat/multilingual-e5-small" # 384d,多语言(更轻量)
# model = "intfloat/multilingual-e5-large" # 1024d,多语言(最高精度)
# model = "Xenova/bge-small-en-v1.5" # 384d,仅英文(最快)
# model = "jinaai/jina-embeddings-v2-base-code" # 768d,代码优化若要完全跳过嵌入模型下载,可使用以下任一方式:
icm --no-embeddings serve # CLI 标志
ICM_NO_EMBEDDINGS=1 icm serve # 环境变量或在配置文件中设置 enabled = false。ICM 将回退到 FTS5 关键词搜索(仍然有效,只是没有语义匹配)。
更换模型会自动重建向量索引(现有嵌入将被清除,可通过 icm_memory_embed_all 重新生成)。
单一 SQLite 文件。无外部服务,无网络依赖。
~/Library/Application Support/dev.icm.icm/memories.db # macOS
~/.local/share/dev.icm.icm/memories.db # Linux
C:\Users\<user>\AppData\Local\icm\icm\data\memories.db # Windows
icm config # 显示当前配置配置文件位置(平台特定,或使用 $ICM_CONFIG):
~/Library/Application Support/dev.icm.icm/config.toml # macOS
~/.config/icm/config.toml # Linux
C:\Users\<user>\AppData\Roaming\icm\icm\config\config.toml # Windows
所有选项请参见 config/default.toml。
ICM 通过三个层次自动提取记忆:
第 0 层:模式钩子 第 1 层:PreCompact 第 2 层:UserPromptSubmit
(零 LLM 开销) (零 LLM 开销) (零 LLM 开销)
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ PostToolUse 钩子 │ │ PreCompact 钩子 │ │ UserPromptSubmit │
│ │ │ │ │ │
│ • Bash 错误 │ │ 上下文即将被压缩→ │ │ 用户发送提示 │
│ • git 提交 │ │ 在压缩前从对话 │ │ → icm recall │
│ • 配置变更 │ │ 记录中提取记忆 │ │ → 注入上下文 │
│ • 决策 │ │ 以免永久丢失 │ │ │
│ • 偏好 │ │ │ │ 智能体启动时 │
│ • 学习 │ │ 相同模式 + │ │ 已加载相关记忆 │
│ • 约束 │ │ --store-raw 回退 │ │ │
│ │ │ │ │ │
│ 基于规则,无 LLM │ └──────────────────┘ └──────────────────┘
└──────────────────┘
| 层次 | 状态 | LLM 开销 | 钩子命令 | 描述 |
|---|---|---|---|---|
| 第 0 层 | 已实现 | 0 | icm hook post |
从工具输出中进行基于规则的关键词提取 |
| 第 1 层 | 已实现 | 0 | icm hook compact |
在上下文压缩前从对话记录中提取 |
| 第 2 层 | 已实现 | 0 | icm hook prompt |
在每次用户提示时注入召回的记忆 |
所有 3 个层次均通过 icm init --mode hook 自动安装。
| 系统 | 方法 | LLM 开销 | 延迟 | 是否捕获压缩? |
|---|---|---|---|---|
| ICM | 3 层提取 | 0 至 ~500 token/会话 | 0ms | 是(PreCompact) |
| Mem0 | 每条消息 2 次 LLM 调用 | ~2k token/消息 | 200-2000ms | 否 |
| claude-mem | PostToolUse + 异步 | ~1-5k token/会话 | 8ms 钩子 | 否 |
| MemGPT/Letta | 智能体自管理 | 0 边际成本 | 0ms | 否 |
| DiffMem | 基于 Git 差异 | 0 | 0ms | 否 |
ICM Benchmark (1000 memories, 384d embeddings)
──────────────────────────────────────────────────────────
Store (no embeddings) 1000 ops 34.2 ms 34.2 µs/op
Store (with embeddings) 1000 ops 51.6 ms 51.6 µs/op
FTS5 search 100 ops 4.7 ms 46.6 µs/op
Vector search (KNN) 100 ops 59.0 ms 590.0 µs/op
Hybrid search 100 ops 95.1 ms 951.1 µs/op
Decay (batch) 1 ops 5.8 ms 5.8 ms/op
──────────────────────────────────────────────────────────
Apple M1 Pro,内存 SQLite,单线程。icm bench --count 1000
使用真实 Rust 项目(12 个文件,约 550 行)的多会话工作流。第 2 次及之后的会话收益最大,因为 ICM 召回记忆而无需重新读取文件。
ICM Agent Benchmark (10 sessions, model: haiku, 3 runs averaged)
══════════════════════════════════════════════════════════════════
Without ICM With ICM Delta
Session 2 (recall)
Turns 5.7 4.0 -29%
Context (input) 99.9k 67.5k -32%
Cost $0.0298 $0.0249 -17%
Session 3 (recall)
Turns 3.3 2.0 -40%
Context (input) 74.7k 41.6k -44%
Cost $0.0249 $0.0194 -22%
══════════════════════════════════════════════════════════════════
icm bench-agent --sessions 10 --model haiku
智能体跨会话从密集技术文档中召回特定事实。第 1 次会话读取并记忆;第 2 次及之后的会话不依赖源文本回答 10 个事实性问题。
ICM Recall Benchmark (10 questions, model: haiku, 5 runs averaged)
══════════════════════════════════════════════════════════════════════
No ICM With ICM
──────────────────────────────────────────────────────────────────────
Average score 5% 68%
Questions passed 0/10 5/10
══════════════════════════════════════════════════════════════════════
icm bench-recall --model haiku
使用本地模型进行相同测试——纯上下文注入,无需工具调用。
Model Params No ICM With ICM Delta
─────────────────────────────────────────────────────────
qwen2.5:14b 14B 4% 97% +93%
mistral:7b 7B 4% 93% +89%
llama3.1:8b 8B 4% 93% +89%
qwen2.5:7b 7B 4% 90% +86%
phi4:14b 14B 6% 79% +73%
llama3.2:3b 3B 0% 76% +76%
gemma2:9b 9B 4% 76% +72%
qwen2.5:3b 3B 2% 58% +56%
─────────────────────────────────────────────────────────
scripts/bench-ollama.sh qwen2.5:14b
所有基准测试均使用真实 API 调用——无模拟,无模拟响应,无缓存答案。
- 智能体基准:在临时目录中创建真实 Rust 项目。使用
claude -p --output-format json运行 N 个会话。不使用 ICM:空 MCP 配置。使用 ICM:真实 MCP 服务器 + 自动提取 + 上下文注入。 - 知识留存:使用虚构技术文档("Meridian Protocol")。通过关键词匹配预期事实对答案评分。每次调用超时 120 秒。
- 隔离:每次运行使用独立的临时目录和全新的 SQLite 数据库。无会话持久化。
所有 17 个工具共享同一个 SQLite 数据库。Claude 存储的记忆可立即被 Gemini、Codex、Copilot、Cursor 以及所有其他工具访问。
ICM Multi-Agent Efficiency Benchmark (10 seeded facts, 5 CLI agents)
╔══════════════╦═══════╦══════════╦════════╦═══════════╦═══════╗
║ Agent ║ Facts ║ Accuracy ║ Detail ║ Latency ║ Score ║
╠══════════════╬═══════╬══════════╬════════╬═══════════╬═══════╣
║ Claude Code ║ 10/10 ║ 100% ║ 5/5 ║ ~15s ║ 99 ║
║ Gemini CLI ║ 10/10 ║ 100% ║ 5/5 ║ ~33s ║ 94 ║
║ Copilot CLI ║ 10/10 ║ 100% ║ 5/5 ║ ~10s ║ 100 ║
║ Cursor Agent ║ 10/10 ║ 100% ║ 5/5 ║ ~16s ║ 99 ║
║ Aider ║ 10/10 ║ 100% ║ 5/5 ║ ~5s ║ 100 ║
╠══════════════╬═══════╬══════════╬════════╬═══════════╬═══════╣
║ AVERAGE ║ ║ ║ ║ ║ 98 ║
╚══════════════╩═══════╩══════════╩════════╩═══════════╩═══════╝
得分 = 60% 召回准确率 + 30% 事实细节 + 10% 速度。98% 多智能体效率。
| 能力 | ICM | Mem0 | Engram | AgentMemory |
|---|---|---|---|---|
| 工具支持 | 17 | 仅 SDK | ~6-8 | ~10 |
| 一键配置 | icm init |
手动 SDK | 手动 | 手动 |
| 钩子(启动时自动召回) | 5 个工具 | 无 | 通过 MCP | 1 个工具 |
| 混合搜索(FTS5 + 向量) | 30/70 加权 | 仅向量 | 仅 FTS5 | FTS5+向量 |
| 多语言嵌入 | 100+ 种语言(768d) | 视情况 | 无 | 英文 384d |
| 知识图谱 | Memoir 系统 | 无 | 无 | 无 |
| 时间衰减 + 整合 | 访问感知 | 无 | 基础 | 基础 |
| TUI 仪表板 | icm dashboard |
无 | 有 | Web 查看器 |
| 从工具输出自动提取 | 3 层,零 LLM | 无 | 无 | 无 |
| 反馈/纠正循环 | icm_feedback_* |
无 | 无 | 无 |
| 运行时 | Rust 单一二进制 | Python | Go | Node.js |
| 本地优先,零依赖 | SQLite 文件 | 云优先 | SQLite | SQLite |
| 多智能体召回准确率 | 98% | N/A | N/A | 95.2% |
| 文档 | 描述 |
|---|---|
| 集成指南 | 所有 17 个工具的配置:Claude Code、Copilot、Cursor、Windsurf、Zed、Amp 等 |
| 技术架构 | Crate 结构、搜索流水线、衰减模型、sqlite-vec 集成、测试 |
| 用户指南 | 安装、主题组织、整合、提取、故障排除 |
| 产品概述 | 使用场景、基准测试、与其他方案的对比 |
Source-Available — 个人及 20 人以下团队免费使用。20 人以上的组织需要企业许可证。联系方式:contact@rtk-ai.app
