同时用 Codex、Opencode、Cursor 这几个 AI 编码助手的人,迟早会遇到同一个问题:会话历史散落在不同的本地目录里,想查“上周跟某个 Agent 讨论过的重构方案”,要么挨个打开工具去翻,要么只能凭记忆硬找。Wake 这个 Rust 项目就是冲这个问题来的:它把电脑上多个 AI Agent 软件的历史会话记录聚合到一起,用单文件可执行程序的方式提供本地检索能力。
从项目定位看,核心特点可以归纳为四点:第一,Rust 编写,编译产物是单个二进制文件,不依赖额外的 Node 或 Python 运行时,分发和换机器成本都很低;第二,面向多 Agent 场景,不只是解决某个工具的问题,而是把 Codex、Opencode、Cursor 这类助手的历史数据统一索引;第三,所有数据都在本机处理,适合对代码片段、账号信息、内部项目细节比较敏感的开发者;第四,主打轻巧方便,适合放在常用工具链里,用命令行快速搜会话、做统计、回顾上下文。
这篇文章会用一套完整验收流程来讲清楚怎么用:先确认 Wake 能识别本机数据目录,再测试会话列表、关键词搜索和按 Agent 过滤,接着看怎么和脚本结合做批量导出与统计,最后总结常见坑和合规边界。适合已经把 AI 编码助手当作主要生产力工具、希望建立本地历史记录检索系统的开发者阅读。
同时说明一点:Wake 是命令行工具,文章里的命令按通用形式给出,具体路径、数据根目录、子命令名需要以你本机版本和仓库 README 为准。如果你下载到的发行版命令有差异,优先按 README 调整,不要照抄。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | 本地 AI 会话历史聚合与检索工具 |
| 编程语言 | Rust |
| 打包形式 | 单文件可执行程序,不依赖 Node.js / Python 运行时 |
| 支持的 Agent | Codex、Opencode、Cursor 等主流 AI 编码助手,具体范围以官方支持列表为准 |
| 支持平台 | Windows / macOS / Linux,按发行渠道提供的二进制版本为准 |
| 数据存放位置 | 各 Agent 自己在本地生成的会话目录,如 ~/.codex、~/.cursor、~/.config/opencode 等 |
| 启动方式 | 命令行直接执行 |
| 是否需要 GPU | 不需要 |
| 是否提供在线 API | 默认面向 CLI 输出,不保证提供 HTTP 服务 |
| 批量任务 | 通过 CLI 输出 + 批处理脚本实现 |
| 适合人群 | AI 编码助手重度用户、团队内部知识沉淀、需要对会话做审计和统计的开发者 |
建议第一时间运行 wake --help 或 wake -h 拉取子命令清单。这类工具的命令结构通常很接近:wake init 负责初始化配置,wake scan 或 wake index 负责扫描数据目录,wake search 负责检索,wake list 负责列出会话。子命令名可能不同,但看不出结构,只需要十几秒钟能省掉后续很大判断成本。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 适用场景与使用边界
2.1 适合谁
第一类,多 Agent 同时使用的人。有人用 Cursor 写业务代码,用 Codex CLI 处理命令行任务,用 Opencode 跑开源项目任务。每个工具里都有有价值的评审、报错修复、重构思路,但彼此隔离。Wake 能将这些会话聚合,一个命令定位历史。
第二类,对代码隐私敏感的人。会话内容往往包含内部项目路径、业务逻辑、潜在 API Key 或账号信息。把这段历史整理成本地索引,在不把内容上传到额外服务的条件下建立个人检索库,正好符合需要。
第三类,需要做会话统计和复盘的人。比如定期汇总“本周哪个 Agent 用得最多、哪类问题反复出现”,可以基于 Wake 的 CLI 输出写脚本,生成日报或周报。
2.2 不适合谁
如果只是用单个工具,并且工具自带搜索已经够用,Wake 的帮助有限。
如果需要实时监听 Agent 终端日志、做流式监控,那不是这一类的定位。Wake 更适合聚合历史会话记录,而不是当实时日志管道。
如果有海量历史数据需要按语义向量检索,建议先用 Wake 做本地聚合和清洗,再接入知识库或者向量数据库。
2.3 合规与隐私边界
这句话必须放在前面:AI Agent 的会话记录本质上是你本机的工作资料,里面可能包含公司代码、客户信息、个人凭证。使用 Wake 的过程,不应该把会话记录上传到任何未经授权的位置。
如果你用的是公司电脑,或者会话里出现过非公开项目内容,请先确认公司制度允许这样的本地聚合,再进行扫描和导出。涉及人脸、声音、版权素材的规则不适用于本工具,但代码和内部资料的版权边界一样重要,导出到公共网络之前必须复核。
Wake 类的工具本意是把本地数据留在本地,这正好是合规优势。但“本地处理”不等于“可以随意公开”,所以下面所有示例命令,都建议先在隔离的测试数据目录上跑通,再指向真实数据。
3. 数据聚合的一般思路
要理解这类工具,先要知道各 Agent 的数据是怎么存的。
从主流实现看,AI 编码助手的会话记录通常有几种形态:
- JSONL 文件,每一行是一条会话或一次对话事件;
- 单个 JSON 文件,存一个 Session 或 Workspace 状态;
- SQLite 数据库,用于快速查询和本地缓存;
- 少量 Markdown 或纯文本,用于导出和备份。
Wake 的聚合思路就是:扫描这些数据根目录 → 识别 Agent 来源 → 解析时间戳和对话内容 → 去重排序 → 提供列表、搜索、过滤、导出。因为每种工具的格式可能随版本变化,所以工具通常还会提供配置项,让你指定每个 Agent 的数据目录路径。
从工程角度看,用 Rust 做这个事有天然优势。JSONL 这种“逐行解析”格式特别适合流式处理,不需要把整个文件读进内存也能完成扫描;Rust 的二进制启动速度快,没有 Node 或 Python 那样的启动开销,适合高频命令调用;单文件发布的体验也比“装依赖、配环境、跑脚本”轻很多。
一个关键原则:聚合工具应该只读,不应该修改原始会话文件。正常情况下,Wake 完成扫描和索引后,Codex、Opencode、Cursor 自己的数据文件应该原封不动。如果发现工具会写入原始文件,务必备份后再用。
3.1 常见数据目录参考
不同版本和操作系统差异较大,下面的目录只能作为排查起点,不能当作固定标准:
| Agent | 常见数据位置 | 说明 |
|---|---|---|
| Codex CLI | %USERPROFILE%\.codex\sessions 或 ~/.codex/sessions |
新版本可能还会把历史放在 ~/.codex/history |
| Opencode | ~/.config/opencode 或 %LOCALAPPDATA%\opencode |
Linux 常见 XDG 路径,Windows 上可能落在 AppData 下 |
| Cursor | ~/.cursor 及 workspaceStorage 相关目录 |
具体会话文件一般在 .cursor 下的隐藏目录中 |
如果这些目录不存在,大概率是该工具还没生成过会话数据。你可以先启动一次 Codex 或 Opencode,让它完成一次对话,再接 Wake。
判断真实路径的方法也很简单:在终端里进入用户目录,用 ls 或 dir 看隐藏目录,再根据修改时间排序,就能找到最近写入的会话文件。
4. 环境准备与前置条件
在开始之前,先做一个最短路径检查:
- 操作系统:Windows / macOS / Linux 均可,按你下到的二进制版本选择。
- 运行时:如果使用官方预编译二进制,不需要额外安装 Rust 或 Node;
- Rust 工具链:如果想从源码编译,需要稳定版 Rust,建议通过 rustup 安装;
- 磁盘空间:单文件通常很小,占用可以忽略;真正的空间开销在原始会话数据本身。
- 权限:当前用户必须拥有对会话数据目录的读取权限。Windows 下如果 Agent 以管理员身份运行,普通终端可能读不到部分目录。
- 端口占用:命令行工具一般不需要端口;如果后续有人封装了 Web UI 或 HTTP 服务,再考虑端口冲突。
源码构建的通用流程:
bash复制# 从源码构建,URL 和目录名请替换成实际仓库地址
cd ~/projects/wake
cargo build --release
ls -lh target/release/
如果编译成功,会得到一个单个可执行文件。把它放到 PATH 目录,或者继续使用相对路径执行都可以。
Windows PowerShell 环境先验证数据目录是否存在:
powershell复制# Windows 下检查常见数据目录是否存在
Test-Path "$env:USERPROFILE\.codex\sessions"
Test-Path "$env:USERPROFILE\.cursor"
Test-Path "$env:USERPROFILE\.config\opencode"
建议先跑一次对应 Agent,让它生成至少一个会话文件,再执行 Wake,避免“工具没问题但没有数据”的误判。
5. 安装部署与启动方式
5.1 直接下载二进制
假设仓库发布页提供了对应平台的压缩包,使用方式和普通命令行工具相同:
bash复制# 下载并解压后,放到 PATH 目录
tar -zxvf wake-linux-amd64.tar.gz
sudo mv wake /usr/local/bin/
# 验证可用
wake --version
Windows 下解压后可以直接在 PowerShell 中执行:
powershell复制# 解压目录下执行
.\wake.exe --version
这里需要提醒一个容易踩的坑:Wake 这个名字比较常见,搜索结果里还有远程开机、网络唤醒等叫 Wake 或 wake 的项目。下载之前一定要确认仓库描述提到“聚合 AI Agent 会话历史”或包含 Codex、Opencode、Cursor 等关键词,避免拿到无关工具。
5.2 从源码安装
如果没发布编译好的二进制,或者想自己改功能,执行:
bash复制git clone <仓库地址>
cd <仓库目录>
cargo build --release
./target/release/wake --help
Rust 第一次编译会比较慢,依赖多的时候可能需要几分钟到十几分钟,不要中途中断。后续再次构建会有缓存,速度明显更快。
5.3 通用启动姿势
假设子命令结构如下,但这只是通用模板,实际名称以 README 为准:
bash复制# 初始化,指定数据目录和 Agent 范围
wake init --data-dir "$HOME/.wake" --agents codex,opencode,cursor
# 扫描生成索引
wake scan
# 搜索关键词
wake search "数据库连接池"
如果工具支持默认用户目录自动探测,可以直接跳过 init,让 Wake 在首次运行时自动发现数据目录。如果自动探测不到,再手动指定路径。
5.4 首次启动观察
首次启动时重点关注三点:
- 是否输出了发现的 Agent 类型和会话数量;
- 是否提示某些数据目录不可读;
- 索引耗时是否合理。
如果扫描会话数不低于你预期的数量,说明路径配置正确。如果数量为 0,优先检查数据目录配置。
6. 功能测试与效果验证
6.1 基础可用性测试
测试目的:确认程序能跑、能识别配置、能扫描数据目录。
操作步骤:
bash复制wake --help
wake --version
wake list --limit 5
预期结果:
--help能打印子命令列表;list能输出最近会话的时间、Agent 名称、摘要或标题。
判断标准:只要能看到至少一条会话记录,基础链路就是通的。
失败排查:如果 list 为空,先检查是否已经生成会话;再检查配置的数据目录是否正确;最后检查权限。
6.2 关键词搜索测试
测试目的:验证全文搜索或子串搜索能否命中历史内容。
输入示例:
bash复制wake search "编译错误"
wake search "docker"
wake search "prompt"
预期输出:每个命中项包含对应会话、Agent 名称、时间戳和匹配片段。
text复制agent=opencode time=2025-02-14T11:22:33 match="fix docker build"
agent=codex time=2025-02-14T12:05:00 match="docker compose restart"
判断标准:搜索结果能够区分 Agent,并且按时间排序越新越优先。
失败原因:如果搜索不到,除了关键词问题,还要看是否需要先执行 index 或 scan,很多工具不会在首次搜索时自动全量扫描。
6.3 按 Agent 和按时间过滤测试
测试目的:确认能单独查询某个 Agent 的会话,或限定某一时间范围。
通用命令模板:
bash复制wake list --agent codex
wake list --agent cursor --since "2025-01-01" --until "2025-01-31"
判断标准:
- 只看到 Codex 或 Cursor 的会话;
- 时间范围过滤生效;
- 排序符合预期。
这是日常复盘最常用的功能:看某个 Agent 在今天解决了哪些任务、哪个时间点最活跃。
6.4 导出测试
测试目的:验证能否将聚合结果导出为结构化数据,方便后续脚本处理。
如果支持 JSON 输出,可以执行:
bash复制wake list --json --all > all_sessions.json
wake search --json "memory leak" > search_result.json
预期结果:得到合法 JSON,而不是一行行的日志文本。
判断标准:将 JSON 文件用 Python 或其他工具解析时能正常读取。如果不能解析,说明输出格式与文档描述不一致,需要回到 README 确认。
6.5 数据一致性测试
测试目的:确认 Wake 不会破坏原始 Agent 数据。
操作步骤:在扫描前后分别计算几个原始 JSONL 文件的哈希值。
bash复制sha256sum ~/.codex/sessions/*.jsonl > before.txt
wake scan
sha256sum ~/.codex/sessions/*.jsonl > after.txt
diff before.txt after.txt
预期结果:diff 无输出,原始文件没有变化。这是安全边界测试,强烈建议做一次。
7. 接口 API 与批量任务
Wake 大概率是一个命令行工具,而不是带 HTTP 接口的服务。它更适合“CLI 作为搜索/导出引擎,脚本作为自动化中枢”这种组合方式。
7.1 脚本批量导出
如果工具内置 JSON 输出,就可以直接接别的程序:
bash复制# 导出全部会话
wake list --json --all > all_sessions.json
# 搜索并导出指定关键词
wake search --json --keyword "dependabot" > dependabot_sessions.json
7.2 Python 调用示例
Python 里通过 subprocess 读取 stdout,再做统计和入库:
python复制import subprocess
import json
cmd = [
"wake", "search",
"--json",
"--keyword", "memory leak",
"--limit", "100"
]
proc = subprocess.run(cmd, capture_output=True, text=True)
if proc.returncode != 0:
print("命令执行失败:", proc.stderr)
exit(1)
records = json.loads(proc.stdout)
print("命中会话数量:", len(records))
for item in records[:5]:
print(item.get("agent"), item.get("time"), item.get("snippet"))
注意:如果你的 Wake 版本没有 --json 参数,就需要用纯文本正则解析输出,或者直接读取 Wake 生成的索引文件。具体字段名也以 README 为准。
7.3 批量任务设计
批量任务通常包含以下步骤:
- 用
wake list或wake search生成候选列表; - 将列表保存到文件;
- 对每个会话记录做摘要、分类或统计;
- 生成结果报告。
批量任务建议加入日志和失败重试。比如每天早上定时统计前一天会话数量,最稳妥的写法是:先执行 wake list --since "昨天" --json,保存到日期命名的文件,再让脚本消费目录里所有 JSON 文件。这样即使某天 Wake 扫描失败,也不会影响历史数据.
8. 资源占用与性能观察
这类工具没有显存需求,也不涉及 GPU 推理,值得关注的是 CPU、内存和启动时间。
Rust 单文件程序的最大优势是启动成本极低。第一次扫描数据目录时,资源占用与原始会话文件数量直接相关。如果只有几百个 JSONL 文件,扫描过程应该能在一秒到几秒内完成。如果有上万次的会话记录,索引构建可能需要等待一会儿,但依然比“启动一个 Electron 应用再翻历史记录”的体验好很多。
8.1 怎么看占用
在 Linux / macOS 下可以用 time 和 htop 观察:
bash复制/usr/bin/time -v wake scan
在 Windows PowerShell 下观察耗时:
powershell复制Measure-Command { .\wake.exe scan }
8.2 怎么避免性能问题
不要把整个用户目录交给 Wake 去扫描。用户目录里可能有 .git、node_modules、下载文件、视频,这些和会话记录无关。正确做法是精确指定 Agent 的数据目录。
如果每个 Agent 的数据都很大,建议:
- 按单独 Agent 目录分开扫描,避免一次性全量扫描;
- 将索引目录放在 SSD 上;
- 定期清理不需要的 Agent 历史,减少扫描规模;
- 如果工具支持增量索引,优先使用增量扫描,避免每次全量重建。
同时要注意:第一次索引后,如果 Agent 版本升级导致数据格式变化,索引可能失效,需要重建。这种情况不是 Wake 的 bug,而是数据源格式变了,属于正常的兼容性维护。
9. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 扫描不到任何会话 | 数据目录配置错误;或 Agent 从未生成过会话 | 检查配置中的数据目录是否存在 | 先启动 Agent 完成一次对话,再重新扫描 |
| 部分 Agent 数据缺失 | Agent 数据目录不在默认位置;新版本换了存储路径 | 查看 Agent 自己的设置或日志定位目录 | 在配置中手动指定该 Agent 的数据路径 |
| 启动报权限不足 | 当前用户没有读取目录权限;或以管理员运行的 Agent 数据普通用户不可读 | 查看文件属性和目录 ACL | 以合适权限执行,或调整数据目录权限 |
| Windows 下被杀毒软件拦截 | 未签名的单文件工具被误报 | 检查杀软隔离区 | 添加信任或从源码构建验证 |
| 搜索中文乱码 | 终端编码不是 UTF-8 | 执行 chcp 查看代码页 | Windows 终端切换 UTF-8 或指定编码输出 |
| 扫描很慢 | 数据目录很大;被误扫描整个用户目录 | 观察扫描路径和文件数 | 缩小范围,只扫描 Agent 会话目录 |
| 解析报错或索引失败 | Agent 版本升级改了存储格式 | 查看错误日志中的文件路径 | 升级 Wake 到支持新格式的版本 |
| 排序或时间不对 | 解析的时间字段不同;时区问题 | 对比原始文件中的时间戳 | 检查更新时间字段和时区配置 |
| 人有意外使用同名的网络唤醒工具 | 项目同名造成混淆 | 确认仓库描述和 README | 核对作者与关键词,避免误下载 |
最容易踩的坑是路径问题和权限问题,不是工具本身的问题。先跑 --help,再手动指定一个包含数据的目录,一般能很快定位。
9.1 数据目录找不到?
如果 Wake 自动探测失败,可以手动确认。以 Codex CLI 为例,先用 find 或 where 定位名为 .codex 的目录:
bash复制# macOS / Linux
find ~ -maxdepth 3 -type d -name ".codex" 2>/dev/null
# Windows PowerShell
Get-ChildItem -Path $env:USERPROFILE -Filter ".codex" -Force
找到真实路径后,再回填到 Wake 配置。
9.2 索引一直不更新?
如果你修改或删除了某些会话文件,但搜索结果还是旧的,优先触发一次重扫:
bash复制wake scan --force
如果工具不支持强制参数,先删除本地索引缓存,再重新扫描。
10. 最佳实践与使用建议
10.1 先做最小验证
第一次使用时,只给 Wake 配一个 Agent,扫描一小段历史,确认输出格式符合预期,再扩展到其他 Agent。这样可以避免误配置影响全局。
10.2 配置和输出分目录管理
把数据目录、索引目录、导出目录分开:
text复制~/.wake/
config.toml
index/
exports/
模型文件、会话源文件、Wake 输出不要混在一个目录里,后续清理和备份会方便很多。
10.3 保留原始数据
不要把“索引结果”当作唯一来源。会话历史由原始 Agent 生成,Wake 只负责读取和聚合。删除原始数据之前,先确认索引是否有完整导出,否则会永久丢失上下文。
10.4 批量任务加退避重试
如果脚本通过 CLI 调用 Wake,遇到超时或解析异常,不要立刻硬重试。先检查原始会话文件是否损坏,再增加 1 至 5 秒的退避时间,避免在数据源异常时反复空转。
10.5 设置使用边界
如果后续有人把 Wake 封装成 HTTP 服务,一定要限制监听地址,只允许本机或内网访问,不要默认暴露到公网。会话记录中可能包含内部代码片段、API Key 和账号信息,接口一旦泄露,影响范围会比普通日志更大。
10.6 合规提醒
涉及公司代码、客户资料、内部项目的会话内容,导出和共享前必须按公司安全规范审批。个人使用也要注意:不要把这些聚合结果上传到公开网盘、公开仓库或不受控的第三方服务。
11. 总结与下一步
Wake 这类工具解决的是一个很具体的痛点:AI Agent 用多了之后,历史散落在多个工具里,等于没有历史。它用 Rust 单文件的方式,把 Codex、Opencode、Cursor 的本地会话聚合到一起,让开发者可以快速搜索和统计,不依赖云端服务,也不干扰原始数据。
如果打算开始用,第一步不是把所有 Agent 都配置好,而是先做最小扫描:指定一个数据目录,跑一次列表,确认输出能看懂,再做关键词搜索。最容易踩的坑是路径配置和权限问题,其次是 Agent 版本升级后格式不兼容,这两点优先排掉,后面就顺了。
接下来可以考虑把这些能力接入更多场景:
- 写一个脚本,按天统计每个 Agent 的会话数量和关键词分布,生成个人周报;
- 将导出的会话记录定期归档,形成自己的“AI 编码工作日志”;
- 把清洗后的会话内容与其他本地知识库结合,建立可检索的团队问答库;
- 在 CI 环境里定时运行扫描任务,将结果发送到内部监控系统。
建议收藏备用。等本地会话累积到一定规模,再回头看这些历史记录,会比想象中有价值得多。
