# 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)。
