把散落在十几个私有目录里的 Agent 会话收进同一个窗口,本地只读、全文检索,还能让 Agent 自己去查历史。
今天分享一个工具,专门管 Agent 的会话记录。
项目叫 Wake,作者是 iAmCorey(Corey Chiu)。它做的事一句话能说完:把你电脑上二十多个 coding agent 的会话,从一个一个私有目录里捞出来,收进同一个窗口。本地只读,能全文检索,还能一键回到当时的终端现场。
如果你平时各家 Agent 混着用,或者手上同时开着好几个 Agent 干活,那这个应该挺对你胃口。
我的会话记录,已经散得自己都不认识了
先说我现在电脑上是什么状态。
~/.claude/projects 下面一堆 jsonl,~/.codex/sessions 一摊,还有 DSH 的 ~/.dsh/sessions,另外几个工具各自还有各自的地盘。它们谁也不知道谁存在。
上周三下午,我让 Agent 帮我改过一段正则。改得挺好,当时我也懒得记。这周要复用的时候,我只记得「大概聊过一个正则」,然后就开始了漫长的翻目录。
不是找不到。
是连从哪开始找都不知道。
我甚至不确定那次是在 Claude Code 里聊的,还是在 Codex 里。这种事你只能一个一个点开看,运气好十分钟,运气不好就当没这回事。
想找上周的某个会话,基本靠猜。那不是猜是什么。而且我猜错的次数,比猜对的多。
而且这不是个人习惯问题。每个 Agent 都在拼命优化自己那一段的体验,历史记录界面做得越来越漂亮,但它们之间是打不通的。你在 Claude Code 里跟它磨了半小时才磨出来的那个解法,Codex 一点都不知道。
工具越多,记忆越碎。
十几个目录,各管一段:想找回上周那次对话,只能一个一个抽屉翻
它做的事很朴素:把十几个目录读一遍,建个索引
Wake 的第一个动作,是把这些目录全部扫一遍。
注意它扫的方式:只读。它打开 ~/.claude、~/.codex 这些目录,但不写回任何东西,凭证文件(auth.json 这类)一概不碰。它自己的索引放在一个单独的数据库里。
扫完之后,你得到的是一个统一的窗口。所有会话按 agent 和项目分组,Grok Build 那种子代理会话会嵌套在父会话底下,而且它有文件监听,新产生的会话会自己滚进来。

