1. 项目概述:PowerMem 是什么?
PowerMem 是一个为 AI Agent 设计的自进化记忆层系统,它解决了传统 AI 对话系统"健忘"的核心痛点。想象一下,你每天和同一个助手聊天,但它永远记不住你昨天说过什么 - 这就是 PowerMem 要改变的状况。
这个系统最吸引我的地方在于它的"四步进化循环":捕获(Capture)→存储(Store)→检索(Retrieve)→进化(Evolve)。不同于简单的聊天记录存储,PowerMem 会主动分析、压缩和关联记忆,让 Agent 真正"成长"。
从技术架构看,它包含三个关键组件:
- 服务端:基于 Python 的 HTTP API 服务,处理记忆的存储和检索
- 向量数据库:内置的 seekdb 或可选的 OceanBase/SQLite 存储
- 客户端插件:支持 Claude Code 和 OpenClaw 等主流 Agent 平台
2. 环境准备与安装
2.1 硬件与软件要求
在开始前,确保你的环境满足以下条件:
Linux 服务端最低配置:
- CPU:4核(推荐 8 核以上,用于向量计算)
- 内存:8GB(推荐 16GB+)
- 存储:50GB SSD(向量索引会占用大量空间)
- Python 3.11+(强烈建议使用 pyenv 管理版本)
特别注意:
- 如果使用内置 seekdb,首次启动会下载约 2GB 的嵌入模型
- Windows 仅支持作为客户端连接,不能运行服务端
2.2 安装方式对比
提供两种安装方案,根据你的使用场景选择:
方案A:生产环境(推荐)
# 使用更快的 uv 替代 pip curl -LsSf https://astral.sh/uv/install.sh | sh source ~/.bashrc # 安装完整功能包 uv pip install "powermem[cli,server,mcp,seekdb]"方案B:开发环境
git clone https://github.com/oceanbase/powermem.git cd powermem uv pip install -e ".[cli,server,mcp,seekdb,dev]"关键提示:
mcp扩展包是跨 Agent 通信的必备组件,如果计划连接多个 Agent 平台必须安装
2.3 组件功能详解
安装时不同的 extras 提供不同能力:
| 扩展包 | 功能说明 | 是否必需 |
|---|---|---|
| cli | pmem 命令行工具 | 是 |
| server | HTTP API 服务 | 是 |
| mcp | 多 Agent 通信协议支持 | 可选 |
| seekdb | 内置向量数据库 | 可选 |
| dev | 开发工具(测试/调试) | 仅开发 |
3. 服务端配置详解
3.1 初始化配置
运行交互式配置向导:
pmem config init这会生成.env配置文件,以下是关键参数解析:
数据库配置:
# 使用 SQLite(单机测试推荐) DATABASE_PROVIDER=sqlite SQLITE_PATH=/path/to/powermem.db # 或使用 OceanBase(生产环境) DATABASE_PROVIDER=oceanbase OB_HOST=127.0.0.1 OB_PORT=2881 OB_USER=root OB_PASSWORD=your_password大模型配置:
# OpenAI 兼容 API LLM_PROVIDER=openai LLM_API_KEY=sk-xxx LLM_MODEL=gpt-4 OPENAI_LLM_BASE_URL=https://api.yourproxy.com/v1 # 或使用 Anthropic LLM_PROVIDER=anthropic ANTHROPIC_LLM_BASE_URL=https://your-proxy.com嵌入模型配置(核心):
# 硅基流动模型(中文推荐) EMBEDDING_PROVIDER=siliconflow EMBEDDING_API_KEY=sk-xxx EMBEDDING_MODEL=BAAI/bge-m3 EMBEDDING_DIMS=1024 # 维度必须与模型匹配!3.2 常见配置误区
问题1:SQLite 路径写成目录
错误示例:
SQLITE_PATH=/data/powermem/正确示例:SQLITE_PATH=/data/powermem/powermem.db
问题2:忘记设置 EMBEDDING_DIMS
使用 seekdb 时必须明确指定向量维度,否则启动报错
问题3:混合使用不同提供商的组件
避免 OpenAI LLM + Anthropic Embedding 的组合,可能因 API 速率限制导致性能下降
3.3 启动与监控
启动生产级服务:
powermem-server \ --host 0.0.0.0 \ --port 8848 \ --workers 8 \ --log-level WARNING关键参数调优建议:
--workers:通常设为 CPU 核数的 1.5 倍- 使用内置 seekdb 时,workers 必须设为 1
- 添加
--preload参数可以加速首次响应
验证服务健康状态:
curl -s "http://localhost:8848/api/v1/system/health" | jq # 预期输出:{"status":"ok","version":"1.2.0"}4. 客户端集成实战
4.1 Claude Code 集成步骤
步骤1:安装插件
/plugin marketplace add oceanbase/powermem /plugin install memory-powermem@powermem /reload-plugins步骤2:Windows 特别处理修改 hooks.json 文件(路径:%USERPROFILE%\.claude\plugins\cache\powermem\memory-powermem\0.1.0\hooks\hooks.json):
{ "hooks": { "UserPromptSubmit": [ { "hooks": [ { "type": "command", "command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -File \"${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.ps1\"", "timeout": 120 } ] } ] } }步骤3:配置连接编辑settings.json:
{ "env": { "POWERMEM_BASE_URL": "http://your-server:8848", "POWERMEM_API_KEY": "your-key", "POWERMEM_AUTO_RECALL": "true", "POWERMEM_AUTO_STORE": "true" } }4.2 OpenClaw 集成技巧
记忆测试命令:
/remember 重要信息:我的API密钥是123-456(仅测试用) /recall API密钥性能优化配置:
# 在 powermem.env 中增加 MAX_MEMORY_ITEMS=5000 # 控制单用户记忆上限 MEMORY_COMPRESSION_THRESHOLD=0.85 # 相似度阈值4.3 跨平台同步方案
通过 MCP 协议实现 Claude Code 和 OpenClaw 的记忆共享:
- 在两台设备上安装 mcp 扩展包
- 配置相同的
MCP_GROUP_ID环境变量 - 设置主节点:
pmem mcp enable --mode leader --port 18888
5. 高级功能与调优
5.1 记忆进化策略
自定义进化规则:创建evolution_rules.yaml:
- name: api_key_protection pattern: "(?i)(api|access)_?key\s*[:=]\s*[\"']?([a-z0-9_-]+)" action: redact params: replace_with: "[REDACTED]" - name: code_enhancement when: "memory.metadata.type == 'code'" action: embed_with_context params: prepend: "这是用户提供的示例代码,可能有错误:"通过 API 应用规则:
curl -X POST -H "X-API-Key: your-key" \ -d @evolution_rules.yaml \ http://localhost:8848/api/v1/evolution/rules5.2 性能监控仪表板
启用 Prometheus 监控:
# .env 中新增 POWERMEM_METRICS_ENABLED=true POWERMEM_METRICS_PORT=9090关键监控指标:
powermem_memory_ops_total:记忆操作计数器powermem_embedding_duration_seconds:向量化耗时powermem_retrieval_latency_ms:检索延迟
5.3 灾备与迁移
备份记忆数据:
pmem db backup --output backup.sqlite3跨数据库迁移:
pmem db migrate \ --source sqlite:///old.db \ --target oceanbase://user:pass@host:2881/memdb6. 故障排查手册
6.1 常见错误解决方案
错误1:Error: Embedding dimension mismatch
- 检查
.env中EMBEDDING_DIMS是否与模型匹配 - 运行
pmem check-dimensions验证
错误2:[WinError 193] %1 is not a valid Win32 application
- 确保在 Windows 客户端使用 PowerShell 命令
- 重新生成 hooks.json 文件
错误3:记忆检索不准确
- 检查嵌入模型是否支持中文(推荐 bge-m3)
- 调整检索参数:
MEMORY_RETRIEVAL_TOPK=7 MEMORY_SIMILARITY_THRESHOLD=0.65
6.2 日志分析技巧
查看详细日志:
journalctl -u powermem -f # systemd 服务 或 tail -f /var/log/powermem.log关键日志标记:
[MEMORY_COMPACT]:记忆压缩过程[EVOLUTION]:自动进化事件[RETRIEVAL]:记忆检索详情
6.3 调试模式启用
临时开启调试:
POWERMEM_DEBUG=1 powermem-server --log-level DEBUG获取会话诊断信息:
/diagnostic memory-powermem7. 生产环境最佳实践
7.1 安全加固措施
启用 API 认证:
POWERMEM_SERVER_AUTH_ENABLED=true POWERMEM_SERVER_API_KEYS=your-secret-key-1,your-secret-key-2配置 HTTPS:
pmem config tls \ --cert /path/to/cert.pem \ --key /path/to/key.pem敏感记忆加密:
MEMORY_ENCRYPTION_ENABLED=true MEMORY_ENCRYPTION_KEY=your-32-char-key
7.2 高可用部署
方案A:负载均衡
upstream powermem { server 10.0.0.1:8848; server 10.0.0.2:8848; } server { listen 443 ssl; location / { proxy_pass http://powermem; } }方案B:数据库集群
- 配置 OceanBase 集群
- 设置
DATABASE_PROVIDER=oceanbase - 添加多个 OB 节点到连接字符串
7.3 性能调优参数
关键.env调优参数:
# 向量索引优化 SEEKDB_INDEX_TYPE=HNSW SEEKDB_EF_CONSTRUCTION=200 SEEKDB_M=32 # 缓存配置 MEMORY_CACHE_ENABLED=true MEMORY_CACHE_TTL=3600 MEMORY_CACHE_SIZE=10000 # 批处理设置 EMBEDDING_BATCH_SIZE=32 STORAGE_BATCH_COMMIT=1008. 进阶开发指南
8.1 插件开发
创建自定义记忆处理器:
from powermem import MemoryProcessor class MyProcessor(MemoryProcessor): def pre_store(self, memory): # 存储前处理 if "密码" in memory.text: memory.text = memory.text.replace("密码", "[REDACTED]") return memory def post_retrieve(self, memories): # 检索后处理 return sorted(memories, key=lambda m: m.score, reverse=True)注册处理器:
from powermem.plugins import register_processor register_processor("security", MyProcessor())8.2 API 扩展
添加自定义端点:
from fastapi import APIRouter from powermem.server import PowerMemServer router = APIRouter() @router.get("/custom-endpoint") async def custom(): return {"message": "Hello from extension!"} server = PowerMemServer() server.include_router(router, prefix="/extensions")8.3 记忆可视化
使用内置 Dashboard 扩展点:
// 在 /dashboard/static/custom.js 中添加 PowerMemDashboard.registerPanel('custom', { title: '我的面板', render: (container) => { container.innerHTML = '<h3>自定义可视化</h3>'; // 添加自定义图表逻辑 } });9. 典型应用场景
9.1 客户支持助手
实现效果:
- 记住客户历史问题
- 自动关联相似案例
- 生成个性化响应
配置要点:
MEMORY_NAMESPACE=customer_support MEMORY_RETENTION_DAYS=180 AUTO_COMPACT_INTERVAL=36009.2 个人知识管理
工作流:
- 通过
/remember保存重要信息 - 自动关联相关笔记
- 生成知识图谱
增强命令:
/search-memories 去年讨论过的API设计模式 /visualize-knowledge 网络安全9.3 团队协作增强
共享记忆配置:
TEAM_SHARED_MEMORIES=true TEAM_ID=dev-team-42 ACCESS_CONTROL_MODE=role_based角色定义:
roles: - name: developer permissions: - memory:read - memory:write - memory:delete_own - name: manager permissions: - memory:*10. 未来演进路线
10.1 短期规划(v1.3)
- 多模态记忆支持(图像/音频)
- 记忆版本控制
- 增量索引更新
10.2 中期规划(v2.0)
- 分布式记忆网络
- 联邦学习支持
- 记忆溯源功能
10.3 社区贡献指引
欢迎通过以下方式参与:
- 提交插件到 Marketplace
- 完善文档翻译
- 报告性能优化建议
贡献前请阅读:
pmem contribution guidelines