摘要: 本文给出一套可落地的 AI Coding Agent Always-on 工作流,把 GitHub Issue、CI 失败、PR 审查意见和定时维护任务,分别路由给 Codex、Claude Code 与 Cursor Cloud Agent。最重要的结论是:Always-on 不等于让一个终端会话永不退出,而是用事件、队列、隔离工作区、测试门禁、PR 与人工审批构成持续运行的控制系统。适合已经使用 GitHub Actions、希望减少 Issue 到 PR 等待时间的开发团队。建议先从“CI 失败自动诊断并提交候选修复”试点,不建议允许 Agent 直接合并到受保护分支。
核心结论
AI Coding Agent 已经可以持续处理 Issue、CI 与 PR,但生产级方案必须把“持续触发”和“自主写代码”拆开治理。
- 官方已确认: Codex cloud 可在后台执行较长任务,并从 GitHub Issue、PR 等入口接收工作;Codex Code Review 可自动审查每个 PR,也可通过
@codex review请求审查。 - 官方已确认: Claude Code GitHub Actions 可响应 Issue/PR 中的
@claude,也能绑定 GitHub 事件或 cron,执行实现、修复、测试和建 PR。 - 官方已确认: Cursor Automations 可由 GitHub、GitLab、Slack、Webhook、Linear 或计划任务触发 Cloud Agent;Cloud Agent 能修改代码并创建 PR。
- 实施建议: 只让一个 Agent 成为某个任务的“写入负责人”,其他 Agent 只做复核。三者同时改同一分支会制造冲突、重复成本和不清晰的责任链。
- 安全底线: Agent 默认只能创建分支和 PR,不得直接推送
main、不得绕过 required checks、不得自行批准并合并自己的修改。
一句话架构是:事件源负责叫醒 Agent,任务控制器负责分派,隔离执行环境负责修改,CI 负责验证,PR 负责留痕,人类负责最终风险决定。
Always-on 到底是什么
Always-on 不是一个模型连续推理 24 小时,更不是在开发者电脑上挂着三个命令行窗口。真正持续的是任务系统:当 Issue 新建、标签变化、CI 失败、PR 更新、审查意见出现或定时器到点时,系统创建一次有边界的 Agent Run。运行完成后,状态、日志、补丁、测试结果和 PR 被持久化;下一次事件再启动新的运行。
这一区分很重要。模型调用有超时、上下文和成本边界,云端 Agent 也可能失败或被取消。可靠系统不会依赖单次超长会话,而会把任务拆成可恢复状态:
queued:收到事件但尚未分配。claimed:某个 Agent 获得任务租约。working:在隔离分支或工作树中修改。validating:执行 lint、测试、构建和安全扫描。needs_human:权限、歧义或高风险修改需要审批。pr_open:候选修改已提交 PR。monitoring:等待 CI 或审查意见。done/failed:完成或进入失败队列。
因此,“无人值守”应理解为无需人工盯住每一步,而不是取消人工控制。删除数据、修改身份认证、数据库迁移、依赖供应链和生产发布仍应有明确审批。

