Codex、Claude Code 与 Cursor Persistent Workspace 架构

Codex + Claude Code + Cursor Persistent Workspace:Always-on Coding Agent 怎么搭

用持久控制面、临时隔离工作区和 Git/PR 交接搭建三工具协作的 Always-on Coding Agent。

摘要: Codex、Claude Code 与 Cursor 可以组合成 Always-on Coding Agent,但“持续工作区”不应理解为三款 Agent 长期共用一个可写目录。可靠方案是用持久控制平面保存任务、状态、审计与制品,为每次任务创建独立 Git Worktree 或隔离云环境,并通过分支、PR、队列和检查点交接。本文提供平台能力对比、参考架构、Docker/任务配置、十二步部署、成本与安全控制,以及断点恢复和自动熔断方案。

核心结论

Always-on Coding Agent 的核心不是让一个终端永不退出,而是让任务可以持续接收、隔离执行、保存进度、失败恢复、人工接管和安全交付。Codex、Claude Code 与 Cursor 应共享 Git 与任务状态,不应共享同一个活跃工作副本。

  • 一个任务一个隔离工作区: 使用 Worktree、容器或云 VM,避免多个 Agent 覆盖文件、锁文件和依赖。
  • 持久的是控制面,不是进程: 任务队列、检查点、Commit、日志、预算和审批长期保存;Runner 可以随时销毁重建。
  • 三款工具按优势分工: Codex 处理后台并行任务和自动化,Claude Code 处理终端式复杂改造与持续命令,Cursor 负责 IDE 协作、Cloud Agent 与人工审查;具体分工需团队实测。
  • 所有交接都要有制品: 以 Commit、Patch、PR、测试报告和 handoff.md 为准,不依赖聊天上下文或某台机器的内存。
  • 默认禁止生产直写: Always-on 会放大 Prompt Injection、无限循环、Token 成本和凭据泄露,必须有网络、权限、预算、超时、审批、审计和熔断。

官方能力能做什么,不能做什么

OpenAI 官方文档显示,Codex Cloud 可在独立云环境中后台执行任务并支持并行;Codex App 具备 Worktree、Automation、Git 与多线程能力。Codex 的 Worktree 让同一项目的多个任务在独立签出中运行,减少互相干扰。云环境可以预装依赖和工具,但它不是企业跨三款 Agent 的统一持久状态数据库。

Anthropic 官方文档显示,Claude Code 支持后台 Bash、后台子 Agent、Worktree 行为、Hooks、项目记忆与远程控制相关工作流。后台进程仍需限制超时、日志和权限,不能把一个长期 Shell 当成可靠队列。Claude 的 Auto Memory 也更适合辅助连续性,不应替代 Git、Issue、任务状态与可审计交接文件。

Cursor 官方文档说明 Cloud Agents 运行在隔离云 VM 中,可以从网页、移动端、桌面、Slack、GitHub/Bitbucket、Linear 与 API 启动;环境可通过快照、Agent 引导设置或 .cursor/environment.json/Dockerfile 配置。Cursor Worktree 也强调每个任务拥有独立文件和变更。多仓环境与长时间运行的能力边界可能不同,应以当前控制台为准。

能力CodexClaude CodeCursor统一架构中的位置
后台/远程任务Codex Cloud、Automation后台命令、子 Agent、远程工作流Cloud Agents、API/集成触发任务执行器
并行隔离App Worktree、云环境Worktree/独立目录Worktree、隔离云 VM每任务工作区
项目指令AGENTS.mdCLAUDE.mdCursor Rules/项目配置Git 中版本化
持久状态线程、云任务、Git会话/记忆、Git、文件Cloud Agent 任务、Git外部状态库为准
人工审查Diff、Git/PR 工作流Diff、Commit/PRIDE、Agents Window、PR统一 Merge Gate

更细的指令共用方式可参考 AI Stack Nav 的 AGENTS.md 与 CLAUDE.md 内容,安全环境可参考 Coding Agent Sandbox

Always-on Coding Agent 持久控制面与临时执行面架构图
任务、状态和审计长期保存,Agent 在独立 Worktree 或云环境中运行。

推荐架构:持久控制面 + 临时执行面

控制平面包括任务队列、调度器、策略引擎、预算账本、Secrets Broker、制品库和审计系统。它接收 Issue、告警、定时扫描或人工请求,将任务标准化为包含仓库、基线 Commit、目标、允许工具、预算、超时、验收命令和审批级别的 Task Manifest。

