多 IDE 集成适配器
多 IDE 集成适配器:Claude-Mem 的具体实现
学习目标
本章聚焦 Claude-Mem 如何将记忆系统适配到多种 AI 编程工具。建议先阅读前置知识,下文直接聚焦具体落地方案。
前置知识
本章涉及跨 Harness 可移植性的通用架构,建议先阅读:
- 跨 Harness 可移植性 — 插件在不同宿主间的适配模式
项目实践
支持的 IDE 矩阵
| IDE | 集成方式 | 安装命令 |
|---|---|---|
| Claude Code | 原生插件(Hooks + MCP) | npx claude-mem install |
| Gemini CLI | Hooks 适配器 | npx claude-mem install --ide gemini-cli |
| Cursor | Hooks 安装器 | npm run cursor:setup |
| Windsurf | Hooks 安装器 | src/services/integrations/WindsurfHooksInstaller.ts |
| OpenCode | 插件配置 | npx claude-mem install --ide opencode |
| OpenClaw | Gateway 脚本 | curl .../openclaw.sh | bash |
统一安装命令
npx CLI 入口(src/npx-cli/index.ts)提供统一安装体验:
npx claude-mem install # 默认安装到 Claude Codenpx claude-mem install --ide <target> # 安装到指定 IDE安装流程:
- 检查并安装依赖(Bun、uv)
- 注册插件到目标 IDE 的配置文件
- 启动 Worker Service
- 验证健康状态
适配器实现模式
每个 IDE 的集成适配器遵循相同的模式:
- Hooks 注册:将 claude-mem 的 Hook 脚本注册到目标 IDE 的生命周期钩子
- 路径解析:找到插件的安装路径(
~/.claude/plugins/marketplaces/thedotmack/plugin) - 环境变量:传播
CLAUDE_MEM_DATA_DIR和CLAUDE_MEM_WORKER_PORT - Worker 启动:确保 Worker Service 已运行
OpenClaw Gateway 集成
OpenClaw 是一种 AI 网关,支持将记忆系统部署为共享服务:
curl -fsSL https://install.cmem.ai/openclaw.sh | bash安装器负责:
- 安装依赖(Bun、uv)
- 注册 claude-mem 为 OpenClaw 网关插件
- 配置 AI provider 认证
- 启动 Worker Service
- 可选配置实时观察推送到 Telegram、Discord、Slack 等
环境变量的全局传播
所有 IDE 集成都遵循相同的环境变量约定:
| 变量 | 作用 | 默认值 |
|---|---|---|
CLAUDE_MEM_DATA_DIR | 数据目录 | ~/.claude-mem/ |
CLAUDE_MEM_WORKER_PORT | Worker 端口 | 37700 + (uid % 100) |
CLAUDE_MEM_MODE | 工作模式 + 语言 | code |
CLAUDE_MEM_RUNTIME | 运行时模式 | worker 或 server-beta |
问题与规避
IDE 配置格式差异
问题:不同 IDE 使用不同的配置文件格式(JSON、YAML、TOML)和路径。
规避:每个 Installer 类封装了目标 IDE 的配置细节,通过 read → modify → write 模式将 claude-mem 的配置追加到对应文件。
跨平台路径处理
问题:Windows 使用反斜杠路径,macOS/Linux 使用正斜杠。
规避:Hook 命令中使用 cygpath -w 转换 Cygwin/MSYS 环境下的路径,Node.js 的 path 模块处理跨平台路径拼接。
设计取舍
为什么支持多种 IDE 而非专注 Claude Code?
- 优势:扩大用户基础,claude-mem 成为通用的 AI 编程记忆层
- 代价:需要维护多个 Installer 适配器,测试矩阵扩大
- 设计原则:核心 Worker 和存储层 IDE 无关,适配器层处理 IDE 特定的差异