Skip to content

🏠 主目录 | ⬅️ 上一章 (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 接入你的手机:

Plain
[云端 Codex Agent] ──(Webhook)──> [中转网关 (你自部署的 Node 服务)] ──> [手机端微信/飞书]
       ▲                                                                   │
       └───────────────(手机打字回复 "Approve / Stop") ────────────────────┘

8.2 实战:GitHub Actions 失败推送与 Webhook 配置

当 Codex 在沙盒中运行构建或测试时,我们将构建日志通过 GitHub Actions 抓取,并触发通知。

1. GitHub Actions 自动化流水线配置 (\.github/workflows/codex\-watchdog\.yml)

在项目根目录下,我们编写如下工作流配置文件,当构建失败时,直接向手机推送包含 CoT 思考链关键节点的摘要:

YAML
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 时,它会暂停并向你的 飞书 或微信群发送卡片:

Plain
🚨 [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 实例发送信号:

JavaScript
// 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(飞书助理)

它将上述架构全面产品化,具备三大核心形态:

  1. 日常巡检与值班日报(极速上手)
    • 自动聚合本地 Git 提交与工作区动态,生成图文并茂的进展日报,免去每天下班写进展报告的痛点。
    • 默认通过飞书 Bot 仅推送到开发者个人私聊,3 分钟即可完成从零到一的验证。
  2. 移动端警报与双向审批(离线编排)
    • 当云端/本地 Codex 执行自动化测试遇挫、或遇到需要人工授权的高危部署时,飞书第一时间震动弹窗通知卡片。
    • 手机端直接点击或打字回复指令,即可远程触发「批准发布」或「一键回滚中断」。
  3. 沉淀与进阶知识库(团队协同)
    • 支持将结构化项目报告写回飞书 Docx 云文档、同步至 Bitable 多维表格,实现代码进展向团队业务知识库的无缝沉淀。

💡 3 分钟极速配置:该工程内置了飞书官方应用清单 feishu_app_manifest.json,在飞书开放平台直接点击「导入应用清单」即可自动开通所有必要权限与长连接,免去繁琐的手工勾选。


8.5 实战产品说心法:把自由留给自己

很多同行在用 AI 编程时,把自己活成了一个“人体测试机”和“Git 提交工具人”:AI 改完了,人去点刷新;AI 报错了,人复制报错发给 AI。

移动看护工作流的本质,是把人从“即时等待”中抽离出来。

通过将测试断言(Validation Specs)托付给 GitHub Actions,将异常通知托付给移动 Webhook,将最终签字权(Deploy Approval)掌握在手机端。你才能真正做到“人在喝咖啡,产品在自动进化”。


🏠 主目录 | ⬅️ 上一章 (Ch.07) | ➡️ 下一章 (Ch.09) | 🌐 English

Released under the MIT & Apache-2.0 Licenses.