用途与实际影响
这项功能怎样使用
为什么需要它
配置和记忆小、适合版本对比;会话数据库大且持续变化,需要另一条快照路径。保留分工可避免某一条链失败时误报全部完成。
举个实际例子
我说:“这台笔记本也要备份 Codex 设置和项目记忆,别混进台式机的副本。”系统按笔记本自己的保存位置先核对本地和 G 盘;云端失败不会抹掉已验本地结果。
最后我会得到什么
得到这台电脑的设置与记忆副本,以及私有云端是否真的收到的单独结果。换机时选择文件回填后,还要确认 Codex 登录和实际工作能继续。
正常时
选中的小文件在本地/G 核对后,私有云是否收到另给结论。
发现问题时
云端落后或冲突时保留已验本地副本,不拿更大的旧记忆直接覆盖现有内容。
入口不可用或证据不足时
来源或私有仓库不可读时停对应副本,明确哪些材料仍留在本机。
从哪里开始
在已接入的 AI 对话中说要备份或找回 Codex 设置、Skills 或记忆,并指出是哪台电脑。
需要准备什么
- 目标电脑和 Codex 配置根
- 要保护的配置或记忆类别
从开始到拿到结果
- 1
选白名单
系统按当前主机登记挑选小型配置与记忆,不把认证和庞大会话混进这条线。
- 2
先存本地与 G
形成并核对本地/G 副本,再按私有云分支和远端状态处理同步。
- 3
回读每层
说明新本地点、云端是否真的收到及排除项;网络失败保留已验本地结果,不说整套 Codex 已备份。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
9月12日次机已安装字节、安全层31文件与独立云引用已回读;旧桌面测试保留原日期关键规则与设计选择
AGENTS.md、config.toml、version.json、Chrome/native/browser/computer-use 配置、选定 vendor_imports、memories/**、skills/** 构成源白名单。
auth、installation_id、原始 sessions/JSONL、SQLite/WAL/SHM、cache、plugins 等排除。
私有仓库只在相应历史保留条件满足时保留旧记忆;当前源快照和私有历史不混淆。
Git 分支状态和远端回读是云端完成条件,不抹掉独立的 G 结果。
本模块用到的名词
- Memory Truncation Guard(记忆截短保留)
- 只比较指定文件大小并保留仓库中的大版本;不承诺自动识别正文损坏。
- Dynamic Proxy Fallback(动态代理重试)
- 临时传输失败时取当前系统代理,仅注入本次 Git 命令,不改持久端口配置。
专业定义
备份小文件,保留历史记忆,并核对私有 Git 推送
解决什么
避免把数据库/缓存塞入 Git,同时减少较小 raw_memories 覆盖私有历史的风险。
当前怎样实现
- 轻量恢复沿用 README.md Restore 的手工复制说明:从选定私有仓库版本恢复相对路径到实际物理 CODEX_HOME,排除 .git、tools、.local-snapshots、logs。这个路径没有会话恢复器的活动根阻断;覆盖前先核对当前目标与选定版本。
- Copy-SelectedFiles 第一次写 .local-snapshots 不带 ProtectHistory,随后 Publish-GHotSnapshot 写 G 并回读。
- 桌面复制到仓库时才用ProtectHistory:较小raw_memories和已有rollout_summaries不覆盖,backup-only记忆不删。次机配置档精确保存当前白名单及删除,不启用这条历史并入规则。
- 桌面本地/G轻量快照保留30份,相同内容复用。次机profile(主机配置档)保留2份安全快照,精确暂存本轮输出及删除;与profile会话点的显式Prune(清理)分别管理。
- Get-CurrentSystemGitProxyUri只为当前Git调用读取系统代理,不持久化端口;桌面重试为30/120/300/900秒,次机配置档默认2/5秒并从首次网络请求使用当前系统代理。
执行流程
- 1
桌面解析登记E盘来源;次机显式-ConfigPath验证主机、用户、现存物理Codex根与backup/<profile_id>支路,再按各自白名单选文件。
- 2
把当前文件写成本地快照、G 快照并核验。
- 3
本地热快照先核验,随后检查Git远端状态;桌面仓库实施历史保留,次机用精确输出集更新专用数据支路;并发已暂存内容会使本次操作停止。
- 4
fetch检查分支,behind/diverged(本地与远端双向分叉)或云端网络失败时停止对应云动作,已校验的新本地热快照保留;只有fresh remote(新读远端引用)匹配HEAD才更新次机完整成功回执。
- 5
有实质变更才提交;已有本地超前提交即使无新文件变化也推送,ls-remote 必须与 HEAD 一致。
边界
- 2.53 MiB/243文件是9月8日桌面清单,不是其容量上限。次机安全云投影另有明确准入:允许文本扩展名、单文件至多5MiB、总选中文件至多25MiB;完整私有恢复层不因此被视为云端已保存。
- 大小比较只保护指定记忆文件的私有仓库副本,不能判断等大/更大正文正确性。
- auth.json 与原始会话不在白名单;文件名过滤不等于自动检查所有正文里的秘密。
失败与恢复
- 本地分支落后于远端或与远端产生分叉
- 脚本打印 Local main is behind/diverged(本地与远端双向分叉) 错误并抛出异常,拒绝执行任何提交与推送。
- 当前 raw_memories.md 文件体积缩水
- 保留原备份中的较大文件,打印告警日志,防止损坏的本地状态污染备份库。
真实入口
tools\backup-codex-memory.ps1白名单同步与 Git 严格核验主脚本
tools\g-hot-snapshot.ps1G 盘热快照与 current.json 原子指针维护辅助脚本
tools\test-codex-memory-backup.ps1白名单准入、黑名单剔除与 Git 边界回归测试
tools\project-safe-codex-config.py次机TOML安全投影;未知字段不进入云配置参考
如何验证
- 9月7日两个版本的备份调用和本地 fixture(合成输入)验证通过:G 快照、ahead-clean、behind、diverged(本地与远端双向分叉)、push-rejected、post-receive-rewind。
- 9月8日08:16Z桌面DryRun为243文件、2,656,388字节。次机9月12日Owner回读安全层31文件、266,762字节及独立云支路引用一致;本轮未触发新生产备份。
与其他模块的关系
负责配置、安装技能和记忆文件;长期规则的规范源仍是 E:\.agents。
