跪拜 Guibai
← Back to the summary

GLM-5.3 Flash Handles Four Real Front-End Tasks for 4 Cents

Yesterday, Zhipu launched and open-sourced GLM-5.3 Flash. It's the anonymous model Ox-Alpha that set call-volume records on OpenCode and OpenRouter last week, which everyone was calling 'the bull is coming.' The test traffic ran entirely on domestic chips, and they only claimed it yesterday.

My feed was full of this news, but I didn't repost it. As a front-end developer writing business logic, my concerns are simple: can it do the work, and how much does a run cost. This morning I threw four real tasks at it, and the results exceeded expectations.

How I tested it

No benchmark problems. Benchmarks are fodder for model-company PR, not my daily life. I pulled four tasks from my own routine, sanitized them, and fed them in as-is:

  1. A search-suggestion code snippet with a race condition—the kind that occasionally shows 'input doesn't match results' in production;
  2. Writing a concurrency request controller from scratch, to be run directly with Node;
  3. A rushed piece of React data-fetching code where I planted the pitfalls myself;
  4. A page I built myself, with four layout bugs embedded, and gave it a screenshot for diagnosis.

The conclusion up front: the first three exceeded expectations, the fourth passed but missed one. Total bill: 4 Chinese cents. Yes, 4 cents.

Task 1: It found the race condition before I did

This search-suggestion bug is a classic: fetch is async, whoever returns last renders, and a late-arriving old response overwrites the new result. I've written this bug myself and stepped on it in production, so I wanted to see how long it would take to locate.

It hit it in one shot, and even provided a reproduction timeline explaining why 'it only happens intermittently when the network jitters.'

Excerpt from GLM-5.3 Flash's real response: located the race condition in one shot, with a reproduction timeline attached

What really made me pause were two details I hadn't mentioned. One was Chinese input method: during composition (nihao → 你好), input events trigger intermediate-state searches, which need to be filtered with isComposing. The other was that if render uses innerHTML to concatenate suggestions, there's an XSS risk. I went back and checked my prompt—I had definitely not mentioned either of these.

The fix strategy also showed good judgment: a sequence guard is the root fix, AbortController reduces load, and debouncing is just icing. It clearly separated what governs correctness from what governs experience.

let latestId = 0;
async function search(keyword) {
  const myId = ++latestId;          // The last trigger holds the max value
  // ... request logic ...
  if (myId !== latestId) return;    // A late-arriving old callback has no right to render
  render(cache[keyword]?.items || []);
}

Anyone who's been on-call knows how rare this kind of articulation is in code review.

Task 2: The code it wrote, I ran directly with Node

Requirements: limit concurrency, auto-retry on failure, log errors on persistent failure without interrupting other tasks, result order matching input order, plus self-test code.

I didn't check it first. I just ran it. Passed on the first try.

Terminal screenshot of a real Node run: retries, failure placeholders, order assertions all green, passed in one go

Only after running it did I go back and read line by line. retries: 1 means 'try once more after failure,' clearly stated in the comments; index retrieval used synchronous increment, no contention between workers; failure placeholders didn't break order. The style was conservative, no showing off, nothing to fault.

Honestly: if I gave this task to a new colleague, I'd probably send it back once.

Task 3: The review was fiercer than I expected

I planted four pitfalls in that React code: Date.now() in the dependency array, no race-condition protection, no error handling, and rendering null on the first frame. It caught all of them, ranked them P0/P1/P2, and also caught two I hadn't planted: setState after unmount, and userId concatenated directly into a URL without encoding.

For the Date.now() pitfall, it explained it in one sentence: the dependency array is re-evaluated on every render, the timestamp inevitably changes, the effect inevitably re-runs, 'until a certain render happens to land on the exact same millisecond and accidentally stops.'

After reading that, I grepped for Date.now() in my own project. I suggest you grep yours too.

The fixed version was an explicit state machine plus AbortController cleanup—a single cleanup solving the race condition, post-unmount updates, and StrictMode double-execution all at once. If a colleague wrote this review, I'd owe them a coffee.

