cortex-mem-service-2.7.0 is not a library.
Cortex Memory HTTP Service
cortex-mem-service 提供基于 Axum 框架的 HTTP REST API,是 Cortex Memory 系统与外部世界交互的主要桥梁。
✨ 功能特性
- 🌐 完整 API: 覆盖 Cortex Memory 核心功能的完整 REST API
- 🔄 异步架构: 基于 Tokio 异步运行时,支持高并发请求
- 🔍 多模式搜索: 文件系统搜索、向量搜索、混合搜索
- 📁 文件系统访问: 浏览和操作虚拟文件系统
- 🧠 记忆提取: 通过 LLM 自动提取和结构化记忆
- 🚀 灵活部署: 支持单节点和多租户配置
- 📡 OpenAPI: 完整的 API 文档支持
- 📊 可观测性: 集成日志、指标和健康检查
🚀 快速开始
安装与启动
# 构建服务
# 使用默认配置启动(默认端口 8085)
# 指定端口和数据目录
Docker 部署
# 构建镜像
# 运行容器
📖 API 文档
健康检查
GET /health
响应示例:
会话管理
创建会话
POST /api/v2/sessions
Content-Type: application/json
{
"thread_id": "customer-support-123",
"title": "客户支持会话",
"participants": [
{
"id": "user-123",
"name": "张三",
"role": "user"
},
{
"id": "support-bot",
"name": "支持助手",
"role": "assistant"
}
]
}
获取会话详情
GET /api/v2/sessions/{thread_id}
关闭会话
POST /api/v2/sessions/{thread_id}/close
消息操作
添加消息
POST /api/v2/sessions/{thread_id}/messages
Content-Type: application/json
{
"role": "user",
"content": "忘记密码了怎么办?",
"metadata": {
"tags": ["password", "help"]
}
}
获取消息时间轴
GET /api/v2/sessions/{thread_id}/timeline?start=2024-01-01&end=2024-01-31
文件系统操作
列出目录
GET /api/v2/filesystem?uri=cortex://session&recursive=false
读取文件内容
GET /api/v2/filesystem/read?uri=cortex://session/support-123/.session.json
写入文件
POST /api/v2/filesystem/write
Content-Type: application/json
{
"uri": "cortex://user/user-123/preferences.md",
"content": "# 用户偏好\n\n- 主题:深色\n- 语言:中文"
}
搜索
文件系统搜索
POST /api/v2/search
Content-Type: application/json
{
"query": "密码重置",
"mode": "filesystem",
"filters": {
"dimensions": ["session"],
"tenants": ["customer-support"],
"date_range": {
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-31T23:59:59Z"
}
},
"limit": 10,
"offset": 0
}
向量搜索(需要 vector-search 功能)
POST /api/v2/search
Content-Type: application/json
{
"query": "如何更改密码",
"mode": "vector",
"filters": {
"dimensions": ["user", "session"]
},
"limit": 5,
"min_score": 0.7
}
混合搜索
POST /api/v2/search
Content-Type: application/json
{
"query": "账户设置",
"mode": "hybrid",
"filters": {
"dimensions": ["user", "resources"]
},
"limit": 15
}
记忆提取
触发记忆提取
POST /api/v2/automation/extract/{thread_id}
Content-Type: application/json
{
"auto_save": true,
"dimensions": ["user"],
"extraction_types": ["facts", "preferences", "decisions"]
}
响应示例:
⚙️ 配置
命令行参数
| 参数 | 默认值 | 说明 |
|---|---|---|
--port / -p |
8085 |
监听端口 |
--host |
127.0.0.1 |
绑定地址 |
--data-dir / -d |
./cortex-data |
数据目录 |
--verbose / -v |
false |
启用详细日志 |
环境变量
# 数据存储
# 外部服务
# 服务配置
配置文件
可以创建 config.toml 文件进行详细配置:
[]
= "127.0.0.1"
= 8085
= 4
= 1024
[]
= ["*"]
= ["GET", "POST", "PUT", "DELETE"]
= ["*"]
[]
= "10MB"
= 10000
= 100
🔧 运行模式
开发模式
# 使用开发配置启动
# 启用自动重载(需要 watch)
生产模式
# 优化构建
# 使用 systemd 服务
# 使用 PM2 管理
多租户模式
# 设置租户配置
# 启动服务
🧪 测试
单元测试
# 运行所有测试
# 运行集成测试
API 测试
# 使用提供的测试脚本
# 使用 curl 测试
# 使用 pytest 进行 API 测试
性能测试
# 使用 wrk 进行基准测试
# 使用 hey 进行简单负载测试
📊 监控与可观测性
日志记录
服务使用 tracing 框架进行结构化日志:
健康检查
# 基础健康检查
# 详细健康检查(包含依赖)
指标收集
# Prometheus 格式指标
# 指标示例
# TYPE cortex_duration_seconds histogram
}
}
🔐 安全注意事项
当前限制
⚠️ 重要: 当前版本不包含认证和授权机制。
适用于:
- 本地开发环境
- 受信任的内网环境
- 前置代理已处理认证的部署
安全最佳实践
- 使用反向代理:
location /api/ {
auth_basic "Cortex API";
auth_basic_user_file .htpasswd;
proxy_pass http://localhost:8080/api/;
}
- 网络安全:
# 使用限制性防火墙规则
- 数据加密:
# 使用加密文件系统
🚨 常见问题
服务无法启动
问题: Address already in use
解决: 更换端口或终止占用进程
# 查找进程占用
# 终止进程
# 或使用其他端口
搜索无结果
问题: Search returns empty results 解决: 检查以下配置
# 确保数据目录有效
# 检查向量搜索配置(如果启用)
# 启用详细日志进行调试
RUST_LOG=debug
CORS 错误
问题: CORS policy error in browser 解决: 配置允许的源
# 在生产环境指定具体源
# 或使用配置文件
📚 更多资源
🤝 贡献
欢迎贡献!请遵循以下步骤:
- Fork 项目
- 创建功能分支
- 编写测试
- 提交 PR
📄 许可证
MIT 许可证 - 详见 LICENSE 文件