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