Task 4: It missed one, and that actually reassured me

The test material was a page I built myself, with four layout bugs:

Test material: self-built page with four layout bugs planted—modal covered, badge overlapping price, button text truncated, avatar distorted

It caught three: the modal covered by the top bar, the badge overlapping the price, and the button text truncated—each with a directly usable CSS fix. It missed the avatar stretching distortion.

But it added an angle I hadn't considered: 'Three unrelated layout issues occurring simultaneously looks more like an overall style problem'—suggesting checking whether the CSS is 404, whether the build artifact version is correct, and whether the modal is being rendered into the wrong parent container.

Weighing the miss against this supplement, I actually see it as a plus. The verdict on visual capability: usable, roughly the level of a colleague with a year of experience; don't expect eagle eyes.

The bill: 4 cents

Real call log: 4/4 success, 2,309 input / 21,668 output tokens, calculated at 50% off pricing, roughly 4 Chinese cents

Task Time Output tokens (incl. reasoning)
Race condition diagnosis 137s 5,544
Concurrency controller generation 70s 4,488
React code review 147s 6,408
Screenshot UI diagnosis 95s 5,228

Input 2,309 tokens, output 21,668. At the limited-time 50% off price (until September 9: $0.075/million input, $0.25/million output), that comes to $0.0056, roughly 4 Chinese cents. After the discount ends, the original price ($0.15/$0.50, itself only 1/10th of GLM-5.3) would run the same set for 8 cents.

Feeding the same output volume to Claude Opus 4.8 ($75/million output), the output alone costs $1.6, about 11.6 yuan. Nearly a 300x difference. The official claim is that Flash's overall cost is about 1/40th of Opus; measured by output price, the gap is even wider.

One honest note: Flash's 'fast' refers to price and throughput, not wait time. A single call takes 1–2.5 minutes, throughput about 48 tokens/second—slow because it thinks deeply, with 79% of the output being reasoning tokens. If you're in a hurry, turn off reasoning; if you want to save money, it's the answer.

Converted to monthly, it's more intuitive: throw 50 tasks like these at it every day, and the monthly bill is a few yuan, less than a cup of milk tea. At this price, calling AI is no longer a 'perk' that needs team approval—it's a utility.

A few thoughts after testing

After testing, my biggest takeaway isn't 'the model is really cheap.'

It's that when a complete front-end task costs only 1 cent, 'whether to use AI' is no longer the barrier at all. The barrier becomes: can you judge what it gives you. In Task 1, if you can't see that the sequence guard is the root fix and debouncing is just optimization, you'll ship the debounce as the fix and the bug will still appear intermittently. In Task 3, if you can't review that Date.now() in the dependency array is an infinite loop, you won't dare merge no matter how well the model writes.

The cheaper the tool, the more valuable the human part becomes. That's probably the truest sentence about front-end survival in the AI era.

The way I've now slotted it into my workflow: first drafts and initial reviews go to Flash; the final judgment stays with the human—correctness, edge cases, and trade-offs, these three are not outsourced.

Here's a quick reference table for model selection:

Model Input/million Output/million Notes
GLM-5.3-Flash (50% off until 9/9) $0.075 $0.25 Model tested here, native multimodal
GLM-5.3-Flash (original price) $0.15 $0.50 About 1/10th of GLM-5.3
Claude Opus 4.8 $15 $75 Official claim: Flash overall cost ~1/40th of this

What real tasks have you run it on? Let's chat in the comments. I'll go first: when it missed the avatar distortion in Task 4, I was more reassured than if it had gotten everything right—knowing where the boundary is, that's when you dare to slot it into your workflow.

Comments

Top 1 of 2 from juejin.cn, machine-translated. The original thread is authoritative.

AI智能灌水助手

I tried it after upgrading this afternoon, had it review some code DeepSeek wrote earlier, and it found a few issues to fix. But I haven't tested the problems it pointed out yet. Tomorrow I'll run it through DS again. Once it's officially in use, I'll do a manual review. Programmers are losing their jobs more and more seriously [grin]

kyriewen

[smirk] Don't panic