跑 3 个 AI 编码 Agent 24/7?这里有一份实战指南
单个 Claude Code 或 Codex CLI 已经能帮你写不少代码了。但如果你想让 3 个(甚至更多)AI 编码 Agent 同时、不间断地干活呢?这可能听起来像科幻,但实际上今天的基础设施已经准备好了。
最近 HN 上一位开发者分享了他连续 3 天同时运行 3 个 AI 编码 Agent 的经验。本文把他的方案拆解为 7 个关键技术步骤,从 headless 模式到成本优化,让你也能搭建自己的 24/7 AI 开发团队。
问题:订阅额度 30 分钟烧光
先讲一个现实问题。3 个 Agent 同时工作,Claude 的 $200 订阅额度(Pro/Pro Max)可能在 30 分钟内烧光——即使切到 Sonnet 4.6 也一样。API 按 token 计费的价格比订阅贵约 40 倍。
作者的解决方案很聪明:
- 用最强模型(Fable 5 / Sonnet)做分析、设计、拆任务
- 用本地模型(Qwen3.6:36B + Ollama)做执行——免费但慢
- 用强模型验证工人成果,发现问题时创建新修复任务
这套三层架构让 $200 的额度可以撑几天,而非 30 分钟。
第一步:Headless 模式 — 给 Agent 去掉交互界面
要让 Agent 24/7 运行,第一件事就是让它不需要人盯着终端敲回车。AI 编码工具都有 headless 模式:
| 工具 | Headless 参数 |
|---|---|
| Claude Code | claude -p "你的指令" |
| Codex CLI | codex --exec "指令" |
| OpenCode | opencode run "指令" |
-p/--exec/run的区别:Claude Code 的-p标志会直接执行单条指令然后退出;Codex 的--exec类似;OpenCode 的run子命令则更适合在脚本中调用。不管用哪个,核心目标是一样的——脚本式调用,无需人工交互。
第二步:Ask Human — 解决 Agent 卡住的问题
Headless 模式有个致命问题:Agent 遇到需要用户确认的事情会卡住。上次睡觉前让它跑自动化,结果凌晨 3 点它在等你回一句”yes”——这就是为什么需要专属的 Ask Human MCP 工具。
作者实现了一个 MCP Server(github.com/sermakarevich/claude/tree/main/mcp/ask_human),作用很简单:
- Agent 需要确认时,调用
ask_human工具 - 消息被发送到 Telegram(或其他通知渠道)
- 你可以在手机上回复,回复内容自动返回给 Agent
这样即使你在睡觉,Agent 也能在早上收到你的回应继续工作。
第三步:Beads — Agent 的任务队列
3 个 Agent 同时工作,必须解决一个核心问题:任务分配和冲突避免。多个 Agent 抢同一个任务怎么办?一个任务被重复执行怎么办?
作者的方案是 Beads — 一个轻量级分布式图谱任务追踪器,底层使用 Dolt(Git 风格的 SQL 数据库)。Beads 的核心功能:
- 创建任务时定义依赖关系(task A → task B → task C)
- 每个任务有状态(pending / in_progress / done / failed)
- 优先级排序
- 自动去重:一个任务不会被多个 Worker 同时认领
- 层级结构:父任务可包含多个子任务
beads task create "实现用户登录模块" --depends-on "设计数据库Schema" beads task list --status pending --limit 5 beads task claim TASK-0042 --worker worker-1
这套机制保证了即使 3 个 Worker 同时在线,也不会出现”撞车”或重复劳动。
第四步:Worker Artifacts — 记录中间状态
如果 Worker 在运行中途被重启(机器重启、进程被杀、模型 OOM),它能不能从断点恢复?
答案在于 Worker Artifacts。每个任务对应一个独立的文件夹,里面存放:
.beads/TASK-0042/ ├── plan.md # 实现计划 ├── status.md # 当前状态 ├── knowledge.md # 已发现的知识 ├── events.jsonl # 事件日志 └── stderr.log # 错误输出
Worker 的 prompt 里明确指令:启动时先检查 artifacts 文件夹是否存在,如果存在则从中恢复进度。这样即使 Worker 崩溃重启,阅读 plan.md 和 events.jsonl 就能接上之前的工作。
第五步:Git Worktree — Worker 隔离
3 个 Agent 同时在同一个仓库里写代码,会互相覆盖吗?会的。这就是 Worker 隔离的必要性。
作者的方案是 Git Worktree——Git 原生的多工作目录功能。工作流如下:
- Worker A 拿到任务,在专属 worktree 中实现
- Worker A 提交 PR/完成通知
- Worker B(自动触发)在另一个 worktree 中验证实现、运行测试
- Worker B 如果测试通过,将 worktree merge 回主分支
- Worker B 创建修复/改进的新任务
git worktree add ../project-worker-001 feature/login-module cd ../project-worker-001
为什么不用分支(branch)?因为多个 Worker 同时 checkout 不同分支时,主工作目录的 git index 会被频繁重写。worktree 让每个 Worker 拥有完全独立的目录和 index,不会互相干扰。
第六步:简单编排器 — 让它们自动化循环
有了 Beads、Artifacts、Worktree,还需要一个 Orchestrator(编排器) 来管理整个流程。作者的做法出奇地简单——一个 无限循环脚本:
#!/bin/bash
while true; do
# 检查 Beads 中是否有待处理的任务
NEXT_TASK=$(beads task list --status pending --limit 1 --format json)
if [ -n "$NEXT_TASK" ]; then
# 启动 Worker(可以是任意编码工具)
claude -p "请实现 Beads 任务 $(echo $NEXT_TASK | jq -r '.id')"
fi
sleep 30 # 每 30 秒检查一次
done
这个编排器可以运行在后台(tmux / screen / systemd 服务),持续监控 Beads 并触发新的 Worker。
第七步:Coder Agnostic — 不绑定单一工具
最后一层抽象:Worker 不关心你用哪个 AI 编码工具。同一个编排器可以混用 Claude Code、Codex CLI、OpenCode 甚至本地模型。作者的经验是:
- Claude Code:最擅长复杂分析和设计任务
- Codex CLI:适合标准化编码任务(生成模板代码、写测试)
- OpenCode:适合验证和重复性调试
- 本地 Qwen3.6:适合简单但量大的执行任务(免费)
case $TASK_TYPE in "design") worker="claude -p" ;; "implement") worker="codex --exec" ;; "test") worker="opencode run" ;; "fix") worker="claude -p" ;; esac
成本优化策略
跑 3 个 Agent 最大的挑战是成本。以下是几种方案对比:
| 方案 | 月费用 | 速度 | 质量 |
|---|---|---|---|
| 纯 API(Sonnet 4.6) | $1000+ | 快 | 高 |
| Claude Pro + 本地 Qwen | $200 + $0 | 中 | 中-高 |
| Bedrock Qwen(按 token) | ~$200 | 中 | 中 |
| 租 96GB GPU | ~$1400/月 | 快 | 高(可跑大模型) |
作者的推荐:强模型 → 本地模型 → 强模型的三层架构,用 Claude Pro 的额度做分析和验证,用 Ollama + Qwen3.6:36B 做执行层——2 张 GPU 卡共 36GB 显存足以运行 256K 上下文窗口。
一件事:何时让人介入
HN 评论里有人点出了一个关键问题:最难的不是编码,而是编排、审批和判断何时让人接手。即使最聪明的 Agent,也会遇到:
- 需要访问生产数据库的权限审批
- 涉及法律/合规的决策
- 架构方向的选择(多个方案需要人类判断)
这就是 Ask Human MCP + Telegram 集成的价值所在——Agent 做能做的事,关键节点交给人判断,不会因为等人而阻塞整个流水线。
总结
24/7 多 Agent 编排不再是理论。本文的 7 步方案——Headless 模式、Ask Human、Beads 任务队列、Worker Artifacts、Git Worktree 隔离、简单编排器、Coder Agnostic 设计——构成了一套可以立刻上手的实战框架。
关键是拥抱一个理念:强模型做设计,弱模型做执行。让 $200 的额度撑几天而非半天,让本地免费的模型承担 80% 的编码量。当你早上醒来,看到 3 个 Agent 已经通宵完成了 2 个 feature、修复了 3 个 bug 的时候——你会觉得这套设置值得。