Losing to Blender

Note·3 min read

Lingisa started from a thesis I believed: an AI agent that reads measurements instead of pixels will model better. Every face and edge had a stable ID, the renderer reported its shading in parts, and the document behaved like a program. If the thesis was right, Lingisa would be the best place for an agent to build in 3D.

So we tested it instead of arguing about it. Fresh agents with no memory of the project got a numeric spec and a tool, and a harness logged every command. The part had a ten-point spec, so passing was a fact, not a taste call.

The result

Blender, driven through its Python API, passed 5 of 5 in 169 seconds. Lingisa, through its own command vocabulary, also passed 5 of 5, in 543 seconds, using twice the tokens. A new Python binding brought Lingisa down to 162 seconds. That's a tie, not a win.

This is where the call was. There were easy ways to keep the thesis alive: pick a test where Lingisa looked better, keep tuning until the numbers flipped, or present the 162 seconds as a victory. None of them would have changed what the trial showed. "Hand back measurements rather than pictures" isn't a differentiator against a tool that already has a Python API. The lesson we wrote down: an agent should drive the tool in a language it already knows. Never invent a language.

Changing the pitch

What survived the trial wasn't modelling power. It was collaboration: a person and an AI working on the same model, in the same document. The person points at the part they mean and says what they want; the agent changes that object, in that place, says what it did, and marks anything it guessed at for a person to check.

Almost every design decision after that came from that one sentence: comments pinned to faces and edges, variants kept in place on the object, one undo per agent request, a visible Stop button, and "On it." within two seconds of asking.

The trials paid off a second way. Before the speed test, the harness showed 26 to 35% of agent commands failing because the agent couldn't find out what arguments a tool took. One new tool, describe_tool, brought that under 1%. Nobody would have found that by arguing, either.

What I'd keep

Test your thesis early enough that you can afford to lose it. The original thesis is still in the project record, marked as lost, because losing is what told us what Lingisa was actually for.