编程 AgentHub:5 个 AI Agent 并行改同一仓库,消息路由、文件锁与崩溃恢复怎么落地

2026-10-04 00:03:55

AgentHub:5 个 AI Agent 并行改同一仓库,消息路由、文件锁与崩溃恢复怎么落地

单个 Agent 串行推进项目,上下文窗口和等待时间都是瓶颈:先写后端、再写前端、再补数据库迁移,一轮下来时间全花在来回切换上。一旦想并行,问题立刻变成三个:两个人同时改 src/api.py 会冲突;消息重发或超时会让同一个任务被执行两遍;Router 崩了,任务状态、谁做到哪一步全部丢失。AgentHub 是一个开源的多 Agent 编排框架,用消息路由 + 文件锁 + 持久化日志把这三件事分开处理。

项目信息

一条命令拉起一支完整队伍:1 个协调者(MAIN)+ 4 个执行者(A/B/C/D)。

./scripts/start_team.sh

脚本会自动启动 Router(默认端口 8765)、打开 5 个独立终端窗口、生成标准文档模板,并把各角色的 AI prompt 注入进去。

分工表

角色定位职责
MAINCoordinator任务规划、设计评审、问题决策
AFrontend ExpertUI/UX,React、Vue、CSS、组件、页面
BBackend ExpertAPI,FastAPI、业务逻辑、服务
CDatabase Expert数据,模型、迁移、查询
DSupport ExpertDevOps,测试、文档、部署

消息协议

成员之间不直接对话,所有消息都经过 MAIN 收口:

消息类型方向用途
reviewMAIN → 成员评审文档/代码
report成员 → MAIN反馈评审结果
assignMAIN → 成员分配任务
clarify成员 → MAIN提问
answerMAIN → 成员回答问题
verifyMAIN → 成员验证改动
done成员 → MAIN任务完成
fail成员 → MAIN任务失败

协作流程是一条固定链:

analyze -> design -> confirm -> schedule -> execute -> aggregate

对应项目分析与影响评估、设计文档生成、契约优先的任务拆分、并行执行与协调、结果聚合。设计阶段先产出接口契约,再进入编码,这样 A/B/C/D 之间的调用面是提前对齐的。

不打架靠什么

投递层:ACK 双确认 + 重试 + 幂等

消息投递要过两道确认:投递层收到消息回一次 ACK,应用层真正处理完再回一次 ACK。中间任何一环没回,就按指数退避策略重试,并带超时检测。重试本身会带来重复投递,所以收发两端都做幂等去重,保证同一条消息不会被当作两个任务执行。

状态层:JSONL 日志 + session/epoch

消息以 JSONL 格式落盘,inbox 状态单独持久化,进程崩溃后可自动恢复。session/epoch 用来区分不同的运行周期,避免恢复时把上一轮的残留状态当成当前任务。想回放一整条协作链,可以直接查:

team trace --task T1

资源层:文件锁 + 变更广播

改动前先占锁,把要动的文件显式声明出来:

team lock --files "src/api.py" --task TASK-001

接口发生变化时广播给所有相关方,触发下游同步:

team notify --task TASK-001 --interface "POST /api/login" --change-type modify

配合进度板和依赖跟踪,被阻塞的任务会在板上暴露出来:

team board
team progress --task TASK-001 --percent 50 --step "implementing API"

常用命令

# 生命周期
./scripts/start_team.sh
./scripts/status_team.sh
./scripts/stop_team.sh

# 分析 / 设计 / 执行
team analyze --path . --feature "new feature"
team design --requirement "feature description"
team run --task "feature" --design-approved
team schedule --task "feature description"

# 协作与调度
team board
team progress --task T1 --percent 50 --step "..."
team lock --files "src/api.py" --task T1
team notify --task T1 --interface "API" -c modify
team say --from MAIN --to A --text "Start task"
team review --to A,B,C,D --task T1 --file doc.md
team assign --to B --task T1 --files "src/*"
team status --tasks
team trace --task T1

# 直接查 Router 状态
curl http://127.0.0.1:8765/status | jq

配置

环境变量说明默认值
TERMINAL_ADAPTER终端类型(terminal / iterm)terminal
CODEX_PATHAI CLI 可执行文件路径codex

框架不绑定某一家模型,Codex、Claude Code 等兼容的 CLI 都可以接入,成员数量也可调整。

边界与取舍

运行环境目前只有 macOS,Linux 和 Windows 支持仍在计划中;依赖 Python 3.8+、Terminal.app 或 iTerm2,以及一个可用的 AI CLI。仓库 stars 约 40,属于早期项目,协议和脚本仍在快速变动。Roadmap 里尚未完成的部分包括 Web 监控面板、跨机器的分布式 Agent、自定义协议插件系统,以及 GPT-4、Claude、Gemini 等更多模型接入。也就是说,当前这套机制解决的是单机、单仓库、多 Agent 并行时的冲突与状态问题,跨节点扩展还没有落地。

推荐文章

程序员茄子在线接单