🏠 主目录 | ⬅️ 上一章 (Ch.07) | ➡️ 下一章 (Ch.09) | 🌐 English
Ch.08 移动看护工作流:全天候离线编排实战
🎯 具体工程麻烦:开发者被困在工位看滚动编译日志;离开工位后 CI 挂了或高危发布卡住,整个团队进度中断。
💡 可运行实战代码与落地收益:GitHub Actions 失败推送工作流;飞书 Webhook 告警卡片 JSON;手机远程一键审批部署交互流。
⚡ 社交传播 / 截图金句:“下班不盯屏幕,任务照常推进。CI 报错手机秒收飞书卡片,人在地铁上一键完成上线审批。”
独立开发者与产品经理的核心追求除了高效率,还有工作的自由度。盯在电脑前查看智能体编译滚动日志的方式并不高效。
本章我们将搭建一套 移动看护工作流:当本地或云端服务器上的 Codex 进行自动化重构时,一旦遭遇编译失败或触发高危部署授权,微信、飞书或 Telegram 即可实时接收通知卡片,支持直接通过手机进行远程审批或干预。
⚠️ 重要说明:Codex 本身没有内置“任务失败时自动推送到飞书/微信”的字段。本章展示的是利用 GitHub Actions + Webhook 网关 + 机器人 自行拼装的方案——所有官方零件都是真实可用的,但中转网关需要你自己部署。
顺带一提:如果你用 ChatGPT 账号登录 Codex,你的云端 Codex 任务会自动同步到手机 ChatGPT App,这是 OpenAI 官方提供的能力,可作为本套自定义方案的简化平替。
8.1 移动看护链条的整体架构
我们通过以下管道将本地/云端的 Codex Agent 接入你的手机:
[云端 Codex Agent] ──(Webhook)──> [中转网关 (你自部署的 Node 服务)] ──> [手机端微信/飞书]
▲ │
└───────────────(手机打字回复 "Approve / Stop") ────────────────────┘8.2 实战:GitHub Actions 失败推送与 Webhook 配置
当 Codex 在沙盒中运行构建或测试时,我们将构建日志通过 GitHub Actions 抓取,并触发通知。
1. GitHub Actions 自动化流水线配置 (\.github/workflows/codex\-watchdog\.yml)
在项目根目录下,我们编写如下工作流配置文件,当构建失败时,直接向手机推送包含 CoT 思考链关键节点的摘要:
name: Codex Agent Watchdog
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
agent-build:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Run Codex Validation (exec mode)
id: run_agent
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
# 使用 Codex exec 非交互模式跑验证任务
npm ci
npm run test || echo "STATUS=failed" >> $GITHUB_ENV
- name: Push Fail Notice to Mobile
if: env.STATUS == 'failed'
run: |
curl -X POST -H "Content-Type: application/json" \
-d '{
"event": "build_failed",
"repo": "${{ github.repository }}",
"commit": "${{ github.sha }}",
"message": "Codex sandbox testing failed. Attention required on phone."
}' \
${{ secrets.MOBILE_WEBHOOK_URL }}💡 在 CI 场景下使用 Codex 时,认证方式推荐用 API Key(通过 GitHub Secrets 注入
OPENAI\\\_API\\\_KEY)。ChatGPT 账号 OAuth 不适合无人值守的 CI 流程。
8.3 户外移动端双向交互与审批
接收到失败通知只是第一步。更高级的玩法是,直接在手机端对 Codex 进行远程指令干预。
1. 场景:生产环境部署审批
当 Codex 跑通了所有的测试,准备将代码合并进 main 分支并发布到 Vercel 时,它会暂停并向你的 飞书 或微信群发送卡片:
🚨 [Codex Auth Requested]
Project: pmer-cn-saas
Action: Deploy to production (Vercel)
Change summary: Implemented Stripe subscription webhook in /api/stripe.
Tests: 12 passed, 0 failed.
[回执指令]: 回复 "1" 批准发布,回复 "0" 打断并回滚。2. 实现交互的服务器端中转脚本 (Node.js 极简版)
假设在 pmer\.cn 的中转网关部署一个极简的接收端脚本,它会解析你手机端发出的微信或 飞书 命令,并通过远程控制端口(SSH / Codex Port)向下游的 Agent 实例发送信号:
// File: gateway.js (部署在你的 VPS 上)
const express = require('express');
const { exec } = require('child_process');
const app = express();
app.use(express.json());
// 接收来自微信/飞书的回复通知
app.post('/api/mobile-reply', (req, res) => {
const { userMessage, user } = req.body;
// 仅允许主理人 hunkwu 远程控制
if (user !== 'hunkwu') {
return res.status(403).json({ error: 'Unauthorized' });
}
if (userMessage === '1') {
// 写入信号文件,下游 Codex hooks 监听此文件以批准部署
exec('echo "approved" > /tmp/codex_deploy_signal', (err) => {
if (err) return res.status(500).send('Error triggering deploy');
res.json({ reply: '🚀 部署已批准,生产环境正在上线!' });
});
} else if (userMessage === '0') {
// 强制终止 Codex 进程并回滚代码
exec('pkill -f codex && git checkout -- .', (err) => {
res.json({ reply: '🛑 部署已中止,代码已安全回滚至 HEAD!' });
});
} else {
res.json({ reply: '⚠️ 无效指令,请回复 1 (批准) 或 0 (中止)' });
}
});
app.listen(8080, () => console.log('Mobile gateway listening on port 8080'));8.4 官方参考实现:飞书助理 (Codex Feishu Sentinel)
为了避免开发者重复手写 Webhook 网关与长连接轮询逻辑,本项目配套开源了开箱即用的官方参考工程:plugins-codex-feishu(飞书助理)。
它将上述架构全面产品化,具备三大核心形态:
- 日常巡检与值班日报(极速上手):
- 自动聚合本地 Git 提交与工作区动态,生成图文并茂的进展日报,免去每天下班写进展报告的痛点。
- 默认通过飞书 Bot 仅推送到开发者个人私聊,3 分钟即可完成从零到一的验证。
- 移动端警报与双向审批(离线编排):
- 当云端/本地 Codex 执行自动化测试遇挫、或遇到需要人工授权的高危部署时,飞书第一时间震动弹窗通知卡片。
- 手机端直接点击或打字回复指令,即可远程触发「批准发布」或「一键回滚中断」。
- 沉淀与进阶知识库(团队协同):
- 支持将结构化项目报告写回飞书 Docx 云文档、同步至 Bitable 多维表格,实现代码进展向团队业务知识库的无缝沉淀。
💡 3 分钟极速配置:该工程内置了飞书官方应用清单
feishu_app_manifest.json,在飞书开放平台直接点击「导入应用清单」即可自动开通所有必要权限与长连接,免去繁琐的手工勾选。
8.5 实战产品说心法:把自由留给自己
很多同行在用 AI 编程时,把自己活成了一个“人体测试机”和“Git 提交工具人”:AI 改完了,人去点刷新;AI 报错了,人复制报错发给 AI。
移动看护工作流的本质,是把人从“即时等待”中抽离出来。
通过将测试断言(Validation Specs)托付给 GitHub Actions,将异常通知托付给移动 Webhook,将最终签字权(Deploy Approval)掌握在手机端。你才能真正做到“人在喝咖啡,产品在自动进化”。