English | 简体中文
把微信消息桥接到本地 Codex CLI,让你直接在微信里驱动本机工作区执行任务。
项目基于微信官方 iLink Bot API,消息入口合规;模型执行走本地 codex,不是纯远程聊天转发。
参考项目:
- 官方链路:使用微信官方 iLink Bot API 登录、轮询、回复和输入中状态
- 本地执行:实际调用
codex exec,可以读写当前工作区、运行命令、调用工具 - 项目级隔离:默认使用仓库内的
./codex-home,避免和~/.codex冲突 - 多 provider:
Codex CLI的 provider 定义写在codex-home/config.toml,微信里只切 provider/model - 真实模型发现:
/models查询当前 provider 的真实/models,不返回伪造列表 - 多会话隔离:按微信用户维持上下文,并支持
/fork切换线程名 - 工作区控制:支持默认工作区、允许根目录、按用户切换工作区
- MCP 集成:支持查看状态、列出工具、重连、按名称连接和断开 MCP server
- Skills 集成:
/skills显示当前项目codex-home下真实已安装的 skills - 媒体能力:图片会作为原生图像输入传给 Codex;语音优先使用微信文本,必要时走转写
- 运维命令:支持
doctor、前台运行、daemon 模式、日志查看
WeChat -> iLink Bot API -> wechat-codex bridge -> local codex exec -> reply back to WeChat
这层桥接只负责:
- 接收微信消息
- 管理工作区、用户偏好和会话
- 把任务交给本地
Codex CLI - 把结果回复回微信
flowchart LR
A["WeChat User"] --> B["WeChat iLink Bot API"]
B --> C["wechat-codex bridge"]
C --> D["Session + User Preferences"]
C --> E["Workspace / Allowlist / Routing"]
C --> F["MCP Manager"]
C --> G["Project-local CODEX_HOME"]
C --> H["local codex exec"]
G --> H
F --> H
H --> I["Workspace Files / Shell / Tools"]
H --> C
C --> B
B --> A
- Node.js 22+
- 本机可用的
codex命令 - 一个可登录的微信 iLink Bot
- 当前微信账号已经具备
ClawBot/ iLink Bot 可用资格
微信侧建议先确认这些条件:
- 手机微信里能正常扫码登录网页/桌面二维码
我 -> 设置 -> 插件下能看到ClawBot- 微信版本足够新
这里要说明准确边界:
ClawBot是否出现,看起来和账号资格灰度直接相关- 我们目前没有拿到一份可公开引用的官方“最低微信版本”文档
- 截至
2026-04-02的本地排查里,账号即使在较新的微信版本上,如果没有ClawBot插件入口,也可能无法完成登录
所以 README 更适合写成:
- 必须先确认账号具备
ClawBot可见性 - 微信版本请先升级到你设备上的最新稳定版
先确认 codex 已安装:
codex --versiongit clone https://github.com/HuangHaohang/wechat-codex.git
cd wechat-codex
npm install
npm run build编辑项目内配置文件。不同系统请用你自己的编辑器:
notepad .\codex-home\config.toml等价示例:
- Windows:
notepad .\codex-home\config.toml - macOS:
open -e ./codex-home/config.toml或nano ./codex-home/config.toml - Linux:
nano ./codex-home/config.toml
默认模板使用 openai。如果你要接自定义 OpenAI-compatible 网关,可按下面方式修改:
model_provider = "custom"
model = "gpt-5.4"
model_reasoning_effort = "high"
personality = "pragmatic"
[model_providers.custom]
name = "Custom"
base_url = "https://your-openai-compatible-gateway.example/v1"
env_key = "YOUR_CUSTOM_API_KEY"
wire_api = "responses"不要把 API key 写进仓库文件。请使用环境变量。
node dist/cli.js set-workspace <path-to-your-workspace>
node dist/cli.js add-root <path-to-an-allowed-root>
node dist/cli.js allow-user <wechat_user_id>
node dist/cli.js login首次登录会在终端里显示二维码。扫码并在手机上确认后,登录态会保存到本机用户目录。
wechat_user_id 的获取方式:
- 启动时先不要配置 allowlist,保持默认空列表
- 让目标微信用户先给机器人发一条消息
- 用户发送
/whoami - 机器人会返回它看到的真实
user id - 再由运维执行:
node dist/cli.js allow-user <that_user_id>如果你一开始就把 allowlist 锁死了,用户拿不到 id,这时只能由运维手动清理 ~/.wechat-codex/config.json 里的 allowlist,或者先换成开放模式再重新获取。
node dist/cli.js doctor
node dist/cli.js如果要后台运行:
node dist/cli.js start
node dist/cli.js status
node dist/cli.js logs -f/status/whoami/roots/workspace/workspace <path>/workspace default/new/reset/fork [name]
/models/model/model <provider>/model <provider:model>/model <model-id>/model default/reasoning/reasoning minimal|low|medium|high|xhigh|default/personality/personality none|friendly|pragmatic|default/sandbox/sandbox read-only|workspace-write|danger-full-access|default/approval/approval never|on-request|default/approve [workspace-write|danger-full-access]/deny/plan/plan on|off|default/search/search on|off|default
/mcp/mcp status/mcp tools/mcp reload/mcp connect <name>/mcp disconnect <name>/skills/skill/skill <name>|off/review [instructions]
/draw <prompt>/help
node dist/cli.js
node dist/cli.js serve
node dist/cli.js start
node dist/cli.js stop
node dist/cli.js status
node dist/cli.js logs [-f]
node dist/cli.js doctor
node dist/cli.js config
node dist/cli.js list-providers
node dist/cli.js set <provider> <key>
node dist/cli.js set-url <provider> <url>
node dist/cli.js unset <provider>
node dist/cli.js set-workspace <path>
node dist/cli.js add-root <path>
node dist/cli.js list-roots
node dist/cli.js allow-user <user_id>
node dist/cli.js deny-user <user_id>
node dist/cli.js list-users
node dist/cli.js login
node dist/cli.js logout路径:
~/.wechat-codex/config.json
这表示“当前用户 home 目录下的 .wechat-codex”。
常见实际路径:
- Windows:
C:\Users\<your-user>\.wechat-codex\config.json - macOS:
~/.wechat-codex/config.json - Linux:
~/.wechat-codex/config.json
这里保存桥接自己的运行配置,例如:
- 默认工作区
- 允许的根目录
- 微信 channel 配置
- MCP server 配置
- 用户 allowlist
- 每个微信用户的 workspace / provider / model / thread / skill 偏好
路径:
./codex-home/config.toml
这里保存项目内的 Codex 配置模板,包括:
- 默认 provider
- 默认 model
model_providers.<id>定义
wechat-codex 会把项目内 codex-home 作为 CODEX_HOME 传给本地 codex 子进程。
- MCP server 的配置目前保存在桥接配置
~/.wechat-codex/config.json - 微信里可用
/mcp查看连接状态 /mcp tools会列出当前已连接 server 暴露出来的真实工具
/skills读取的是当前项目codex-home下真实存在的 skills- 用户可以通过自然语言让 Codex 安装 skill
- 安装完成后,再发
/skills就能看到 - 这部分不是伪造列表,也不是写死在 README 里的预设项
优先检查这几项:
- 微信已经升级到当前设备可用的最新稳定版
我 -> 设置 -> 插件里能看到ClawBot- 当前网络能访问
https://ilinkai.weixin.qq.com - 终端里运行
node dist/cli.js doctor看是否已有保存的登录态
如果终端报 fetch failed 或 TLS 握手失败,这通常不是业务逻辑错误,而是当前网络到微信接口不通。
这表示当前 provider 的真实 /models 探测失败。常见原因:
- provider base URL 写错
- provider 不支持
/models - API key 无效
- 当前网络无法访问 provider
先检查:
codex-home/config.toml- 对应环境变量是否存在
node dist/cli.js list-providersnode dist/cli.js doctor
不要一开始就锁 allowlist。
推荐流程:
- 保持 allowlist 为空
- 让目标用户先给机器人发消息
- 让目标用户发送
/whoami - 机器人返回 user id
- 运维再执行
node dist/cli.js allow-user <that_user_id>
先确认:
- 这个 skill 确实安装到了当前项目的
codex-home - 不是装到了你全局的
~/.codex - 如有需要,执行
/new或重启 bridge 后再试一次/skills
这通常不是命令坏了,而是当前没有已连接的 MCP server。
先检查:
~/.wechat-codex/config.json里的mcpServers/mcp/mcp reload
当前逻辑是:
- 优先使用微信已经给出的语音文本
- 没有文本时,才尝试走 OpenAI-compatible 转写接口
所以语音失败通常是:
- 微信上游没有给文本
- 没配置可用的转写接口
- API key 无效
- 媒体格式不受支持
从代码层面可以:
- 用户数据目录用的是
~/.wechat-codex - 项目内
codex-home路径逻辑已经做了跨平台修正
但当前仓库主要在 Windows 环境下做过完整联调,macOS / Linux 更适合先按 README 跑一轮 doctor 和登录验证。
/models不做静态回退,当前 provider 的真实/models不通就直接失败- 微信登录能力依赖账号本身是否具备
ClawBot/ iLink Bot 资格 - README 中关于微信版本只写“升级到最新稳定版”,因为目前没有可公开引用的官方最低版本文档
/plan是桥接层的计划模式提示,不是 Codex 原生 UI 的完整计划面板/fork是桥接层线程名切换,不是 Codex 原生 UI 的完整线程分叉界面- MCP server 配置目前保存在
~/.wechat-codex/config.json,不是项目内codex-home - 当前主要验证过 Windows;macOS / Linux 已按代码修正跨平台路径逻辑,但仍缺少完整实机验证
- 这是一个“让微信消息驱动本地 Codex 执行”的桥接器,授权用户本质上可以要求本机代理执行工作区内操作
- 生产或长期运行时,强烈建议启用 allowlist,不要长期保持开放模式
allowedWorkspaceRoots是第一层边界,务必只加入你愿意暴露给机器人的目录- provider 密钥不要写进仓库,应该使用环境变量
- 项目内
codex-home只应提交模板文件,不要提交 auth、history、sessions、sqlite、logs 等运行态文件 - 当前
CodexProvider默认是read-only加approval never - 如果要放权,需要在微信里显式发送
/sandbox workspace-write或/sandbox danger-full-access - MCP server 一旦接入,就相当于把额外工具能力暴露给会话;接入前应确认命令来源、权限边界和密钥管理
有问题可以直接加我微信:
仓库跟踪的是安全模板:
codex-home/config.tomlcodex-home/README.mdcodex-home/.gitignore
不会提交的运行态内容包括:
- auth
- history
- sessions
- sqlite state
- logs
- 临时文件
- 安装后的本地 skills
/models依赖当前 provider 真正支持/models- 语音转写依赖可用的 OpenAI-compatible 转写接口
- GitHub 没有内建语言切换器,这个仓库通过 README 顶部链接在中英文之间切换
- 代码现在已经修正了工作区路径判断的跨平台问题;从代码层面看,Windows、macOS、Linux 都可以安装运行
- 但微信登录前提是否满足,仍取决于账号本身是否具备
ClawBot/ iLink Bot 资格


