把飞书变成本机 Codex 控制台:一个可多项目复用的 Feishu Codex Service

前言

最近我在做一个真实项目测试时遇到一个很实际的问题:我希望在飞书里直接给本机 Codex 发需求,比如“继续测试服务管理模块”“把 Excel 问题清单发我”“切换到另一个项目修 bug”。最初我写了一个项目内临时桥接脚本,能收到飞书消息,也能调用 Codex,但连续发几条消息后容易阻塞:前一个 Codex 任务没结束,后面的消息就像沉进队列里,体验很差。

于是我把它整理成了一个独立的小工具:Feishu Codex Service。

源码包下载地址:

https://download.csdn.net/download/tiandingtong/92897294

它不是某个业务项目的一部分,而是一个本机全局服务。你可以把它理解成:

飞书消息 -> 本机 Python 长连接服务 -> Codex CLI -> 项目工作区

支持多项目、连续会话、队列串行、文件回传和 Windows 登录自启动。

这个工具解决什么问题

如果你经常用 Codex、Claude Code、Cursor 这类 AI 编程工具,通常会遇到几个痛点:

  1. 人不在电脑前时,不方便持续给 AI 发任务。
  2. 多个项目之间切换麻烦,AI 会话上下文容易混乱。
  3. 测试报告、日志、Excel 清单等本地文件,不方便及时同步到团队群。
  4. 临时脚本能跑,但不能长期稳定运行,重启电脑后还要手动启动。
  5. 群聊里连续发几条需求时,任务容易互相抢占或丢上下文。

Feishu Codex Service 的目标就是把飞书变成一个轻量的 AI 编程控制台。

功能概览

核心能力如下:

能力 说明
飞书长连接 使用飞书自建应用的长连接事件接收消息
调用 Codex 本机通过 codex exec 执行真实任务
多项目 通过 projects.json 或飞书命令添加项目
连续会话 每个 chat + project 保存一个 Codex session
队列串行 同一个飞书会话内任务按顺序执行
文件回传 支持把项目内文件发回飞书
自启动 支持 Windows 登录自动启动
迁移安装 支持打包后复制到其他电脑使用

架构设计

整体结构很简单:

飞书用户
  |
  | 私聊机器人 / 群里 @ 机器人
  v
飞书开放平台长连接事件
  |
  v
feishu_codex_service.py
  |
  | 根据 chat_id 排队
  | 根据 project 找工作目录
  | 根据 chat + project 恢复 Codex session
  v
codex exec / codex exec resume
  |
  v
本机项目工作区

服务只做调度,不替代 Codex 的能力。真正的代码理解、测试执行、文件修改还是由 Codex 在本机完成。

目录结构

源码包核心文件:

feishu_codex_service.py
projects.json
README.md
setup-credentials.ps1
start-service.ps1
stop-service.ps1
status-service.ps1
restart-service.ps1
install-startup-shortcut.ps1
uninstall-startup-shortcut.ps1
install-scheduled-task.ps1
uninstall-scheduled-task.ps1
install-on-new-computer.ps1
pack-service.ps1

飞书应用准备

需要一个飞书自建应用,并启用机器人能力。

建议权限:

im:message:send_as_bot
im.message.receive_v1 事件订阅
im:message.p2p_msg:readonly
im:message.group_at_msg:readonly
im:resource:upload 或 im:resource

还要在事件与回调里选择长连接接收事件,并订阅 im.message.receive_v1

注意:权限或事件订阅修改后,需要重新发布应用版本,否则本地服务可能连上了,但收不到消息或发不了文件。

安装步骤

下载源码包后,解压到任意目录,在解压目录运行:

powershell -ExecutionPolicy Bypass -File .\install-on-new-computer.ps1

它会把工具复制到:

%USERPROFILE%\.codex\feishu-codex-service

然后配置飞书凭据:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\setup-credentials.ps1 -AppId cli_xxx

命令会提示输入 App Secret。App Secret 不会写入源码目录,而是写入 Windows 当前用户环境变量。

启动服务:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\start-service.ps1

查看状态:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\status-service.ps1

停止服务:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\stop-service.ps1

设置登录自启动

推荐用启动文件夹快捷方式,不需要管理员权限:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\install-startup-shortcut.ps1

取消自启动:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\uninstall-startup-shortcut.ps1

如果你的 Windows 用户有计划任务权限,也可以使用:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\install-scheduled-task.ps1

