它解决的是「协同」,不是「调用」
让一个 Agent 调用工具很容易,现在任何框架都能做。难的是四件事,hive 就是围着这四件事写的:
- 任务不会丢:每张卡是仓库里的一个 Markdown 文件,带 frontmatter。人可读、Git 可 diff、聊天记录滚掉了它还在。
- 不会重复执行:领取靠 git push 的原子性。两个 worker 同时抢一张卡,只有一个 push 成功,另一个自动退让。这个机制用两个进程对撞验证过。
- 不会互相踩踏:每张卡在自己的 worktree、自己的 task/<tid> 分支里改,多个 Agent 并行不共享 checkout。
- 不会僵死:领取带租约和 fencing token,机器关机、断网、跑飞之后,租约过期被回收,任务按重试策略重派;重试次数用尽转 blocked,不再无限重派。
分派是能力感知的
dispatch 不是轮询:它看 agent 的能力标签、当前负载、任务依赖、以及 paths 声明的路径冲突。Windows 机器没有 CLI agent,就只接 verify 卡;写代码的卡留给有执行能力的机器。平台差异不是例外处理,是任务属性。
给 Agent 用的接口
自带 MCP server,Agent 可以通过标准协议查任务、领任务、交结果、终止任务;也可以让 LLM 当总控,用同一套工具面逐轮决策。人在终端里看 status,机器在协议里干活。
- 语言
- Python(核心纯标准库)
- 状态
- 可用 · 按任务卡迭代
- 基础设施
- 只需一个 Git 远程仓
- 并发模型
- 拉取式 worker · 每机一 agent
- 一致性
- push 原子性 + 租约 + fencing
- 观测
- status / stats / digest / audit
- 接入
- CLI · MCP · LLM 总控
- 依赖
- 无数据库、无消息队列
为什么不用数据库
一人公司的运维预算等于零。多一个数据库,就多一个要备份、要升级、会挂掉、挂了没人修的东西。Git 远程仓本来就在,它已经解决了持久化、版本、权限和冲突——只是没人为这个用途写过调度器。
最小闭环
四行命令,跑通一条流水线
python3 hive/hive.py --dir hive init
python3 hive/hive.py --dir hive task new --title "修复 LLVM 路径分隔符" \
--repo light --paths src/codegen --verify "pytest -q"
python3 hive/hive.py --dir hive dispatch
python3 hive/hive.py --dir hive work --agent fb88
之后每个人只需 status 看板、doctor 体检、digest 复盘。合并仍然是人的判断——hive 会把 diff、测试结果和交叉验收结论摆到你面前,但不替你按合并键。
边界(写在这儿,省得你踩)
- 不做自动合并到 main。合并是人的判断,最多做到 integration 分支加 CI 绿灯。
- 不做实时协同编辑。任务是批处理,不是结对编程。
- 不追求单机极限并发。先 3–4 张卡并行,跑顺了再加。
- 它是给「几台自己的机器」设计的,不是多租户 SaaS。别拿它当公网调度平台。
它适合谁
有不止一台闲置机器、并且愿意让 Agent 真正动手改代码的人。三台旧电脑、一台 NAS、一台云主机,就是一个小集群。
如果你只有一台机器,hive 仍然有用——它能把「任务、执行、验收、结果」变成有记录的过程,而不是一堆找不回来的对话。