版本:Session Relay 0.5.0。测试环境:macOS / arm64,Go 1.26.5,Codex CLI 0.142.5。
go test -race ./...:全部 15 个包执行成功,其中 13 个包有测试;无竞态报告。go vet ./...:通过。RELAY_NETWORK_TEST=1 RELAY_NATIVE_TEST=1 go test -race ./internal/relay -run 'TestClientPollingOverRealHTTP|TestNativeCodex' -v:三项通过。- 真实本机 HTTP:客户端连接中转站、领取导出任务、上传压缩包、报告完成。
- 真实 Codex CLI:隔离的合成会话导入已有项目或本机新建项目后,原生 app-server 均可以读取并在列表中发现记录。
- 临时快照在成功预览后删除实际服务器压缩包,重启服务后仍可通过本地预览完成恢复和回滚;长期快照不自动删除。
- 24 小时到期清理、过期排队任务、活动预览保护、冲突预览保留、旧版本快照保留。
- 真实 Linux 服务器 SSH:自动建立临时本地隧道,主动终止该测试子进程后约 5 秒重连;客户端退出后不留下自建隧道。仅调用健康接口,没有上传会话。
- 新版真实本机 HTTP 与两个隔离 Codex 原生导入测试通过。
- SSH 配置拒绝选项注入和公开监听地址,强制私钥与 known_hosts 校验;包含空格的路径按单独参数处理。
- 三组 140 MiB 合成会话:Codex、Claude、Codex zstd。均通过导出、目标预览/恢复、追加新记录、反向恢复、精确 SHA-256 回滚,以及保护新内容的回滚拒绝;测试约 11 秒。
- 逐条比较保留本机原字节,覆盖 JSON 字段顺序差异、CRLF、缺失末尾换行、大整数精度和真实分叉。
- 单条记录/总写入量/ZIP 声明大小限制、目标父目录符号链接检查与不完整 JSON 拒绝。
- 进度上报只允许执行任务的设备,拒绝非法进度;新版快照拒绝下发给旧版目标客户端。
- 新版客户端真实本机 HTTP 通信、Codex 原生已有项目和新建项目读取均通过。
- 网页 JavaScript 语法检查通过,新增项目旁导出、上传后继续恢复、阶段/字节进度、失败重试和版本提示。
- 未配置任何项目时,自动发现 Codex / Claude 项目、合并同目录项目,重复扫描保持稳定标识。
- 原代码目录已删除时,仍可导出两种工具的会话历史。
- 目标没有项目与会话时,经 HTTP 队列新建导入、预览、恢复,重启后保留映射;目标追加会话后再反向导入。
- 新建导入拒绝目录穿越、Windows 保留名称及符号链接。
- Codex 与 Claude:从 A 导出、在 B 预览和恢复、B 追加新记录、导回 A、回滚到恢复前状态。
- 内联图片、工具输出、Claude 嵌套 subagents、tool-results 和项目 memory 的完整性。
- 恢复预览后文件发生变化、分叉冲突、恢复后新内容导致的回滚拒绝。
- ZIP 路径穿越、文件篡改、符号链接、Windows 保留名称和跨工具错误导入。
- Agent 运行时拒绝写入;管理员与设备权限隔离、Cookie / 来源检查、任务持久化与服务重启后防止重复执行。
- HTTP handler 层的完整导出、下载、预览、确认恢复和回滚链路。
测试使用临时目录和合成会话,没有导出、恢复或改写用户真实会话,没有发送模型请求。
- 0.4 Windows 实机运行与真实账号续聊;Windows 程序为交叉编译产物。Linux 服务部署另行检查,不视为 Windows 验收。
- Windows ↔ Mac 的真实账号续聊、Claude Code 原生客户端加载和续聊。
- 完整浏览器点击回归与视觉验收;目前已检查嵌入静态文件和 HTTP 接口。
- 2 GiB 边界规模压力测试及断电故障注入;140 MiB 测试不代表所有最大规模负载均已验证。
因此这是可用于小项目试用的 MVP,不能将交叉编译成功视为真实跨平台续聊已经验收。先用不重要的小项目完成一轮双向同步,再迁移重要历史。备份与冲突保护不能替代独立备份。
- 搜索逻辑已检查:大小写不敏感、多关键词交集、中文项目、工具筛选、无结果提示及刷新保留条件。
- Go relay 测试、前端 JavaScript 语法检查通过。本次仅扩展网页列表搜索,不新增会话正文采集。
- 管理员创建双端绑定、重复与反向请求幂等、冲突绑定拒绝、同设备与不存在项目拒绝、设备密钥无管理权限。
- 服务重启后绑定保留,API 状态返回绑定,明确解除后持久化移除。
- 新建目标项目的可恢复预览完成后,即使临时服务器压缩包已清理,仍可通过预览创建绑定,后续恢复不受影响;绑定本身不创建写入任务。
- 前端双向目标选择、Windows 路径大小写匹配、源路径变化及目标路径失效时拒绝自动匹配的逻辑检查通过。
go test -race ./...与go vet ./...、JavaScript 语法检查通过。未在真实用户项目上创建配对或迁移会话。