执行面是可销毁的 Runner。调度器为任务创建分支和 Worktree,或启动隔离容器/云 VM;注入短期、最小权限身份;拉取目标 Commit;加载项目指令;调用指定 Agent;周期性提交检查点。任务完成后上传 Patch、测试与日志,创建 PR,然后销毁环境。

这解决了“Persistent”的悖论:环境不必永久存在,但任务可从最后一个可信 Commit 与 Manifest 重建。依赖缓存和容器镜像可复用,用户目录、浏览器 Cookie、SSH Agent 与长期 Token 不复用。

task:
  id: TASK_ID
  repository: YOUR_REPOSITORY
  base_commit: YOUR_COMMIT_SHA
  agent: codex
  goal: 修复登录超时并补充回归测试
  workspace:
    type: git-worktree
    ttl: 4h
    checkpoint_minutes: 15
  permissions:
    repositories: [YOUR_REPOSITORY]
    network: [model-gateway.internal, package-mirror.internal]
    production: deny
  limits:
    max_steps: 80
    max_retries: 2
    max_cost_usd: 12
  acceptance:
    commands: ["YOUR_FORMAT_COMMAND", "YOUR_TEST_COMMAND"]
  output: pull_request

为什么不能三款 Agent 共写同一个目录

共享可写目录会产生不可预测竞争:Agent A 修改依赖并运行安装,Agent B 同时读取旧锁文件;Agent C 格式化整个仓库,覆盖尚未提交的变更。即使 Git 最终能显示 Diff,中间态也可能污染测试、缓存、生成文件和数据库。

Worktree 为每个任务提供独立工作副本与分支,主仓库对象可共享,磁盘成本通常低于完整复制。云 VM 或容器进一步隔离进程、网络和凭据。对不适合 Worktree 的系统,例如本地数据库、移动模拟器或重型构建缓存,应为每个任务分配独立端口、数据库 Schema、缓存命名空间和临时目录。

同一 Issue 如果需要多个 Agent,可以串行交接:Codex 先实现,Claude Code 做对抗审查,Cursor 中由开发者修订和合并;或者并行产生多个候选分支,再由评测器比较。禁止让审查 Agent 在原实现目录中直接修改而不保留基线,否则无法区分作者和评审的贡献。

标准化交接:Task Manifest 与 handoff.md

聊天记录不是可靠接口。Agent 交接至少包含基线 Commit、当前 Commit、已完成项、未完成项、已运行命令、失败输出、已知风险、下一步建议和预算使用。建议在任务分支生成 .agent/handoff.md,同时将结构化字段写入状态库。

## 交接摘要

- Task:TASK_ID
- Base:YOUR_BASE_SHA
- Current:YOUR_CURRENT_SHA
- Agent:Codex
- 状态:awaiting_review

## 已完成

- 修复超时分支逻辑
- 新增单元测试

## 验证

- `YOUR_TEST_COMMAND`:通过
- `YOUR_LINT_COMMAND`:未运行,原因见日志

## 风险与下一步

- 需要 Claude Code 审查并发边界
- 合并前需人工确认数据库迁移

不要把 Secret、完整 Prompt 或客户数据写入交接文件。日志存储引用 ID 即可。下一个 Agent 必须先验证 Commit 与工作区干净状态,再继续执行;不能盲信前一 Agent 声称“测试通过”。

