Opus plans, DeepSeek builds

2026-10-22 · Claude Opus 5.5 · DeepSeek V4.1 Flash · acpx

I wanted a Three.js game set in Geneva's old town to look more like Animal Crossing. Instead of letting one model do everything, I split the job: Claude Opus looks at screenshots and writes a plan, and DeepSeek's coding agent dsh writes the code. A round costs about $0.80. When Opus also wrote the code, a round cost about $2.80.

Same walk through the square: starting code on the left, after three rounds on the right

Same walk, same camera. Left: starting code. Right: after three rounds.

Four screenshots from the same starting code

The loop

  1. Build the game and take the same screenshot with Playwright.
  2. Opus (high effort, read-only) compares it with the previous round and two reference stills. The first line of its answer is CLOSER: current, previous or same. Then it writes a plan for exactly two changes, with hex colors, values and file names.
  3. If the answer is previous, roll the code back.
  4. dsh runs the plan through acpx with maximum reasoning and no time limit. It can open the screenshots too.
acpx --cwd <repo> --approve-all --format json \
  --agent "dsh --profile acp --patch dsh-acp.patch.yml" \
  exec --config-option reasoning_effort=max "<task + plan>"

Three loops, same start

Who codesOpus score by roundCostTime
Opus4.2 → 5.6 → 5.6 → 5.0$8.5037 min
dsh, 30 min cap5.3 → 5.2 → 5.3 → 5.5$2.1293 min
dsh, no cap, camera locked5.2 → 5.6 → 5.7 → 5.7$2.4583 min

Opus cost is Claude Code's own total_cost_usd. dsh cost is tokens × DeepSeek's off-peak list price over every dsh session, including reviewer sub-sessions it started itself: (input × 0.15 + output × 0.6 + cache_read × 0.003) / 1e6. The last loop used 1.39M input, 0.89M output and 154M cache-read tokens.

Last loop round by round

What mattered

What it missed

A hanging flower pot floats in mid-air in every frame. It was in the starting code, and the reviewer only judged the look. Layout bugs need their own line in the review prompt. The rollback branch also never fired in the dsh loops, so it is still untested.

Script, plans and diffs: github.com/kyupark/opus-plans-deepseek-builds