三个平台的能力与定位
Codex:后台任务、代码审查与 CI 自动修复
Codex cloud 适合把较长编程任务委派到云端执行。官方文档列出的入口包括 GitHub PR/Issue,也支持从其他协作入口启动任务。Codex GitHub Code Review 会读取 PR diff 和仓库指导文件,输出标准 GitHub Review;自动 Review 与 @codex review 都可用。官方还提供 Codex GitHub Action,可把重复审查、发布准备、迁移或质量门禁写进 CI。
在 Always-on 体系中,Codex 适合:
- 根据
agent:codex标签接手明确的 Issue; - 在 CI workflow 失败后读取日志、生成最小修复并新建 PR;
- 对所有 Agent 生成的 PR 做独立二次 Review;
- 定时检查长时间未解决的审查意见或部署状态。
需要注意:后台任务并不意味着无限执行;具体可用能力、连接器、配额和审批行为以所在 ChatGPT/Codex 工作区显示为准。
Claude Code:用 GitHub Actions 形成可审计自动化
Claude Code GitHub Actions 把 Claude Code 放进仓库的 workflow。官方说明它可响应 @claude,也能用任意 GitHub 事件触发,将 Issue 转成 PR、修复 Bug、执行技能或按计划运行。它遵循 CLAUDE.md 和仓库现有模式,因此特别适合把团队规范固化到版本库。
它在 Always-on 架构里的优势是控制透明:触发器、权限、超时、并发、允许工具和密钥都写在 YAML 中,适合已经把 GitHub Actions 作为自动化主干的团队。企业还可结合自托管 Runner 或受控云身份,但必须自行核对数据驻留、网络出口与模型服务配置。
Cursor:Cloud Agents、Automations 与 Bugbot
Cursor 官方将 Cloud Agent 定义为可在云端读取工作区、协调修改并创建 PR 的后台 Agent。Automations 则让它由计划任务或 GitHub、GitLab、Slack、Webhook、Linear 等事件触发。Cursor CLI 还支持 headless 模式,可放进 GitHub Actions 或其他 CI/CD。
Cursor 适合:
- 从 Issue 或 Slack 缺陷报告启动 Cloud Agent;
- 定时扫描近期提交、文档漂移或已知风险;
- 使用 Automations 对 PR 更新触发深度检查;
- 通过 Agent Review/Bugbot 提供独立代码审查信号。
官方文档同时提示,多仓库环境可启动 Cloud Agent,但长期运行能力可能存在场景限制。部署前应按自己的套餐和仓库类型实测,不要把单仓库演示直接等同于企业多仓库持续自治。
推荐的统一架构
生产环境不要创建三套互不相干的机器人。推荐保留一个统一控制面,下面挂接三个执行器:
| 层级 | 主要职责 | 推荐实现 |
|---|---|---|
| 事件层 | 接收 Issue、PR、CI、定时和 Webhook | GitHub Events、Actions、Webhook |
| 策略层 | 判断能否自动处理、风险等级和首选 Agent | Policy YAML + 路由脚本 |
| 队列层 | 去重、限流、租约、失败重试 | GitHub Actions concurrency 或任务队列 |
| 执行层 | 在隔离环境分析、修改和测试 | Codex cloud、Claude Action、Cursor Cloud Agent |
| 验证层 | lint、单测、集成测试、安全扫描 | Required Checks |
| 交付层 | 分支、Commit、PR、Review | GitHub |
| 治理层 | 审批、预算、审计、终止开关 | CODEOWNERS、Environment、审计日志 |
关键规则是“一项任务一个写入租约”。控制器生成 task_key = repo + issue/pr + event_type + head_sha,同一个 key 在有效租约内不得再次创建写入任务。PR 更新时使用新 SHA 触发复核,但不能重做已经完成的旧版本。
推荐默认路由:
routing:
issue_implementation:
primary: codex
reviewer: cursor
ci_failure:
primary: claude_code
reviewer: codex
pr_review:
primary: cursor
secondary: codex
scheduled_maintenance:
primary: cursor
limits:
max_attempts: 3
max_files_changed: 20
max_diff_lines: 800
max_runtime_minutes: 45
direct_push_protected_branch: false
auto_merge: false
这只是实施模板,不是三家官方共同规范。团队应根据语言栈、现有订阅、数据政策和实测质量调整路由。
从 Issue 到 PR 的持续处理流程
第一步:规范 Issue 输入
Agent 不是项目经理。Issue 至少应包含目标、非目标、验收标准、影响范围和测试要求。建议使用以下模板:
## Goal
修复导出 CSV 时中文文件名乱码。
## Acceptance criteria
- Chrome、Edge 下载名显示正常
- 保留 ASCII 文件名行为
- 增加 Content-Disposition 单元测试
## Constraints
- 不修改公开 API
- 不升级 Web 框架
## Risk
low
只有同时存在 agent-ready 与 risk:low|medium 标签的 Issue 才进入自动队列。缺少验收标准时,Agent 只允许发布澄清评论,不能直接写代码。
第二步:用标签选择执行器
标签应表达策略而不是自然语言愿望,例如:
agent:codex:交给 Codex;agent:claude:交给 Claude Code Action;agent:cursor:交给 Cursor Automation;agent:review-only:只分析,不允许提交;approval:security:安全负责人批准后才可运行写入工具。
控制器先检查发送者是否有权限,再检查风险和租约。来自 Fork PR 的事件尤其危险,不应把仓库密钥暴露给不受信任代码。
第三步:创建隔离分支
分支命名建议使用 agent/<executor>/<issue>-<short-id>。每次运行从已验证的目标分支 SHA 开始,不复用开发者机器中的未提交状态。执行环境只获得当前任务所需的最小权限:读取仓库、写入指定分支、评论 Issue/PR;生产密钥、云管理员权限和包发布令牌默认不可用。
第四步:先计划再修改
统一系统提示词应要求 Agent:
读取仓库指导文件和 Issue。先输出假设、影响文件与验证计划。
只进行满足验收标准所需的最小修改。
禁止修改分支保护、CI 权限、密钥配置和生产环境。
若需求矛盾、需要迁移数据或预计超过 20 个文件,停止并请求人工审批。
修改后运行相关测试,记录实际命令、结果和未覆盖风险。
只能创建候选 PR,不得自行合并。
第五步:让 CI 而不是 Agent 宣布成功
Agent 可以说“测试通过”,但系统只信任 CI 记录。Required Checks 至少包含:格式检查、静态分析、单元测试、构建、依赖扫描和密钥扫描。高风险仓库再增加集成测试、迁移 dry-run、SAST 与许可证检查。
第六步:创建结构化 PR
PR 正文必须包含:关联 Issue、修改摘要、测试证据、风险、回退方法、Agent 身份和运行 ID。给 Agent PR 自动加 ai-generated,让 CODEOWNERS 和审计查询可识别。
CI 失败自动修复
CI 自动修复是最适合作为首个试点的场景,因为输入和成功条件相对清晰。但要防止“修测试而不是修 Bug”。
推荐流程:
workflow_run.completed检测到失败。- 过滤受信任分支、允许的 workflow 和失败类型。
- 收集失败 Job、日志摘要、目标 SHA 和最近变更。
- 检查同一 SHA 是否已有
ci-autofixPR。 - 启动一个执行器,只允许修改有限目录。
- Agent 先复现,再提出最小补丁。
- 新分支重新跑完整 CI,而不是只跑失败测试。
- 创建 PR,等待独立 Review 和人工合并。
必须禁止的捷径包括:删除失败测试、扩大快照差异、加入无条件重试、降低覆盖率阈值、给 linter 添加全局忽略、跳过安全扫描。若 Agent 认为测试本身错误,应在 PR 中单独说明并要求人工确认。
示例 GitHub Actions 骨架:
name: AI CI Autofix
on:
workflow_run:
workflows: ["CI"]
types: [completed]
concurrency:
group: ai-ci-fix-${{ github.event.workflow_run.head_sha }}
cancel-in-progress: false
jobs:
dispatch:
if: github.event.workflow_run.conclusion == 'failure'
permissions:
contents: read
actions: read
issues: write
runs-on: ubuntu-latest
steps:
- name: Validate event and create bounded task
run: ./scripts/dispatch-agent-task.sh
不要直接在这个接收外部事件的 Job 中授予 contents: write。更安全的做法是先验证事件并创建内部任务,再由受保护 workflow 或云端 Agent 使用独立的短期凭证执行。