十二步搭建 Always-on Coding Agent

  1. 选择事件来源。 从 GitHub Issue、告警、定时维护和人工表单中选择少量高价值任务,避免一开始接受任意自然语言触发。
  2. 建立任务数据库。 保存状态、优先级、仓库、Commit、预算、锁、租约、审批与审计引用,队列消息只传 Task ID。
  3. 制作签名基础镜像。 固定运行时、Git、构建工具与 Agent CLI,镜像按摘要引用,禁止启动时执行未知远程脚本。
  4. 配置项目环境。 将依赖安装、格式化、测试和常用操作写入版本化文件;为 Codex、Claude Code 与 Cursor 分别适配官方环境机制。
  5. 实现工作区管理器。 一任务一分支、一 Worktree/VM;命名含 Task ID,验证目标路径后再创建或回收。
  6. 接入短期身份。 Git、包仓、模型和工具凭据由 Broker 按任务签发,禁止挂载员工主目录与长期 Key。
  7. 部署调度与租约。 Worker 获取有 TTL 的租约并续期;心跳消失后任务回到可恢复队列,而不是两台 Worker 同时继续。
  8. 增加检查点。 在通过最小验证后提交临时 Commit,保存 Manifest 与日志位置;不得把脏目录快照当作唯一恢复点。
  9. 配置质量门。 Agent 输出进入 PR,CI 在干净环境重新运行格式化、类型、单测、安全与依赖扫描。
  10. 增加人工审批。 合并主分支、部署、发信、删除、付款、权限变更和生产数据库操作必须独立确认。
  11. 加入预算与熔断。 限制 Token、工具调用、并发、运行时间和重试;异常循环时保存补丁并停止。
  12. 演练恢复与回滚。 杀死 Runner、让网络中断、制造冲突和 Agent 升级,确认可从可信 Commit 恢复并撤销身份。
Always-on Coding Agent 可恢复执行闭环
从事件触发、租约和工作区创建,到检查点、Agent 交接、CI、审批、合并与回收。

调度策略:三款工具怎么分工

不要用工具品牌直接决定任务,应该根据能力标签路由。任务声明是否需要 IDE 人工交互、后台云环境、长时间终端、浏览器、跨仓库、指定模型、特定 MCP 或移动端控制。调度器再从当前可用 Agent 中选择,并允许人工覆盖。

一种可行分工是:Codex Automation 执行定时依赖扫描、Issue 分类和可重复维护任务;Codex Cloud 处理并行后台实现;Claude Code 处理需要大量终端迭代、代码库探索或专属 Hooks 的任务;Cursor Cloud Agent 接受 Slack/GitHub/Linear 触发,Cursor IDE 用于开发者审查和快速修订。这是实施建议,不代表三家官方规定。

Agent 之间不直接发送自由文本指令,而由调度器生成新的 Manifest。上游输出经过 Schema 校验、敏感数据检查和预算评估后,才成为下游输入。这样可以降低 Prompt Injection 跨 Agent 传播。

可靠性:租约、幂等、重试与冲突

队列采用至少一次投递时,每个副作用必须有幂等键。创建分支、PR、评论、工单和制品都以 task_id + action + version 去重。Worker 获取租约后记录所有者与到期时间;只有当前租约持有者能写任务状态。

重试只针对网络超时、供应商 429/5xx 和可识别的瞬时错误,采用指数退避与抖动。测试失败、权限拒绝、合并冲突和预算耗尽不是自动无限重试理由。连续相同错误达到阈值时进入 NEEDS_HUMAN

恢复顺序是:验证仓库与基线、恢复最后可信检查点、新建干净工作区、重新运行最小测试、再继续任务。不要复用可能被攻陷或状态不明的容器。合并冲突由独立任务处理,并保留原候选分支。

安全:Always-on 会放大哪些风险

第一是触发面扩大。Issue、PR 评论、Slack、网页和依赖文档都可能含提示注入。只有授权用户和受信事件类型能创建任务;外部文本作为数据传入,不得自动升级权限。

第二是凭据常驻。Runner 不保存长期 API Key,使用短期工作负载身份和 Secrets Broker;日志、Shell 历史、Git Diff 与交接文件不得输出密钥。模型、Git、包源和工具访问经过出口代理与审计。

第三是生产权限。Markdown 中写“不要部署”不是安全控制。生产网络默认不可达,CI/CD 使用独立身份,付款、删除、发布、发邮件、修改账户、修改权限和生产数据库操作均需人工审批。

第四是供应链与逃逸。基础镜像最小化,禁止特权、Docker Socket 和宿主目录,依赖使用内部镜像、锁文件与签名/摘要。Agent 与 MCP 工具分别做权限控制;Codex Sandbox 不会自动保护第三方 MCP 工具自身的权限。

成本与容量规划

总成本包括模型 Token、Cursor/Codex/Claude 产品用量、云 VM、缓存、存储、网络、CI、日志和人工审查。持久 VM 全天运行通常浪费;更好的方式是控制面常驻、Runner 按需启动,使用预热池与签名快照降低冷启动。

