周三下午。Bug Café。
老周看了一眼吧臺(tái)后面的鐘?!耙稽c(diǎn)你就來了,今天不加班?”
“自由職業(yè)沒有加班?!表n路一端著美式坐到角落的老位置?!爸挥须S時(shí)在班。”
老周哼了一聲?!拔耶?dāng)程序員的時(shí)候可不這么自我感動(dòng)?!?/p>
韓路一打開電腦。
CodeSafe的官網(wǎng)還停在上次的標(biāo)簽頁。注冊(cè)數(shù)漲到了三千八。好評(píng)測評(píng)從三篇變成了七篇。
每篇測評(píng)他都看了。
他喝了一口咖啡。下載了CodeSafe的公測版,本地裝好,打開。
上次只掃了一眼輪廓。這次要看仔細(xì)的。
開視界。
灰色代碼流從屏幕底部浮上來,像透視圖一樣在眼前鋪開,前端框架、后端微服務(wù)、數(shù)據(jù)管道、模型推理層,CodeSafe的整個(gè)技術(shù)棧一覽無余。
先說好話。
前端React加TypeScript,組件拆分規(guī)范,交互動(dòng)效流暢。UI比BugKiller好看三個(gè)檔次,他們有專門的前端團(tuán)隊(duì),這不是一個(gè)人能追的差距。后端Go寫的網(wǎng)關(guān),Python跑推理,中間Kafka做消息隊(duì)列。教科書一樣的技術(shù)選型。支持三種語言,檢測速度不慢。企業(yè)集成的文檔寫得比很多大廠都好。
視界在整體代碼質(zhì)量旁邊浮出一個(gè)評(píng)級(jí)標(biāo)簽:
【代碼質(zhì)量評(píng)級(jí):B 】
不差。斯坦福CS博士加谷歌的經(jīng)歷不是白混的,這套系統(tǒng)的工程化水準(zhǔn)放在創(chuàng)業(yè)公司里算頂尖。趙文淵有兩把刷子。
韓路一繼續(xù)往下看。
視界深入核心檢測引擎。代碼流變密,信息量陡增。他集中注意力,精力值開始加速消耗。
然后他看到,核心引擎上方,一行黃色WARNING緩緩浮現(xiàn):
【架構(gòu)風(fēng)險(xiǎn):檢測引擎采用全量遍歷 大模型推理路線|當(dāng)前性能:代碼庫<5萬行時(shí)表現(xiàn)優(yōu)秀|WARNING:代碼庫規(guī)模超過20萬行后,誤報(bào)率將非線形上升(預(yù)估:5萬行誤報(bào)率3%→20萬行誤報(bào)率17%→50萬行誤報(bào)率41%)|根因:特征提取未做分層剪枝,大規(guī)模代碼庫的上下文窗口溢出導(dǎo)致模型幻覺】
5萬行,3%。
20萬行,17%。
50萬行,41%。
三個(gè)數(shù)字,非線形上升。
現(xiàn)在CodeSafe的用戶全是個(gè)人開發(fā)者和小團(tuán)隊(duì),代碼庫普遍在5萬行以下。體驗(yàn)好,好評(píng)是真的。趙文淵不是在作假。他的產(chǎn)品在當(dāng)前用戶規(guī)模下確實(shí)能打。
但企業(yè)客戶的代碼庫動(dòng)輒幾十萬行。
這不是Bug。Bug可以修。這是架構(gòu)選型的根本性問題,特征提取沒做分層剪枝,核心引擎直接用大模型全量推理。5萬行以下沒問題,上下文窗口裝得下。超過20萬行,窗口溢出,模型開始產(chǎn)生幻覺。檢測結(jié)果從“準(zhǔn)確”變成“瞎猜”。
要修?重寫核心引擎。
至少三個(gè)月。
趙文淵大概率還不知道。公測期用戶全是小項(xiàng)目,數(shù)據(jù)漂亮得很,他肯定覺得自己牛逼壞了。
等真接了企業(yè)單,才會(huì)發(fā)現(xiàn)這事有多棘手。
韓路一關(guān)掉視界。精力掉了六十多點(diǎn)。
他靠在椅背上,看著CodeSafe首頁那行“最完整的AI代碼審查方案”。
蘇念念推門進(jìn)來帶了一股外面的風(fēng)。圍巾還沒摘,徑直走到韓路一對(duì)面坐下,掏出電腦。兩人約好了在Bug Café碰面。
“我注冊(cè)了CodeSafe?!?/p>
“嗯?!?/p>
“搞個(gè)對(duì)比測試?”她打開一個(gè)GitHub倉庫?!斑@個(gè)開源項(xiàng)目,Python后端服務(wù),大概八萬行。各跑一遍?!?/p>
兩臺(tái)電腦同時(shí)開始跑。
BugKiller的進(jìn)度條先到底。CodeSafe慢了快一分鐘。
結(jié)果出來了。蘇念念把兩個(gè)窗口并排放在一起。
BugKiller報(bào)了50個(gè)。CodeSafe報(bào)了36個(gè)。
韓路一又開視界掃了一遍,51個(gè)Bug。
他拿視界的結(jié)果當(dāng)答案,逐條比對(duì)。BugKiller:50個(gè)里48個(gè)是真的,2個(gè)誤報(bào),漏了3個(gè)。CodeSafe:36個(gè)里32個(gè)是真的,4個(gè)誤報(bào),漏了19個(gè)。
看了二十分鐘源碼確認(rèn)之后,他把誤報(bào)數(shù)據(jù)告訴蘇念念。
蘇念念在本子上算?!罢`報(bào)率,我們百分之四,他們百分之十一。”
漏報(bào)率他沒提,總不能跟蘇念念解釋自己為什么知道真實(shí)答案是51個(gè)。心里默算了一下,百分之六比百分之三十七。
八萬行代碼庫上,CodeSafe的誤報(bào)率明顯上升了。
但數(shù)量還不是關(guān)鍵。
蘇念念點(diǎn)開BugKiller第一條檢測結(jié)果。Bug描述下面掛著一段影響評(píng)估:“上線后影響預(yù)測:高并發(fā)場景下觸發(fā)概率約12%,預(yù)估月均影響用戶1.2萬,修復(fù)優(yōu)先級(jí):P0?!焙竺孢€有三行修復(fù)路徑。
她點(diǎn)開CodeSafe的同一條。
“發(fā)現(xiàn)潛在空指針異常。建議檢查。”
一句話。沒了。
蘇念念看完兩邊數(shù)據(jù),安靜了一會(huì)兒。
“檢測能力我們碾壓他們?!彼ь^。“他們語言支持比我們多,企業(yè)那套集成也做得早,但這些都是時(shí)間問題?!?/p>
“對(duì)。而且他們的引擎在更大的代碼庫上會(huì)出問題?!表n路一說?!坝脩袅可蟻碇笞约簳?huì)發(fā)現(xiàn)的?!?/p>
蘇念念瞇了一下眼睛?!澳阍趺粗溃俊?/p>
“看架構(gòu)猜的。全量遍歷加大模型推理,代碼庫規(guī)模一大,上下文窗口扛不住。誤報(bào)就炸了?!?/p>
蘇念念盯著他看了兩秒。
沒追問。
她合上本子翻到新一頁,標(biāo)題寫了五個(gè)字,“公測方案v0.1”。
“競品分析先過一遍。”蘇念念邊寫邊說?!癈odeSafe團(tuán)隊(duì)十五人。融資額具體查不到,但按趙文淵的配置,保守估計(jì)是你全部積蓄的五十倍?!?/p>
“謝謝,很提氣?!?/p>
“錢和人我們都不占優(yōu)。但他重我們輕,這一點(diǎn)沒變。所以不能跟他全面打,得挑一個(gè)他補(bǔ)不上的點(diǎn)。”
蘇念念翻到新一頁,筆尖點(diǎn)了點(diǎn)紙。
“就打影響評(píng)估。別的都不碰?!?/p>
蘇念念指著屏幕上的對(duì)比?!癈odeSafe告訴你有Bug。BugKiller告訴你這個(gè)Bug上線后有什么影響。這完全是品類差距?!?/p>
“上線方案呢?”
“先在論壇,V2EX和掘金發(fā)帖,內(nèi)測用戶那批人讓他們幫忙擴(kuò)一波,馬小飛那邊再出一期視頻。首日注冊(cè)能破五百就算成功了?!彼掷锏墓P沒停。
“什么時(shí)候上線?“
蘇念念打開日歷看了一眼,“假期回來第一天。上線方案加推廣素材,趁假期搞定。五一大家放假,六號(hào)上班第一天刷論壇正好看到。再拖下去CodeSafe用戶養(yǎng)起來就不好搶了。你寫代碼的時(shí)間夠嗎?”
“夠。”
“那就六號(hào)?!?/p>
說著她就給馬小飛發(fā)起了微信。
窗外天暗了。老周給他倆各續(xù)了一杯,把燈調(diào)亮了點(diǎn)。韓路一寫代碼,蘇念念做方案。中間幾乎沒說話。偶爾蘇念念抬頭問一句“API文檔改了嗎”,或者韓路一甩過來一段邏輯讓她確認(rèn)產(chǎn)品流程。
八點(diǎn)半。老周開始收桌子。
“二位,打烊了?!?/p>
蘇念念抬頭看時(shí)間?!斑@么快?”
老周笑著搖搖頭。
兩人收拾東西出門,一起走向地鐵站,一邊繼續(xù)討論上線方案。
地鐵站口,蘇念念忽然停下來?!奥芬弧!?/p>
“嗯?”
蘇念念笑了笑。
“……沒事。明天見。”
她進(jìn)地鐵站了。韓路一轉(zhuǎn)身往家走。
到502門口的時(shí)候,差不多九點(diǎn)了。
門口放著一個(gè)牛皮紙袋。
他蹲下來拎起來。是一塊小蛋糕,奶油抹得歪歪扭扭,上面用巧克力醬畫了個(gè)笑臉。紙袋底下壓著一張蠟筆畫。
畫上是一個(gè)戴眼鏡的小人坐在電腦前。旁邊趴著一只巨大的瓢蟲。瓢蟲的殼是紅色的,上面三個(gè)黑色大圓點(diǎn)。
他翻到背面。歪歪扭扭的鉛筆字,每一筆都很用力:
“l(fā)u一哥哥加you”
“加”字寫反了。
韓路一站在門口吃了一口。奶油太甜,蛋糕有點(diǎn)硬。他又吃了一口。
剩下的放進(jìn)冰箱。
手機(jī)亮了。
顧司玥:“林晚晴的case予微接了。初步評(píng)估勝算很大?!?/p>
他回了一句“謝謝顧律師”。
又一條。蘇念念發(fā)了個(gè)飛書文檔鏈接,“BugKiller公測上線方案v0.1”。
他點(diǎn)開看了兩眼,回了句“收到,早點(diǎn)休息”。
韓路一把朵朵的畫貼在顯示器邊上。
然后打開編輯器。
瓢蟲瞪著兩只大眼睛看他。