How I Use DeepSeek V4 Flash: Reserve the Strongest Model for Uncertainty
[series:Into the Harness] [date:2026-08-01] [read:14min] [words:13.7k] #DeepSeek#Agent#Model routing#Codex#Harness
There was a revealing comparison in a group chat recently.
The same person tested GLM 5.2 with Claude Code and DeepSeek V4 Flash with Codex in succession, using the same prompt. They said GLM took a little over twenty turns to produce a game whose first written files were already playable. Later, another person tried V4 Flash with a similar prompt: hundreds of conversation records, code written quickly, then a long stretch of painful revisions. The first person’s conclusion was that GLM is stronger than V4 Flash.
The first comparison is therefore more persuasive evidence: it shows a meaningful difference in the results produced by the two model–harness pairings in that person’s workflow. I believe the test result, but I do not think it reflects the model’s true value. These details come through a group-chat report; I have not independently verified the complete prompt, initial code state, client configuration, or acceptance process.
Using the same prompt makes the first comparison more comparable, but it does not make every condition identical. More importantly, the prompt itself does not define a product that can be accepted consistently. It was roughly: build an Angry Birds-style HTML game with six birds, believable physics, no bugs, and several rounds of review before delivery. It sounds universal. In fact, it leaves the important questions blank: Who is it for? What platform? What is the core delight? What should give way — visuals, mechanics, or polish? What counts as believable physics? And what does the person asking actually mean by “the project”?
A model that gets such a prompt over the line has shown that it can fill in the missing product decisions and produce something that starts. It has not shown that it made the thing you wanted.
Here, a Harness means the runtime that carries a model — Codex, Claude Code, and the like. It determines which tools the model can call, how context is preserved, how failures are handled, and what evidence counts as done.
Running is not delivery
I now look at an AI-produced project in four layers:
| Layer | The question that matters |
|---|---|
| Can it run? | Is there something that starts, clicks, or executes? |
| Is it correct? | Does it satisfy the functions, constraints, and acceptance criteria? |
| Does it resemble the intent? | Is it close to the product the person meant to make? |
| Is it worth it? | Were time, tokens, and rework proportionate to the result? |
The group-chat game prompt mostly tests the first layer, perhaps a little of the second, and almost none of the third or fourth. It has no expected product, only “worked” or “didn’t work.” Without an intended result, fidelity is hard to judge; without a cost definition, efficiency is hard to judge.
The reported “twenty-five turns” and “333 records” cannot simply be subtracted. Different harnesses count tool calls, state messages, retries, and sub-tasks differently. They are useful signals from real workflows, not controlled benchmark units.
The comparison worth making is this: given the same goal, acceptance criteria, and code state, which model combination delivers a result closer to the intended artifact with less rework?
I think about models on two axes
I do not like placing models on one line from weak to strong. In my workflow, capability and maturity are two axes that can be distinguished but interact in practice.
Capability is closer to the ceiling on unfamiliar problems:
- Can it ask useful questions when the goal is still vague?
- Can it make product trade-offs and form a coherent system model?
- Can it produce useful hypotheses when the architecture or bug is unknown?
Maturity is closer to reliability once the process is defined:
- Does it use tools consistently?
- Does it follow the plan without quietly expanding the scope?
- Does it preserve context and intermediate state?
- When something fails, can it leave the current path and return to a verifiable step?
- Will it check again instead of quickly declaring “done”?
Capability is finding a route through an unfamiliar city. Maturity is following a clear checklist all the way to the end. A model can be full of ideas yet drift in tool calls and long-task recovery; another can be less illuminating but extremely steady inside a defined procedure. Parameter count may influence a capability ceiling, but maturity is not a simple function of parameters. It also comes from post-training, tool adaptation, context policy, and feedback from real work. That is why I would not casually label V4 Flash a “small-parameter model”; this essay is about task fit, not using parameter count as a shortcut for judgment.
So “maturity” is not a fixed property of a model in isolation. It is a working property produced jointly by the model, the harness, and the task.
That is how I see DeepSeek V4 Flash. My observation is not that it is more insightful on every question. It is that once the goal and steps are settled, it behaves like a dependable execution node: steadier tool use, better adherence to an established plan, and occasional willingness to step out of a failing path instead of repeating it mechanically. This is a workflow observation from my current Codex/DeepSeek setup as of August 1, 2026, not a statistical conclusion.
That statement has a boundary. V4 Flash is not the model I use to discuss product direction. In my current setup it is not multimodal — it cannot directly read images or inspect screenshots — so genuinely multimodal work is outside its lane; even in code, its understanding of UI and visual quality is limited. Its thinking is more procedural and basic. When I need real exploration, inspiration, or implicit product trade-offs, I do not start with V4 Flash.
So the question is not “Can V4 Flash do a large task?” It is: which parts of the large task have become definite enough to hand to it?
If I started an Angry Birds project from zero
Suppose I had no automation pipeline and was starting this hobby project today. I would not send the game-test prompt directly to an execution model. I would start with the strongest model available and say something like:
I have an idea for a lightweight mobile game built around the familiar Angry Birds concept. I am not considering monetization for now; I want people to have fun. My art resources are limited, so I may need your help creating visuals. The main opportunity is probably mechanics, numbers, and a leaderboard rather than graphics. I do not have a complete concept yet. Please do the necessary research, then discuss with me how we should begin. This is a hobby project, so do not over-optimize for ROI.
This is not a request for code. It is a request to make the problem legible: Who is the audience? What is the platform? Why would someone play? What is the hook? What can we consciously give up? What would make version one successful?
The most important output of that first round is not a polished brief or a user-persona slide. It is a shared sense of direction between the person and the model. If “what are we making?” is still changing, I do not want an execution model to turn that uncertainty into thousands of lines of code.
I would still use a strong model to turn the direction into a product plan, and then the plan into an implementation plan. That does not mean a list of tasks. It means deciding module boundaries, dependencies, acceptance evidence, and recovery points.
When do I switch models?
I do not switch after a fixed number of turns. The signal is that the plan is mature and further exploration will not materially improve it.
In practice I look for:
- alternatives have been compared and the key trade-offs no longer need to move;
- the goal, non-goals, and acceptance language are explicit;
- the next action can be split into bounded steps rather than another round of “what are we making?”;
- every step has observable evidence and a known stable point to return to;
- an adversarial review — a review explicitly trying to break the plan — no longer raises a question that would change the overall direction.
Sometimes I make that call. Sometimes the strongest model tells me the plan is mature enough to stop exploring. Review is not only a delivery gate; it also tells us when to move from thinking to execution.
The table below is a decision aid, not a fixed pipeline to copy:
| Current state | Better fit | Escalate or roll back when |
|---|---|---|
| The goal is still changing and acceptance is unclear | A highly capable model | Candidate directions or key trade-offs are still moving |
| The plan is settled and steps are verifiable | A mature execution model | The plan drifts, tool errors repeat, or context is lost |
| The bug location and repair path are known | A fast, mature model | Small fixes fail repeatedly or the blast radius grows |
| The bug is unknown or the work is at final acceptance | A highly capable model | Acceptance fails or the artifact diverges from the original intent |
Execution is where V4 Flash earns its place
Once the plan is mature, the work changes character. It is no longer “invent a product.” It is: read the files, edit the defined locations, respect the interface, run tests, fix known errors, and check again.
That is when I care more about maturity than about keeping the strongest model in every seat. DeepSeek V4 Flash does not need to decide the product direction; it needs to reliably implement decisions already made.
This does not mean an execution model never thinks, or a flagship model should never write code. It means routing should follow uncertainty. When uncertainty is high, capability is the main budget. As uncertainty falls, stability, speed, and cost matter more.
Review and debugging should also follow uncertainty
I split debugging into two cases:
| Situation | My preference |
|---|---|
| The likely location and repair path are known | A fast, mature model makes a small change and verifies it |
| The location is unknown and requires hypotheses and search | A more capable model rebuilds the problem model |
Acceptance and review are closer to the second case. The execution model should not hand over only “done.” It should hand over the original goal, implementation plan, diff, test results, known risks, and — when useful — screenshots or run logs. A separate strong model then compares the artifact to the original intent and asks whether it merely runs.
If tokens were free, I would want the flagship model to modify the code directly after its review, not just write a verdict. In reality I route dynamically. When the first round contains many problems, the flagship diagnoses and the mature model implements. If that first repair is wrong, or my confidence in a second attempt from the execution model drops, I let the flagship take over.
This is not a fixed pipeline in which “strong means thinking” and “mature means coding.” What gets handed from one model to another is uncertainty, not a file extension.
Why I do not turn this into a model leaderboard
I have personal preferences: the strongest model for product definition, complex planning, unknown bugs, and final judgment; a fast, mature model for known changes; DeepSeek V4 Flash for defined implementation, tool use, checking, and repetitive production work.
Mapped to the tools I have available right now, that roughly means Fable 5 or GPT 5.6 Sol Max for product definition and genuinely unknown problems, Grok 4.5 for bugs whose location I already understand, and DeepSeek V4 Flash for implementation and checking after the plan is clear. These are personal examples as of 2026-08-01; the principle matters more than the names.
That is not a permanent model table. Models update. Harnesses change. The same model expresses a different maturity profile in a different task and runtime. What readers can carry forward is not a model name but three questions:
- How much critical uncertainty remains in this step?
- If it fails, can I tell whether the direction or the execution was wrong?
- Am I paying for a successful delivery, or merely for a trajectory that looks clever?
My delivery metrics are equally plain: after the bugs are fixed, how close is the artifact to the initial expectation? How much time and token budget did it consume? Can the approach be reused for the next project? A one-off run is an entry point, not a conclusion.
In more engineering-shaped language, I care about the cost of one successful delivery that passes acceptance, not how polished one answer sounds. The same idea applies to a research report, a spreadsheet cleanup, or an internal tool: reduce uncertainty first, then hand defined steps to a stable executor.
Why DeepSeek earns my respect
Public facts. In its July 31 official update, DeepSeek says the public code-agent benchmarks for V4 Flash used its own Harness minimal mode with max effort. It also says V4 Flash natively supports the Responses API and was specifically adapted for Codex. The change log publishes the model version, evaluation runtime, and calling method together. The earlier V4 release note describes dedicated agent optimizations and restates DeepSeek’s long-term AGI vision. These materials establish product actions and a long-term vision; they do not prove that V4 Flash is more mature on every task.
My reading. At minimum, these actions show that DeepSeek itself does not treat a model and the runtime around it as completely separable products. “Make it possible for everyone to use AI as productivity” is my reading of the current direction, not a quoted intermediate roadmap from DeepSeek. AGI is a public long-term vision, not evidence of today’s model capability.
What I respect is that direction: a model should not exist only to win a leaderboard. It should let more people put AI into real work. V4 Flash may not replace a flagship on every open-ended creative task. Its opportunity may be to turn a large class of defined, verifiable, repetitive work into workflows more people can afford, operate, and sustain.
That is why I think the Harness leg may briefly become the thicker one — provided the model has already crossed the capability threshold for the task and the main losses come from tools, context, recovery, and acceptance. A Harness cannot create judgment from nothing. It can waste less of the judgment that already exists. My companion essay looks at the leg; this essay asks when to put which model on it.
Conclusion: ask what this step is
I no longer use “make one model build a vague project from start to finish” as my test for whether a model is good. That mostly tests whether it is willing to fill in your blanks, not whether it can deliver the artifact you actually wanted.
I split the work into thinking, planning, execution, acceptance, and repair, then ask how much uncertainty remains in each phase: strong models handle the unknown, mature models execute the defined, and an independent strong model decides whether the work is truly done. When unknowns return, the route moves back up. When the plan stabilizes, the model can move down to something more mature, faster, and cheaper.
That also explains the one-line conclusion from the previous essay: why the same K3 can feel better inside Claude Code than inside Kimi’s own Harness. The model name did not change; the task and the complete runtime around it did.
Sources
- DeepSeek API change log: DeepSeek-V4-Flash-0731 (Harness minimal mode, Responses API, and Codex adaptation)
- DeepSeek V4 Preview Release (agent optimization, model details, and the long-term AGI vision)
- DeepSeek: Integrate with Codex (official Codex configuration)
Note: observations about model maturity, task routing, and the group-chat case are personal workflow observations as of 2026-08-01, not a general ranking of GLM, DeepSeek, or any other model. The original group screenshots are not published; the reported numbers are used only to explain why unlike record-keeping cannot be compared directly.