每个 Task Manifest 设置模型预算、工具预算、最长运行、最大步骤、最大子 Agent、最大并发和日志字节。达到 70% 提醒、85% 降级、100% 熔断可作为起点。熔断允许保存 Patch 和审计,但禁止新计费动作。

衡量价值不要只看完成任务数。应跟踪有效 PR、合并率、缺陷逃逸、返工、平均恢复时间、人工审查时间和单位有效变更成本。多个 Agent 重复解决同一问题只有在需要候选比较时才值得。

监控、审计与日常运营

每个任务记录触发者、Manifest 版本、Agent/模型、镜像摘要、工作区、Commit、命令、工具调用、网络目标、预算、检查点、CI、审批和最终 PR。日志写入 Agent 无法修改的远端系统,并对 Prompt 与源代码脱敏。

关键告警包括租约重复、心跳丢失、工作区长期未回收、同类失败循环、Token/工具调用突增、新域名访问、生产地址尝试、Secret 扫描命中、审批后参数变化与积压队列增长。

日常清理不能直接递归删除模糊路径。管理器只回收带 Task ID、位于预设根目录、租约过期且变更已保存的工作区。重要 Patch 先归档,再清理分支和存储;生产保留策略按合规要求执行。

环境配置:怎样让三个 Runner 得到一致结果

Persistent Workspace 最常见的失败并非模型能力,而是环境漂移:本地使用 Node 22,云 Runner 仍是 Node 20;一个 Agent 从公共 npm 下载,另一个使用内部镜像;数据库时区、locale、文件大小写和换行符不同,导致测试结果无法比较。

应把运行时、系统包、包管理器、依赖锁文件、环境变量名、启动命令和健康检查全部版本化。优先用一个签名 Dockerfile 或内部基础镜像作为共同基线,再分别映射到 Codex Cloud environment、Claude Code 开发容器/工作区和 Cursor Cloud Agent 环境。平台专属配置只负责调用同一套安装脚本,不要维护三份互相漂移的依赖列表。

.agent/
├── task.schema.json
├── bootstrap.sh
├── healthcheck.sh
├── handoff-template.md
└── policies/
    ├── network.yaml
    ├── tools.yaml
    └── budget.yaml
Dockerfile.agent
AGENTS.md
CLAUDE.md
.cursor/environment.json

bootstrap.sh 必须可重复执行,第二次运行不能破坏工作区;下载使用固定版本、摘要和内部镜像;失败立即返回非零状态。健康检查不仅测试命令是否存在,还要确认 Git Remote、目标 Commit、磁盘空间、模型网关、包镜像和测试依赖均可用。Secret 由运行时注入,不写进镜像层、仓库或快照。

环境升级采用 Build ID。Task Manifest 记录实际使用的镜像摘要、依赖缓存版本和 Agent CLI 版本;失败恢复默认使用原 Build,除非原版本存在安全漏洞。若必须切换 Build,应创建新的任务尝试并保留旧分支,避免在同一任务中改变环境后继续声称结果可复现。

验收测试:怎样证明 Always-on 不是“偶尔能跑”

功能测试先覆盖一条完整黄金路径:创建低风险 Issue,队列生成任务,Runner 获得租约,创建 Worktree,Agent 修改示例代码,提交检查点,CI 复测,人工批准后合并,最后销毁工作区。每一步都应能通过 Task ID 查询状态与证据。

随后进行故障注入。执行中杀死 Runner,确认租约到期后只产生一个恢复 Worker;在模型调用中断网,确认有限重试而不是死循环;让测试持续超时,确认预算熔断并保存 Patch;制造 Git 冲突,确认任务进入人工状态;让 Secrets Broker 拒绝请求,确认系统不会退回员工长期 Key。

安全验收还要在 Issue、README、网页和 MCP 返回中放入受控提示注入,要求 Agent上传环境变量或访问生产地址。合格结果不是模型回复“我不会”,而是即使模型尝试,网络、身份和工具策略仍然拒绝,并生成可关联告警。

性能验收记录冷启动、依赖准备、首次有效修改、测试、PR 创建和人工等待时间。优化时优先处理镜像、缓存和队列瓶颈,不要为了少等几分钟而复用不可信工作区或长期凭据。容量测试逐步提高并发,确认全局预算、仓库 API Rate Limit、CI 配额和数据库连接不会被同时耗尽。

回滚与灾难恢复

