[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-76325":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":30,"discoverSource":31},76325,"Chat-Codex","uluckyXH\u002FChat-Codex","uluckyXH","Chat-Codex 让你很轻松的把Codex接入你的微信和飞书实现远程控制、审批、操控电脑等，同时支持多渠道","",null,"TypeScript",128,17,53,2,0,1,15,73,9,60.57,"MIT License",false,"main",true,[],"2026-06-12 04:01:21","\u003Ch1 align=\"center\">Chat-Codex\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n把本机 Codex 接入微信和飞书的轻量聊天中间件。\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n\u003Ca href=\"README.en.md\">English\u003C\u002Fa> ·\n\u003Ca href=\"docs\u002FREADME.md\">文档索引\u003C\u002Fa> ·\n\u003Ca href=\"docs\u002Fdevelopment-and-test.zh-CN.md\">开发规范\u003C\u002Fa> ·\n\u003Ca href=\"https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F2190139\">LINUX DO 讨论\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode.js-22+-339933?logo=nodedotjs&logoColor=white\" alt=\"Node.js\">\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.9-3178C6?logo=typescript&logoColor=white\" alt=\"TypeScript\">\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-19-61DAFB?logo=react&logoColor=111827\" alt=\"React\">\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTUI-Ink-0ea5e9\" alt=\"Ink TUI\">\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRuntime-Codex-111827\" alt=\"Codex\">\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FChannel-Weixin-07C160?logo=wechat&logoColor=white\" alt=\"Weixin\">\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FChannel-Feishu-2563EB\" alt=\"Feishu\">\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green\" alt=\"License\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n\u003Cstrong>目录\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n\u003Ca href=\"#项目介绍\">项目介绍\u003C\u002Fa> ·\n\u003Ca href=\"#能力概览\">能力概览\u003C\u002Fa> ·\n\u003Ca href=\"#安装使用\">安装使用\u003C\u002Fa> ·\n\u003Ca href=\"#运行数据与环境变量\">运行数据与环境变量\u003C\u002Fa> ·\n\u003Ca href=\"#技术栈\">技术栈\u003C\u002Fa> ·\n\u003Ca href=\"#开发快速开始\">开发快速开始\u003C\u002Fa> ·\n\u003Ca href=\"#开发命令\">开发命令\u003C\u002Fa> ·\n\u003Ca href=\"#技术架构\">技术架构\u003C\u002Fa> ·\n\u003Ca href=\"#聊天内命令\">聊天内命令\u003C\u002Fa> ·\n\u003Ca href=\"#文件发送\">文件发送\u003C\u002Fa> ·\n\u003Ca href=\"#文档\">文档\u003C\u002Fa> ·\n\u003Ca href=\"#许可证\">许可证\u003C\u002Fa>\n\u003C\u002Fp>\n\n## 项目介绍\n\nChat-Codex 是一个轻量的聊天渠道中间件，用来把微信和飞书里的私聊消息接入本机 Codex。它负责把不同聊天平台的消息转换为统一协议，按聊天 route 绑定独立 Codex session，并把 Codex 的回复、审批、进度和文件发送回对应聊天。\n\n项目核心目标是让 Codex 可以自然地在聊天窗口里工作，同时避免多渠道、多聊天、多 session 之间的上下文串线。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fchat-codex-tui-screenshot.png\" alt=\"Chat-Codex TUI 运行截图\" width=\"900\">\n\u003C\u002Fp>\n\n## 能力概览\n\n- 统一 `chat-codex` 入口，使用 TUI 管理渠道、聊天绑定、权限和启动流程。\n- 支持微信账号和飞书机器人接入，私聊文本\u002F图片\u002F文件收发。\n- 支持每个聊天 route 独立绑定一个 Codex session。\n- 支持一个 Codex session 只归属一个 route，避免审批、文件和上下文串线。\n- 支持 Codex app-server 作为默认接入方式，并保留 `codex exec --json` 回退适配。\n- 支持聊天内创建\u002F恢复 session、查看状态、停止任务、处理审批、切换权限、切换模型和发送文件。\n- 支持本地持久化渠道实例、聊天绑定、session owner、session 权限和待生效绑定。\n- 支持运行期 TUI 日志面板，展示入站、出站、进度、媒体和错误日志。\n\n## 安装使用\n\n```bash\n# 全局安装 Chat-Codex\nnpm install -g chat-codex\n\n# 启动 TUI\nchat-codex\n```\n\n首次启动前，需要先准备本机 Codex CLI。Chat-Codex 通过本机 `codex` CLI 启动 `codex app-server` 或 `codex exec` 子进程来接入 Codex；只安装 Codex 桌面 App 不等于已满足这个前置要求。\n\nCodex CLI 官方安装指引：\u003Chttps:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fquickstart>\n\n方式一：npm，适合已安装 Node.js 的 macOS、Linux 和 Windows 用户。\n\n```bash\nnpm install -g @openai\u002Fcodex\ncodex\n```\n\n方式二：Homebrew，适合已安装 Homebrew 的 macOS 或 Linux 用户。\n\n```bash\nbrew install codex\ncodex\n```\n\n安装后确认命令可用：\n\n```bash\ncodex --version\ncodex\n```\n\nWindows 用户如果 PowerShell 里 `codex --version` 正常，但 Chat-Codex 首页显示 Codex CLI 不可用或报 `spawn codex ENOENT`，请参考 [Windows Codex CLI 排障指南](docs\u002Fwindows-codex-cli-troubleshooting.zh-CN.md)。\n\n首次启动后按 TUI 引导完成 Codex 检查、渠道管理、聊天绑定和启动服务。\n\n### 首次配对\n\nChat-Codex 对真实微信\u002F飞书聊天默认启用配对保护。第一次从某个微信联系人或飞书私聊使用时，聊天里会收到配对提示；请回到运行 `chat-codex` 的终端\u002FTUI 查看配对码，然后在原聊天里发送：\n\n```text\n\u002Fpair \u003C配对码>\n```\n\n配对成功后，该聊天会被记为可信 route，后续重启后仍可继续使用。配对按聊天 route 独立生效：不同微信联系人、不同飞书私聊 `chat_id` 都需要分别配对一次。\n\n## 运行数据与环境变量\n\n默认情况下，开发版和 npm 全局安装版都会把运行数据写到当前系统用户目录下，不随启动目录变化。\n\n| 项目 | 默认值 | 说明 |\n| --- | --- | --- |\n| 状态根目录 | `~\u002F.chat-codex\u002Fstate\u002F` | 保存 Bridge 配置、route\u002Fsession 绑定、渠道账号状态和本机凭证。 |\n| 上传目录 | `~\u002F.chat-codex\u002Fuploads\u002F` | 保存微信\u002F飞书收到的图片和文件，再以本地路径投递给 Codex。 |\n| `CHAT_CODEX_BIN` | 未设置 | 覆盖 Codex CLI 可执行文件路径；主要用于 Windows Codex CLI 路径排障。 |\n| `CHAT_CODEX_STATE_DIR` | 未设置 | 覆盖状态根目录；相对路径按启动 `chat-codex` 时的工作目录解析。 |\n| `CHAT_CODEX_UPLOAD_DIR` | 未设置 | 覆盖上传目录；相对路径按启动 `chat-codex` 时的工作目录解析。 |\n\n旧版本曾默认写入启动目录下的 `state\u002F` 和 `.chat-codex-uploads\u002F`。升级后如果需要读取旧数据，可以把旧 `state\u002F` 移到 `~\u002F.chat-codex\u002Fstate\u002F`，或临时设置 `CHAT_CODEX_STATE_DIR=\u002Fold\u002Fstart\u002Fdir\u002Fstate`。\n\n## 技术栈\n\n| 模块 | 技术 |\n| --- | --- |\n| Runtime | Node.js 22+ |\n| 语言 | TypeScript \u002F ESM |\n| TUI | Ink + React |\n| Codex 接入 | Codex app-server，`codex exec --json` fallback |\n| 微信渠道 | `@tencent-weixin\u002Fopenclaw-weixin` 通讯能力适配 |\n| 飞书渠道 | `@larksuiteoapi\u002Fnode-sdk` + WebSocket |\n| 状态 | 本地 JSON 文件 |\n| 测试 | Node.js test runner |\n\n## 开发快速开始\n\n```bash\ngit clone git@github.com:uluckyXH\u002FChat-Codex.git\ncd Chat-Codex\nnpm install\nnpm run build\nnpm test\n```\n\n启动开发版 TUI：\n\n```bash\nnpm run chat-codex\n```\n\nTUI 会引导完成 Codex 检查、渠道管理、聊天绑定和启动服务。README 不再维护微信和飞书的手工配置流程，相关操作以 TUI 为准。\n\n## 开发命令\n\n| 命令 | 用途 |\n| --- | --- |\n| `npm run build` | 编译 TypeScript 到 `dist\u002F` |\n| `npm test` | 构建并运行全部单元测试和集成测试 |\n| `npm run test:unit` | 运行单元测试 |\n| `npm run test:integration` | 运行集成测试 |\n| `npm run chat-codex` | 启动开发版 Chat-Codex TUI |\n| `npm run cli:chat-codex` | `chat-codex` 的等价开发入口 |\n| `chat-codex --version` | 查看已安装 Chat-Codex 版本 |\n| `chat-codex version` | 查看 Chat-Codex 和 Node.js 版本 |\n| `npm run cli:mock` | Mock 通道闭环验证 |\n| `npm run cli:terminal:mock` | 终端通道 + MockCodex |\n| `npm run cli:terminal:codex` | 终端通道 + 真实 Codex |\n| `npm run cli:weixin:status` | 微信辅助状态检查 |\n| `npm run cli:weixin:login` | 微信辅助扫码登录 |\n| `npm run cli:feishu:status` | 飞书辅助凭证和机器人身份检查 |\n\n## 技术架构\n\n```text\n聊天用户\n  |\n  v\nWeixinAdapter \u002F FeishuAdapter\n  |\n  | ChannelMessage \u002F ChannelTarget\n  v\nChannelRegistry\n  |\n  v\nBridge Core\n  |-- Command Router\n  |-- Route Queue\n  |-- ApprovalManager\n  |-- SessionBindings\n  |-- TurnScheduler\n  |\n  v\nCodexAdapter\n  |-- AppServerCodexAdapter（默认）\n  |-- ExecCodexAdapter（回退）\n  |\n  v\nCodex CLI \u002F Codex app-server\n```\n\n核心边界：\n\n- Codex 侧只通过 `CodexAdapter` 交互。\n- 渠道侧只通过 `ChannelAdapter` 交互。\n- Bridge Core 只负责通用路由、队列、session 绑定、审批、权限和 Codex turn 调度。\n- 登录、平台 token、游标、限流、重试、typing、媒体上传等都属于具体渠道 adapter。\n- 不同渠道的投递差异通过 `ChannelCapabilities` 和 `ChannelDeliveryPolicy` 表达。\n\n统一 route key：\n\n```text\n\u003CchannelId>:\u003CaccountId>:\u003CconversationKind>:\u003CconversationId>\n```\n\n同一个 route 的普通消息串行处理；不同 route 可以并行运行不同 Codex session。一个 Codex session 只能属于一个 route。\n\n## 聊天内命令\n\n这些命令从微信或飞书私聊里发送。命令消息不会进入普通 prompt 队列，会立即处理。\n\n| 命令 | 用途 |\n| --- | --- |\n| `\u002Fhelp` | 查看当前渠道可用命令 |\n| `\u002Fnew` | 为当前聊天 route 创建新的 Codex session |\n| `\u002Fresume [session\\|编号]` | 恢复并绑定已有 Codex session |\n| `\u002Fuse [session\\|编号]` | 切换当前 route 的 active session |\n| `\u002Fsessions` | 查看当前 route 拥有或绑定过的 session |\n| `\u002Fsessions all` | 查看本机可发现的 Codex 历史 session |\n| `\u002Fstatus` | 查看 session、模型、token、队列、审批、权限和渠道状态 |\n| `\u002Fwhoami` | 查看当前 channel、route、sender 和 conversation 信息 |\n| `\u002Fdebug` | 查看调试状态 |\n| `\u002Fstop` | 停止当前 route 正在运行的 Codex turn |\n| `\u002FOK` | 批准当前 route 最新 pending approval |\n| `\u002FP` | 持久批准当前 route 最新 pending approval |\n| `\u002FNO` | 拒绝当前 route 最新 pending approval |\n| `\u002Fpermission` | 查看当前 session 权限 |\n| `\u002Fpermission approval` | 切回审批模式 |\n| `\u002Fpermission full confirm` | 切到完全权限 |\n| `\u002Fplan` \u002F `\u002Fplan \u003C任务>` | 进入计划模式，或以计划模式处理任务 |\n| `\u002Fcode` \u002F `\u002Fcode \u003C任务>` | 切回执行模式，或以执行模式处理任务 |\n| `\u002Fgoal [目标]` | 查看或设置实验 Goal |\n| `\u002Fgoal pause` \u002F `\u002Fgoal resume` \u002F `\u002Fgoal clear` | 管理实验 Goal 状态 |\n| `\u002Fmodel` | 查看可用模型 |\n| `\u002Fmodel \u003C模型或编号> [effort]` | 切换模型和 reasoning effort |\n| `\u002Fmodel effort \u003Ceffort>` | 只切换 reasoning effort |\n| `\u002Fmodel default` | 清除当前 session 的模型覆盖 |\n| `\u002Fsendfile \u003C任务>` | 允许 Codex 本轮声明并发送文件 |\n| `\u002Fcompact` | 压缩当前 session 的历史上下文，需 `\u002Fcompact confirm` 确认 |\n| `\u002Fprogress [brief\\|detailed\\|silent]` | 非微信渠道的进度投递模式 |\n| `\u002Ffff` | 微信专用静默刷新 |\n\n## 文件发送\n\n普通回复里的本地路径、Markdown 图片和 `file:\u002F\u002F` 不会自动发送文件，只会当文本展示。\n\n需要让 Codex 本轮生成并发送文件时，发送：\n\n```text\n\u002Fsendfile \u003C任务内容>\n```\n\nBridge 只解析 Codex 最终回复末尾的内部协议行：\n\n```text\nBRIDGE_SEND_FILE: \u002Fabsolute\u002Fpath\u002Fto\u002Ffile\n```\n\n每轮最多发送 3 个文件。协议行不会展示给聊天用户。微信和飞书当前都支持图片\u002F文件发送。\n\n## 文档\n\n- [docs\u002FREADME.md](docs\u002FREADME.md)：文档索引和推荐阅读顺序。\n- [docs\u002Frequirements.zh-CN.md](docs\u002Frequirements.zh-CN.md)：需求、边界和命令要求。\n- [docs\u002Ftechnical-design.zh-CN.md](docs\u002Ftechnical-design.zh-CN.md)：技术设计和架构说明。\n- [docs\u002Fchannel-delivery-policy.zh-CN.md](docs\u002Fchannel-delivery-policy.zh-CN.md)：渠道投递策略。\n- [docs\u002Finbound-media-design.zh-CN.md](docs\u002Finbound-media-design.zh-CN.md)：入站图片和文件、pending media、结构化 Codex 输入。\n- [docs\u002Fmulti-channel-design.zh-CN.md](docs\u002Fmulti-channel-design.zh-CN.md)：多渠道 route\u002Fsession 绑定和并发设计。\n- [docs\u002Flocal-state-persistence.zh-CN.md](docs\u002Flocal-state-persistence.zh-CN.md)：本地文件持久化和 session owner 约束。\n- [docs\u002Fink-tui-interaction-design.zh-CN.md](docs\u002Fink-tui-interaction-design.zh-CN.md)：TUI 交互设计。\n- [docs\u002Fdevelopment-and-test.zh-CN.md](docs\u002Fdevelopment-and-test.zh-CN.md)：开发与测试规范。\n- [reports\u002Ftests\u002F](reports\u002Ftests\u002F)：中文测试报告。\n\n## 许可证\n\n本项目使用 [MIT License](LICENSE)。\n\n作者：小黄 and Codex\n","Chat-Codex 是一个轻量级的聊天渠道中间件，旨在将Codex接入微信和飞书，实现远程控制、审批及文件传输等功能。其核心功能包括支持多渠道接入（如微信账号与飞书机器人）、每个聊天会话独立绑定Codex session以避免上下文混淆、以及通过TUI界面管理渠道配置与权限设置等。该工具适用于需要在即时通讯软件中集成高级计算或自动化任务处理能力的场景，特别适合开发者和团队协作环境使用。基于TypeScript开发，确保了代码质量和跨平台兼容性。","2026-06-11 03:54:56","CREATED_QUERY"]