Wednesday afternoon. Bug Café.
Old Zhou glanced at the clock behind the bar. "You're here at one? No overtime today?"
"Freelancers don't have overtime." Han Luyi carried an Americano to his usual corner seat. "We're just always on the clock."
Old Zhou snorted. "I wasn't this self-congratulatory when I was a programmer."
Han Luyi opened his laptop.
CodeSafe's official website was still open in the same tab as last time. Its registered users had risen to 3,800. Positive reviews had gone from three to seven.
He had read every one of them.
He took a sip of coffee, downloaded CodeSafe's public beta, installed it locally, and opened it.
Last time, he had only taken a quick look at the outline. This time, he needed to examine it carefully.
Activate Sight.
Gray streams of code rose from the bottom of the screen and spread out before his eyes like a perspective diagram. The frontend framework, backend microservices, data pipelines, model inference layer—the entirety of CodeSafe's tech stack was laid bare.
First, the good parts.
React with TypeScript on the frontend, properly structured components, smooth interactive animations. The UI was three tiers better-looking than BugKiller's. They had a dedicated frontend team; that was a gap one person couldn't catch up with. A Go gateway on the backend, Python for inference, Kafka as the message queue in between. Textbook technical choices. It supported three languages, and its detection speed was decent. Its enterprise integration documentation was better than that of many major tech companies.
Beside the overall code quality, Sight produced a rating tag:
[Code Quality Rating: B+]
Not bad. A Stanford CS PhD and Google experience weren't just for show. This system's engineering standards were top-tier among startups. Zhao Wenyuan had real skills.
Han Luyi continued downward.
Sight delved into the core detection engine. The code streams grew denser, and the amount of information surged. He focused, and his energy began draining faster.
Then he saw a line of yellow WARNING slowly appear above the core engine:
50,000 lines, 3%.
200,000 lines, 17%.
500,000 lines, 41%.
Three numbers, rising nonlinearly.
CodeSafe's users were currently all individual developers and small teams, whose codebases generally stayed below 50,000 lines. The user experience was good, and the positive reviews were genuine. Zhao Wenyuan wasn't faking anything. His product really was competitive at its current user scale.
But enterprise clients' codebases easily ran into hundreds of thousands of lines.
This wasn't a bug. Bugs could be fixed. This was a fundamental flaw in the architectural choice: feature extraction had no hierarchical pruning, and the core engine directly ran full inference through a large model. Below 50,000 lines, there was no problem—the context window could hold it all. Beyond 200,000 lines, the window overflowed, and the model began hallucinating. Detection results went from "accurate" to "wild guesses."
To fix it? Rewrite the core engine.
At least three months.
Zhao Wenyuan most likely didn't know yet. All public beta users had small projects, so the data looked fantastic. He probably thought he was hot stuff.
Only after landing an enterprise contract would he realize how thorny this was.
Han Luyi shut down Sight. His energy had dropped by more than sixty points.
He leaned back in his chair and looked at the line on CodeSafe's homepage: "The most complete AI code review solution."
Su Niannian pushed open the door, bringing in a gust of wind from outside. Without even taking off her scarf, she walked straight over, sat across from Han Luyi, and pulled out her laptop. They had agreed to meet at Bug Café.
"I registered for CodeSafe."
"Mm."
"Want to run a comparison test?" She opened a GitHub repository. "This open-source project. Python backend service, around 80,000 lines. Let's run both through it."
Both laptops began running at the same time.
BugKiller's progress bar reached the end first. CodeSafe was nearly a minute slower.
The results came out. Su Niannian placed the two windows side by side.
BugKiller reported 50 issues. CodeSafe reported 36.
Han Luyi activated Sight and scanned it again. Fifty-one bugs.
Using Sight's results as the answer key, he compared them one by one. Of BugKiller's 50 reports, 48 were real and 2 were false positives; it missed 3. Of CodeSafe's 36 reports, 32 were real and 4 were false positives; it missed 19.
After spending twenty minutes checking the source code, he told Su Niannian the false-positive figures.
Su Niannian calculated in her notebook. "False-positive rate: four percent for us, eleven percent for them."
He didn't mention the miss rate. He couldn't exactly explain to Su Niannian how he knew the true answer was 51. He calculated it silently: six percent versus thirty-seven percent.
On an 80,000-line codebase, CodeSafe's false-positive rate had risen noticeably.
But the numbers weren't the key.
Su Niannian opened BugKiller's first detection result. Under the bug description was an impact assessment: "Predicted impact after deployment: approximately 12% trigger probability in high-concurrency scenarios, estimated average of 12,000 affected users per month, fix priority: P0." Below it were another three lines outlining a fix path.
She opened CodeSafe's report for the same issue.
"Potential null pointer exception found. Recommended checking."
One sentence. That was it.
Su Niannian looked over the data from both sides and fell silent for a while.
"Our detection capability crushes theirs." She looked up. "They support more languages than we do, and they started earlier on enterprise integrations, but those are both matters of time."
"Right. And their engine will run into problems on larger codebases." Han Luyi said. "Once their user base grows, they'll find out on their own."
Su Niannian narrowed her eyes. "How do you know?"
"I guessed from the architecture. Full traversal plus large-model inference—once the codebase gets too large, the context window can't handle it. Then the false-positive rate explodes."
Su Niannian stared at him for two seconds.
She didn't press further.
She closed her notebook, turned to a new page, and wrote five words as the heading: "Public Beta Plan v0.1."
"Let's go over the competitor analysis first." Su Niannian wrote as she spoke. "CodeSafe has fifteen people. I couldn't find their exact funding amount, but based on Zhao Wenyuan's background, a conservative estimate is fifty times your entire savings."
"Thanks. That's really encouraging."
"We have no advantage in money or manpower. But they're heavy and we're light—that hasn't changed. So we can't fight them on every front. We need to pick something they can't make up for."
Su Niannian turned to another page and tapped the paper with her pen.
"Hit them on impact assessment. Don't touch anything else."
Su Niannian pointed at the comparison on the screen. "CodeSafe tells you there's a bug. BugKiller tells you what impact that bug will have after deployment. That's an entirely different category."
"What about the launch plan?"
"First, we post on forums, V2EX, and Juejin. We'll get the beta users to help spread the word, then have Ma Xiaofei release another video. If first-day registrations break five hundred, we can call it a success." Her pen never stopped moving.
"When do we launch?"
Su Niannian opened her calendar and looked at it. "The first day back after the holiday. We'll finish the launch plan and promotional materials during the break. Everyone's off for May Day, so when they browse the forums on their first day back at work on the sixth, they'll see it. If we drag this out, CodeSafe will build up its users and become harder to compete with. Do you have enough time to code it?"
"Enough."
"Then the sixth."
As she spoke, she started a WeChat call with Ma Xiaofei.
Outside, the sky darkened. Old Zhou refilled both their cups and turned up the lights a little. Han Luyi wrote code while Su Niannian worked on the plan. They barely spoke in between. Every now and then, Su Niannian looked up to ask, "Did you revise the API documentation?" Or Han Luyi tossed her a piece of logic to confirm the product flow.
At eight thirty, Old Zhou started clearing the tables.
"You two, we're closing."
Su Niannian looked up at the time. "That fast?"
Old Zhou smiled and shook his head.
The two packed up and left, walking toward the subway station together while continuing to discuss the launch plan.
At the station entrance, Su Niannian suddenly stopped. "Luyi."
"Yeah?"
Su Niannian smiled.
"...Never mind. See you tomorrow."
She entered the station. Han Luyi turned and headed home.
By the time he reached the door of 502, it was nearly nine.
A kraft paper bag sat outside the door.
He crouched and picked it up. Inside was a small cake, its cream smeared on crookedly, with a smiling face drawn on top in chocolate sauce. Beneath the bag was a crayon drawing.
The drawing showed a bespectacled little person sitting at a computer. Beside him lay a huge ladybug. Its shell was red, with three large black dots.
He turned it over. Uneven pencil handwriting, every stroke pressed down hard:
"Brother Lu Yi, go you"
The character for "go" had been written backward.
Han Luyi stood at the door and took a bite. The cream was too sweet, and the cake was a little hard. He took another bite.
He put the rest in the refrigerator.
His phone lit up.
Gu Siyue: "Yu Wei has taken Lin Wanqing's case. The initial assessment says the chances of winning are very high."
He replied, "Thank you, Attorney Gu."
Another message came in. Su Niannian had sent a Lark document link: "BugKiller Public Beta Launch Plan v0.1."
He opened it, glanced through it, and replied, "Got it. Get some rest early."
Han Luyi taped Duoduo's drawing beside his monitor.
Then he opened his editor.
The ladybug stared at him with its big eyes.
Before you continue
Explore the wiki