PR 审查意见的持续闭环
PR 创建不是终点。Always-on 系统要监听 pull_request_review、pull_request_review_comment、issue_comment 和 CI 状态变化,把新信息增量交给原任务。
建议分三类处理:
- 明确、局部的修改意见: 原写入 Agent可修改并推送,随后重新跑 CI。
- 架构、安全或产品判断: 转人工,不让 Agent自行选择。
- 非阻塞建议: Agent可回复分析,但不必自动改代码。
每次自动更新最多三轮。超过上限说明需求不清、补丁方向错误或测试反馈不足,应加 agent-needs-human 标签并释放租约。不要让 Agent 与 Review Bot 无限对话,因为它们可能互相制造建议和补丁,持续消耗预算。
独立复核很有价值。例如 Claude Code 负责修复,Codex 或 Cursor 只审查 diff;但复核 Agent 不应拥有同一分支的写权限。其发现转成 Review Comment,由原执行器或人类决定下一步。
三套可直接采用的组合
轻量团队:GitHub Actions + Claude Code
使用 Issue 标签和 @claude 触发实现,CI 负责验证,CODEOWNERS 负责批准。优点是配置集中在仓库,成本和权限容易查看;缺点是需要维护 workflow,并承担 Actions 分钟与模型调用费用。
Codex 优先:Cloud Task + 自动 Code Review
用 Codex cloud 接手 Issue 和长任务,对所有 PR 开启自动 Review;失败 CI 再用 Codex Action 或受控自动化创建修复 PR。优点是委派与审查衔接顺畅;限制是具体连接器、配额和工作区策略需要逐项确认。
多 Agent 企业:统一调度 + 三执行器
控制器根据语言、目录、风险和成本路由。Codex 处理后端和复杂修复,Claude Code 处理仓库内 GitHub Actions 工作流,Cursor Automations 处理定时维护和事件驱动任务,再让不同 Agent 交叉复核。这个方案覆盖面最大,但必须建设任务租约、统一日志、预算和身份治理,否则复杂度会超过收益。
权限、安全与成本治理
最小权限
不要使用长期 Personal Access Token。优先 GitHub App、GitHub GITHUB_TOKEN 的 Job 级权限、OIDC 和短期云凭证。写权限与读权限分离,PR Review Bot 不需要写分支权限。
防 Prompt Injection
Issue、PR 评论、日志和代码都是不可信输入。攻击者可能在评论中要求 Agent 读取密钥、执行网络请求或修改工作流。系统提示词无法单独解决这一问题,必须由工具权限、网络白名单、秘密隔离和审批门禁限制后果。
防供应链攻击
Agent 不得随意安装未锁定依赖,不得修改 Actions 为浮动版本,不得把包发布、镜像推送或 Terraform Apply 混入普通修复任务。依赖升级应走专用策略并由人审核锁文件和来源。
预算与熔断
至少记录每次运行的模型、Token/用量、运行时长、Actions 分钟、重试次数和最终结果。为仓库、任务类型和自然日设置预算。出现以下情况立即熔断:同一 SHA 重试三次、一个小时内异常创建多个 PR、改动量超过阈值、测试持续恶化、API 成本突增。
合并治理
受保护分支应要求 required checks、至少一名人类批准、CODEOWNERS 和最新提交上的审批。Agent 不能同时扮演作者、审批者和合并者。即使启用自动合并,也应由人类在审阅后开启,而不是由写代码的 Agent 自行开启。
上线实施清单
第一周:只读观察
- 选一个非关键仓库;
- 只让 Agent 分析 Issue 和 CI 日志;
- 不授予写代码权限;
- 记录建议正确率、漏报和平均成本;
- 建立 AGENTS.md、CLAUDE.md、Cursor Rules 或统一仓库规范。
第二周:低风险 PR
- 允许文档、测试补充、小型 lint 修复;
- 限制目录、文件数和 diff 行数;
- 强制 CI 与人工批准;
- 建立失败队列和一键停止开关。
第三周:CI Autofix
- 只接入一个稳定 CI workflow;
- 对同一 SHA 去重;
- 禁止修改测试门槛;
- 用独立 Agent Review;
- 比较修复成功率与开发者处理时间。
第四周:事件与定时任务
- 添加依赖维护、文档漂移、陈旧 Issue 分类;
- 设置每日预算和并发;
- 审查权限、日志留存和数据政策;
- 根据实测决定是否增加第二或第三个 Agent。
上线指标不要只看“生成了多少 PR”。更有意义的是:可合并 PR 比例、首次 CI 通过率、平均人工修改量、回滚率、误报率、平均处理时间和每个可合并 PR 的总成本。
常见故障排查
Agent 重复创建 PR
通常是事件去重缺失。以仓库、任务 ID、事件类型和 SHA 生成幂等键,并使用 GitHub Actions concurrency 或外部租约锁。
Agent 提交后 CI 没运行
可能与令牌类型、workflow 触发规则或 GitHub 防递归机制有关。检查提交身份、事件来源和 workflow 的 on 条件;必要时使用受控 GitHub App 触发,但不要为了触发而扩大所有 Job 权限。
Agent 一直修同一个测试
设置最大尝试次数,保存每轮失败摘要,并要求每轮补丁解释“新证据是什么”。没有新证据时直接转人工。
三个 Agent 互相覆盖
说明没有写入租约。一个任务只允许一个主执行器,Review Agent 使用只读权限;更换执行器时先关闭旧运行、保存状态,再显式转交。
成本突然升高
检查重复 Webhook、PR synchronize 事件、并发和无限 Review 循环。为机器人评论增加来源标记,避免机器人评论再次触发机器人。
风险、限制与注意事项
- 各平台功能、套餐、配额与区域可用性会变化,本文不提供固定价格;以官方控制台和价格页为准。
- 自动化质量取决于仓库测试、任务描述和规范文件。缺少可执行测试时,Agent 无法可靠判断完成。
- 云端 Agent 会接触代码和任务上下文。敏感仓库应核对数据使用、保留、组织策略和合规要求。
- Cursor 的多仓库与长期运行能力存在具体场景边界;需要按官方文档与实际环境验证。
- “自动修复 CI”是实施工作流,不代表任何产品保证所有失败都能自动修复。
- 永远保留人工回退、撤销 PR、禁用 App/Action 和吊销凭证的路径。
事实依据与来源
- Codex 官方文档确认云端后台任务、GitHub Issue/PR 委派、自动 PR Review、GitHub Action 与定时任务能力。
- Anthropic 官方文档确认 Claude Code GitHub Actions 可响应提及、监听 GitHub 事件、按计划运行并创建 PR。
- Cursor 官方文档确认 Automations、Cloud Agents、GitHub 集成、headless CLI 和 Agent Review 能力。
- 本文的统一路由、任务租约、三 Agent 交叉复核、风险阈值和四周上线方案属于实施建议,并非三家共同发布的标准。
核验日期:2026 年 9 月 2 日。产品更新较快,部署前应重新核对官方文档。
FAQ
Always-on Agent 是否必须准备一台永不关机的服务器?
不一定。Codex cloud、Cursor Cloud Agents 和 GitHub 托管 Runner 都能提供云端执行;Claude Code GitHub Actions 也可运行在 GitHub Runner。需要自定义网络或数据驻留时,才考虑自托管 Runner/执行环境。
三个 Agent 可以同时处理同一个 Issue 吗?
可以并行分析,但不建议同时写同一分支。生产系统应指定一个主执行器,其他 Agent 只读复核。
可以让 Agent 自动合并 PR 吗?
技术上可组合实现,但不建议作为默认策略。至少保留 required checks、CODEOWNERS 和人类批准;身份、安全、基础设施和数据库修改必须人工确认。
CI 失败后应该自动重跑还是自动修复?
先区分偶发失败与确定性失败。网络波动可有限重跑;确定性失败再交给 Agent 复现和修复。盲目重跑会掩盖不稳定测试。
Codex、Claude Code、Cursor 应该选哪一个?
已经使用 Codex cloud 的团队可优先 Codex;以 GitHub Actions 为核心、希望配置完全仓库化的团队适合 Claude Code Action;需要多事件 Cloud Agent 与 Cursor 开发体验的团队适合 Cursor Automations。先选一个主 Agent,实测后再扩展。
如何防止 Agent 读取生产密钥?
不要把密钥放进通用 Runner。用 Environment 审批、OIDC、短期凭证和 Job 级权限,只在明确获批的发布 Job 注入;普通编码任务不应获得生产密钥。
如何判断试点成功?
观察可合并 PR 比例、首次 CI 通过率、人工修改量、回滚率、平均时间和每个可合并 PR 成本,而不是只统计 Agent 调用次数。
Agent 生成的代码需要特别标记吗?
建议给 PR 添加 ai-generated 标签,并在正文记录 Agent、运行 ID、测试和风险。这样便于审计、复盘和制定不同的 Review 策略。
参考来源
- Codex cloud 官方文档
- Codex GitHub Pull Request Review
- Codex GitHub Action
- Codex Scheduled Tasks
- Codex 自动修复 GitHub Actions CI 示例
- Claude Code GitHub Actions 官方文档
- Claude Code Code Review 官方文档
- Cursor Automations 官方文档
- Cursor Cloud Agents 官方文档
- Cursor GitHub 集成官方文档
- Cursor CLI GitHub Actions 官方文档
工具选型与提示词资料
适合阅读工具评测、工具推荐、对比测评类文章后继续转化。