codex-remote-feishu 把一台机器上的 Codex 工作现场带到飞书,让你可以在飞书里接管工作区、切换 thread、继续对话、发图和停止当前 turn。
使用说明 https://my.feishu.cn/docx/PTncdNBf1oS9N5xBikBcGi2enzc
核心目标场景是:
- 本机或远端 Linux 上运行 Codex
- 默认直接在飞书里按工作区和已有会话继续当前工作
- 只有在需要跟着编辑器当前焦点走时,才按需接入 VS Code
- 尽量保留原有对话的 thread、模型配置和工作目录语义
当前 release 只发布一个统一二进制:
codex-remotedaemonrole- 常驻服务
- 管理实例、thread、消息队列、Feishu 投影和状态接口
app-server/ wrapper role- 包装真实
codex - 把原生 app-server 协议翻译成统一事件流
- 包装真实
installrole- 引导安装器
- 负责安装稳定二进制、写统一配置并启动 WebSetup
当前官方发布模型是:
- GitHub Releases 的平台包内只放最终用户需要的运行资产
codex-remote/codex-remote.exeREADME.mdQUICKSTART.mdCHANGELOG.mddeploy/
- 在线安装脚本
install-release.sh/install-release.ps1单独作为 release 资产和仓库入口提供 - Windows release 额外提供
codex-remote-feishu_<version>_windows_amd64_installer.exe,作为 native packaged installer - macOS release 额外提供
codex-remote-feishu_<version>_darwin_universal_installer.dmg,作为 native packaged installer - GitHub Releases 现在区分
production / beta / alpha三条 track- 默认在线安装入口始终指向最新
production - 需要时可显式安装最新
beta/alpha
- 默认在线安装入口始终指向最新
- 正式 release 构建与发布全部在 GitHub Actions 的
Releaseworkflow 上完成
- 在飞书里列出可接管工作区,并直接继续已有对话或新开会话
- 在统一目标选择卡里直接添加工作区:接入已有本地目录,或导入 Git 仓库
- 直接从最近或全部会话列表继续已有对话
- 需要时切到 VS Code 跟随当前编辑器对话
- 文本消息排队、typing reaction、stop 中断
- 回复当前正在执行的源消息可直接 steer 进本轮执行,也支持
/steerall - 排队中的文字消息支持用点赞升级成对当前执行的跟进
- 支持暂存图片,并在下一条文本里一起发给 Codex
- 支持
/sendfile,从当前工作区挑一个文件直接发回飞书聊天 - 支持
/compact,对当前 thread 主动做一次手动上下文整理 - 查看当前生效的模型和推理强度,并做飞书侧临时覆盖
- 用
/cron为当前 daemon 实例打开专属定时任务多维表格,并可调度本地工作区或 Git 仓库来源的任务 - 可在飞书里看到计划更新、工具调用、Web 搜索、命令执行等共享进度卡
- 区分系统提示、过程消息和最终回复
- 最终回复会直接回在触发它的那条消息下方
- 旧卡片、旧按钮和旧命令会明确提示已过期或已移除
- 最终回复中的本地
.md和单文件.html链接可自动替换成飞书云空间预览链接
- 确保真实
codex在目标机器上可运行 - 如果你需要和 VS Code 联动,再安装 VS Code 的 ChatGPT / Codex 扩展
- 无需提前配置飞书应用——安装后通过内置 WebSetup 向导即可扫码完成飞书接入,飞书配置是启动后的步骤,不是安装前提
- 只有在源码构建或仓库联调时才需要 Go 1.24+
飞书应用配置无需提前准备,项目启动后通过内置 WebSetup 向导即可完成:扫码接入、权限配置和扫码绑定。无需手动准备 App ID、App Secret 或编辑配置文件。
如需本地文档预览(将本地 .md 或 .html 链接替换为飞书云空间预览链接)或 /cron 定时任务等额外功能,在 WebSetup 中完成对应权限配置即可。不开这部分权限时,主对话功能仍可使用,但对应功能不可用。
关于飞书应用的具体配置项,可参考仓库中的飞书配置模板 deploy/feishu/app-template.json 和配置说明 deploy/feishu/README.md。这些是 WebSetup 的参考资源,方便你了解机器人菜单、事件订阅和权限配置的具体内容,无需在安装前手动准备。
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/kxn/codex-remote-feishu/master/install-release.sh | bashWindows PowerShell:
irm https://raw.githubusercontent.com/kxn/codex-remote-feishu/master/install-release.ps1 | iex这个脚本会自动:
- 识别平台
- 下载 GitHub 构建好的 release 包
- 解压到本地 release 缓存目录
- 安装稳定路径下的
codex-remote - 启动本地 daemon
- 打开或打印 WebSetup 链接
如果要安装某个 prerelease track 的最新版本:
curl -fsSL https://raw.githubusercontent.com/kxn/codex-remote-feishu/master/install-release.sh | bash -s -- --track beta& ([scriptblock]::Create((irm https://raw.githubusercontent.com/kxn/codex-remote-feishu/master/install-release.ps1))) -Track beta如果要安装指定版本:
curl -fsSL https://raw.githubusercontent.com/kxn/codex-remote-feishu/master/install-release.sh | bash -s -- --version v1.0.0& ([scriptblock]::Create((irm https://raw.githubusercontent.com/kxn/codex-remote-feishu/master/install-release.ps1))) -Version <version>从 GitHub Releases 下载对应平台归档后,直接运行归档内的统一二进制。
macOS / Linux:
./codex-remote install -bootstrap-only -start-daemonWindows PowerShell:
.\codex-remote.exe install -bootstrap-only -start-daemon启动后打开输出中的 /setup 链接,后续飞书配置、normal mode 使用准备、以及按需的 VS Code detect/apply 和 shim 重装都在 WebSetup / Admin UI 完成。
如果你已经完成安装,后续要升级到当前 track 的最新版本,面向用户的推荐入口统一是:
/upgrade latest
在已接入的飞书会话里发送这条命令即可。
这条入口适合日常升级检查、继续上一次未完成的升级,以及把当前安装更新到最新 release。用户文档里不再要求你手动准备本地升级产物或执行仓库内 helper。
daemon 不会再后台自动检查并主动弹出 release 升级提示;release 升级只会在你手动发送 /upgrade latest 之后检查或继续。
release 安装器现在只做 bootstrap:
- 复制或安装稳定二进制
- 写统一配置
config.json - 保留已有
config.json中的凭证与关键配置 - 启动 daemon 与嵌入式 Web UI
真正的产品配置入口已经收敛到 WebSetup / Admin UI:
- 飞书 App 新增、验证、启停
- 运行环境检查
- 自动启动
- 按需执行 VS Code
detect - 按需执行
editor_settingsapply - 按需执行
managed_shimapply - 按需执行扩展升级后的
reinstall-shim
当前默认推荐顺序是:
- 先完成飞书 App 接入和运行环境检查
- 直接开始在飞书里用默认
normal模式工作 - 只有在你明确需要“飞书跟着 VS Code 当前焦点走”时,再回到页面接入 VS Code
换句话说,VS Code 接入现在是可选增强,不再是开始使用前的默认前提。
VS Code 两种接管方式的区别:
editor_settings- 修改
settings.json的chatgpt.cliExecutable - 更适合本机桌面 VS Code
- 修改
managed_shim- 直接替换扩展 bundle 里的
codex - 原始入口会保留成
codex.real - 更适合 VS Code Remote
- 直接替换扩展 bundle 里的
如果你是从源码仓库联调而不是从 release 包安装:
go build -o ./bin/codex-remote ./cmd/codex-remote- 构建源码仓库本地二进制
./bin/codex-remote install -bootstrap-only -start-daemon- 直接用本地构建的 binary 做 bootstrap 并拉起 daemon
./setup.ps1- Windows 上的辅助脚本,会构建本地 binary 后执行相同 install 命令
这些都是源码仓库联调入口,不是 release 包产品入口。
如果你希望 Linux 上的正式常驻实例由 systemd --user 托管,而不是依赖 detached daemon:
codex-remote service install-user
codex-remote service enable
codex-remote service start
codex-remote service status如果希望用户未登录时也保持 user service 可自启,还需要:
loginctl enable-linger "$USER"这条路径保持运行身份为当前用户,并继续使用当前 XDG 配置/状态目录。
完成安装并接入飞书后,用户日常升级到当前 track 的最新版本,直接在飞书里发送:
/upgrade latest
如果当前有新版本可用,系统会在后台完成升级;如果上一次升级中断,这条命令也会用于继续或检查当前升级状态。 daemon 不会在后台自动检查 release 并主动弹卡;升级只通过这条手动入口触发。
源码仓库里不再保留单独的 install.sh 生命周期脚本。现在统一使用现有单 binary 入口:
./setup.ps1- Windows 上的同等辅助脚本
go build -o ./bin/codex-remote ./cmd/codex-remote- 先构建本地 binary
./bin/codex-remote install -bootstrap-only -start-daemon- 已经构建过二进制时,可直接重新 bootstrap 并确保本地 daemon 就绪
./bin/codex-remote daemon- 需要前台直接观察 daemon 启动过程和日志时使用
如果当前 workspace 下存在 .codex-remote/install-target.json,这些 repo-local 命令会优先跟随该 workspace 绑定的全局实例与 baseDir;没有 binding 时,默认退回 stable。
stable 默认会写入:
~/.config/codex-remote/config.json~/.local/share/codex-remote/install-state.json~/.local/share/codex-remote/logs/codex-remote-relayd.log
命名实例则会写入 namespaced 路径,例如 master:
<baseDir>/.config/codex-remote-master/codex-remote/config.json<baseDir>/.local/share/codex-remote-master/codex-remote/install-state.json<baseDir>/.local/share/codex-remote-master/codex-remote/logs/codex-remote-relayd.log
当前磁盘配置入口只保留 config.json;旧的 config.env / wrapper.env / services.env 不再自动读取或迁移。
当前项目不再提供 Docker 部署入口。
原因是 Docker 场景下对任意文件和目录访问的配置体验太差,而当前产品已经是 Go 单二进制,直接本机安装和运行的成本已经很低,继续维护 Docker 形态的实际收益不大。
当前默认推荐先用 normal 模式;大多数情况下,不需要先处理 VS Code 接入也可以开始工作。
常见用法:
- 继续当前项目:
/list接管工作区,再用/use继续已有会话,或用/new开一个干净的新会话 - 添加新工作区:
/list->添加工作区,可以接入已有目录,也可以直接拉一个 Git 仓库 - 直接回到最近对话:
/use - 需要跟着编辑器当前焦点走:
/mode vscode->/list->/follow - 先发截图再补说明:先发图片,下一条文字会把图片一起带给 Codex
- 想把补充说明并进当前执行:直接回复当前 running 的那条用户消息,或发送
/steerall - 需要手动整理当前 thread:
/compact - 想把当前工作区里的文件发回聊天:
/sendfile
命令:
/help:查看当前可用命令、示例和说明/menu:打开阶段感知的命令菜单首页;未接管时优先/list、/use、/status,工作态优先/stop、/new和发送设置/list:列出当前可手工接管的目标;normal模式下是工作区,也是默认推荐入口;vscode模式下才是在线 VS Code 实例- 选择方式:
/menu和参数卡现在是按钮优先的紧凑卡片,主操作尽量一行一个按钮;/help仍保持文本帮助 - 如果看到旧卡片,请重新发送命令
/use:列出最近可见会话;即使当前还没显式 attach,也可以直接从这里继续已有对话/threads:/use的兼容别名/useall:列出全部可见会话- 会话选择后:系统会切到目标会话;必要时会自动接管在线实例,或在后台恢复目标会话
/history:查看当前输入目标 thread 的历史 turn 列表,并在卡片里翻页或看单轮详情/status:查看当前接管状态、队列和模型配置/follow:在vscode模式下切回跟随当前 VS Code thread/stop:中断当前 turn,并清空尚未发出的飞书队列/compact:对当前已绑定 thread 主动发起一次手动上下文整理;当前有其他任务时会直接拒绝/steerall:把当前队列里可并入本轮执行的输入一次性并入当前 running turn- 排队中的文字消息如果还没发出,也可以给这条消息点
ThumbsUp,把它升级成对当前执行的跟进 - 如果你直接回复当前正在执行的那条用户消息,系统也会优先把这条 reply 当成对当前 turn 的 steer
/detach:断开当前实例接管;如果当前正在后台恢复,也会一并取消/sendfile:打开文件选择卡,从当前工作区挑一个文件发送到当前聊天/model:查看或设置飞书侧模型覆盖;bare/model会返回模型卡与 capture/apply fallback/reasoning:查看或设置飞书侧推理强度覆盖;bare/reasoning会返回参数卡/access:查看或设置飞书侧执行权限覆盖,支持full、confirm、clear/approval:/access的别名/verbose:控制飞书前端显示过程消息的详细程度;quiet更安静,verbose会显示共享进行中卡/cron:打开当前实例专属的定时任务菜单;/cron edit打开配置表,编辑后执行/cron reload生效
另外:
- 最终回复现在会直接回在你触发它的原始消息下面,群聊里更容易看懂上下文
- 共享过程卡会尽量把计划更新、工具调用、Web 搜索和命令执行整理成更容易扫读的摘要,而不是一长串零散文本
- 旧卡片、旧按钮或旧菜单动作如果已经过期,会收到明确提示;直接重发对应命令即可
机器人菜单:
menustopsteerallnewreasoningmodelaccess
WebSetup 里的推荐菜单、飞书模板和 /help 当前都来自同一套命令定义;其中 /help 保持文本帮助,/menu / 参数卡走紧凑按钮卡片。
另外,菜单卡片里不再重复放“返回首页”按钮;如果要回首页,直接点飞书 bot 菜单里的 menu 更快。
关于本地文档预览:
- 当前只处理 assistant 最终回复里的 Markdown 链接,例如
[README](docs/README.md)或[mock](docs/mock.html) - 不会改写普通纯文本路径、代码块里的路径或用户输入里的路径
- 预览文件默认上传到应用云空间目录
Codex Remote Previews/ .html当前按单文件预览处理,不会额外打包它引用的其它本地资源- 单聊会给当前用户授权;群聊会同时给当前用户和当前群授权
先确认不是代理污染本地链路:
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY all_proxy然后按顺序检查:
curl --noproxy '*' -sf http://127.0.0.1:9501/api/admin/bootstrap-state | jq .curl --noproxy '*' -sf http://127.0.0.1:9501/v1/status | jq .config.json里的relay.serverURL、wrapper.codexRealBinary、飞书凭证和监听地址- VS Code 是否真的已经通过 wrapper 启动 Codex
~/.local/share/codex-remote/logs/codex-remote-relayd.log
- Push / PR 会触发 GitHub Actions CI
Releaseworkflow 支持显式指定版本号- admin UI、各平台二进制、checksums 和 GitHub Release 发布都在 GitHub 端完成
- 本地
make release-artifacts VERSION=vX.Y.Z只建议作为打包预演,不是正式发布路径
开发者说明见 DEVELOPER.md。