claude-replay
将 AI 编程代理的会话记录转换为单文件、可嵌入的交互式 HTML 回放,让开发过程易于分享。
证据显示工具只读取本地会话文件、编辑器绑定127.0.0.1、Docker示例以只读方式挂载、默认开启密钥脱敏并在导出前替换为[REDACTED],隐私章节明确告知输出嵌入完整转录。扣分点:rollback未涉及(extract提供往返但无导出撤销概念,仅记1);源码(src/bin/test)未提供,无法静态确认最小权限与localhost声明的实现,故least_privilege、user_confirmation、data_flow_transparency、external_effects记2而非更高。依赖安全给3:零运行时依赖,CI中GitHub Actions全部按SHA固定,发布使用npm provenance。
零运行时依赖且engines声明Node 18+,跨18/20/22/24矩阵测试,dependency_availability记3。README与package.描述基本一致(package description仅列Claude/Cursor/Codex,未列Gemini等新支持源,小幅不一致,self_consistency记2)。源码缺失,无法核实CLI错误消息质量,failure_messages仅能从CI步骤推断,记1。
面向博客、文档、演示、bug报告、教学、直播监控等场景,说明充分,audience_and_scenarios记3。环境适配详尽:Node版本差异(node:sqlite需22.5+)、Docker、浏览器兼容(DecompressionStream及--no-compress回退)、各来源格式差异均有说明,environment_fit记3。能力边界部分覆盖(脱敏为尽力而为、Cursor无时间戳、Codex加密推理块被跳过),记2。session ID自动搜索的匹配精度无法在源码中核实,trigger_precision记2。
安装说明详尽(npm/npx/Docker),示例丰富且与选项表一一对应,license为完整MIT文本且README徽章一致,均记3。扣分点:CHANGELOG在CI中被引用但文件未在证据中出现,版本0.11.0无可见变更日志,versioning_changelog记1;仓库信息架构仅能从README/CI推断,src与测试文件缺失,information_architecture与maintenance_responsibility记2(CI含lint、多版本测试、e2e、格式兼容巡检,维护信号积极但不可完整核实);无FAQ,known_limitations部分记录(脱敏局限、隐私警告)记2。
输出为自包含HTML、可嵌入iframe、含extract往返命令,output_usability记3。将多来源agent会话转为可分享回放属明确差异化价值,marginal_value记3。成本收益总体合理(零依赖、压缩输出),但回放文件嵌入完整转录可能体积较大且含敏感内容需人工审查,cost_benefit记2。
README声明(格式映射、压缩率60-70%、回退行为)可在CI工作流中找到对应验证步骤,claim_traceability记2。README、package.、LICENSE、CI之间大部分相互印证,cross_source_corroboration记2;npm描述与README支持范围不完全同步是可见的印证缺口。声明与推断总体区分良好(如Brysbaert引用标注来源),但压缩率等数字无独立佐证,fact_inference_separation记2。源码与测试文件未随证据提供,静态审查无法确认实现,故整体置信度为低。
- 脱敏是模式匹配的尽力而为机制,无法捕获所有密钥格式;公开分享回放前必须人工审查生成的HTML。
- 回放文件嵌入完整会话转录(含源码、文件路径、工具输入输出),可能泄露专有代码或内部信息;不建议对不可信受众导出含敏感项目的会话。
- 发布者身份未经验证,安装前请核对npm provenance与仓库对应关系。
- CHANGELOG未在证据中提供,升级前请自行检查版本差异。
- live watch模式会持续监控会话文件,注意在共享/远程环境中的暴露面。
这个 Agent 能做什么,适合哪些场景?
claude-replay 是一个开源命令行工具与 Web 编辑器,能把 Claude Code、Cursor、Codex CLI、Gemini CLI、OpenCode、Kimi Code 和 Hermes Agent 等工具保存在磁盘上的会话记录,自动检测格式并转换为单个自包含的 HTML 回放文件。生成的文件内嵌压缩的会话数据,使用原生 JS 播放器(无框架、无外部请求),支持播放/暂停、0.5x–5x 倍速、逐块步进、书签章节、思考与工具调用折叠,以及文件活动侧边栏。工具默认自动遮蔽常见密钥模式(如 API key、AWS 密钥、JWT),并支持多主题与自定义主题。它还提供基于浏览器的可视化编辑器、iframe 嵌入能力,以及 --serve --watch 实时监听会话模式。运行要求 Node.js 18+,零运行时依赖,也可通过 Docker 或 npx 零安装使用。
工具自动在 ~/.claude/projects/、~/.cursor/projects/、~/.codex/sessions/、~/.gemini/tmp/、~/.kimi-code/sessions/ 以及 Hermes 的 SQLite 数据库(~/.hermes/state.db,需 Node 22.5+)中查找并解析会话记录,识别七种来源的格式。解析器逐行读取 JSONL(含 Claude Code 流式格式),将轮次分组为用户消息、助手回复(文本、工具调用、思考块)与工具结果;不同代理的工具名会映射为 Claude Code 等价物以保证渲染一致。渲染器将轮次 deflate 压缩并 base64 编码后注入 HTML 模板,浏览器端用 DecompressionStream 解压播放。CLI 命令包括 claude-replay(无参数启动 Web 编辑器)、claude-replay <input> -o replay.html(生成回放,可链式合并最多 20 个会话)以及 claude-replay extract replay.html(提取内嵌数据以便重新生成)。
- 技术博客作者希望以交互方式展示 AI 辅助开发过程,而不是发布笨重的屏幕录像
- 文档维护者需要将 AI 调试或代码走查回放嵌入项目文档(通过 iframe)
- 提交 Bug 报告的开发者想附上一个可回放的会话文件,而非冗长的日志文本
- 讲师或导师需要逐步展示 AI 的推理与工具使用过程用于教学
- 远程机器或容器上的工程师想用 --serve --watch 实时监控代理会话的运行
这个 Agent 有哪些优点和局限?
- 零运行时依赖,输出为单个自包含 HTML 文件,可直接邮件发送、任意托管或 iframe 嵌入
- 支持七种代理会话格式自动检测,跨代理工具名统一映射,渲染体验一致
- 默认自动遮蔽 API key、AWS 密钥、JWT、数据库连接串等常见密钥模式
- 提供 Web 编辑器实时预览、实时监听模式,以及 extract 命令支持完整往返再生成
- 支持自定义主题(含 extraCss 任意 CSS 覆盖),并有多种时间轴模式(真实时间戳或按内容长度合成)
- 回放内嵌完整会话记录(含源代码、文件路径与思考过程),公开分享前需人工审查;密钥遮蔽只是尽力而为的安全网
- 播放器中的编辑仅影响渲染,HTML 内的压缩数据仍可被恢复,排除敏感内容须在生成时使用 CLI 参数
- 浏览器端解压依赖 DecompressionStream(Chrome 80+/Firefox 113+/Safari 16.4+),旧浏览器需 --no-compress
- Cursor 记录无时间戳,只能使用合成的 paced 播放节奏;Codex 的加密推理块会被跳过
- 读取 Hermes 实时 SQLite 会话要求 Node 22.5+,低版本 Node 需先导出文件
如何安装或部署这个 Agent?
通过 npm 全局安装:npm install -g claude-replay;或零安装直接运行:npx claude-replay;也可使用 Docker:docker run --rm --init -p 7331:7331 -v ~/.claude/projects:/root/.claude/projects:ro ghcr.io/es617/claude-replay。要求 Node.js 18+;读取 Hermes 实时 SQLite 会话需 Node 22.5+。
如何使用这个 Agent?
无参数运行 claude-replay 即可打开 Web 编辑器(默认端口 7331),自动发现 Claude Code 和 Cursor 会话,支持浏览、编辑、预览与导出。CLI 生成回放:claude-replay <session-id 或文件路径> -o replay.html,可用 --turns 5-15 选取轮次、--speed 2.0 设置倍速、--theme dracula 换主题、--mark "5:标签" 添加书签。合并多个会话:claude-replay abc123 def456 -o combined.html。实时预览:claude-replay session.l --serve --watch。从已生成的回放提取数据以便重新生成:claude-replay extract replay.html -o session.l。