第二十四章 魔高一尺
周三下午。Bug Café。
老周看了一眼吧檯後面的鐘。「一點你就來了,今天不加班?」
「自由職業沒有加班。」韓路一端著美式坐到角落的老位置。「只有隨時在班。」
老周哼了一聲。「我當程式設計師的時候可不這麼自我感動。」
韓路一打開電腦。
CodeSafe的官網還停在上次的標籤頁。註冊數漲到了三千八。好評測評從三篇變成了七篇。
每篇測評他都看了。
他喝了一口咖啡。下載了CodeSafe的公測版,本地裝好,打開。
上次只掃了一眼輪廓。這次要看仔細的。
開視界。
灰色代碼流從屏幕底部浮上來,像透視圖一樣在眼前鋪開,前端框架、後端微服務、數據管道、模型推理層,CodeSafe的整個技術棧一覽無餘。
先說好話。
前端React加TypeScript,組件拆分規範,交互動效流暢。UI比BugKiller好看三個檔次,他們有專門的前端團隊,這不是一個人能追的差距。後端Go寫的網關,Python跑推理,中間Kafka做消息隊列。教科書一樣的技術選型。支持三種語言,檢測速度不慢。企業集成的文檔寫得比很多大廠都好。
視界在整體代碼質量旁邊浮出一個評級標籤:
【代碼質量評級:B+】
不差。斯坦福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」。
他點開看了兩眼,回了句「收到,早點休息」。
韓路一把朵朵的畫貼在顯示器邊上。
然後打開編輯器。
瓢蟲瞪著兩隻大眼睛看他。
老周看了一眼吧檯後面的鐘。「一點你就來了,今天不加班?」
「自由職業沒有加班。」韓路一端著美式坐到角落的老位置。「只有隨時在班。」
老周哼了一聲。「我當程式設計師的時候可不這麼自我感動。」
韓路一打開電腦。
CodeSafe的官網還停在上次的標籤頁。註冊數漲到了三千八。好評測評從三篇變成了七篇。
每篇測評他都看了。
他喝了一口咖啡。下載了CodeSafe的公測版,本地裝好,打開。
上次只掃了一眼輪廓。這次要看仔細的。
開視界。
灰色代碼流從屏幕底部浮上來,像透視圖一樣在眼前鋪開,前端框架、後端微服務、數據管道、模型推理層,CodeSafe的整個技術棧一覽無餘。
先說好話。
前端React加TypeScript,組件拆分規範,交互動效流暢。UI比BugKiller好看三個檔次,他們有專門的前端團隊,這不是一個人能追的差距。後端Go寫的網關,Python跑推理,中間Kafka做消息隊列。教科書一樣的技術選型。支持三種語言,檢測速度不慢。企業集成的文檔寫得比很多大廠都好。
視界在整體代碼質量旁邊浮出一個評級標籤:
【代碼質量評級:B+】
不差。斯坦福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」。
他點開看了兩眼,回了句「收到,早點休息」。
韓路一把朵朵的畫貼在顯示器邊上。
然後打開編輯器。
瓢蟲瞪著兩隻大眼睛看他。