配置项目

编辑:

%USERPROFILE%\.codex\feishu-codex-service\projects.json

示例:

{
  "default_project": "demo-project",
  "projects": {
    "demo-project": {
      "name": "示例项目",
      "cwd": "D:\\workspace\\demo-project"
    }
  }
}

也可以在飞书里直接添加:

/codex add-project yly-project D:\workspace\ls_work\yly-project

切换当前会话默认项目:

/codex use yly-project

指定项目执行:

/codex in yly-project 帮我检查最近一次测试报告

飞书里的常用命令

/codex help
/codex projects
/codex use <project>
/codex in <project> <需求>
/codex add-project <alias> <cwd>
/codex status
/codex reset
/codex cancel
/codex file [project] <路径>

私聊机器人或群里 @ 机器人时,也可以不写 /codex,直接发需求。

文件回传

例如把项目里的 Excel 发回飞书:

/codex file yly-project output/changes/test-report.xlsx

默认只允许发送项目目录内文件。如果确实需要允许绝对路径文件,可以设置:

[Environment]::SetEnvironmentVariable("FEISHU_ALLOW_ABSOLUTE_FILES", "1", "User")

不建议默认打开这个能力。

安全建议

  1. 不要把 App Secret 写入源码包、仓库或博客截图。
  2. 建议配置 FEISHU_ALLOWED_SENDER_IDS,只允许指定用户调用。
  3. 群聊里建议保留 @ 机器人触发,不要让所有普通消息都触发任务。
  4. 发布前检查压缩包,排除 state.jsonlogs__pycache__dist.env 等文件。
  5. 这个工具会调用本机 Codex 执行任务,本质上等价于允许飞书消息驱动本机工作区操作,生产使用要控制权限范围。

白名单示例:

[Environment]::SetEnvironmentVariable("FEISHU_ALLOWED_SENDER_IDS", "ou_xxx,open_id_xxx", "User")

关闭无前缀对话,只响应 /codex

[Environment]::SetEnvironmentVariable("FEISHU_ACCEPT_NO_PREFIX", "0", "User")

实现要点

核心服务使用 Python 编写,依赖飞书官方 SDK:

python -m pip install lark-oapi==1.6.5

接收到消息后,服务会做几件事:

  1. 解析飞书文本消息。
  2. 根据 chat_id 放入队列。
  3. 根据当前飞书会话找到默认项目。
  4. 如果已有 Codex session,调用 codex exec resume
  5. 如果没有 session,创建新的 codex exec 任务。
  6. 读取 Codex 输出,并回复到飞书消息线程。

队列的意义很大。没有队列时,用户连续发几条飞书消息,多个 Codex 子进程可能同时抢同一个项目目录,轻则输出混乱,重则文件互相覆盖。现在同一个飞书会话按顺序执行,体验稳定很多。

适合什么人

这个工具适合:

  • 已经在本机使用 Codex CLI 的开发者。
  • 希望在飞书里远程管理 AI 编程任务的人。
  • 希望把测试报告、构建结果、Excel 清单自动同步到群里的团队。
  • 想给多个项目做统一 AI 工作入口的小团队。

不适合:

  • 完全不使用本机 Codex CLI 的场景。
  • 需要多租户权限、审计、配额、强安全隔离的企业级平台。
  • 希望公网 SaaS 化托管的场景。

常见问题

服务启动了但飞书没回复

检查:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\status-service.ps1

重点看日志里是否连接了飞书长连接,以及飞书应用是否发布了消息接收事件和发送消息权限。

文件发不出去

检查飞书权限里是否开通:

im:resource:upload 或 im:resource

重启电脑后没自动启动

重新安装启动快捷方式:

powershell -ExecutionPolicy Bypass -File $HOME\.codex\feishu-codex-service\install-startup-shortcut.ps1

换电脑怎么安装

把源码包复制到新电脑,解压后运行:

powershell -ExecutionPolicy Bypass -File .\install-on-new-computer.ps1

然后重新配置 App Secret 和项目路径。

总结

Feishu Codex Service 的思路很朴素:不做复杂平台,只把飞书消息稳定地转给本机 Codex,并把结果回传到飞书。它解决的是“AI 编程工具如何进入团队日常沟通流”的问题。

如果你已经在用 Codex,又希望在飞书里随时安排任务、获取报告、切换项目,这个小工具可以作为一个轻量起点。

更多推荐