[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82059":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":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},82059,"codex-remote","happy-loki\u002Fcodex-remote","happy-loki","Use Feishu, WeChat, and Telegram as a remote control for Codex App, VS Code, and CLI",null,"Rust",77,6,1,3,0,10,35,12,2.54,"Apache License 2.0",false,"main",true,[],"2026-06-12 02:04:22","# codex-remote\n\n[English](README.en.md)\n\n## 产品预览\n\n本地 GUI 负责启动 backend、接入飞书、写入 Codex App 和 Codex VS Code 插件所需的本地配置。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fproduct\u002Fcodex-remote-gui.png\" alt=\"Codex Remote GUI 状态和配置界面\" width=\"900\">\n\u003C\u002Fp>\n\n同一个 Codex thread 可以继续在 Codex App 里查看，飞书发起的会话和工具结果会同步回来。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fproduct\u002Fcodex-app-chat.png\" alt=\"Codex App 会话同步和图片结果\" width=\"900\">\n\u003C\u002Fp>\n\n在飞书移动端也可以直接收到 Codex 的图片、命令和审批结果。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fproduct\u002Ffeishu-mobile-image.jpg\" alt=\"飞书移动端展示 Codex 图片结果\" width=\"520\">\n\u003C\u002Fp>\n\n`codex-remote` 是一个本地 Codex remote-control backend，用来把 Codex App 和 Codex VS Code 插件的远程控制能力接到飞书 \u002F Lark。\n\n它只做一件事：用户明确打开本地 GUI 后，让 Codex 客户端连接本机 backend，再把 remote-control 消息桥接到飞书。\n\n当前支持 macOS \u002F Windows 上的 Codex App，以及 Codex VS Code 插件。本项目只写入本地配置和必要的 GUI 环境入口，不替换 Codex App、Codex CLI 或 VS Code 插件的原始可执行文件。\n\n## 快速使用\n\n### 0. 前置条件\n\n- macOS 或 Windows 设备\n- Codex App 或 Codex VS Code 插件\n- 不需要 ChatGPT 账号，也不需要“加速网络”\n- 一个可以访问 GPT-5.x 兼容模型的第三方 key\n- 已安装飞书\n\n### 1. 安装\n\n从 GitHub Releases 下载 `Codex Remote.dmg`，拖到 Applications 后打开。\n\n第一次打开时，如果 macOS 提示来自互联网，按系统提示确认即可。Windows 直接运行 release 包里的 `codex-remote.exe`。这个 App 不会安装开机启动项，也不会自动常驻后台。\n\n### 2. 启动本地服务\n\n打开 `Codex Remote`。GUI 会自动启动本地 backend，并在退出时关闭本次启动的 backend。\n\n看到“本地服务：运行中”后继续下一步。\n\n### 3. 接入飞书\n\n第一次使用时，点击“更换机器人”，按二维码流程完成飞书接入。\n\n接入成功后，飞书状态会显示为已连接。之后正常使用不需要反复扫码，只有更换机器人时才需要重新扫码。\n\n### 4. 填写模型信息\n\n切到 “Codex 接入” 页面，填写你的模型服务信息：\n\n- Provider 名称\n- 第三方 Base URL\n- API Key\n\nProvider 名称可以留空。留空时，如果填写了 Base URL 或 API Key，默认会使用 `ai-codex`。\n\n### 5. 写入 Codex 配置\n\n点击“写入配置”。\n\n这个按钮只改本地 Codex 配置，并会先备份旧文件。它会让 Codex App 和 Codex VS Code 插件的 remote-control 连接到本机 `codex-remote`，同时写入本地认证信息和可选的模型 provider 配置。\n\n在 macOS 上会通过 `launchctl` 写入本次用户会话的 `CODEX_API_BASE_URL` 和 `CODEX_APP_SERVER_LOGIN_ISSUER`。在 Windows 上会写入当前用户的同名环境变量，并在 GUI 退出或卸载配置时按当前值清理。\n\n### 6. 打开 Codex\n\n正常启动 Codex App 或 Codex VS Code 插件，并打开 remote-control \u002F 控制这台电脑。\n\n连接成功后，`Codex Remote` 里会看到 Codex 控制通道变为已连接。\n\n不需要在 Codex App 的“连接”设置页里看到远程连接设备列表。这个项目走的是本地 backend + 飞书 bridge，只要 `Codex Remote` 首页的“本地服务”“飞书”“Codex 控制通道”三个状态都是绿色，就可以直接在飞书里使用。\n\n### 7. 在飞书里开始使用\n\n在飞书里给机器人发消息。\n\n如果当前飞书会话还没有绑定 Codex thread，机器人会先发一张选择卡片，让你新建 thread 或恢复已有 thread。选择后，后续对话就会进入对应的 Codex thread。\n\n## 交流与支持\n\n推荐关注公众号，后续会更新技术干货、实践记录和项目进展。\n\n\u003Cimg src=\"docs\u002Fassets\u002Fwechat-public-account.jpg\" alt=\"微信公众号\" width=\"220\">\n\n微信群主要用于反馈问题、交流使用体验和提出功能建议。\n\n\u003Cimg src=\"docs\u002Fassets\u002Fwechat-group.jpg\" alt=\"AI-Agent 技术交流群\" width=\"260\">\n\n## 飞书命令\n\n```text\n\u002Fnew       把当前飞书会话重新绑定到新的 Codex thread\n\u002Fstatus    查看当前绑定和运行状态\n\u002Fs \u002Fstop   中断当前正在运行的 Codex turn\n\u002Fq         中断并清除当前绑定\n\u002Fy \u002Fn      通过或拒绝当前审批\n\u002F1 \u002F2 \u002F3   选择审批卡片里的具体选项\n```\n\n审批卡片在选择后会高亮并标记为已处理，避免聊天里堆了很多卡片后分不清哪些已经操作过。\n\n## 卸载配置\n\nGUI 里点击“卸载配置”即可移除本项目写入 Codex 的：\n\n- `chatgpt_base_url`\n- `model_provider`\n- 本地 `ChatgptAuthTokens` auth 文件\n- `CODEX_API_BASE_URL` \u002F `CODEX_APP_SERVER_LOGIN_ISSUER` GUI 环境入口\n\n## 项目边界\n\n`codex-remote` 只支持干净的 Codex remote-control 路径。\n\n它不会：\n\n- 安装 `codex` 包装命令\n- 替换 Codex CLI\n- 通过 shim 启动 Codex App\n- 安装登录项或开机启动项\n- 自动常驻后台\n- 替换 Codex App、Codex CLI 或 VS Code 插件的原始可执行文件\n\n本地 backend 只会在用户明确打开 GUI 或主动从开发工具启动时运行。\n\n## 技术说明\n\n主链路：\n\n```text\nCodex App \u002F Codex VS Code 插件\n  |\n  | chatgpt_base_url = \"http:\u002F\u002Flocalhost:3847\u002Fbackend-api\"\n  | 用户打开 remote-control\n  v\n官方 Codex app-server\n  |\n  | outbound remote-control websocket\n  v\ncodex-remote 本地 backend\n  |\n  | 飞书 websocket 事件\n  | 飞书消息 \u002F 卡片 API\n  v\n飞书 IM\n```\n\n本项目实现官方 remote-control endpoint：\n\n```text\nPOST \u002Fbackend-api\u002Fwham\u002Fremote\u002Fcontrol\u002Fserver\u002Fenroll\nGET  \u002Fbackend-api\u002Fwham\u002Fremote\u002Fcontrol\u002Fserver\n```\n\nCodex remote-control 要求 ChatGPT 兼容的 auth mode。这个项目采用本地 `ChatgptAuthTokens` 形态，用来通过 Codex 客户端的 remote-control 账号检查。API-key-only auth 不能启动 remote-control。\n\nThread 绑定模型：\n\n- Codex app-server 仍然维护 thread 生命周期和历史\n- 一个飞书会话同一时间只绑定一个 Codex thread\n- 如果飞书还没绑定 thread，bridge 会先发 thread 列表卡片\n- 从飞书恢复某个 thread 后，会订阅这个 thread 后续的 remote-control 事件\n- 飞书发起的 turn 会按 turn id 记录来源，避免 userMessage 回显\n\n## 命令\n\n```text\ncodex-remote [--config PATH] daemon\ncodex-remote [--config PATH] status\ncodex-remote [--config PATH] on\ncodex-remote [--config PATH] off\ncodex-remote [--config PATH] configure-codex-app [--codex-home PATH] [--provider-name NAME] [--provider-base-url URL] [--provider-key TOKEN] [--model MODEL]\ncodex-remote [--config PATH] uninstall-codex-app [--codex-home PATH]\n```\n\n`on` \u002F `off` 用来启用或暂停飞书 bridge。\n\n`configure-codex-app` 是 GUI“写入配置”的 CLI 等价形式。如果写入模型 provider 配置，默认 provider 是 `ai-codex`，默认模型是 `gpt-5.5`。\n\n## 配置\n\n`config.toml` 是 `codex-remote` 自己的配置：\n\n```toml\nbind = \"127.0.0.1:3847\"\nstatePath = \"codex-remote-state.json\"\n\n[feishu]\nappId = \"\"\nappSecret = \"\"\nmentionOnly = true\nallowedOpenIds = []\nallowedChatIds = []\n\n[bridge]\nenabled = true\naccountId = \"default\"\nsendStreaming = true\n```\n\nCodex 客户端配置是另一份文件，通常在 `~\u002F.codex\u002Fconfig.toml`。\n\n详见 [config.example.toml](config.example.toml) 和 [docs\u002Fconfiguration.md](docs\u002Fconfiguration.md)。\n\n## 开发\n\n```powershell\ncargo fmt\ncargo test\ncargo build --release --features gui --bin codex-remote\n```\n\ndaemon 运行时常用状态接口：\n\n```text\nGET http:\u002F\u002F127.0.0.1:3847\u002Fapi\u002Fstatus\nGET http:\u002F\u002F127.0.0.1:3847\u002Fapi\u002Fremote-control\u002Fstatus\nGET http:\u002F\u002F127.0.0.1:3847\u002Fapi\u002Fremote-control\u002Fbackend-status\nGET http:\u002F\u002F127.0.0.1:3847\u002Fapi\u002Fevents\n```\n\n## 安全说明\n\n- daemon 默认只绑定 `127.0.0.1`，不要直接暴露到公网\n- `config.toml` 里保存飞书 `appId` 和 `appSecret`，不要提交\n- Codex 的 `auth.json` 和第三方 provider key 都是本地 secret，不要提交\n- 飞书附件会下载到本地状态目录旁边的 `.im\u002Fattachments\u002Ffeishu\u002F`\n- 真正使用时建议配置 `allowedOpenIds` 和 \u002F 或 `allowedChatIds`\n- bridge 可以替飞书用户向 Codex 提交审批决定，所以飞书访问权限应视为等价于本地 Codex 审批权限\n\n## 更多文档\n\n- [架构](docs\u002Farchitecture.md)\n- [配置](docs\u002Fconfiguration.md)\n- [认证说明](docs\u002Fauth-notes.zh-CN.md)\n- [排障](docs\u002Ftroubleshooting.md)\n\n## License\n\nApache-2.0\n","`codex-remote` 是一个用于将本地 Codex CLI 会话与飞书即时通讯软件桥接的工具。该项目使用 Rust 编写，提供了一个本地 GUI 来启动 backend 并接入飞书，同时配置 Codex App 和 VS Code 插件所需的本地设置。其核心功能是实现 Codex 客户端与飞书之间的远程控制消息传递，支持 macOS 和 Windows 系统上的 Codex 应用及插件。用户可以通过飞书在移动端或桌面端接收并查看 Codex 的命令执行结果、图片输出以及审批信息等。此项目特别适合需要通过企业级即时通讯平台来管理和监控代码操作的团队和个人开发者使用。",2,"2026-06-11 04:07:37","CREATED_QUERY"]