From 6e8465a834ffd12557075531d5727d860a3333f5 Mon Sep 17 00:00:00 2001 From: Chai Pin Zheng Date: Mon, 13 Jul 2026 18:51:36 +0700 Subject: [PATCH] docs: add codex-profiles Add codex-profiles using this repository's contribution format. Keep the description aligned with its v0.7 local-state and token boundaries. --- docs/.vuepress/navbar-source.ts | 1 + docs/.vuepress/sidebar/index.ts | 1 + docs/manual/02-credits.md | 1 + docs/recipes/00-index.md | 11 ++- docs/recipes/18-codex-profiles.md | 135 ++++++++++++++++++++++++++++++ 5 files changed, 145 insertions(+), 4 deletions(-) create mode 100644 docs/recipes/18-codex-profiles.md diff --git a/docs/.vuepress/navbar-source.ts b/docs/.vuepress/navbar-source.ts index fb9705e..9e95d91 100644 --- a/docs/.vuepress/navbar-source.ts +++ b/docs/.vuepress/navbar-source.ts @@ -55,6 +55,7 @@ export const recipeItemsSource: NavbarDocItem[] = [ { file: "recipes/15-hatch-pet-photo.md", icon: "image" }, { file: "recipes/16-android-remote-control.md", icon: "mobile" }, { file: "recipes/17-desktop-pet.md", icon: "cat" }, + { file: "recipes/18-codex-profiles.md", icon: "terminal" }, ]; export const manualItemsSource: NavbarDocItem[] = [ diff --git a/docs/.vuepress/sidebar/index.ts b/docs/.vuepress/sidebar/index.ts index 88bc2bd..4db62fb 100644 --- a/docs/.vuepress/sidebar/index.ts +++ b/docs/.vuepress/sidebar/index.ts @@ -88,6 +88,7 @@ export default sidebar({ "15-hatch-pet-photo.md", "16-android-remote-control.md", "17-desktop-pet.md", + "18-codex-profiles.md", ], }, ], diff --git a/docs/manual/02-credits.md b/docs/manual/02-credits.md index d5fb7a2..065f2a9 100644 --- a/docs/manual/02-credits.md +++ b/docs/manual/02-credits.md @@ -27,6 +27,7 @@ description: "CodexGuide 参考来源与致谢,整理案例中涉及的第三 | [BigPizzaV3/CodexPlusPlus](https://github.com/BigPizzaV3/CodexPlusPlus) | BigPizzaV3 | 社区工具,用于 Codex 桌面 App 外部 launcher、中转注入和 provider 管理;最后核对日期:2026-05-29 | [连接第三方 API](../start/04-third-party-api.md) | | [BenedictKing/ccx](https://github.com/BenedictKing/ccx) | BenedictKing | 社区项目,提供 AI API 代理、协议转换、渠道编排和 Codex Responses 网关能力;最后核对日期:2026-05-29 | [连接第三方 API](../start/04-third-party-api.md) | | [farion1231/cc-switch](https://github.com/farion1231/cc-switch) | farion1231 | 社区工具,用于管理 Codex、Claude Code、Gemini CLI 等工具的供应商配置和一键切换;最后核对日期:2026-05-29 | [连接第三方 API](../start/04-third-party-api.md) | +| [Ducksss/codex-profiles](https://github.com/Ducksss/codex-profiles) | Ducksss | 社区工具,为 Codex CLI 和命名 ChatGPT Desktop 窗口选择独立本地状态;最后核对日期:2026-07-13 | [18 Codex × codex-profiles](../recipes/18-codex-profiles.md) | --- diff --git a/docs/recipes/00-index.md b/docs/recipes/00-index.md index 7024356..939b054 100644 --- a/docs/recipes/00-index.md +++ b/docs/recipes/00-index.md @@ -1,5 +1,5 @@ --- -description: "Codex 实战案例库,收录 PPT、Draw.io、Playwright、Obsidian、临床文献综述、Hatch Pet、安卓手机远程操控、飞书、Figma、Notion、CI 和远程排障案例。" +description: "Codex 实战案例库,收录 PPT、Draw.io、Playwright、Obsidian、临床文献综述、Hatch Pet、安卓手机远程操控、命名本地环境、飞书、Figma、Notion、CI 和远程排障案例。" permalink: /recipes/ --- @@ -9,7 +9,7 @@ permalink: /recipes/ # 实战案例库 -这里收集可复现、可改写、可迁移到真实工作流里的 Codex 使用案例。当前版本已收录 17 个案例,覆盖 Skill、MCP、浏览器自动化、知识库、临床文献综述、移动端协同、个性化工作台、设计稿、团队协作、远程排障和 CI 自动修复。 +这里收集可复现、可改写、可迁移到真实工作流里的 Codex 使用案例。当前版本已收录 18 个案例,覆盖 Skill、MCP、浏览器自动化、知识库、临床文献综述、移动端协同、命名本地环境、个性化工作台、设计稿、团队协作、远程排障和 CI 自动修复。 ## 当前案例概览 @@ -21,9 +21,10 @@ permalink: /recipes/ | 移动协同与个性化工作台 | 安卓手机远程操控、Hatch Pet、桌面宠物 | 在手机端跟进桌面任务,并用自定义宠物和桌面状态反馈优化工作台体验 | | 浏览器与前端自动化 | Playwright MCP、Chrome 浏览器插件 | 让 Codex 操作网页、检查页面、执行浏览器任务 | | 设计与协作平台 | Figma MCP、飞书 CLI | 读取设计稿、处理飞书数据、连接团队工具 | +| 本地环境与身份边界 | codex-profiles | 为 CLI 和命名 Desktop 窗口选择独立本地状态,并理解仍然共享的 OS 与服务端边界 | | 发布与工程运维 | DKFile、云服务器远程修 Bug、GitHub Actions CI 修复 | 从本地/远程环境到自动修复流程的完整闭环 | -## 17 个案例清单 +## 18 个案例清单 | 编号 | 案例 | 核心场景 | 推荐入口 | 验证重点 | | --- | --- | --- | --- | --- | @@ -44,6 +45,7 @@ permalink: /recipes/ | 15 | [Codex × Hatch Pet:用一张照片生成专属宠物](../recipes/15-hatch-pet-photo.md) | 生成并安装自定义桌面宠物 | 桌面 App / Hatch Pet | 素材质量、生成进度、宠物包路径 | | 16 | [Codex × 安卓手机:扫码连接,远程操控](../recipes/16-android-remote-control.md) | 手机端配对并管理桌面任务 | ChatGPT App / Desktop App | 账号一致、网络、防火墙、连接状态 | | 17 | [Codex × 桌面宠物:显示任务状态](../recipes/17-desktop-pet.md) | 用桌面宠物显示任务进度和完成状态 | 桌面 App | 宠物唤醒、任务状态、提醒反馈 | +| 18 | [Codex × codex-profiles:分开个人与工作环境](../recipes/18-codex-profiles.md) | 为不同 Codex 场景选择独立本地状态 | CLI / macOS App | CODEX_HOME、命名窗口、账号与安全边界 | ## 怎么选择先看哪个 @@ -55,6 +57,7 @@ permalink: /recipes/ - 想做医学科研资料整理:先看 [临床文献综述](../recipes/14-clinical-literature-review.md),重点学习如何把事实、推断和安全边界分开。 - 想优化桌面工作台体验:先看 [Hatch Pet](../recipes/15-hatch-pet-photo.md) 和 [桌面宠物](../recipes/17-desktop-pet.md),了解如何生成自定义宠物并查看任务状态。 - 想用手机跟进桌面任务:先看 [安卓手机远程操控](../recipes/16-android-remote-control.md),重点检查账号、网络和授权状态。 +- 想分开个人与工作环境:先看 [codex-profiles](../recipes/18-codex-profiles.md),重点理解本地状态、账号与操作系统边界。 - 想做工程自动化:先看 [云服务器远程修 Bug](../recipes/11-remote-bug-fix.md)、[GitHub Actions CI 自动修复](../recipes/13-github-actions-ci-fix.md)。 - 想理解浏览器控制能力:先看 [Playwright MCP](../recipes/03-playwright-mcp.md) 和 [Chrome 浏览器插件](../recipes/12-chrome-browser-plugin.md)。 @@ -62,7 +65,7 @@ permalink: /recipes/ | 状态 | 案例 | 说明 | | --- | --- | --- | -| 已形成完整流程 | PPT Skill、Playwright MCP、Obsidian、飞书 CLI、临床文献综述、Hatch Pet、桌面宠物、安卓手机远程操控、远程修 Bug、GitHub Actions CI 修复 | 有明确安装、使用步骤或完整操作链路 | +| 已形成完整流程 | PPT Skill、Playwright MCP、Obsidian、飞书 CLI、临床文献综述、Hatch Pet、桌面宠物、安卓手机远程操控、codex-profiles、远程修 Bug、GitHub Actions CI 修复 | 有明确安装、使用步骤或完整操作链路 | | 偏工具接入教程 | Draw.io MCP、Figma MCP、Notion MCP、DKFile、Chrome 浏览器插件 | 重点在接入方式、典型任务和安全边界 | | 偏场景展示 | HyperFrames、LLM Wiki | 重点展示 Codex 与创作/知识库场景的组合方式 | diff --git a/docs/recipes/18-codex-profiles.md b/docs/recipes/18-codex-profiles.md new file mode 100644 index 0000000..0d57297 --- /dev/null +++ b/docs/recipes/18-codex-profiles.md @@ -0,0 +1,135 @@ +--- +description: "使用 codex-profiles 为个人、工作或客户环境选择独立的 CODEX_HOME,并在 macOS 上启动使用独立本地状态的命名 ChatGPT Desktop 窗口。" +--- + +::: tip 最后核对 +本文最后核对日期:2026-07-13,基于 +[codex-profiles v0.7](https://github.com/Ducksss/codex-profiles/tree/v0.7.0)。 +Codex 和 ChatGPT Desktop 的实际行为仍应以 +[OpenAI Codex 文档](https://developers.openai.com/codex/)和当前客户端为准。 +::: + +# Codex × codex-profiles:分开个人与工作环境 + +当一台电脑需要处理个人、工作、学校或客户项目时,不同环境的 Codex +配置、会话和登录状态容易混在一起。`codex-profiles` 是一个开源 Bash +CLI:每个名称选择一个独立的 `CODEX_HOME`;在 macOS 上,命名启动还会为 +整个 ChatGPT Desktop 窗口选择独立的 Electron 本地状态。 + +这个工具管理的是**本地状态路径**,不是账号迁移工具,也不是操作系统级 +沙箱。它不会读取、复制、打印、解析、上传、比较或迁移令牌。 + +## 1. 先理解两个作用范围 + +| 命令 | 名称控制什么 | +| --- | --- | +| `cli`、`login`、`env`、`use` | 所选 `CODEX_HOME` 中的 Codex CLI 本地状态 | +| `app default` | 系统正常安装的 ChatGPT App 和默认 `~/.codex` | +| `app ` | 整个命名 ChatGPT 窗口的 Electron 本地状态,以及匹配的 `CODEX_HOME` | +| `status` | Codex CLI 的本地登录状态,不代表窗口当前显示的 ChatGPT 账号 | + +`default` 映射到 `~/.codex`,其他名称映射到 +`~/.codex-`。例如: + +| 名称 | Codex 本地目录 | +| --- | --- | +| `default` | `~/.codex` | +| `personal` | `~/.codex-personal` | +| `work` | `~/.codex-work` | + +命名窗口的 Electron 数据位于对应目录下的 +`electron-user-data`。同一个名称会复用同一份本地状态,不同名称可以并行 +打开。 + +## 2. 安装并检查环境 + +使用 npm 安装时,包名是单数: + +```bash +npm install -g codex-profile +codex-profile doctor +``` + +也可以使用 Homebrew: + +```bash +brew install Ducksss/tap/codex-profile +codex-profile doctor +``` + +`doctor` 应能找到上游 Codex CLI。ChatGPT Desktop 命名窗口只支持 +macOS;Linux 可以使用 CLI profile。 + +## 3. 创建并登录两个 CLI profile + +```bash +codex-profile init personal +codex-profile init work + +codex-profile login personal +codex-profile login work +``` + +`login` 会把上游 Codex CLI 放在所选 `CODEX_HOME` 中运行。 +`codex-profiles` 本身不读取登录结果中的令牌。 + +分别运行两个环境: + +```bash +codex-profile cli personal +codex-profile cli work exec "检查当前仓库并总结测试命令" +``` + +查看实际路径和 CLI 状态: + +```bash +codex-profile path personal +codex-profile path work +codex-profile status personal +codex-profile status work +``` + +预期两个 `path` 输出不同。`status` 只用于核对 Codex CLI 本地状态,不能 +识别 ChatGPT 窗口中当前可见的账号。 + +## 4. 在 macOS 启动命名 ChatGPT 窗口 + +```bash +codex-profile app default ~/Dev/personal-project +codex-profile app work ~/Dev/work-project +``` + +`app default` 使用系统原有的 ChatGPT 会话。`app work` 使用原始签名的 +`ChatGPT.app`,但为整个窗口选择独立的 Electron 本地状态。工具不会复制、 +修改、重新签名、退出或替换已安装的 App。 + +命名窗口第一次打开时可能需要登录。请在窗口界面中检查当前可见账号;不要 +根据 profile 名称推断账号。CLI 和 Desktop 是否登录同一账号属于未验证 +状态,需要用户分别登录并自行核对。 + +## 5. 验证隔离是否符合预期 + +完成后检查以下结果: + +1. `codex-profile path personal` 与 `path work` 指向不同目录。 +2. 两个 CLI profile 能分别启动,并保留各自的 Codex 本地状态。 +3. macOS 上的默认窗口和命名窗口能并行打开。 +4. 每个 ChatGPT 窗口中显示的账号与工作区符合预期。 +5. 切换一个窗口的 Chat、Work 或 Codex 模式时,仍处于该窗口的本地状态。 + +## 安全边界 + +| 已分开 | 仍然共享或不受工具控制 | +| --- | --- | +| 每个名称下的 Codex 配置、会话、插件、缓存和日志 | macOS 用户、文件系统权限和网络 | +| 命名 ChatGPT 窗口的本地 Electron 数据 | SSH key、Git 凭证、GitHub CLI、浏览器 cookie、系统钥匙串 | +| CLI 和 Desktop 接收到的匹配 `CODEX_HOME` | 服务端 ChatGPT 历史、memory、workspace、plan、limit 和 cloud task | + +因此,profile 隔离不能替代独立操作系统用户或企业安全边界。需要严格隔离 +SSH key、Git 凭证或系统钥匙串时,应使用不同的操作系统用户。 + +## 参考来源 + +- [codex-profiles README](https://github.com/Ducksss/codex-profiles) +- [codex-profiles 安全模型](https://github.com/Ducksss/codex-profiles/blob/main/SECURITY.md) +- [OpenAI Codex 文档](https://developers.openai.com/codex/)