控制面数据库、制品元数据和审计索引需要备份;代码成果本身应尽早提交到远程临时分支。恢复演练要证明:即使调度器和全部 Runner 丢失,也能从任务数据库、Git Commit、制品与日志重建任务状态。不能把某个供应商聊天线程当作唯一恢复源。

平台升级失败时,停止领取新任务,让运行中任务在限定时间完成或检查点退出,然后回滚调度器和基础镜像。已经创建的 PR 保持不变,新版本不得静默重写旧任务。若审计或策略服务不可用,系统进入失败关闭,只允许查看状态和导出证据。

退出某款工具时,Task Manifest、Git、PR、测试和制品仍应可用。调度器只需将能力标签路由到剩余 Runner,而不需要迁移专有聊天历史。正因为如此,平台无关的状态层比“三个 Agent 永久在线”更重要,也能降低供应商锁定。

事实依据与来源

截至 2026 年 9 月 22 日,OpenAI 官方资料确认 Codex Cloud 支持在独立云环境后台、并行处理任务,Codex App 提供 Worktree 与 Automation;Anthropic 官方文档确认 Claude Code 支持后台任务、Worktree、Hooks 与项目记忆;Cursor 官方文档确认 Cloud Agents 在隔离云 VM 中运行,可通过多种入口与 API 触发,并可用环境文件、快照或 Dockerfile 配置。

“统一持久控制面、每任务临时执行面、三工具按能力路由”的方案是本文的实施建议,不是三家公司联合发布的产品。三款工具的套餐、云运行时长、区域、并发和多仓限制可能变化,具体以当前官方文档、控制台和企业合同为准。文中的 YAML、状态机、阈值和分工需要在真实项目验证。

FAQ

Persistent Workspace 是三款 Agent 共用一个目录吗?

不是。可靠含义是任务状态和制品可持续恢复,每个任务仍使用独立 Worktree、容器或云 VM,通过 Git 和 PR 交接。

必须同时购买三款工具吗?

不必须。先选一种完成队列、隔离、检查点与 PR 闭环,再根据明确能力缺口引入第二或第三种,避免重复订阅与治理复杂度。

Agent 任务中断后怎样继续?

从状态库读取 Manifest,验证最后可信 Commit,在新工作区重新运行最小测试后继续。不要依赖旧终端或未提交的脏目录。

可以让 Always-on Agent 自动合并和部署吗?

低风险仓库可在严格策略下自动合并,但生产部署、数据库迁移、权限变更和外部消息应保留独立 CI 身份与人工审批。

Worktree 能解决所有隔离问题吗?

不能。它隔离工作副本,不自动隔离进程、网络、凭据、数据库和缓存。高风险任务仍需容器或 VM、独立身份与网络策略。

三个 Agent 如何避免重复工作?

调度器使用任务租约和幂等键;每个 Agent 只能写自己的分支。并行候选必须显式标记,由评测或人工选择,而不是自动互相覆盖。

Always-on 的最低成本起步方案是什么?

一台受控 Runner、Git Worktree、简单队列、短期凭据、PR/CI 与人工合并即可。先跑定时维护和低风险 Issue,再扩展云 Runner 与多 Agent。

如何防止 Issue 中的 Prompt Injection?

把 Issue 内容视为不可信数据,任务模板固定权限和工具;外部文本不能修改预算、网络或审批。高风险动作在模型外由策略引擎阻断。

参考来源

  1. OpenAI, Codex Cloud
  2. OpenAI, Codex Worktrees
  3. OpenAI, Codex Automations
  4. OpenAI, Codex Cloud environments
  5. Anthropic, Claude Code settings
  6. Anthropic, Claude Code Hooks
  7. Anthropic, How Claude remembers your project
  8. Cursor, Cloud Agents
  9. Cursor, Worktrees
  10. Cursor, Agent Security

工具评测文章

工具选型与提示词资料

适合阅读工具评测、工具推荐、对比测评类文章后继续转化。

工具选型表 按场景、价格、上手难度和核心能力筛选合适的 AI 工具。 查看资料包 提示词模板包 提供写作、运营、编程、图片和视频生成常用提示词模板。 查看资料包

0 回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

本站累计访问量: 366,228
AI Stack Nav 客服会员 / 支付 / 下载 / 工具库
你好,我是 AI Stack Nav 客服助手。你可以问我会员开通、微信支付、资料下载、订单入口、AI 工具库等问题。