[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80939":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":12,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":16,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":12,"lastSyncTime":27,"discoverSource":28},80939,"codex-history-sync-tool-mac-account-api-switch","CoimgRain\u002Fcodex-history-sync-tool-mac-account-api-switch","CoimgRain","macOS Codex history sync tool with OpenAI\u002FPlus account and API provider switching support",null,"Python",36,2,32,0,1,3,4,1.43,"MIT License",false,"main",true,[],"2026-06-12 02:04:08","# Codex History Sync Tool Mac - Account\u002FAPI Switch\n\n一个用于恢复 Codex Desktop 本地历史对话显示的小工具。\n\n这个 macOS 版本重点解决一个常见问题：在 OpenAI\u002FPlus 账号登录和 API 登录之间切换后，本地历史明明还在，但 Codex Desktop 侧边栏看不到旧对话。\n\n## 这版新增\n\n- 支持 OpenAI\u002FPlus 账号登录：当 `config.toml` 没有 `model_provider` 时，会从 `auth.json` 和最近线程推断当前 provider。\n- 支持 API 登录：如果 `config.toml` 写了 `model_provider`，仍优先使用配置里的当前 provider。\n- 支持账号登录与 API 登录之间来回切换后刷新状态、一键同步历史。\n- 一键同步会先刷新最新状态：只要存在可同步线程就同步，没有可同步线程就跳过。\n- 支持勾选“打开 Codex Desktop 时自动刷新并同步到当前”：开启后会安装本机 LaunchAgent，在 Codex Desktop 启动时自动刷新状态，并在存在可同步线程时自动同步。\n- 提供高级功能“重启 Codex 并同步线程”：适合 CC Switch 或登录方式切换后使用，会自动重启 Codex、刷新状态并同步线程；不建议日常用户频繁使用。\n- 高级重启同步按钮已改为后台执行，避免 Codex 关闭或重开过程导致工具窗口卡死。\n- 刷新状态改为后台执行并显示进度；重启同步和自动同步增加超时保护，避免 Codex 刚启动时看起来没有反应。\n- macOS `.app` 界面增加说明文字，直接双击即可使用。\n- v1.5.3 起，启动器会实际测试 `Python 3 + tkinter` 能否创建 macOS 图形窗口；如果不可用，会询问是否自动安装 python.org 官方 Python 3.13.13，安装完成后会自动继续打开工具。\n- v1.6.0 起，发布包分为轻量版和内置 Python 版。内置版不依赖用户本机 Python，适合没有 Python 环境或遇到闪退的用户。\n- v1.6.1 修复内置 Python 版发布包缺少后端脚本时的启动 JSON 解析失败问题，并修复“高级: 重启 Codex 并同步线程”偶尔剩余少量待同步线程的问题。\n\n## 直接下载使用\n\n发布包有 3 个 DMG，按下面规则下载：\n\n| 使用场景 | 下载文件 |\n| --- | --- |\n| 已经有可用的 Python 3 + tkinter，想下载最小体积 | `Codex-History-Sync-Tool-v1.6.1-Lite.dmg` |\n| 没有 Python 环境，或者轻量版双击闪退；Mac 是 Apple 芯片（M1\u002FM2\u002FM3\u002FM4 等） | `Codex-History-Sync-Tool-v1.6.1-Apple-Silicon.dmg` |\n| 没有 Python 环境，或者轻量版双击闪退；Mac 是 Intel 处理器 | `Codex-History-Sync-Tool-v1.6.1-Intel.dmg` |\n\n下载后打开 DMG，把 `Codex History Sync Tool.app` 拖到 `Applications`，再双击打开。\n\n不知道自己的 Mac 是哪种芯片，可以点左上角苹果菜单 -> “关于本机”。显示“芯片 Apple M...”就选 Apple Silicon；显示“处理器 Intel”就选 Intel。\n\n如果 macOS 提示来自未验证开发者，可以在 Finder 中右键 app，选择“打开”，再确认一次。\n\n如果 DMG 或 app 仍然打不开，可以打开系统设置里的“隐私与安全性”，在安全提示处选择“仍要打开”。\n\n如果双击后窗口一闪而过，通常是这台 Mac 没有可用的 `python3 + tkinter` 图形环境。v1.5.3 起启动器不再只检查 `import tkinter`，而是会实际创建一个隐藏 Tk 窗口；这可以避开 CommandLineTools Python 这类“能导入 tkinter、但创建窗口时崩溃”的环境。检测失败时，启动器会弹出提示，用户确认后会从 python.org 下载并安装官方 Python 3.13.13；安装过程会由 macOS 要求管理员授权。启动器日志会写到：\n\n```text\n~\u002FLibrary\u002FLogs\u002FCodex History Sync Tool\u002Flauncher.log\n```\n\n如果自动安装失败，可以按日志提示手动安装 python.org 的 macOS Python 3 后再打开工具。\n\n如果不想让用户下载或安装任何 Python，直接使用 Apple Silicon 或 Intel 的内置 Python 版。内置版会使用 app 自己打包的 Python\u002FTk，不会修改系统 Python，也不会和用户电脑已有 Python 冲突。\n\n注意：本工具没有使用 Apple Developer ID 签名和公证，所以首次打开时 macOS 可能会拦截未验证开发者应用。这种情况不是程序崩溃，按上面的“右键打开”或“隐私与安全性”方式放行即可。如果是窗口一闪而过或没有任何提示，优先查看上面的启动器日志。\n\n## 高级重启同步的辅助功能权限\n\n“高级: 重启 Codex 并同步线程”会自动退出 Codex Desktop，并在退出确认弹窗出现时点击确认。这一步依赖 macOS 辅助功能权限。\n\n如果点击“高级: 重启 Codex 并同步线程”后，Codex 没有完全关闭，或者工具弹出无法重启\u002F无法退出 Codex 的错误提示，通常是辅助功能权限没有打开。处理方式：\n\n1. 打开系统设置。\n2. 进入“隐私与安全性” -> “辅助功能”。\n3. 找到并开启 `Codex History Sync Tool`。\n4. 回到工具里重新点击“高级: 重启 Codex 并同步线程”。\n\n如果已经开启但仍然不行，先在“辅助功能”列表里删除 `Codex History Sync Tool`，再重新添加 `\u002FApplications\u002FCodex History Sync Tool.app` 并开启权限，然后退出并重新打开本工具。\n\n## 这个工具能做什么\n\n- 查看当前本机 Codex 历史线程属于哪些 provider\n- 查看当前 Codex 使用的模型\n- 一键把旧 provider \u002F model 下的线程、会话元数据和侧边栏索引同步到当前登录方式\n- 在同步前自动备份数据库、侧边栏索引和会话元数据\n- 从备份恢复数据库\n- 提供可直接双击运行的 macOS app bundle\n- 可选后台监听 Codex Desktop 启动，并在启动时自动刷新状态；如果存在可同步线程，会自动同步\n- 可选高级重启同步：自动关闭并重新打开 Codex Desktop，随后刷新状态并同步线程\n\n## 适用场景\n\n- 从 API 登录切换到 OpenAI\u002FPlus 账号登录后，旧历史不显示\n- 从 OpenAI\u002FPlus 账号登录切换回 API 登录后，旧历史不显示\n- 切换了不同 API、provider、模型或登录方式\n- 本地历史文件仍在，但 Codex Desktop 左侧历史列表为空或不完整\n\n## 不适用的场景\n\n- 云端账号之间的聊天记录互相同步\n- 本地历史文件已经被删除\n- 不同电脑之间迁移聊天记录\n\n## macOS 运行环境\n\n- macOS 11 或更高版本\n- 轻量版需要系统可调用 `python3`，且 Python 内置 `tkinter` 可创建图形窗口\n- Apple Silicon \u002F Intel 内置版不需要用户预先安装 Python\n- 本机存在 Codex Desktop 本地数据目录，通常是 `~\u002F.codex`\n\n## macOS 使用方式\n\n### 方式一：双击 app\n\n下载并解压：\n\n```text\nCodex-History-Sync-Tool-v1.6.1-Lite.dmg\nCodex-History-Sync-Tool-v1.6.1-Apple-Silicon.dmg\nCodex-History-Sync-Tool-v1.6.1-Intel.dmg\n```\n\n打开 DMG 后把 app 拖到 Applications，然后双击：\n\n```text\nCodex History Sync Tool.app\n```\n\n### 方式二：从源码启动\n\n```bash\npython3 .\u002Flaunch_ui_mac.py\n```\n\n或者：\n\n```bash\n.\u002Flaunch_ui_mac.command\n```\n\n`launch_ui_mac.command` 会优先调用内置 `.app` 的启动器，因此也会复用 Python\u002Ftkinter 检测、日志和自动安装提示。开发者如果想强制运行源码脚本，可以使用：\n\n```bash\nCODEX_HISTORY_SYNC_USE_SOURCE=1 .\u002Flaunch_ui_mac.command\n```\n\n## 命令行用法\n\n查看当前状态：\n\n```bash\npython3 .\u002Fsync_backend.py --json status\n```\n\n执行同步：\n\n```bash\npython3 .\u002Fsync_backend.py --json sync\n```\n\n手动创建备份：\n\n```bash\npython3 .\u002Fsync_backend.py --json backup\n```\n\n从最新备份恢复：\n\n```bash\npython3 .\u002Fsync_backend.py --json restore\n```\n\n## 备份说明\n\n- 每次同步前都会自动创建一份备份\n- 每次恢复前也会先创建一份安全备份\n- 备份默认保存在 `~\u002F.codex\u002Fhistory_sync_backups`\n- 备份会同时保存 `session_index.jsonl` 和会话文件首行元数据，恢复时会一起还原\n\n## 使用建议\n\n- 同步前建议先关闭或暂停 Codex Desktop 正在运行的任务\n- 如果 Codex Desktop 正在写入数据库，工具会等待数据库空闲后继续\n- 如果同步完成后历史列表没有立刻刷新，重开一次 Codex Desktop\n- 自动同步开关会在本机 `~\u002FLibrary\u002FLaunchAgents` 下安装或移除 LaunchAgent；它只监听本机 Codex Desktop 是否启动，并调用本工具后端，不会上传任何数据\n- 如果要使用“高级: 重启 Codex 并同步线程”，建议先取消勾选“打开 Codex Desktop 时自动刷新并同步到当前”，避免手动重启同步和后台自动同步同时触发\n- “高级: 重启 Codex 并同步线程”不建议普通用户日常使用；它主要用于 CC Switch 或账号\u002FAPI 切换后，需要让 Codex 重启并立刻同步历史的场景\n- 这个工具只修复本机可见性和 provider\u002Fmodel 归属，不会上传、同步或读取云端聊天记录\n\n## 项目文件\n\n- `sync_backend.py`：后端同步、备份、恢复逻辑\n- `launch_ui_mac.py`：macOS 图形界面\n- `auto_sync_watcher.py`：监听 Codex Desktop 启动并触发自动同步的后台脚本\n- `launch_ui_mac.command`：macOS 双击命令入口\n- `Codex History Sync Tool.app`：macOS app bundle\n- `launch_ui.ps1`：上游 Windows 图形界面入口\n\n## 上游来源与致谢\n\n本项目基于两个公开 MIT 项目整理和修改：\n\n- 原始项目：[`GODGOD126\u002Fcodex-history-sync-tool`](https:\u002F\u002Fgithub.com\u002FGODGOD126\u002Fcodex-history-sync-tool)\n- macOS 适配项目：[`ruigod1\u002Fcodex-history-sync-tool-mac`](https:\u002F\u002Fgithub.com\u002Fruigod1\u002Fcodex-history-sync-tool-mac)\n\n本版本在 macOS 适配版基础上增加了 OpenAI\u002FPlus 账号登录与 API 登录切换场景下的 provider 推断逻辑，并更新了 macOS app 内置脚本和说明。\n\n## 免责声明\n\n这个工具直接操作本机 Codex 的本地状态数据库。虽然已经做了自动备份，但仍建议你在使用前理解它的作用，并自行确认本地数据目录状态。\n\n本工具不会收集、上传或提交你的个人 Codex 数据；发布仓库只包含通用源码、app bundle 和说明文件。\n\n## 相关项目：SwiftBar 余额监控\n\n如果你使用中转站或 API 账号，也可以看看我的另一个项目 [`swiftbar-balance-monitor`](https:\u002F\u002Fgithub.com\u002FCoimgRain\u002Fswiftbar-balance-monitor)：它可以让 Codex 帮你把余额、订阅用量和消耗做成 macOS 菜单栏监控。\n\n[![SwiftBar 余额监控截图](https:\u002F\u002Fraw.githubusercontent.com\u002FCoimgRain\u002Fswiftbar-balance-monitor\u002Fmain\u002Fassets\u002Fswiftbar-balance-monitor-screenshot.png)](https:\u002F\u002Fgithub.com\u002FCoimgRain\u002Fswiftbar-balance-monitor)\n","这是一个用于恢复 Codex Desktop 本地历史对话显示的 macOS 小工具，特别适用于在 OpenAI\u002FPlus 账号登录和 API 登录之间切换后的历史记录同步问题。核心功能包括支持不同登录方式下的状态刷新与历史线程同步、自动检测并安装必要的 Python 环境以确保兼容性，以及通过后台执行任务来避免界面卡顿。此外，该工具还提供了高级选项如重启 Codex 并同步线程，适合在更换登录方式或使用 CC Switch 后需要彻底刷新应用状态的情况。适用于频繁切换 Codex 登录模式或希望保持历史对话连续性的用户。","2026-06-11 04:02:55","CREATED_QUERY"]