agent-rehome
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Move Claude Code and Codex conversations and projects to another agent or computer. Windows and macOS.
Agent Rehome
把 Codex、Claude Code 的对话和项目,搬到另一个 Agent 接着做。
在 Codex 里做了几个月的项目,想换 Claude 接着做?不用从头再讲一遍。只要在新的 Agent 里装上这个 Skill,说一句“把 Codex 的项目全搬过来”,聊天记录、图片和项目文件就一起搬过去,新的 Agent 直接接着聊。旧的 Agent 不用打开,额度用完了也能搬,因为搬的是你电脑上的本地记录。
- Codex → Claude、Claude → Codex 都能搬,同类之间也能搬
- Windows、macOS 都能用,换电脑也能搬
- 单条对话、整个项目都可以
- 原来的对话不动,随时能回去
- 免费开源(MIT)
快速上手
装 Skill:下载最新 Release 并解压,把里面的
agent-rehome文件夹放到:- Claude Code:
~/.claude/skills/agent-rehome/ - Codex:
~/.agents/skills/agent-rehome/
装在你要搬去的那个 Agent 里就行。也可以把本仓库链接发给你的 Agent,请它按这里的说明安装。
- Claude Code:
准备 Python 3.10+:没有的话,Agent 会告诉你去哪下载。
说一句话:在新的 Agent 里说:
用 Agent Rehome 把 Codex 的项目全搬过来(反过来就说 Claude)。它会先列出清单给你确认,再一次搬完。换了电脑:先把旧电脑上的
.codex或.claude文件夹,连同项目文件夹,一起复制到新电脑,再告诉 Agent 它们在哪。接着聊:按 Agent 的提示完成剩下的一两步,打开迁移过来的对话就能继续。
旧电脑上也装了 Skill 的话,也可以按老办法分两步走:在原来的 Agent 里说“打包”,在新的 Agent 里说“接收这个搬家包”。
搬家包里有你的私人对话和项目文件,不要上传到公开的地方。迁移会写入应用数据,建议先备份。
下面是命令行用法和技术细节。
Claude Code ↔ Codex 原生聊天与项目迁移 Skill。保留可见历史,让目标端能加载并接着聊;支持多个会话、项目文件、历史附件和换电脑后的项目路径重绑定。
它会直接写入应用数据目录,应用升级可能改变格式。先备份,在副本中预览;不要把包含私人历史的迁移包上传到公开仓库。
Windows 与 macOS 上,同类搬运和双向跨 Agent 整项目都有实测,已测范围见验收记录。环境有疑问时,先运行 python3 -B scripts/doctor.py 只读检查。
路线与验收状态
平台矩阵和有限样本统一见 docs/VALIDATION.md;Codex 项目归属与 cwd 漂移流程见 docs/CODEX_PROJECT_BINDING.md。不要将某次样本通过扩大为全部平台通过。
同类默认走原样平移,跨 Agent 走 agent-exchange/v2,包含可追溯损失清单。新项目包按引用保存事件、附件、分支,仍可读取旧 v1 包。跨 Agent 转换仍可能生成预算摘要;Claude 原样平移不生成新摘要、不压缩历史。
Codex 原样迁移用法(Windows 和 macOS 有限样本通过)
本 Skill 按 ReHome 原则实现同类平移。来源端只打包或列出需要迁移的项目、会话、文件;接收端 Agent 自己恢复、写入、登记、归组并验收。先初始化目标 Codex 数据库;Codex 可以在 App 运行时自己恢复,也支持同一条路径离线写入,不要求另一 Agent 代写。Windows/macOS 原生加载分别验收,不能沿用 ReHome App 的旧结论。
python scripts/agent_rehome.py transfer --from "codex:<id-or-rollout>" --source-home "<source-codex-home>" --to codex --target-home "<target-codex-home>" --cwd "<existing-target-project>" --dry-run
python scripts/agent_rehome.py export --from "codex:<id-or-rollout>" --source-home "<source-codex-home>" --native --out "<new-native-package>"
python scripts/agent_rehome.py import "<native-package>" --to codex --target-home "<target-codex-home>" --cwd "<existing-target-project>" --dry-run
python scripts/project_rehome.py pack --from codex --project "<source-project>" --source-home "<source-codex-home>" --native --out "<new-project-package>"
python scripts/project_rehome.py restore "<new-project-package>" --to codex --target-home "<target-codex-home>" --cwd "<new-target-project>" --dry-run
核对预览后去掉 --dry-run。同 ID 默认拒绝;同机另存必须显式加 --new-copy,仅重映射归属 ID。reasoning、压缩及加密状态保留原字节;分页依赖明确拒绝;外部生成图片/本地引用未自动收集。包内 limitations、备份和失败阶段见 SPEC。异常回滚会话事务;项目文件保留并记失败,不承诺中断后自动整批回退。项目登记与续聊按绑定文档另验收。
原生写入在线备份后,SQLite写锁等待预算2秒;索引只追加,追加前核对原内容,追加后核对原前缀和完整新增行,rollout独占新建。并发冲突会回滚SQL及本次文件;索引仅在本次完整追加块仍位于末尾时自动撤销,有其他尾部数据或部分写入就保留现场并在备份manifest标记人工核查,不覆盖共享索引/数据库。App运行时通过原生folder-open登记,结果的thread_binding_required列出待原生绑定的线程;--no-desktop只写会话。目录信任仍由用户完成,Agent不操作安全弹窗或重启App。
项目预览列出文件数、逻辑字节数、最大的10个文件、按顶层目录及扩展名分布、排除目录体积。预览阶段不读取会话正文。原生 Codex rollout 按来源时间写入 sessions/YYYY/MM/DD/rollout-时间-ID.jsonl;来源元数据及首记录均无时间时拒绝,不用当前时间补造。
Codex 原生标题优先取 session_index 最后一条 thread_name,再取数据库 title、首条可见用户消息前60字符、ID;数据库旧 title 可能不是侧边栏显示值。--new-copy 同时更新当前 session_meta 中匹配来源 ID 的 id/session_id,正文、工具输出和祖先引用仍保持原字节。旧导入副本不原地修补,修复后需新包、新目标重新验收。
Claude 原样迁移用法
python scripts/agent_rehome.py transfer --from "claude:<source-jsonl>" --source-home "<source-claude-home>" --to claude --target-home "<target-claude-home>" --cwd "<existing-target-project>" --dry-run
python scripts/agent_rehome.py export --from "claude:<source-jsonl>" --source-home "<source-claude-home>" --native --include-memory --include-checkpoints --out "<new-native-package>"
python scripts/agent_rehome.py import "<native-package>" --to claude --target-home "<target-claude-home>" --cwd "<existing-target-project>" --dry-run
python scripts/project_rehome.py pack --from claude --project "<source-project>" --source-home "<source-claude-home>" --native --include-memory --include-checkpoints --out "<new-project-package>"
python scripts/project_rehome.py restore "<project-package>" --to claude --target-home "<target-claude-home>" --cwd "<new-target-project>" --dry-run
预览确认后移除 --dry-run 执行。默认不带 memory/检查点;同名 memory 或同会话 ID 拒绝覆盖,同机应使用隔离目标根。保留原生 JSONL、同 ID 子目录、thinking 和工具字节,只改顶层 cwd。源已有压缩保留,源 version 不改,因此空白目标无须另填版本。
Claude原生往返遇到同ID时可二选一:--new-copy按来源ID、主历史哈希和目标cwd确定新ID,改写结构化sessionId值(仅匹配来源ID),同步命名会话/旁车/检查点目录和桌面登记;正文里旧ID/绝对路径及二进制字节保持不变。已有原会话不改。--fast-forward只用于现有记录是传入记录的前缀:逐行比较所有非cwd字段及uuid顺序,拒绝分叉和冲突旁车;相同历史返回unchanged,新增行仅追加到原会话所在项目,保持其原cwd,已有旁车只核对,新旁车独占创建。两参数互斥,跨Agent不支持快进。
python scripts/project_rehome.py restore "<native-claude-project-package>" --to claude --new-copy --cwd "<new-project-copy>" --dry-run
python scripts/project_rehome.py restore "<native-claude-return-package>" --to claude --fast-forward --cwd "<new-project-files-copy>" --dry-run
快进预览列出每条会话将追加的行数;项目文件仍复制到全新--cwd,历史却回到已存在的原会话,restore.json.sessions[].cwd分别记录实际位置。只需单会话快进可用agent_rehome.py import/transfer的同名参数。写前保留原历史备份及journal,写前后检查并发变化;不重写旧行、不整份恢复旧历史。部分失败保留新旁车/现场并标partial-write-needs-review,不保证跨进程全局事务或自动回滚;检查证据后再决定下一步,禁止盲目重试。原桌面登记继续沿用。快进预演与写入都检测目标会话进程。仅 live_process_check=clear 可继续。检测不可用时预演警告,正式写入停止。有运行进程时,由用户在应用内停止该会话或退出并重开应用,再重新预演。clear 表示在命令行和会话进程记录中均未发现运行进程,检测范围有限。如果这条会话仍在其他地方打开,例如终端,请先关闭它,再重新预演。快进成功后可打开原会话续聊。续聊后核对第一条新提问的 parentUuid 是否指向追加历史最后一条带 UUID 的记录。
CLI统一使用UTF-8输出,旧控制台无法编码时转义不可编码字符;已完成写入不因私用区/中文字符的输出编码失败而误报失败。若restore.json.filename_warnings提示私用区路径,可能是旧搬运文件名解码损伤,脚本保留原名,不猜测改名。
可用 --source-desktop-registry 指定来源登记,--desktop-registry 指定已核实的目标登记目录。默认来源目录仅在使用本机默认 Claude 根时尝试 Windows / macOS 自动发现(macOS 范围限已核实的登记布局);复制来的数据根需显式提供。登记只继承 title/model/effort,源 permissionMode 留作来源说明,目标为 default;不复制登录、信任和白名单。会话同名目录的二进制旁车与可选二进制检查点可按原字节携带,manifest 标记 binary=true;非 UTF-8 二进制不扫描内容凭据,结果 warnings 报告数量和字节数。能解码的文本仍做凭据检查,凭据文件名和符号链接仍拒绝;会话 JSONL 必须是合法 UTF-8。历史正文里指向旧位置的绝对旁车路径不改,warnings 会提示,文件已携带不等于图片引用在新电脑可用。脚本不自动重启应用。
跨 Agent 返回 losses_summary,详细清单在 .rehome/losses/,完整标准事件对象在 .rehome/exchange/;项目结果 .rehome/restore.json 汇总来源降级和目标摘要。附件字节恢复不保证原生控件完全一致,不自动消除同一来源行的所有附件降级记录。未知事件没有对应损失条目时拒绝。
要求和支持范围
大项目、引用清单和 Git
完整复制以可用磁盘容量为限。打包和恢复按卷估算新增文件、附件、历史及备份的写入需求,并额外预留 64 MiB。失败时显示缺少的字节数。容量按逻辑字节估算,稀疏文件在目标上可能占用完整空间,检查结果也会受其他进程随后写入影响。旧命令的 --allow-large 仍可传入。
超大项目建议把项目文件自行搬到目标机,再让 Skill 打包会话、可迁移的规则和配置、技能及附件。引用清单保存相对路径、字节数和 SHA-256。接收端指向已经搬好的目录,报告 missing、extra、different。比较范围采用与来源相同的排除规则,已有项目文件保留,缺少的周边可补齐。默认继续,--strict-files 在发现差异时阻止写入。引用包两端都应使用 preview.2 或兼容版本。
python scripts/project_rehome.py pack --from codex --project "<source>" --out "<package>" --native --files reference
python scripts/project_rehome.py restore "<package>" --to codex --cwd "<already-copied-project>" --strict-files --dry-run
默认排除 .git,可通过 --include-git 纳入真实 Git 目录。完整复制模式携带 Git 数据,引用模式将其纳入清单。预览单列 Git 字节数。含凭据迹象的远程 URL 或 Git 配置会被拒绝,先清理源配置再打包。工作树的 .git 指针文件不携带。
项目和附件文件按块传输。跨 Agent 项目恢复对超过 16 MiB 的图片保留文件链接及原始字节,小图沿用原生内嵌显示。会话本身的 JSON、原生历史和旁车仍遵循对应写入器的格式及内存需求。项目周边的结构化配置使用独立的 8 MiB 解析预算。
发布 ZIP 采用 ZIP64 与 UTF-8 文件名标志,CHECKSUMS.json 覆盖除清单自身外的全部发布文件。
- Python 3.10+;未压缩会话只需标准库,压缩 Codex rollout 的可选依赖见下。
- 目标 Agent 已初始化,Codex 目标应已有兼容的
state_5.sqlite。 - Windows 原有验收:Claude Code 2.1.309、Codex CLI 0.166.0-alpha.5.1;桌面项目分组在 Windows Codex 26.1027.3384.0 实测。Mac 有限验收样本见 docs/VALIDATION.md,不代表全平台通过;Mac Claude 桌面登记/加载仅有已记录的有限样本,Linux 仍未验收。
- 模型和 Claude Code 版本从目标配置/历史读取。跨 Agent 转换首次目标没有可读设置时,显式传
--model "<target-model>",或--claude-model "<target-model>" --claude-version "<target-version>"。这些值应取自你安装的目标环境,不要照抄其他机器。
Codex 旧格式与压缩来源
可读取新版 item_completed 和旧版 user_message/agent_message;工具按 call_id 配对。混合格式优先保留新版对应项,按出现次数去重;不把 developer、AGENTS 等 provider 注入当用户消息。reasoning、未知事件及缺失工具结果进入损失清单,不恢复隐藏推理。
支持 .jsonl 和 .jsonl.zst;单会话 ID 优先查 threads.rollout_path,兼容无 rollout- 前缀的恢复文件,并查找 sessions/archived_sessions。项目 pack 纳入该项目已归档会话,仍按数据库 cwd 精确选项目。数据库路径只在选定数据根内解析;根外文件可显式提供单会话路径。
zstd 只在压缩来源出现时需要:依次使用 Python 3.14+ 的 compression.zstd、已安装的 zstandard(python -m pip install zstandard)、系统 zstd(仅 -d -c)。缺少三者明确报错,不静默漏掉压缩会话。来源不改,解压在内存中完成;失败不自动安装依赖。真实历史可能很大,应预留解压内存。此可选依赖不影响未压缩来源与目标写入。
Python 准备
Windows 和 macOS 都需要 Python 3.10+,来源端和接收端都要。Agent 会先检查,缺少时提示你从 Python 官网下载。
macOS
需要可实际运行的 Python 3.10 或以上。macOS 默认可能没有可用 Python;出现 python3 命令也不代表环境已准备好,某些机器的系统命令只会提示安装开发者工具。先运行 python3 --version,确认版本至少 3.10。
没有合适版本时,可从 Python 官方 macOS 下载页 获取与本机系统兼容的 Python 3.10+ 安装包,按官方安装说明安装;已有独立 Python 环境也可直接使用其完整解释器路径。安装后重新核对版本,再运行本 Skill。不修改或删除系统自带 Python;未压缩会话无需第三方包;压缩会话的解压方式见下。早期 macOS 样本使用的是临时 Python 3.12.16,该结果不代表 macOS 自带此环境。
安装
下载或克隆本仓库后,将整个目录复制为下列目录之一,保持其中 SKILL.md 和 scripts/ 同级。目标目录已存在时,先备份旧 Skill,不要混合两版文件。
- Claude Code:
~/.claude/skills/agent-rehome/ - Codex:
~/.agents/skills/agent-rehome/
Windows 的 ~ 是当前用户主目录。也可以直接在下载的目录运行脚本,无需安装 Skill。向 Agent 提出“使用 agent-rehome,将指定 Claude/Codex 会话迁移到另一端”,并给出来源 ID/文件与目标项目路径。
也可以直接克隆源码:
git clone https://github.com/CalebYcj/agent-rehome.git
cd agent-rehome
macOS 与 Windows 用同一份 Skill。已测范围见验收记录。
单会话
在本目录运行,替换所有 <...>。目标项目目录必须事先存在。
python scripts/agent_rehome.py transfer --from "claude:<session-id-or-jsonl>" --to codex --cwd "<target-project>" --dry-run
python scripts/agent_rehome.py transfer --from "claude:<session-id-or-jsonl>" --to codex --cwd "<target-project>"
python scripts/agent_rehome.py transfer --from "codex:<session-id-or-rollout>" --to claude --cwd "<target-project>" --dry-run
python scripts/agent_rehome.py transfer --from "codex:<session-id-or-rollout>" --to claude --cwd "<target-project>"
--source-home / --target-home 分别指定来源/目标 Agent 的数据根目录(.claude 或 .codex),不是项目目录。默认使用当前主目录下对应数据根。来源历史更新后用 --new-copy 另存快照;已有会话不会被覆盖。
整项目与换电脑
项目包包含当前文件、匹配该项目的多个聊天和可恢复附件。包目录必须是全新的、位于源项目外;恢复目录也必须全新,不能合并进已有工程。
python scripts/project_rehome.py pack --from codex --project "<source-project>" --out "<new-package-directory>"
python scripts/project_rehome.py restore "<package-directory>" --to claude --cwd "<new-restored-project>"
换电脑时,把目录包搬到新电脑并运行 restore,--cwd 指定新工程路径。若已复制来源 .codex/.claude 数据目录,pack 可加 --source-home "<copied-agent-home>"。只导出单会话时:
python scripts/agent_rehome.py export --from "claude:<session-id>" --source-home "<copied-claude-home>" --out "<transcript.json>"
python scripts/agent_rehome.py import "<transcript.json>" --to codex --cwd "<target-project>" --target-home "<target-codex-home>" --dry-run
检查预览后,去掉 --dry-run 执行。同一电脑可直接交付文件路径,不必另外压缩。
pack 默认按来源历史中的项目路径匹配会话。要指定精确来源清单,用 --sessions-json "<inventory.json>",内容为数组:
[{"snapshot":"<native-session-jsonl-path>","title":"<conversation-title>"}]
显式清单里的 Codex 历史应为原生来源;脚本拒绝把已迁入的 Codex 副本误当原生来源再次打包。单会话转换可用于其他场景。项目不包含 .git、安装依赖和常见凭据文件;打包前仍需审查自定义敏感文件。
一次搬全部项目
最省事的是 move:接收端一个 Agent 直接读取来源 Agent 的本地数据,打包后马上恢复,不需要打开来源 Agent,它也不必登录或还有额度。
python scripts/batch_rehome.py move --from codex --to claude --root "<new-parent-directory>" --dry-run
python scripts/batch_rehome.py move --from codex --to claude --root "<new-parent-directory>"
python scripts/batch_rehome.py move --from codex --to claude --root "<new-parent-directory>" --source-home "<从旧电脑复制来的 .codex>"
包默认放在根目录旁边的 <root>-rehome-package,里面是私人副本,留作备份,确认搬好后由你自己决定删不删。
也可以分两步:batch_rehome.py 先列出来源 Agent 里所有有对话的项目,再一次全部打包,接收端一次全部恢复。每个项目内部仍走上面的整项目打包和恢复,所以单项目的全部检查都照常生效,包括密钥扫描、空间检查、全新目标目录和备份。某个项目失败只记录原因,其余项目继续。
python scripts/batch_rehome.py list --from all
python scripts/batch_rehome.py pack --from codex --to claude --out "<new-batch-directory>" --dry-run
python scripts/batch_rehome.py pack --from codex --to claude --out "<new-batch-directory>"
python scripts/batch_rehome.py restore "<batch-directory>" --to claude --root "<new-parent-directory>" --dry-run
python scripts/batch_rehome.py restore "<batch-directory>" --to claude --root "<new-parent-directory>"
list只读,按最近使用排序,列出项目路径、对话数,以及项目文件夹还在不在。pack --to写接收端 Agent。同类迁移自动走原样平移,跨 Agent 走转换。默认打包全部项目,--project可重复使用,只挑其中几个。- 包目录里每个项目一个子文件夹,名字取项目文件夹名,重名的依次加
-2、-3。另有batch.json记录每个项目的结果。 restore把每个项目恢复到<root>/<名字>,汇总写在<root>/rehome-batch-restore.json。目标已存在的项目会跳过,不会合并。Claude 端全部恢复完后只需重启一次桌面版。目录信任也只需一次:用根目录新开一个会话并确认信任,下面的项目都沿用(Windows 桌面版已实测)。- Codex 端由接收端 Agent 添加项目、打开并归组导入的聊天,再核对侧边栏和工作目录。用户只需处理实际出现的文件夹信任提示。项目登记超时会标为
pending,从恢复回执复查后继续,无需重新导入。参见 Codex 侧边栏验收流程。 - 项目文件夹已经删除的对话这次会跳过,并在结果里标出来。这些对话仍可以用单会话命令单独转。
全局规则(主人格)
全局规则文件对所有对话都生效。Codex 的是 ~/.codex/AGENTS.md,如果有非空的 AGENTS.override.md,就以它为准。Claude 的是 ~/.claude/CLAUDE.md。
批量打包时,这个文件默认一起带上,同样会做密钥扫描;不想带就加 --no-global-rules。恢复时只给出预览,不会自动写入。
python scripts/global_rules.py install "<batch-directory>" --to claude # 预览
python scripts/global_rules.py install "<batch-directory>" --to claude --apply # 用户看过并同意后再写
- 到 Claude: 原文存成
~/.claude/rehome/global-rules-from-codex.md,再在~/.claude/CLAUDE.md末尾加一行@rehome/...引用。用户自己的内容不会被改。要撤销,删掉这一行即可。 - 到 Codex: Codex 不支持引用,所以把原文追加到它实际读取的那个文件末尾,前后加开始、结束标记。要撤销,删掉这一整段即可。合并后如果超过 32 KiB,会提示可能被截断。
- 原文不改写。预览会列出所有提到旧 Agent 名字、路径或工具名的行,比如"你是 Codex"、
apply_patch,由用户决定要不要改。Claude 原文里的@引用文件不会跟着搬,只列出来。 - 写入前会先备份。重复安装同一份会自动跳过。目标位置已经有内容不同的同名文件或段落时会停下,不覆盖。
- 单独搬全局规则用
global_rules.py pack --from codex --out "<new-directory>"。
自己装的 Skill
这里指装在个人目录下、对所有项目都生效的 Skill。Claude 的在 ~/.claude/skills/;Codex 的在 ~/.agents/skills/ 和 ~/.codex/skills/,装到 Codex 时写入 ~/.agents/skills/。
批量打包时默认一起带上,不想带就加 --no-user-skills。恢复时只给出清单,不会自动安装。
python scripts/user_skills.py install "<batch-directory>" --to claude # 预览
python scripts/user_skills.py install "<batch-directory>" --to claude --apply # 用户看过并同意后再装
python scripts/user_skills.py install "<batch-directory>" --to claude --only dbs --apply # 只装指定的
- 每个 Skill 整个文件夹原样复制,不改写。跨 Agent 时,里面写的工具名和运行环境可能对不上,有些不能直接用。
- 目标已有同名 Skill 时跳过,不覆盖。重复安装同一份会自动跳过。
- 不搬:插件、点开头的内置目录、链接到别处的文件夹、Agent Rehome 自己。
.git、node_modules、__pycache__、虚拟环境目录不复制。 - 文件里疑似有密钥的 Skill 会被跳过并列出来。
- 预览会标出哪些 Skill 带脚本。装好后新开一个对话才会出现在列表里,必要时重启应用。
- 要撤销,删掉安装记录里列出的文件夹即可。记录在目标数据目录的
rehome-backups/user-skills-<时间>/installed.json。 - 单独搬用
user_skills.py pack --from codex --out "<new-directory>"。 - 已验证范围:Windows 上两个方向都实测过。Codex 新会话能列出并使用从 Claude 搬来的合成 Skill;Claude 新会话能列出从 Codex 两个位置搬来的合成 Skill,正在运行的会话装好后马上可用。都覆盖纯文字和 Python 打印脚本。macOS 未做实测。
macOS 接收个人 Skill
接收端的 Claude 或 Codex 使用同一份 user-skills 包。安装器按当前用户的主目录定位,macOS 无需额外的路径转换。
| 接收端 | 安装目录 | 安装记录 |
|---|---|---|
| Mac Claude | ~/.claude/skills/<名字>/ |
~/.claude/rehome-backups/user-skills-<时间>/installed.json |
| Mac Codex | ~/.agents/skills/<名字>/ |
~/.codex/rehome-backups/user-skills-<时间>/installed.json |
在 Mac 上打开 Agent Rehome 的安装目录,先预览对应的目标,再经用户确认安装。
python3 scripts/user_skills.py install "<batch-directory>" --to claude
python3 scripts/user_skills.py install "<batch-directory>" --to claude --apply
python3 scripts/user_skills.py install "<batch-directory>" --to codex
python3 scripts/user_skills.py install "<batch-directory>" --to codex --apply
同名冲突仍跳过,Codex 会同时检查 ~/.agents/skills/ 和 ~/.codex/skills/。安装完成后新开会话,以接收端实际列出的 Skill 为准;如果未出现,由用户重启应用后再查看。撤销时按 installed.json 核对本次安装目录,再移出 Skill 目录或删除。
文件原样复制,Mac 接收后还需留意脚本里的 Windows 绝对路径、PowerShell 或 .exe 依赖,以及 Intel/Apple Silicon 的二进制差别。缺少依赖时按具体 Skill 的说明安装。这里提供常规接收步骤,未做 Mac 实机验收。
迁移后怎么打开
Claude 桌面版: Windows 和 macOS 默认尝试登记 Code 会话;Mac 布局为 ~/Library/Application Support/Claude/claude-code-sessions/<org>/<account>/local_*.json,已核实的环境及样本边界见 验收记录;应用按正常流程重启后才会加载新登记,工具不会自行重启。首次使用新目录需由用户确认信任。独立 CLI 的登录状态可能与桌面不同,本工具不复制认证信息。--no-desktop 只写历史。自定义目标数据根不自动登记,需要 --desktop-registry "<verified-registry-directory>";未找到目录时 JSON 结果包含 warnings,侧边栏仍待验证。
Codex: 文件写入与原生项目分组分别验收。涉及目标 Codex 的项目归属、工作目录及续聊前后检查,按 CODEX_PROJECT_BINDING.md 操作;登记不代表应用已加载。
在终端或其他没有这些原生工具的 Agent 中,可使用:
python scripts/project_rehome.py restore "<package-directory>" --to codex --cwd "<new-project>" --no-desktop
这会独立恢复文件和会话;之后在 Codex APP 中添加恢复文件夹并关联聊天,或交给具备原生工具的 Agent。未完成分组时应报告“文件与历史已写入,侧边栏待验收”,不能报告完整恢复成功。
Codex 项目要跨 Agent 转换,请用不带 --native 的 pack 生成交换包,再用 restore --convert。Codex 原生项目包没有可直接转换的中立事件。
保留与已知限制
Codex 同类恢复的有限样本保留压缩记录且可以续聊。尚未证明模型解开了其中的加密内容。压缩需由用户在应用中手动触发,本工具不触发压缩。
跨账号迁移未验证。Codex 的 Skill 目录在已测续聊中未刷新,跨机历史仍记录来源机路径。
项目
.claude/只收集 settings.json、skills、commands、agents;项目.codex/只收集 config.toml/config.json/settings.json。settings.local、凭据、缓存和未知目录跳过并报告;项目包不收集用户级规则、Skills、插件。用户级规则和 Skills 由批量搬家另外带上(见上文),插件不搬。跨 Agent 在目标缺失时桥接逐目录规则:Codex→Claude 生成
@AGENTS.md引用;Claude→Codex 生成注明来源的 AGENTS.md 副本,@引用只列出、不展开。Skills按目录复制,保留源文件,目标已有同名目录跳过;工具名未转换。所有生成/跳过项见.rehome/restore.json的surroundings。.mcp.json在同Agent及跨Agent恢复时均原样归档到.rehome/surroundings/originals/.mcp.json,项目根不留生效副本,避免目标应用信任目录后自动连接。报告服务器及启动命令,不列环境变量值;如需启用,用户明确审查/批准后手动复制回项目根,恢复不代启用。Claude settings 的 hooks、来源权限和已知自动启动字段从生效副本移除;含可执行或权限字段的 Codex 配置整体隔离。跨Agent commands/子Agent只提示,不转换;hooks脚本不自动启用,应用加载另验收。.mcp.json、Claude settings 和 Codex 项目配置在打包前用现有密钥特征扫描;命中拒绝且不创建包。明确使用--allow-secrets-in-config可允许该配置进入私有包,覆盖清单会记录路径;原字节仍可能含密钥,不能公开。这不是完整秘密检测,也不会安装用户级工具或插件。验收只限 已记录的平台、版本和样本,不保证所有历史、扩展、分支或逐像素一致。本工具直接写应用数据,应用更新后格式可能失效。
.jsonl.zst需要可选解压器:Python 3.14+ 的 compression.zstd、zstandard 或系统 zstd;缺少时明确报错,不静默跳过压缩会话。解压在内存中完成。数据库盘点只读取所选 Codex 数据根内的会话,不跟随根外路径读取手动移走的冷存档;整项目不会把这类根外记录算作成功。显式提供根外单会话文件路径属于另一个明确来源选择。
无可识别可见消息的来源:单会话导出拒绝,跨 Agent 项目 pack 写入 skipped;检查每项原因,不能将其视为空聊天或整批成功。
跨 Agent 保留可见历史,跳过来源压缩摘要并丢弃加密压缩项;不可见推理、系统注入和账号或工具权限也不恢复。详见损失清单。历史授权、待办不会变成恢复后的执行指令。Claude 同类原样历史字节保留规则另见 SPEC。
Claude 原样平移不改正文中的旧绝对路径,例如旧截图路径;旁车字节已复制不保证这些引用在新电脑可用。
Claude 目标的文件附件显示为文字路径链接,保留来源“提到文件”的语义,不生成原生附件卡片或伪造 Read 缓存。文件内容需目标模型按路径读取,可能只保留来源文本快照片段。
Codex 目标文件显示为原生文件芯片;本机点击曾打开终端,与原生文件点击的一致性未验证,不能保证打开编辑器或预览。图片缩略图、附件点击和项目归组显示的界面证据有限。macOS 已有同类恢复后模型看内嵌图的样本。
长会话跨 Agent 可能依靠预算摘要;早期主题和细节的把握可能偏弱。完整归档在
.rehome/history/,不等于模型加载了全部历史,额度估算不是官方分词。重启 Claude 桌面版和确认目录信任由用户完成,工具不代点或自动重启;Windows 桌面版已实测上层目录信任能覆盖子目录,macOS 和多账号登记目录仍待验收。
不迁移凭据或 Git 历史。源文件不移动/删除,未知冲突拒绝覆盖;本工具不会自动回滚失败批次。
备份与回退
导入器对涉及的已有文件逐个备份,SQLite 使用在线备份;结果包含 backup 路径。目标数据根下 rehome-backups/ 保存备份清单,rehome-imports/ 保存受管理文件和指纹。项目恢复报告为 <restored-project>/.rehome/restore.json。保留来源、报告和备份直到验收完成。
回退没有“一键还原”命令。先让目标会话停止写入,保留导入后新增的内容,再按备份清单恢复相关文件、处理本次新增文件。共享数据库和索引可能包含别的新聊天,不应盲目用整库备份覆盖。桌面登记和项目归属需要单独核对;失败批次不会自动全盘回滚。
自检与隐私扫描
python -B scripts/run_tests.py
python -B scripts/privacy_scan.py .
每个测试使用新的临时 HOME,测试写入只能在临时目录,禁止访问真实 Agent 数据、网络或外部进程。全部数据为合成夹具,无需安装/登录 Agent。隐私扫描检查用户主目录绝对路径、邮箱、非夹具会话 ID 和常见凭据模式;它不是通用秘密检测器,发布前仍应人工检查额外文件。
本目录是可独立上传的内容,不包含开发者交接记录、历史迁移包或真实测试会话。
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi