codmate
CodMate:macOS 原生的 CLI AI 会话管理器,支持 Claude Code/Code
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
CodMate:macOS 原生的 CLI AI 会话管理器,支持 Claude Code/Code
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否有这样的经历——用 Claude Code 跑了一个大项目中途卡住,重启后却找不到那个会话了;用 Codex 处理完一批代码,回头想复用提示词却早已淹没在历史记录里;Gemini CLI 的会话散落在不同目录,根本不知道哪个对应哪个任务。这类"AI 编程工具用完了就丢了"的困扰,正是 CodMate 试图解决的核心问题。
CodMate 是由独立开发者 loocor 构建的 macOS 原生应用(SwiftUI 开发),专门用于管理 Codex、Claude Code 和 Gemini CLI 三款主流 CLI 编程工具产生的会话记录。它通过三栏式紧凑界面,让用户快速浏览、搜索、恢复和复盘 AI 辅助编程的完整工作过程。

图1:CodMate 三栏式主界面(侧边栏-会话列表-详情)
CodMate 的诞生源于作者自身的真实痛点。在日常使用 Claude Code 和 Codex 进行编程时,开发者普遍面临几个问题:会话文件散落在不同路径(Codex 用 ~/.codex/sessions/*.jsonl,Claude Code 用 ~/.claude/projects/,Gemini CLI 用 ~/.gemini/tmp/),历史记录无法检索,不同工具之间没有任何统一管理方案,而且会话中断后难以精确恢复工作上下文。
作者 loocor 在 GitHub 上公开的 Archival Note 中提到,CodMate 最初的目标是成为一个"更好用的 CLI Agent 体验"探索载体。然而随着时间推移,他意识到传统的重型桌面 GUI 在快速迭代的 AI 生态中显得有些力不从心——CLI/TUI 方案的迭代速度更快、包袱更轻。因此他决定将 CodMate 归档,转向更跨平台的 MCP 编排工具 MCPMate。这段"自我革命"的故事本身,也反映了 AI 工具链领域变化之快。
多源会话聚合浏览是 CodMate 的基础能力。它同时支持 Codex、Claude Code 和 Gemini CLI 三种主流 CLI 编程工具,自动解析各工具的会话存储格式(均为 .jsonl),在左侧边栏按项目分组、顶部日历视图显示活跃时段,开发者可以快速定位特定日期的会话记录,而不必手动翻找文件系统。
**全局搜索(⌘F)**是高频功能。CodMate 内置浮动搜索面板,支持按会话内容、标题、注释等多维度过滤,并能追踪搜索进度、在大文件场景下取消搜索。搜索基于增量索引和 SQLite 缓存,二次启动后几乎可以瞬间定位历史记录。
项目与任务工作区是 CodMate 的核心组织单元。与其把会话随意散落在文件夹里,不如用"项目"(对应一个代码仓库)和"任务"(项目内的子目标)来分类管理。每个任务还能生成一个可分享的上下文文件(context.json),当需要恢复工作时,一键生成恢复提示词,而不是从零开始。
会话恢复与新建支持多种终端环境:macOS 自带 Terminal.app、iTerm2、Warp,以及非沙盒版本内置的嵌入式终端。恢复时自动沿用上一个会话的工作目录(cwd)和项目 profile,确保 AI 工具的上下文连贯。
**Project Review(Git Changes)**是"CodMate 独家"的工作流。它在应用内直接展示 Git 变更文件列表,支持暂存/取消暂存、查看统一 diff,并能在提交时调用 AI 自动生成符合规范的 commit message——这个功能省去了频繁切换窗口的麻烦,尤其适合需要频繁小步提交的重构场景。
Provider 和 MCP 配置则让 CodMate 成为一个 AI 工具链的配置中枢。用户可以在应用内管理多个 AI Provider(OpenAI、Anthropic 等)和对应的 API Key,配置 MCP Server,并通过 CodMate 将 MCP 设置自动写入 Claude Code 的配置文件,避免了手动编辑 JSON 的繁琐和错误。
CodMate 采用了现代 Swift 生态的最佳实践:
MVVM 分层架构:
SessionSummary、SessionEvent、DateDimension、SessionLoadScope 等核心数据结构,专门处理会话文件的解析和加载逻辑。SessionIndexer(增量索引)、SessionCacheStore(SQLite 缓存)、SessionActions(会话操作)、SessionTimelineLoader(对话时间线加载)、CodexConfigService(配置服务)等,是业务逻辑的核心所在。Swift 6 Actor 并发模型:需要共享缓存的服务均声明为 actor 类型,确保线程安全;所有 UI 更新强制在 MainActor 上执行。搜索和作用域切换时会主动取消前序任务(Task.isCancelled 守卫),避免无效计算。
性能优化策略:
Data(mappedIfSafe:)),仅解析文件前 64 行和尾部采样(约 1MB)来确定 lastUpdatedAt,避免全量加载大会话文件。~/.codmate/sessionIndex-v4.db,二次启动时直接读取缓存。第三方依赖:
CodMate 最大的局限在于平台锁定——它是彻头彻尾的 macOS 原生应用,依赖 SwiftUI 和 macOS 系统框架,没有任何跨平台支持,也没有任何容器化配置(无 Dockerfile、无 docker-compose)。用户必须拥有 macOS 13.5+ 设备,且需要自行安装 Swift 6 工具链和 Xcode Command Line Tools。
部署路径有两条:
make build(调试构建)或 make app VER=x.x.x(打包 App),签名可选 Ad-hoc 模式用于本地测试。由于是桌面 GUI 应用,不存在 Web 界面,也无 API 服务端点,远程访问需通过 SSH + X11 或 VNC 等间接方式。
值得注意的是,CodMate 在 2026 年初宣布归档,作者转向了 MCPMate 项目(https://github.com/loocor/mcpmate)。MCPMate 的定位是"MCP Server 和 AI Client 的管理中枢",更强调跨平台 CLI-first 方向,以及"HUI(Human Usability Interface)"的探索——即如何设计帮助人类更好地与 AI 系统协作的界面层。
从 CodMate 到 MCPMate 的演进路径,本身就是一个值得关注的信号:在 AI/LLM 加速用纯逻辑生成内容的当下,**人机协作界面(HUI)**正在成为新的探索热点,而不再是传统的桌面 GUI 形态。
CodMate 精准地解决了一个长期被忽视的需求:CLI 编程工具的会话管理。它的技术实现相当扎实——Swift 6 actor 并发、内存映射文件读取、SQLite 分块索引——体现了作者对性能优化的深度思考。三源会话聚合、Git 变更集成提交、AI commit message 生成等特色功能,构成了一个完整的工作流闭环。
但 macOS 专属的平台锁定、归档决定和向 MCPMate 的转型,也提醒我们:CLI Agent 生态正在快速分化,传统的桌面 GUI 形态可能不再是下一代 AI 工具链协作界面的最优解。对于已经在 macOS 上深度使用 Claude Code 或 Codex 的开发者,CodMate 仍是目前最成熟的会话管理方案,值得体验;对于追求跨平台或 CLI-first 体验的用户,MCPMate 的后续发展更值得关注。