DODGE AGENT: an internal back office for an apparel teamDODGE AGENT:给电商团队做的内部后台
- Year
- 2026
- Status
- Paused
- Outcome
- The agent reads the database and stages every write; a person presses confirm
Four roles, one database. The owner opens a dashboard; operations gets orders and inventory; design gets a workspace; finance gets reconciliation. A Python job pulls the team's products, stock, orders and returns out of their Feishu base into Postgres, and every page reads the same tables. I built it for a small apparel e-commerce team.
The part I still care about is that the agent cannot write to that database. To change a row, it stages the row plus a before-snapshot into a pending table, marks it pending, and stops. Someone presses confirm in the UI. After that you can undo a single operation, or put back everything one conversation touched. The tables it may reach are a hardcoded list of eleven, and every step lands in an audit log. The gate went in mid-build: a commit from March 3 is titled "enforce confirmation — agent query+stage only, user confirms via UI".
Some of the numbers only exist inside a supplier's ERP, which has a web console and no API. So there are seventeen tools that drive that console through Chrome's debug port: look up products, read orders and stock, edit cost prices, batch-update prices and shipping windows. Every write tool fills the form and stops there. Submitting stays with a person.
I did not type the 135 commits. I wrote task briefs and handed them to a runner script — Forge, another entry on this site. It gives a brief to Claude, runs the build and the type check, pastes failures back for one more attempt, then pushes a branch, opens a PR and triggers an automated review. My job was picking what to build, reading the reviews, and merging. Three of the ten days account for 119 of the commits.
The README is still the one create-next-app generated. Three PRs opened in the first week of March are still open. One page imports a board that was never committed — that board later became orchestra-oss — so a clean clone does not type-check: 42 errors, 41 in test files, plus that one. The tests hold up: 91 files, 1307 cases, and a fresh install runs 1282 green, 25 red across 5 files.
There is no CI in the repo. Every check lived in a script on one laptop, and when the laptop closed the checks stopped with it. One person and a pile of agents can produce 60,000 lines, 28 migrations and 1,300 tests in ten days, and leave behind nothing another person can pick up.