Forge: an assembly line for coding agentsForge:一句话派活,几个 AI 同时写代码
- Year
- 2026
- Status
- Paused
- Outcome
- One message per task: 34 pull requests, 30 merged, every one reviewed by two models
Seven bash scripts, 876 lines, no product code. I post a task in a Discord channel and it comes back as a pull request; every step and every error reports into that same channel.
The premise is that an agent should never be asked to police itself. A dispatcher agent reads the channel, splits the work and launches processes; it never writes code. Each coding agent gets one job — write the change, commit it. Build, typecheck, push, open the PR: those run from a wrapper script, in order, with no step the agent gets to decline. The same diff then goes to Claude and to Codex separately. Three things block a merge — a crash, data loss, a security hole — and they go back for at most two rounds. Everything else is logged and the PR moves on.
All that scaffolding exists because agents ignore instructions. The docs said, in plain words, that tasks must be launched through one specific script. The agent would create its own worktree and start anyway, and saying it more forcefully in the prompt changed nothing. So a watchdog sits on cron hunting for exactly that: replace the improvised setup with the standard one, or, if code is already being written, wait for the commit and take over from the build step. Fifteen minutes with nothing committed counts as stuck — kill it, start again.
Between Feb 28 and Mar 3 it opened 34 pull requests on DODGE AGENT, another entry on this site, and 30 of them were merged. Every one of those PRs still carries two machine-written reviews, and the catches were not filler: an auth check that could be walked past whenever the secret wasn't configured, a database query missing its per-company filter, a migration file colliding with an existing number. Each finished review was archived, and the next round of task-splitting reads the archive before it splits anything.
What ended it was weight, not failure. A Discord bot running around the clock, a terminal multiplexer, two cron jobs, one laptop with room for four agents at a time; the repo still shows the two commits it got on Feb 28. On Mar 8 I started claudeorc — the same pipeline, no Discord, no machine to keep awake — and that one is public. The line I kept from Forge: if a rule depends on the agent choosing to follow it, it isn't a rule. Put it where the agent can't step around it, or plan for it stepping around.