关于 CCRider
CCRider 汇总多种编码 Agent 的会话记录,提供全文搜索、终端浏览和恢复会话功能。内置 MCP 服务,让 Agent 能查询以往对话并保存会话书签。
主要功能
- 01导入并增量同步多种 Agent 会话
- 02按内容、项目和日期全文搜索
- 03终端界面浏览会话
- 04通过提供方命令恢复会话
- 05生成和查找会话书签
- 06按提供方筛选历史记录
适用场景
- 01查找曾处理身份验证问题的会话
- 02按项目或日期筛选历史对话
- 03让编码 Agent 检索先前的工作上下文
- 04保存会话书签以便之后定位
MCP 相关
内置 MCP 服务通过 search_sessions、list_recent_sessions、get_session_messages 等工具提供本地会话搜索、浏览和书签功能。MCP 客户端可用 `ccrider serve-mcp` 启动服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ccrider
搜索、浏览并恢复 Claude Code、Codex CLI、GitHub Copilot CLI、OpenCode、Pi、Antigravity 和 Amp 会话,还可使用 MCP 服务记住过去的上下文。
当你的编码 Agent 忘记时,告诉它:看看你做过什么。
为什么选择 ccrider?
你在 ~/.claude/projects/、~/.codex/sessions/、~/.copilot/、~/.local/share/opencode/、~/.pi/agent/sessions/、~/.gemini/antigravity*/brain/ 和 Amp 账户中积累了数月的编码 Agent 会话。想找到那个修复了身份验证错误的对话?祝你好运,试着在层层嵌套的 JSON 文件和各个工具中 grep 吧。
ccrider 会将 Claude Code、Codex CLI、GitHub Copilot CLI、OpenCode、Pi、Antigravity(CLI、IDE 和桌面应用)以及 Amp 会话编入同一个可搜索数据库,并提供 TUI 浏览器、CLI 搜索和 MCP 服务,让你的 Agent 也能搜索过去的会话。
# Import sessions from every detected local provider (and Amp when explicitly enabled)
ccrider sync
# Launch the TUI - browse, search, resume
ccrider tui
# Or search from command line
ccrider search "authentication bug"
留在终端中。找到任意对话。从上次停下的地方继续。TUI 中的会话会标注其提供方,方便识别。
安装:
# Homebrew (recommended)
brew install neilberkman/tap/ccrider
# Installed 1.11.1 or earlier with Homebrew? ccrider is now a cask, not a formula:
brew uninstall --formula ccrider
brew trust --cask neilberkman/tap/ccrider
brew install --cask neilberkman/tap/ccrider
# Or from source
git clone https://github.com/neilberkman/ccrider.git
cd ccrider
go build -o ccrider cmd/ccrider/main.go
sudo mv ccrider /usr/local/bin/
# Optional: install the MCP server in Claude Code
claude mcp add --scope user ccrider $(which ccrider) serve-mcp
https://github.com/user-attachments/assets/5b008290-076e-4323-a775-f27f704b1ff2
核心功能
1. 交互式 TUI 浏览器
ccrider tui
使用精致的终端界面浏览会话:
- 方向键可用于导航
- Enter可查看完整对话
- o可在新的终端标签页中打开会话(自动检测 Ghostty、iTerm、Terminal.app)
- **/**可搜索所有消息
- p可切换项目筛选(仅显示当前目录)
- **?**可查看帮助
与你当前目录匹配的会话会以浅绿色高亮显示,让你立即了解哪些会话与你当前的工作相关。
2. 全文搜索
ccrider search "postgres migration"
ccrider search "error handling" --project ~/code/myapp
ccrider search "authentication" --after 2024-01-01
由 SQLite FTS5 提供支持——可搜索消息内容、按项目或日期筛选,并即时获取结果。
3. 恢复会话
在 TUI 中按 r,即可在正确的目录中使用正确的会话启动提供方的恢复命令。按 c 复制该命令,或按 o 在新的终端中打开。Pi 使用 pi --session <id> 恢复会话,使用 pi --fork <id> 创建分支;Antigravity CLI 会话使用 agy --conversation <id> 恢复,并可通过 /fork 交互式创建分支;Antigravity IDE 和桌面应用的对话可以搜索和浏览,但没有终端恢复命令,因此请在应用中重新打开;Amp 使用 amp threads continue <id> 恢复会话。
4. 增量同步
ccrider sync # Import new sessions from all providers
ccrider sync --force # Re-import everything
自动发现 Claude Code(~/.claude/projects/)、Codex CLI(~/.codex/sessions/)、GitHub Copilot CLI(~/.copilot/session-state/)、OpenCode(~/.local/share/opencode/opencode*.db)、Pi(~/.pi/agent/sessions/)、Antigravity CLI(~/.gemini/antigravity-cli/brain/)、Antigravity IDE(~/.gemini/antigravity-ide/brain/)以及 Antigravity 桌面应用(~/.gemini/antigravity/brain/)中的会话。Antigravity 会导入每个规范的 transcript.jsonl,但会排除其诊断转录记录。若要导入 Amp,请在 ~/.config/ccrider/config.toml 中设置 amp_enabled = true,并安装/验证 amp CLI。之后,ccrider 会列出已归档和活跃的线程,并仅导出新增或已更改的线程。
Amp 线程由云端提供支持。该集成默认处于禁用状态,因为启用后会将可搜索文本下载到 ccrider 的本地 SQLite 数据库中。MCP 请求不会联系 Amp;它们会搜索此前通过 CLI/TUI 同步缓存的 Amp 数据。
MCP 服务
ccrider 内置了 MCP(Model Context Protocol)服务,可让你的编码 Agent 访问会话历史记录。
在处理新问题时,让 Agent 搜索之前的对话:
- “查找我处理过身份验证的会话”
- “显示我最近的 Elixir 会话”
- “我上周在 billing 项目中做了什么?”
- “搜索我的 Codex 会话,查找数据库迁移”
设置
配置支持 MCP 的客户端以运行 ccrider serve-mcp。示例:
Claude Code:
# Install for all your projects (recommended)
claude mcp add --scope user ccrider $(which ccrider) serve-mcp
# Or for current project only
claude mcp add ccrider $(which ccrider) serve-mcp
Claude Desktop:
添加到配置文件(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"ccrider": {
"command": "ccrider",
"args": ["serve-mcp"]
}
}
}
其他 MCP 客户端:
使用命令 ccrider,参数为 ["serve-mcp"]。
可用工具
- search_sessions - 按日期、项目和提供方筛选,对所有会话内容进行全文搜索
- list_recent_sessions - 获取最近的会话,可按项目或提供方筛选
- get_session_messages - 获取会话中的消息(支持尾部模式,以及搜索匹配项周围的上下文)
- generate_session_anchor - 保存唯一的会话锚点,可选添加描述性标签和已知的会话 ID
- list_session_anchors - 列出已保存的锚点及其匹配的会话,支持按项目、提供方和会话筛选及分页
search_sessions、list_recent_sessions 和 list_session_anchors 支持使用 provider 参数筛选 claude、codex、copilot、opencode、pi、antigravity、antigravity-ide、antigravity-desktop 或 amp。搜索和检索工具会读取你的本地会话数据库;生成锚点会在其中保存书签。本地提供方的数据从磁盘读取;同步期间会从已验证身份的 Amp 账户获取 Amp 线程,然后存储在本地。
保存和查找会话锚点
让 Agent 使用描述性标签为对话添加书签。例如,使用 generate_session_anchor 和 {"label": "Add REST endpoint"},可保存类似 add-rest-endpoint-a12bc34de56f 的标签。标签由 Agent 根据对话提供;无需单独的 LLM 服务。省略 label 时,将保留原有的四个随机单词格式。
如果 Agent 知道会话 ID,也可以提供 session_id,立即关联书签。否则,它会在回复中包含返回的短语,并等待用户回复,以便将短语写入对话记录。list_session_anchors 会同步本地对话记录并查找包含该短语的对话,不设日期截止时间。
调用 list_session_anchors 可检索已保存的标签、短语、时间戳,以及带有恢复命令的匹配会话。使用返回的 session_id 调用 get_session_messages 以阅读对话。列表默认每页显示 20 个锚点(最多 100 个);传入其 next_offset 作为 offset 以继续查看。可选的 project、provider 和 session_id 筛选条件可用于选择关联的会话。
锚点生成后会立即出现在未筛选的列表中,即使其 sessions 列表仍为空。会话筛选会排除不匹配的锚点。同一短语复制到多个对话中时,可能匹配多个会话;显式的 session_id 绑定优先。如果会话列表较大,可能会通过 sessions_truncated: true 缩短列表,同时保留完整的 session_count。
注册表包含此功能添加后生成的锚点。此前生成的短语和手动编写的标签仍可作为普通对话文本搜索。
恢复较早的上下文
generate_session_anchor 可帮助 Agent 在上下文压缩后识别当前对话。Agent 调用该工具,将返回的短语包含在回复中,并请你作答,以便将该回复写入对话记录。然后,Agent 使用该短语作为 anchor_phrase,并将所需主题作为 query,调用 search_sessions。在此工作流中,无需单独记录该短语。
对话中已出现的唯一短语也可以直接用作 anchor_phrase,无需调用生成器。anchor_phrase 搜索筛选器会匹配对话记录文本,默认只考虑最近一小时内的匹配项;显式设置 after_date 或 before_date 筛选器会覆盖此时间范围。对于已保存的书签,可使用 list_session_anchors 直接获取会话 ID,即使添加书签时未将其短语写入对话记录也可以。
若要使用已知标签(包括你自己撰写的描述性标签)查找较早的对话,可直接搜索:
{
"query": "how-to-add-a-rest-endpoint-in-this-repo-abc123",
"exact_match": true
}
此普通 search_sessions 查询没有默认的日期限制。使用返回的 session_id 调用 get_session_messages,即可阅读对话。
配置
注意: Claude Code 默认会在 30 天后自动删除会话 JSON 文件。ccrider 会在自己的数据库中保留所有会话内容,但如果你希望保留原始文件(用于恢复会话等),请在
~/.claude/settings.json中添加"cleanupPeriodDays": 99999。
ccrider 会在 ~/.config/ccrider/ 中查找配置:
# config.toml - pass additional flags to each provider's resume command
claude_flags = ["--dangerously-skip-permissions"]
# codex_flags = ["--dangerously-bypass-approvals-and-sandbox"]
# copilot_flags = []
# opencode_flags = []
# pi_flags = []
# terminal_command.txt - custom command for 'o' key
# Available placeholders: {cwd}, {command}
wezterm cli spawn --cwd {cwd} -- {command}
# resume_prompt.txt - customize the prompt sent when resuming sessions
完整详情请参阅 CONFIGURATION.md。
架构
遵循 Saša Jurić 的原则,采用严格的核心与接口分离:
- 核心(
pkg/、internal/core/):纯业务逻辑——解析、数据库、搜索、多提供方导入 - 接口(
internal/interface/、cmd/):轻量封装——CLI、TUI、MCP 服务
使用经过验证的技术:
- 使用 Go 实现高性能和单二进制文件分发
- 使用 SQLite with FTS5 实现快速全文搜索
- 使用 Bubbletea 提供精致的终端 UI
- 使用 MCP 集成编码 Agent
为什么这很重要
其他编码 Agent 会话工具存在问题:
- 模式支持不完整(无法解析所有消息类型)
- 构建损坏,依赖项已被弃用
- 没有真正的搜索功能(只有 grep)
- 实际上无法恢复会话
- 仅支持单一提供方
ccrider 通过以下方式解决这些问题:
- 100% 模式覆盖率——正确解析所有消息类型
- 多提供方——在一个数据库中支持 Claude Code、Codex CLI、GitHub Copilot CLI、OpenCode、Pi、Antigravity 和 Amp
- SQLite FTS5 搜索——快速、强大的全文搜索
- 单二进制文件——无需 npm、pip 或依赖项
- 原生恢复——按一个键即可恢复会话
- 增量同步——检测正在进行的会话中的新消息
开发
开发环境设置和指南请参阅 CONTRIBUTING.md。
项目结构
cmd/ccrider/ # CLI entry point + MCP server
internal/
core/ # Business logic (no UI concerns)
db/ # Database operations
importer/ # Session import/sync and Amp CLI client
search/ # Full-text search
session/ # Session launch logic
interface/ # Thin UI wrappers
cli/ # Command handlers
tui/ # Terminal UI (bubbletea)
pkg/
ccsessions/ # Claude Code session parser (public API)
codexsessions/ # Codex CLI session parser (public API)
copilotsessions/ # GitHub Copilot CLI session parser (public API)
opencodesessions/ # OpenCode session parser (public API)
pisessions/ # Pi session parser (public API)
antigravitysessions/ # Antigravity session parser (public API)
ampsessions/ # Pure Amp export parser (public API)
快速构建
go build -o ccrider cmd/ccrider/main.go
./ccrider sync
./ccrider tui
文档
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。