面向AI助手的生产级智能内存系统
Post-Cortex 是一个高性能的 MCP(模型上下文协议)服务器,它将短暂的AI对话转换为持久且可搜索的知识,并保证零死锁。使用 Rust 编写并采用无锁并发架构,它使AI助手能够在会话之间维持完美的记忆,理解语义关系,并通过本地AI驱动的搜索检索上下文相关的数据。
阶段1-3,6项优化完成:
Post-Cortex 提供了两个二进制文件:
post-cortex - 用于与 Claude Desktop 集成的标准IO MCP服务器post-cortex-daemon - 用于API使用和后台服务的HTTP守护进程服务器Homebrew (macOS/Linux) - 推荐:
brew install julymetodiev/tap/post-cortex
这将安装两个二进制文件:post-cortex 和 post-cortex-daemon
直接下载:
从 最新发布 下载适用于您平台的二进制文件:
# post-cortex (标准IO MCP服务器)
# macOS Intel: post-cortex-x86_64-apple-darwin
# macOS Apple Silicon: post-cortex-aarch64-apple-darwin
# Linux: post-cortex-x86_64-unknown-linux-gnu
# post-cortex-daemon (HTTP守护进程)
# macOS Intel: post-cortex-daemon-x86_64-apple-darwin
# macOS Apple Silicon: post-cortex-daemon-aarch64-apple-darwin
# Linux: post-cortex-daemon-x86_64-unknown-linux-gnu
# 示例安装(macOS Apple Silicon):
curl -L https://github.com/julymetodiev/post-cortex/releases/latest/download/post-cortex-aarch64-apple-darwin -o /usr/local/bin/post-cortex && chmod +x /usr/local/bin/post-cortex
curl -L https://github.com/julymetodiev/post-cortex/releases/latest/download/post-cortex-daemon-aarch64-apple-darwin -o /usr/local/bin/post-cortex-daemon && chmod +x /usr/local/bin/post-cortex-daemon
从源码构建:
cargo build --release --features embeddings
# 生成的二进制文件:target/release/post-cortex 和 target/release/post-cortex-daemon
Post-Cortex 提供两种部署选项:
使用 post-cortex 二进制文件进行直接标准IO MCP集成:
# 手动运行(用于测试)
post-cortex
# 或从源码运行
./target/release/post-cortex
优点:
Claude Desktop 配置:
{
"mcpServers": {
"post-cortex": {
"command": "post-cortex"
}
}
}
或使用绝对路径:
{
"mcpServers": {
"post-cortex": {
"command": "/usr/local/bin/post-cortex"
}
}
}
使用 post-cortex-daemon 二进制文件启动持久的HTTP服务器:
# 初始化配置(可选)
post-cortex-daemon init
# 在前台启动守护进程
post-cortex-daemon start
# 查看状态
post-cortex-daemon status
# 停止守护进程
post-cortex-daemon stop
优点:
Claude Desktop 配置:
{
"mcpServers": {
"post-cortex": {
"type": "sse",
"url": "http://localhost:3737/sse"
}
}
}
配置文件:~/.post-cortex/daemon.toml
host = "127.0.0.1"
port = 3737
data_dir = "~/.post-cortex/data"
环境变量:
PC_HOST - 覆盖主机(默认:127.0.0.1)PC_PORT - 覆盖端口(默认:3737)PC_DATA_DIR - 覆盖数据目录RUST_LOG - 日志级别(例如:RUST_LOG=debug)# 复制服务文件
cp install/systemd/post-cortex.service ~/.config/systemd/user/
systemctl --user daemon-reload
# 开启并设置自动启动
systemctl --user enable --now post-cortex
# 查看日志
journalctl --user -u post-cortex -f
详见 install/systemd/README.md 的详细说明。
# 复制plist文件
cp install/launchd/com.post-cortex.daemon.plist ~/Library/LaunchAgents/
# 加载并启动
launchctl load ~/Library/LaunchAgents/com.post-cortex.daemon.plist
# 查看日志
tail -f /tmp/post-cortex.log
详见 install/launchd/README.md 的详细说明。
推荐:
重要:post-cortex 和 post-cortex-daemon 共享相同的代码库和数据格式,这意味着:
✅ 您可以同时使用两个二进制文件共享同一个数据库,只要它们不同时运行
~/.post-cortex/data(两者共享)在模式之间切换时共享的内容:
为什么这可行:
两个二进制文件使用完全相同的存储逻辑来自 src/storage/rocksdb_storage.rs。唯一的限制是 RocksDB 文件锁,这阻止了同时访问,但在进程停止时会自动释放。
示例工作流程:
# 上午:使用守护进程模式
post-cortex-daemon start
# 工作,创建会话,添加数据...
post-cortex-daemon stop
# 下午:切换到通过 Claude Desktop 的标准IO
# Claude Desktop 配置:{"command": "post-cortex"}
# 守护进程的所有会话都可以使用!
# 晚上:回到守护进程
post-cortex-daemon start
# 所有来自标准IO模式的数据都在这里!
使用单独的数据库(可选):
如果您需要隔离的数据库用于测试或不同的项目:
对于标准IO模式 - 设置在 Claude Desktop 配置中:
{
"mcpServers": {
"post-cortex": {
"command": "post-cortex",
"env": {
"PC_DATA_DIR": "~/.post-cortex/stdio-data"
}
}
}
}
对于守护进程模式 - 使用环境变量或配置文件:
PC_DATA_DIR=~/.post-cortex/daemon-data post-cortex-daemon start
或在 ~/.post-cortex/daemon.toml 中:
data_directory = "~/.post-cortex/daemon-data"
⚠️ 注意:使用单独的目录,数据不会共享 - 每个实例都有独立的会话和索引。
1. 在项目根目录创建一个 CLAUDE.md 文件:
# CLAUDE.md
## 使用 Post-Cortex 进行知识管理
**项目会话ID**:`YOUR-SESSION-ID-HERE`
**在整个对话过程中:**
- 使用 `update_conversation_context(session_id: "YOUR-SESSION-ID")` 添加上下文
- 使用 `semantic_search_session(session_id: "YOUR-SESSION-ID")` 查询
2. 创建您的项目会话:
询问您的AI助手:
"为这个项目创建一个 Post-Cortex 会话"
3. 将返回的 session_id 添加到 CLAUDE.md
就这样!您的AI现在为这个项目有了持久的记忆。
Post-Cortex 提供三种可配置的搜索模式以优化精度/速度权衡:
SearchMode 选项:
SearchQualityPreset:
示例用法:
// 使用平衡模式(默认)
db.search(&query, 10)
// 显式选择模式
db.search_with_mode(&query, 10, SearchMode::Approximate, None)
// 自定义 ef_search 值
db.search_with_mode(&query, 10, SearchMode::Balanced, Some(128))
Post-Cortex 使用本地变压器模型进行隐私优先的语义搜索:
嵌入模型:
搜索流水线:
(相似度 × 0.7) + (重要性 × 0.3)质量评分:
隐私优先:所有模型都在本地运行,零外部API调用。
自动实体提取:
关系映射:
相关于、导致、实现、解决生产中的示例:
跟踪了388个实体
映射了1015个关系
顶级:无锁(44次提及)、会话(42次)、搜索(38次)
会话管理:
create_session、load_session、list_sessions、search_sessionsupdate_session_metadata添加上下文:
update_conversation_context - QA、决策、问题、代码更改bulk_update_conversation_context - 批量更新上下文类型:
qa - 问题和答案decision_made - 架构选择及其理由problem_solved - 错误及其解决方案code_change - 重构和新功能搜索:
semantic_search_session - AI驱动的意义搜索(自动向量化)semantic_search_global - 跨所有会话搜索query_conversation_context - 快速关键词搜索(小于10毫秒)find_related_content - 跨会话相似性分析:
get_structured_summary - 完整会话概述get_key_decisions、get_key_insights - 决策时间轴get_entity_importance_analysis、get_entity_network_view - 实体分析工作空间管理:
create_workspace、list_workspaces、get_workspaceadd_session_to_workspace、remove_session_from_workspace三层内存:
热内存(50项) → DashMap缓存,即时访问
温内存(200项) → 压缩缓存,快速访问
冷存储(无限) → RocksDB持久化
无锁并发:
DashMap、ArcSwap 和原子操作为什么无锁? 消除:
阶段1-3,6项优化:
spawn_blocking 中(I/O加快10-50倍)实际指标:
可扩展性(在活跃开发中验证):
SystemConfig {
// 内存限制
max_hot_context_size: 50,
max_warm_context_size: 200,
// 语义搜索
enable_embeddings: true,
auto_vectorize_on_update: true,
semantic_search_threshold: 0.7,
// 存储
data_directory: "./post_cortex_data",
cache_capacity: 100,
}
# 运行测试
cargo test --features embeddings
# 使用调试日志运行守护进程
RUST_LOG