README 新增: - 数据目录结构与命名约定说明 - 从 claude-mem 迁移步骤 - Hook 配置要点与必须的环境变量 - 回归测试使用说明 CHANGELOG 新增 v13.0.1: - Hook DATA_DIR 环境变量修复 - 数据库文件命名规范 (codebuddy-mem.db + symlink) - 回归测试脚本 - 已知问题更新
137 lines
3.7 KiB
Markdown
137 lines
3.7 KiB
Markdown
# codebuddy-mem
|
||
|
||
跨会话持久记忆系统 — 基于 [claude-mem](https://github.com/thedotmack/claude-mem) AGPL-3.0 分叉,适配 DeepSeek V4 / CodeBuddy Code。
|
||
|
||
## 与 claude-mem 的区别
|
||
|
||
| 项目 | claude-mem | codebuddy-mem |
|
||
|------|-----------|---------------|
|
||
| AI 后端 | Claude API | DeepSeek V4(直连) |
|
||
| MCP 客户端 | Claude Code | CodeBuddy Code |
|
||
| 仓库 | github.com/thedotmack | git.yxcowork.vip/qiukai |
|
||
| 维护 | @thedotmack | 筑基阁 / 开阳星 |
|
||
|
||
## 功能
|
||
|
||
- **跨会话记忆**:自动记录所有操作,下次会话自动恢复上下文
|
||
- **语义搜索**:搜索历史会话中的工具调用、观察记录、输出
|
||
- **语料库**:构建知识语料库,通过 AI 问答检索
|
||
- **代码结构**:smart_outline / smart_unfold 快速浏览代码
|
||
|
||
## 数据目录
|
||
|
||
默认 `~/.codebuddy-mem/`,由 `CODEBUDDY_MEM_DATA_DIR` 环境变量控制。
|
||
|
||
```
|
||
~/.codebuddy-mem/
|
||
├── codebuddy-mem.db ← 主数据库 (SQLite)
|
||
├── claude-mem.db → codebuddy-mem.db ← 符号链接,兼容 worker 硬编码
|
||
├── chroma/ ← HNSW 向量索引
|
||
├── chroma-sync-state.json ← 各项目同步水位线
|
||
├── settings.json ← 运行时配置
|
||
├── supervisor.json ← 进程管理状态
|
||
└── logs/ ← 运行日志
|
||
```
|
||
|
||
> **命名说明**:worker 二进制中硬编码了 `claude-mem.db` 文件名。真实文件已改为 `codebuddy-mem.db`,`claude-mem.db` 是符号链接。上游修复后删除链接即可。
|
||
|
||
## 从 claude-mem 迁移
|
||
|
||
```bash
|
||
# 1. 停掉旧版
|
||
pkill -f "thedotmack/claude-mem"
|
||
pkill -f "claude-mem/chroma"
|
||
|
||
# 2. 复制数据
|
||
cp ~/.claude-mem/claude-mem.db ~/.codebuddy-mem/codebuddy-mem.db
|
||
cp -r ~/.claude-mem/chroma/ ~/.codebuddy-mem/chroma/
|
||
|
||
# 3. 重置 chroma 同步水位线(否则搜索不返回结果)
|
||
# 将 chroma-sync-state.json 中各项目的 observations/summaries/prompts 置为 0
|
||
|
||
# 4. 创建符号链接
|
||
cd ~/.codebuddy-mem && ln -s codebuddy-mem.db claude-mem.db
|
||
|
||
# 5. 清理旧残留
|
||
mv ~/.claude-mem ~/.Trash/
|
||
rm ~/.codebuddy/hooks/claude-mem-*.sh
|
||
```
|
||
|
||
## Hook 配置
|
||
|
||
Hook 负责在 CodeBuddy Code 生命周期事件中向 worker 发送数据。必须设置以下环境变量,否则 `bun-runner.js` 会回写到 `~/.claude-mem/`:
|
||
|
||
```json
|
||
{
|
||
"hooks": {
|
||
"SessionStart": [{
|
||
"matcher": "startup|clear|compact",
|
||
"hooks": [{
|
||
"type": "command",
|
||
"command": "export CLAUDE_MEM_DATA_DIR=\"$HOME/.codebuddy-mem\"; export CODEBUDDY_MEM_DATA_DIR=\"$HOME/.codebuddy-mem\"; ..."
|
||
}]
|
||
}]
|
||
}
|
||
}
|
||
```
|
||
|
||
完整配置见 `hooks/hooks.json`。
|
||
|
||
## 回归测试
|
||
|
||
```bash
|
||
bash scripts/regression-test.sh
|
||
```
|
||
|
||
11 层 47 项覆盖:进程 / 文件 / 数据库 / 数据统计 / 完整性 / Chroma / 配置 / 日志 / HTTP / Hook / MCP API。
|
||
|
||
## 安装
|
||
|
||
### 方式一:独立 MCP 服务
|
||
|
||
```bash
|
||
# 克隆仓库
|
||
git clone https://git.yxcowork.vip/qiukai/codebuddy-mem.git ~/.codebuddy-mem
|
||
|
||
# 安装依赖
|
||
cd ~/.codebuddy-mem && bun install
|
||
|
||
# 配置 MCP(~/.codebuddy/.mcp.json)
|
||
{
|
||
"mcpServers": {
|
||
"codebuddy-mem": {
|
||
"type": "stdio",
|
||
"command": "bun",
|
||
"args": ["~/.codebuddy-mem/scripts/mcp-server.cjs"]
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 方式二:CodeBuddy 插件
|
||
|
||
```bash
|
||
bash install.sh
|
||
```
|
||
|
||
## 配置
|
||
|
||
配置文件:`~/.codebuddy-mem/settings.json`
|
||
|
||
```json
|
||
{
|
||
"CODEBUDDY_MEM_PROVIDER": "deepseek",
|
||
"CODEBUDDY_MEM_DEEPSEEK_API_KEY": "sk-xxx",
|
||
"CODEBUDDY_MEM_MODEL": "deepseek-chat",
|
||
"CODEBUDDY_MEM_WORKER_PORT": "37701"
|
||
}
|
||
```
|
||
|
||
## 协议
|
||
|
||
AGPL-3.0 — 继承自 claude-mem,源码必须保持开放。
|
||
|
||
## 上游
|
||
|
||
本仓库基于 [claude-mem v12.6.0](https://github.com/thedotmack/claude-mem) 分叉。详见 [UPSTREAM.md](./UPSTREAM.md)。
|