使用说明
Codemem
用于AI编码助手的独立Rust内存引擎。单二进制,零运行时间依赖。
Codemem存储您的AI助手发现的内容——读取的文件、搜索的符号、进行的编辑——因此存储库不需要在会话之间重新探索。可选择通过以下方式用编译器级交叉引用丰富图形 竞争情报从业者协会 索引器。
问题
你的人工智能助手探索50个文件,跟踪调用链,做出架构决策——然后会话结束。下次会议?一切从头开始。每一个。单身。时间。
更糟糕的是:它编辑 UserService.validate() 而不知道47个下游函数依赖于该返回类型。它重构了一个模块,但不知道为什么选择了之前的方法。
助理需要的是知识图谱,而不是更多的文本。
Codemem做什么
Codemem构建了一个持久的、可查询的代码库知识图,以及你的助手与它的交互。提交成为节点。符号具有键入的边。决策留下痕迹。你的助手会在它停止的地方继续。
# One command. That's it.
cd your-project && codemem init
从那时起,Codemem会默默地捕获上下文,在会话开始时注入先验知识,并为您的助手提供32个MCP工具,包括时间查询、差异审查和爆炸半径分析。
快速开始
安装
# Shell (macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/cogniplex/codemem/main/install.sh | sh
# Homebrew
brew install cogniplex/tap/codemem
# Cargo
cargo install codemem
或者从以下网址下载预构建的二进制文件 发布.
| 平台 | 架构 | 二进制 |
|---|---|---|
| macOS | ARM64(苹果硅) | codemem-macos-arm64.tar.gz |
| Linux | x86_64 | codemem-linux-amd64.tar.gz |
| Linux | ARM64 | codemem-linux-arm64.tar.gz |
初始化
cd your-project
codemem init
下载本地嵌入模型(约440MB,一次性),注册生命周期挂钩,并为您的AI助手配置MCP服务器。自动检测克劳德代码、光标和风帆。
就这样
Codemem现在可以自动捕获上下文,在会话开始时注入先验知识,并为您的助手提供32个MCP工具。
映射您的代码库(可选)
运行完整的分析管道——使用树形图对代码库进行索引,使用SCIP交叉引用(如果安装了索引器)丰富图形,计算PageRank,并检测架构集群:
codemem analyze
然后启动代码映射器代理进行深入的、代理驱动的分析——它产生了一个专门的代理团队,可以遍历知识图、发现模式并存储架构见解:
claude --agent code-mapper
看 索引和丰富管道 对于引擎盖下发生的事情。
SCIP浓缩(可选,推荐)
竞争情报从业者协会 (源代码智能协议)提供codemem编译器级的交叉引用——代码库中的每个调用、导入、类型引用和重写,都没有误报。 codemem analyze 自动检测已安装的索引器并自动运行它们。
为您的语言安装索引器:
| 语言 | 索引器 | 安装 |
|---|---|---|
| 锈蚀 | 锈蚀分析仪 | rustup component add rust-analyzer |
| TypeScript/JavaScript | scip类型脚本 | npm install -g @sourcegraph/scip-typescript |
| Python | scip-Python | npm install -g @sourcegraph/scip-python |
| 去吧 | go install github.com/sourcegraph/scip-go/cmd/scip-go@latest |
|
| Java/Kotlin | scip-Java | scip java发布 |
| C# | scip | dotnet tool install --global scip-dotnet |
| 红宝石 | scip-Ruby | gem install scip-ruby |
Codemem从清单文件中检测语言(Cargo.toml, package.json, pyproject.toml, go.mod等等)并检查相应索引器的PATH。如果找到,SCIP边将与ast-grep模式边融合——当两个源在同一条边上一致时,它们的置信度得分相加(0.10+0.15=0.25),产生更高保真的图连接。
通过配置 ~/.codemem/config.toml:
[scip]
enabled = true # Master switch (default: true)
auto_detect_indexers = true # Check PATH for available indexers
cache_index = true # Cache .scip files between runs
cache_ttl_hours = 24 # Re-index if cache older than this
create_external_nodes = true # Create ext: nodes for dependency symbols
store_docs_as_memories = true # Attach hover docs as memories
hierarchical_containment = true # Build nested containment tree
collapse_intra_class_edges = true # Fold intra-class calls into parent metadata
[scip.fan_out_limits]
module = 200 # Modules can be widely imported
class = 50 # Classes referenced moderately
function = 30 # Functions and methods less so
method = 30
# Override auto-detected indexer commands per language:
# [scip.indexers]
# rust = "rust-analyzer scip ."
# typescript = "scip-typescript index --infer-tsconfig"
没有安装SCIP索引器?没问题,codemem没有它也能正常工作。你只会得到ast-grep模式边(置信度0.10),而不是编译器级边。
所得
在你改变之前知道什么会破裂
用管子穿过差速器 codemem review 在合并之前,进行完整的爆炸半径分析——将更改的符号映射到直接和传递的依赖项、风险评分以及可能遗漏的更改。
git diff main..HEAD | codemem review --format text
Risk Score: 7.2 (high)
Changed Symbols: 3
sym:AuthService::validate (PageRank: 0.032)
sym:AuthService::refresh (PageRank: 0.018)
sym:TokenStore::revoke (PageRank: 0.011)
Direct Dependents: 12
Transitive Dependents: 47
Potentially Missing Changes:
sym:SessionMiddleware::check — calls validate(), may need update
也可作为 review_diff MCP工具,供助手使用。
穿越时空
每个提交都会成为图中的一个节点。询问发生了什么变化,何时发生,以及发生了什么漂移:
# "What changed in the last two weeks?"
# → MCP tool: what_changed(from, to)
# "Show me the graph as it was on March 1st"
# → MCP tool: graph_at_time(at)
# "Which high-centrality files haven't been touched in 90 days?"
# → MCP tool: find_stale_files(stale_days=90)
# "Detect architectural drift between Q1 and Q2"
# → MCP tool: detect_drift(from, to)
# "What's the commit history for this function?"
# → MCP tool: symbol_history(node_id)
5个临时MCP工具为您的助手提供了跨代码库的全时旅行能力,包括图形快照、过时文件检测和架构漂移分析。
跨会话智能
你的助手会从中断的地方继续。决策、模式和见解在9个组成部分混合评分的会话中持续存在:
| 组件 | 重量 | 测量内容 |
|---|---|---|
| 向量相似度 | 25% | 与查询的语义接近度 |
| 图强度 | 20% | PageRank+介数+度+聚类加成 |
| BM25标记重叠 | 15% | 与代码感知标记器进行关键字匹配 |
| 范围上下文 | 10% | 分行/回购/用户意识 |
| 时态 | 10% | 与查询上下文的时态对齐 |
| 重要性 | 10% | 存储的重要性得分 |
| 置信度 | 10% | 边缘置信度和来源可靠性 |
| 标签匹配 | 5% | 查询派生标签与内存标签 |
| 时效性 | 5% | 最近访问的内存提升 |
重量可通过以下方式配置 codemem config set scoring.<key> <value>.
跨服务API检测
Codemem解析OpenAPI/Swagger规范、AsyncAPI规范,并检测事件驱动模式(Kafka、RabbitMQ、Redis、SQS、SNS、NATS)以构建跨服务边缘:
HttpCalls--服务之间的REST调用PublishesTo--事件发布关系SubscribesTo--事件订阅关系
过期的记忆
会话范围的内存和过时的富集会自动过期。在任何内存上设置TTL:
{
"name": "store_memory",
"arguments": {
"content": "Temporary note: API key rotates Friday",
"ttl_hours": 72
}
}
在中配置默认值 ~/.codemem/config.toml:
[memory]
default_session_ttl_hours = 168 # 7 days for session memories
expire_enrichments_on_reindex = true # Auto-expire stale analysis
可插拔的一切
嵌入提供者 --完全离线运行或使用任何API:
# Local (default, no API key needed)
export CODEMEM_EMBED_PROVIDER=candle
# Ollama (local server)
export CODEMEM_EMBED_PROVIDER=ollama
# OpenAI-compatible (Voyage AI, Together, Azure, etc.)
export CODEMEM_EMBED_PROVIDER=openai
export CODEMEM_EMBED_URL=https://api.voyageai.com/v1
export CODEMEM_EMBED_MODEL=voyage-3
export CODEMEM_EMBED_API_KEY=pa-...
# Google Gemini
export CODEMEM_EMBED_PROVIDER=gemini
export CODEMEM_EMBED_API_KEY=AIza...
与Ollama一起跑步(例如。 nomic-embed-text 或 mxbai-embed-large)比内置的Candle模型快得多,同时仍然保持一切本地化。
可配置的模型、精度和批量:
[embedding]
provider = "candle"
model = "BAAI/bge-base-en-v1.5" # Any HuggingFace BERT model
dtype = "f16" # f32, f16, bf16 — half precision halves memory
batch_size = 16 # Tune for GPU memory / throughput
dimensions = 768 # Auto-detected for Candle
cache_capacity = 10000 # LRU embedding cache
存储后端 --当前为SQLite(本地),具备Postgres+pgvector和远程图后端的trait对象抽象:
[storage]
backend = "sqlite" # or "postgres" (future)
[vector]
backend = "hnsw" # or "pgvector", "qdrant" (future)
[graph]
backend = "inmemory" # or "neo4j", "postgres" (future)
主要特点
- 图向量混合架构 --HNSW向量搜索(768 dim)+图谱知识图(PageRank、Louvain社区检测、介数中心性、BFS/DFS、SCC、拓扑排序等)
- 时间图层 --将提交和PR作为图节点、Modified By边、,
valid_from/valid_to所有节点上的时间戳。5个时态查询工具:what_changed、graph_at_time、find_stale_files、detect_drift、symbol_history - 差异感知代码审查 --将更改后的线条映射为图形符号,使用风险评分、表面相关记忆和潜在的缺失变化计算多跳爆炸半径。可用作CLI(
codemem review)MCP工具(review_diff) - 范围上下文 --Repo/branch/用户感知内存作用域。特征分支与基础分支的叠加分辨率。标记为的内存和图形数据
repo和git_ref用于团队就绪过滤 - SCIP集成 --编译器级交叉引用 竞争情报从业者协会 索引器(锈分析器、scip typescript、scip-python、scip-go、scip-java等)。使用ast-grep进行多层边缘融合:当两个来源一致时,置信度得分相加。自动检测已安装的索引器,缓存结果,并在重新索引时清理过时的节点
- 跨服务API检测 --解析OpenAPI/Swagger、AsyncAPI规范和事件框架(Kafka、RabbitMQ、Redis、SQS、SNS、NATS)。在服务之间创建HttpCalls、PublishesTo、SubscribeTo边
- 32个MCP工具 --内存CRUD、自编辑(精化/拆分/合并)、图遍历、代码搜索、时态查询、差异审查、整合、影响分析、会话上下文、JSON-RPC上的模式检测
- 9个生命周期挂钩 --自动上下文注入(SessionStart)、提示捕获(UserPromptSubmit)、观察捕获(PostToolUse)、错误跟踪(PostToolUseFailure)、会话摘要(Stop)、子代理捕获(SubagentStart/Stop)、清除关闭(SessionEnd)和预压缩检查点(PreCompact)
- 9组分混合评分 --向量相似性、图强度、BM25标记重叠、范围上下文、时间对齐、标签匹配、重要性、置信度和新近度
- 内存过期 --可选TTL内存,具有机会清理功能。会话记忆自动过期(可配置)。文件重新索引时过期的内容丰富
- 代码感知索引 --使用清单解析(Cargo.toml、package.json、Go.mod、pyproject.toml)对14种语言(Rust、Types/JS/JSX、Python、Go、C/C++、Java、Ruby、C#、Kotlin、Swift、PHP、Scala、HCL/Terraform)进行树型结构提取
- 上下文嵌入 --嵌入前丰富元数据和图形上下文,以提高召回率
- 可插拔嵌入件 --Candle(本地BERT,默认)、Ollama、OpenAI兼容API或Google Gemini。可配置的模型、数据类型(f32/f16/bf16)和批量
- 跨会话情报 --模式检测、文件热点跟踪、决策链和会话连续性
- 记忆巩固 --5个受神经科学启发的循环:衰变(幂律)、创造性/REM(语义KNN)、聚类(余弦+联合发现)、总结(LLM驱动)、遗忘
- 自编辑存储器 --通过时间图边缘进行完全来源跟踪,优化、分割和合并内存
- 可插拔存储后端 --向量(VectorBackend)、图(GraphBackend)和存储(StorageBackend)的特征对象抽象。SQLite+usearch+petgraph今天,准备好用于Postgres+pgvector+Neo4j
- 运营指标 --每个工具的延迟百分比(p50/p95/p99)、调用计数器和仪表
codemem_status工具 - 实时文件查看 --基于通知的监视器,具有<50ms的去抖动和.gitignore支持
- 持久配置 --基于TOML的配置
~/.codemem/config.toml - 生产硬化 --零
.unwrap()在生产代码中,安全并发,版本化模式迁移
基准测试
尽管codemem是为代码探索内存(不是通用的会话回忆)而设计的,但它在标准内存基准测试中具有竞争力:
| 基准 | 得分 | 备注 |
|---|---|---|
| 机车移动 (ACL 2024) | 91.64% | 与90.53%的已发布SOTA相比——更严格的条件:召回限制10,无证据预言,无嵌入回退 |
| 长记忆评估 (ICLR 2025) | 70% | vs 71.2%的Zep,82.4%的oracle——召回限制10,GPT-4o判断 |
这两个基准都使用比已发布的基准更严格的条件:召回限制为10(vs 50-100),没有证据预言,没有嵌入回退。两者都是用OpenAI text-embedding-3-small运行的。使用内置的局部BERT模型(BAAI/bge-base-en-v1.5),LoCoMo的得分为89.58%——这是一个约2%的差距,图扩展完全闭合(在codemem图模式下,两种模型的得分均为91.49%)。在不进行任何架构更改的情况下,通过更好的嵌入模型可以获得更高的分数。
看 长凳/机车/ 和 长凳/长帐篷/ 方法论、复制步骤和详细分解。
运作原理
graph LR
A[AI Assistant] -->|SessionStart hook| B[codemem mcp context]
A -->|PostToolUse hooks| C[codemem mcp ingest]
A -->|Stop hook| E[codemem mcp summarize]
A -->|MCP tools| D[codemem mcp serve]
B -->|Inject context| A
C --> F[Storage + Vector + Graph]
D --> F
F -->|Recall| A
- 被动捕捉 你的人工智能通过9个生命周期钩子读取、搜索和编辑什么
- 积极回忆 通过9分量混合评分的MCP工具获取相关上下文
- 注入上下文 在会话开始时,让你的助手从中断的地方继续
- 评论差异 用于合并前的爆炸半径,具有风险评分和缺失变化检测功能
- 追踪时间 --每个提交都变成了一个图节点,实现了时间查询和漂移检测
MCP工具
按类别组织的32种工具。看 MCP工具参考 获取完整的API文档。
| 类别 | 工具 |
|---|---|
| 内存CRUD(7) | store_memory, recall, delete_memory, associate_memories, refine_memory, split_memory, merge_memories |
| 图形与结构(9) | graph_traverse, summary_tree, codemem_status, search_code, get_symbol_info, get_symbol_graph, find_important_nodes, find_related_groups, get_cross_repo |
| 节点分析(2) | get_node_memories, node_coverage |
| 整合与模式(3) | consolidate, detect_patterns, get_decision_chain |
| 命名空间(3) | list_namespaces, namespace_stats, delete_namespace |
| 会话和上下文(2) | session_checkpoint, session_context |
| 代码审查(1) | review_diff |
| 时态查询(5) | what_changed, graph_at_time, find_stale_files, detect_drift, symbol_history |
命令行界面
codemem init # Initialize project (model + hooks + MCP)
codemem search # Search memories
codemem stats # Database statistics
codemem ui # Open control plane UI (REST API + embedded React frontend)
codemem analyze # Full pipeline: index + SCIP + enrich + PageRank + clusters
codemem review # Diff-aware blast radius analysis (reads diff from stdin)
codemem consolidate # Run consolidation cycles
codemem export/import # Backup and restore (JSONL, JSON, CSV, Markdown)
codemem sessions # Session management (list, start, end)
codemem doctor # Health checks on installation
codemem config # Get/set configuration values
codemem migrate # Run pending schema migrations
codemem mcp serve # Start MCP server (JSON-RPC stdio, or --http for HTTP)
codemem mcp ingest # Process hook payload from stdin
codemem mcp context # SessionStart hook (+ 7 more lifecycle hooks)
看 CLI 参考 完全使用。
配置
观察压迫
在存储之前,可以选择通过LLM压缩原始工具观测值:
export CODEMEM_COMPRESS_PROVIDER=ollama # or openai, anthropic
持久配置
评分权重、向量/图调整、嵌入提供程序、内存过期和存储设置将保留在 ~/.codemem/config.toml部分配置与默认值合并。
演出
| 操作 | 目标 |
|---|---|
| HNSW搜索k=10(100K向量) | <2ms |
| 嵌入(单句) | <50ms |
| 嵌入(缓存命中) | <0.01ms |
| 图形BFS深度=2 | <1ms |
| 钩摄取(读取) | <200ms |
文档
- 建筑 --系统设计、数据流图、存储模式
- 索引和丰富管道 --从源文件到带注释图形的逐步数据流
- MCP工具参考 --所有32个带有参数和示例的工具
- CLI 参考 --所有带有标志和示例的CLI命令
- 比较 --vs Mem0、Zep/Graphiti、Letta、claude mem等
从源头构建
git clone https://github.com/cogniplex/codemem.git
cd codemem
cargo build --release # Optimized binary at target/release/codemem
cargo test --workspace # Run all tests
cargo bench # Criterion benchmarks
6箱货物工作区。看 贡献.md 发展指南。
研究与启示
Codemem基于几篇研究论文、博客文章和开源项目的想法。
Papers
| 论文 | 地点 | 主要贡献 |
|---|---|---|
| HippoRAG | NeurIPS 2024 | 使用LLMs+知识图+个性化PageRank的神经生物学启发的长期记忆。多跳QA提高了20% |
| 从RAG到记忆 | ICML 2025 | LLM的非参数连续学习(HippoRAG 2)。联想记忆任务提高7%。 |
| A-MEM | 2025 | Zettelkasten通过动态索引、链接和记忆进化激发了主体记忆。 |
| MemGPT | ICLR 2024 | 受操作系统启发的LLM分层内存层——通过函数调用的自编辑内存。 |
| 旋律 | 谷歌DeepMind 2024 | 分层短期+长期记忆压缩。内存占用减少8倍。 |
| ReadAgent | 谷歌DeepMind 2024 | 人类启发的阅读代理,具有20倍上下文扩展的情节要点记忆。 |
| 机车移动 | ACL 2024 | 评估非常长期会话记忆(300回合,9K令牌会话)的基准。 |
| Mem0 | 2025 | 具有可扩展长期内存的生产就绪AI代理。与OpenAI Memory相比,准确率提高了26%。 |
| 泽普 | 2025 | 基于双时态数据模型的代理内存时态知识图架构。 |
| 人工智能时代的记忆 | 2024年调查 | 智能体记忆的综合分类:事实记忆、经验记忆、工作记忆。 |
| AriGraph | 2024 | LLM代理探索知识图中的情景+语义记忆。 |
Blog posts and techniques
Open-source projects
看 docs/comparison.md 以进行详细的功能比较。