官方主界面:左侧按 Agent 与项目分组,右侧是转录详情
然后是检索。
⌘K 或者 Ctrl+K 呼出一个搜索框,底下走的是 SQLite 的 FTS5 trigram 索引。这个索引有个我挺喜欢的特性:它对中文和代码子串一样好使。
举个例子。你要找某次对话里提过的 useEffect(,直接搜就行。这种事用普通的英文分词索引是做不出来的,因为 useEffect( 根本就不是一个词。
搜索结果会直接跳到那次对话里命中的那条消息,不是把你丢进一个文件里自己数行。
我觉得最实用的是第三块:一键恢复。
以前的流程是,你翻到那次对话,看一眼,然后自己记住当时的项目目录,手动 cd 过去,再想办法把会话重新拉起来。
现在是一键。
就算你当时那个终端早就关了,它也能在原来的项目目录里把会话重新打开——macOS 上是 Terminal 或 iTerm,Linux 和 Windows 用系统里的原生终端。后台执行的就是 claude --resume、codex resume 这些原生命令。
顺手说一个我觉得挺用心的细节:转录视图里,Agent 的思维过程和工具调用的输入输出都能展开看,子代理的会话还能穿透进去。
这个功能你可能觉得没什么。但当你需要复盘「当时它到底为什么这么改」的时候,能不能看到它当时在想什么,差别很大。

⌘K 全文检索:Scope 是全部会话,代码子串也能命中
真正让我坐直的地方:它让 Agent 能查自己的历史
如果 Wake 只做了上面那些,那它是个很好用的会话管理器,句号。
但它还往里塞了个东西:wake-mcp。
一个只读的 MCP 服务,挂在应用旁边,通过 stdio 跟外面说话,一共五个工具。
WAKE-MCP · 5 TOOLS
wake_search
搜遍所有 Agent 的会话标题与正文,中文和代码子串都能命中
wake_list_sessions
按项目、Agent、时间窗或星标,列出最近更新的会话
wake_get_session
把某一次转录读成紧凑的 Markdown,可翻页
wake_list_projects
列出有索引的项目,按最近活跃排序
wake_list_memories
列出各个 Agent 给自己写的记忆文件,按项目分组
这件事的意义在哪?
以前会话记录是死的。它就躺在磁盘上,只有你人去翻它的时候它才存在。
现在它是活的。任何支持 MCP 的客户端——Claude Code、Codex、Cursor 都行——都可以在工作的时候直接去查你的全部历史。
我想了一下这个场景。
我在 Codex 里开一个新会话,跟它说「上次那个限流的写法是怎么搞的」。它不需要我解释,它可以自己去搜我三个月前在 Claude Code 里跟另一个模型磨出来的那套方案。
或者更直接一点:一个 Agent 干到一半卡住了,另一个 Agent 可以基于前一个的历史对话接手。
这就是所谓的「跨 Agent 任务交接」——不是靠你复制粘贴,是靠它们自己去查。
配上 wake-cli,命令行也能拿到同样的东西。作者说 CLI 的输出和 MCP 是逐字节对齐的,所以不管 Agent 走哪条路,看到的东西都一样。
$ wake-cli
wake-cli sessions --project "$PWD" # 这个仓库里发生过什么
wake-cli search "rate limiter" # 这件事在哪儿聊过
wake-cli show # 读那次转录
wake-cli refresh # App 关着也能保持索引新鲜
还有一招更省事的:npx skills add iAmCorey/Wake 装个 skill,Agent 就会在处理任务的时候自己想到去查历史,不需要你每次都交代。

官方会话管理页:左侧列着 20 多个 Agent,DeepSeek Harness 也在里面
顺便说一句,它还能镜像你其他机器上的会话。在设置里加一台主机,走 SSH 和 rsync 把远端的会话同步过来,带一个 @host 的角标,跟本地的会话一起搜。
一个 Agent 查完历史,另一个接着干
它是怎么做到的
聊完它能干什么,我顺嘴说说它底下是怎么搭的,因为里面有个选择我觉得挺关键。
技术栈是 Rust + GPUI。
GPUI 是 Zed 编辑器团队开源的那套 UI 框架,特点是界面全部自己用 GPU 画出来,不嵌浏览器,也不用系统原生控件。你在 Zed 里感受到的那种干脆,就是它。
为什么这个选择值得说?因为这类工具最影响体感的就一个指标:快不快。
你按下检索的时候,后面是一次跨十几个目录、几百兆文本的活儿。用 Rust 写数据层、自己画界面,换来的是可预期的响应速度。
310
个会话(作者实测样本)
800MB
JSONL 文本量
5 秒
首次全量建索引
搜索结果返回
之后的启动是即时的,因为它按文件修改时间做增量扫描。
架构上还有一个我挺欣赏的设计。
它把数据层单独拆成了一个 crate,叫 wake-core,里面没有任何 UI 依赖。每个 Agent 对应一个适配器,都实现同一个 trait——作者的原话是,加一个适配器,就白得整套界面。
这句话听着像宣传,但它其实解释了为什么这个项目能在不长时间里支持到二十多个 Agent。
数据库是 rusqlite 加 WAL,会话、消息、全文索引、用户数据(星标和置顶)、删除墓碑各占各的表。文件监听走 notify,某个会话文件一变,就只更新那一条。
还有一个设计我要单独拎出来说:整个应用不联网。
唯一的网络动作是它检查更新的时候去读一下 GitHub 的 Release 信息——这是你主动点的。剩下所有会话数据全部留在本机。
它还专门声明了几件事:不写别人的数据库、不读凭证文件、远端镜像只拷会话数据和附属文件、从不往远端写任何东西。
我觉得这个取舍挺聪明。这类工具要读的是你所有 AI 对话的完整记录,权限非常敏感。它选的是「我只读、我不传」,而不是给你一份隐私政策让你去信。
只读、不写回、不联网:数据不出本机
我的评价是
它切的这个痛点是真的,而且被忍了很久。多 Agent 混用早就成了常态,会话碎片化这件事所有人都在默默承受,但没什么人正经去做聚合。

官方仓库:1.4k stars / 88 forks / MIT / 202 Commits
然后它给了两个层面的解法,一个是给人用的(窗口、检索、恢复),一个是给机器用的(MCP 和 CLI)。后面这个我觉得更有想象力。
但有几件事,你要是想用,最好提前知道。
CAVEAT 01
它站在上游的肩膀上,也受制于上游
它的能力依赖各个 Agent 的本地存储格式。厂商哪天改了格式,或者干脆把数据加密,适配就可能失效。这不是它的问题,但它躲不开——Windsurf 和 Trae 已经把本地数据加密,Amp、Factory(Droid)、Warp 干脆把会话放在云上,官方明确说这些支持不了。
这一点得诚实说给打算长期依赖它的人听。
CAVEAT 02
各平台成熟度不一样
macOS 是一等公民,功能和终端恢复打磨得比较完整。Linux 从 v0.2.5 起、Windows 从 v0.2.7 起是实验性支持——数据层、渲染、检索都测过了,但终端恢复和桌面集成还没经过足够的真实桌面检验。
另外两个平台都得自己经手一下签名的事:macOS 的安装包是 ad-hoc 签名的,第一次打开会被 Gatekeeper 拦下来,得右键打开或者手动去掉隔离属性;Windows 的二进制没签名,会过一遍 SmartScreen。
CAVEAT 03
token 统计的口径取决于各家 Agent 记不记
有的 Agent 转录里就是不记 token,那 Wake 也只能显示未知。这一点它没有硬编数据,我觉得是对的,但你看到排行榜的时候心里要有数。
CAVEAT 04
远程主机功能有点前置条件
SSH 必须免密(它没有终端,答不了密码提示),两端都要有 rsync,而且 Windows 上这两个东西必须来自同一套 Cygwin/cwRsync,还要把它们放在系统自带 OpenSSH 前面。这个坑挺具体的,但踩了会卡很久。
还有一条温和的提醒:远端镜像只能读,不能在 Wake 里删;它也只认登录用户 home 下面的默认路径,不认远端那些 CODEX_HOME 之类的覆盖。
至于它本身好不好用——我的感受是,它把「找回一次对话」这件事的成本从十几分钟压到了几秒钟。这不是锦上添花,是能不能用的问题。
它更像是一个给你所有 AI 对话建的图书馆目录,而不是又一个聊天记录列表。
想用的话
回到开头那次找正则的经历。
现在我遇到类似情况的流程变了:⌘K,输几个关键词,命中,回车跳过去,需要的话一键在终端把那次会话重新拉起来。
如果你也想试试,去它的 GitHub Release 页面下载对应平台的包:macOS 是 Universal Binary,Linux 有 .deb 和 tar.gz,Windows 是 zip。或者从源码构建,需要 Rust 工具链。
装完之后有个动作我建议顺手做掉——npx skills add iAmCorey/Wake,再配一下 MCP,让它变成你所有 Agent 都能用的东西。
那才是它真正值钱的地方。
会话记录,也可以是一种可以被查询的记忆