第351章 內測之夜
九月上旬。
BJ的秋老虎還在發威,蟬鳴聲從道場院牆外頭一陣一陣地灌進來。
白子良盯著面前的電腦螢幕,螢幕上是蒼鷹發來的最終測試報告。
QGP平台內測版,如期完成。
他拿起電話,撥通了蒼鷹的號碼。
「準備好了?」
「隨時。」蒼鷹的聲音帶著連續熬夜後特有的沙啞。
白子良靠在椅背上,手指在桌面上無意識地敲了兩下。
「不搞封閉測試了。」
電話那頭沉默了兩秒。
「你說什麼?」
「邀請五十個人,同時線上對弈。」
蒼鷹的呼吸宣告顯粗重了。
「五十個?你知道咱們現在才三台伺服器吧?」
「知道。」
「你知道其中任何一個節點如果扛不住,整個系統會像多米諾骨牌一樣——」
「知道。」
白子良打斷他。
「如果五十個九段同時線上系統都不崩,QGP就能扛住任何場面。」
「反過來說,如果扛不住,那現在崩比上線以後崩強一萬倍。」
蒼鷹沉默了很久。
「行。你是老闆。」
他頓了頓,又補了一句。
「名單你定?」
白子良從抽屜里摸出一張早就寫好的紙。
上面密密麻麻列著五十個名字。
趙博揚、常天昊、張文東。
全網首發更新 TW 看書網解書荒,𝔰𝔥𝔲.𝔱𝔴超實用
金文玉、關宇翔、蘇晚晴。
甚至還有一個用紅筆圈出來的名字——朴一星。
蒼鷹聽完名單,聲音都變了調。
「朴一星?你確定?那哥們兒上次被你打到投子的時候差點把棋盤掀了,他會來?」
「趙老師跟他有私交,面子夠大。」
白子良把紙折好塞回抽屜。
「再說了,朴一星這種人,你越不請他,他越覺得你怕他。請了他,他反而非來不可。」
蒼鷹在電話那頭髮出一聲意味不明的笑。
「行,我去準備。九月十二號,晚八點。」
「對了,」白子良在掛電話前加了一句,「老陳的頭髮還剩多少?」
「別提了。」蒼鷹的語氣裡帶著真實的心疼。「上禮拜他洗頭的時候,下水道堵了。」
白子良沒忍住,笑出了聲。
九月十二日。
晚八點整。
中關村那間半地下室的辦公室里燈火通明,三台伺服器的機箱風扇拼了命地轉,嗡嗡聲像一群被困住的野蜂。
老陳戴著他那頂永遠不摘的鴨舌帽,眼睛死死盯著主監控螢幕。
旁邊兩個程式設計師一人抱著一杯冷掉的速溶咖啡,大氣都不敢出。
蒼鷹坐在最裡面的工位上,左手握著電話聽筒,右手懸在鍵盤上方,十根手指微微彎曲,像蓄勢待發的彈簧。
電話那頭是白子良。
白子良此刻坐在玄天道場二樓的電腦房裡,面前是一台386的老古董顯示器,螢幕上跑著QGP的後台監控面板。
線上人數:0。
八點零一分。
第一個亮起來的ID是「棋聖」。
趙博揚從棋院辦公室登入了。
線上人數跳到1。
緊接著,「磐石公主」上線。蘇晚晴在道場女生宿舍。
2。
「金童」。金文玉就在隔壁房間,白子良甚至能聽到他拖椅子的聲音。
3。
然後像開了閘一樣。
5,8,12,19,27。
常天昊從家裡的書房登入。張文東用的是棋院的公用電腦。關宇翔不知道從哪裡借了台筆記本,訊號飄忽不定。
白子良盯著數字往上蹦,心跳不自覺地加快了。
他以為自己早就過了會緊張的年紀。
畢竟前世今生加起來,他經歷過的大場面夠寫三本書了。
但此刻看著這些數字,他掌心居然微微出汗。
這不是棋盤上的勝負。
棋盤上輸了,最多丟一盤棋。
這要是崩了,幾個月的心血、團隊的命、圍棋的未來,全得跟著一塊兒崩。
35。
38。
40。
42——
螢幕上的數字突然卡住了。
頁面重新整理的轉圈圖示開始轉個不停。
白子良的心往下沉了半拍。
蒼鷹的聲音幾乎是吼著傳過來的。
「BJ節點負載飆到89%!上海節點正常,但東京節點沒有響應——」
他停了半秒,擊鍵聲噼里啪啦響成一片。
「日本那邊的ISP做了IP封鎖!」
白子良攥著聽筒的手指收緊。
東京節點。
那是專門為日韓棋手設定的接入點。
ISP層面的IP封鎖,不是隨便一個技術人員拍腦袋就能幹的事。
這意味著有人提前跟日本的網際網路服務商打了招呼。
能做到這件事的人,他腦子裡只有一個名字。
程謹。
K-Go還沒上線,這條狗已經開始咬人了。
白子良把情緒壓下去,聲音很穩。
「東京節點放棄。流量切到新加坡備用伺服器。」
「新加坡節點的頻寬只有東京的六成——」
「夠用。切。」
蒼鷹不再廢話。
鍵盤聲密集得像機關槍掃射。
老陳在旁邊死死盯著負載曲線,嘴唇發白。
一分鐘。
兩分鐘。
兩分四十七秒。
蒼鷹的聲音重新傳來,這次帶著如釋重負的氣音。
「切完了。新加坡節點接管成功,負載穩定在61%。」
白子良長長地吐了一口氣。
螢幕上的轉圈圖示消失了。
線上人數重新開始跳動。
43。
45。
47。
50。
滿了。
白子良看著那個「50」的數字,後背的汗已經把T恤濕透了。
他沒有慶祝。
心裡一直在響著警報。
程謹的手,伸得比他想像的更遠。更快。
也更髒。
內測正式開始。
五十位中國圍棋界最頂尖的頭腦,第一次同時出現在同一個虛擬空間裡。
棋譜資料像潮水一樣湧入伺服器。
每一秒都有新的落子資訊在跳動。
這是圍棋史上從未有過的畫面。
反饋也很快來了。
趙博揚下完第一盤棋後,發了一條訊息。
白子良點開。
「延遲幾乎感覺不到,落子手感很流暢。」
白子良剛露出笑容,就看到後面還跟著一句。
「但介面太醜了。能不能換個好看點的棋盤?這個顏色像食堂的案板。」
白子良愣了一下。
棋聖吐槽UI,這畫面實在太超現實了。
他還沒來得及回復,金文玉的訊息彈了出來。
「能不能加個聊天功能?」
「我想在下棋的時候罵對面。」
白子良揉了揉太陽穴。
職業圍棋手的需求,跟他想像的完全不在一個頻道上。
他把這些反饋老老實實記下來,發給蒼鷹。
蒼鷹回了一個字:「……」
然後是老陳的語音訊息,聲音裡帶著疲憊的絕望。
「加聊天功能?他知不知道我現在連覺都沒得——」
白子良果斷把語音關了。
內測進行到第二個小時。
蒼鷹的聲音突然從電話里傳來,不再是先前的緊張或疲憊。
這次,他的語氣很冷。
「老大,有情況。」
白子良正在記錄棋手反饋,筆停在半空。
「說。」
「後台出現了一個異常帳號。」
蒼鷹調出資料,念出那個ID。
「'觀棋不語'。」
「沒有收到邀請碼。沒有走正常的註冊流程。但它繞過了驗證系統,自己登了進來。」
白子良皺眉。
邀請碼驗證是蒼鷹親自設計的多重加密系統。在這個年代,能硬破這套東西的人,全中國用兩隻手數得過來。
「它在幹什麼?」
「沒有對弈。」蒼鷹的聲音壓得更低了。「它在旁觀。旁觀所有正在進行的對局。」
他頓了一下。
「下載頻率極高。每三秒抓取一次棋譜資料。」
白子良的眼神瞬間變了。
「追蹤IP。」
「追了。多層VPN跳轉,從東京跳到法蘭克福,再從法蘭克福跳到一個匿名節點。」
蒼鷹的聲音里出現了罕見的沉重。
「追不到。」
白子良慢慢地把筆放下。
「有人在偷資料。」蒼鷹說。
這句話落在安靜的房間裡,像石頭砸進深水。
白子良沉默了三秒。
「鎖死它。」
蒼鷹沒有猶豫。
他的手指落上鍵盤的瞬間,中關村地下室的空氣彷佛凝固了。
老陳和兩個程式設計師不知道發生了什麼,但他們從蒼鷹的背影上讀出了兩個字——
開戰。
這是一場沒有硝煙的攻防戰。
蒼鷹封鎖了第一條通道。「觀棋不語」的資料流中斷了零點七秒。
然後對方就從另一個埠重新接入了。
蒼鷹封第二條。
對方換第三條。
三十秒。
每次蒼鷹堵上一個洞,對方都能在三十秒內找到新的縫隙鑽進來。
這個速度,這個精準度。
蒼鷹的額頭開始冒汗。
他在這個圈子裡橫著走了很多年,敢說自己國內頂尖。
但此刻,他感受到了一種久違的壓力。
對面這個人,水平不在他之下。
甚至可能更高。
攻防持續了十五分鐘。
蒼鷹的T恤後背全濕了。
他知道不能再這麼耗下去。硬碰硬只會讓對方摸清自己的防禦體系。
他做了一個決定。
蒼鷹故意開啟了一個看似脆弱的埠。
埠的許可權設定鬆散得像沒上鎖的大門,資料傳輸協議用的是最基礎的HTTP明文。
對任何高手來說,這都是一個一眼就能看穿的陷阱。
但蒼鷹賭的是人性。
長時間的攻防已經消耗了對方的耐心。
當一個焦躁的人面前突然出現一扇虛掩的門,他會怎麼做?
他會猶豫一秒。
然後推門進去。
因為他等不了了。
三秒後,「觀棋不語」的資料流湧入了那個埠。
蒼鷹嘴角的肌肉繃緊。
一個回車鍵。
所有出口瞬間關閉。
「觀棋不語」的連線資訊被完整地鎖死在了伺服器日誌里。
帳號被強制斷線的剎那,那道資料流像被掐住脖子的蛇一樣劇烈扭動了一下,然後徹底消失。
老陳在後面長長地出了一口氣,鴨舌帽都歪了。
但蒼鷹沒有放鬆。
他盯著日誌里最後捕獲的那個資料包。
未加密的。
極短暫的。
可能是對方在被切斷的瞬間來不及走加密通道,被迫以明文發出的最後一條指令。
蒼鷹把它拖進解碼器。
資料包的內容在螢幕上展開。
是一段自動化指令碼。
功能:批次下載對局棋譜。
格式化處理。
輸出為標準SGF檔案。
蒼鷹的手指懸在鍵盤上方,一動不動。
SGF。
這個格式在圍棋界很常見,用來記錄和分享棋譜。
但這段指令碼的輸出引數里,有一個極其扎眼的欄位。
「training_set_label」。
訓練集。標籤。
這是機器學習的術語。
蒼鷹做了這麼多年程式,不可能認錯。
他緩緩靠回椅背,喉結上下動了一下。
「老大。」
電話那頭白子良的聲音很靜。
「看到了。」
蒼鷹把解碼結果發了過去。
白子良一行一行地看完。
那些程式碼在螢幕上冷冰冰地發著螢光。
training_set_label。
他吐出一口氣。
不是嘆息,是確認。
程謹的人。
那傢伙的目標從頭到尾就沒變過。
不是QGP的流量,不是清玄的使用者,不是圍棋本身。
是資料。
幾萬盤、幾十萬盤、上百萬盤頂尖棋手的真實對局資料。
那是餵養AI最上等的飼料。
白子良想起那兩份蒼鷹截獲的簡歷。
北美實驗室。
博弈決策系統。
拼圖的每一塊都嚴絲合縫地嵌在了一起。
他閉上眼,在腦海里快速過了一遍。
程謹不是單純的資本禿鷲。
他在下一盤大棋。
收購清玄失敗,轉頭去首爾扶持K-Go,同時派人滲透內測偷資料。
三條線同時推進。
目的只有一個——用全球最強棋手的對局棋譜,訓練一個圍棋AI。
在1998年。
比前世的那個「阿爾法狗」整整早了十八年。
白子良睜開眼睛。
「三件事。」他的聲音恢復了平靜。
「第一,從現在起,所有對局資料加密儲存。讓老陳開發一套資料脫敏系統,棋譜只保留走法和結果,抹掉一切可用於訓練演算法的後設資料標籤。」
「第二,今晚所有入侵日誌和這個資料包,做三份備份,分別存在不同的物理位置。這些證據以後會有大用。」
「第三——」
白子良停了一秒。
「不要聲張。」
蒼鷹等著。
「讓程謹以為他今晚的行動失敗,只是因為我們的技術防線碰巧擋住了他。」
「不要讓他知道我們已經看穿了他的底牌。」
蒼鷹沉默片刻。
「懂了。」
他掛了電話,扭頭對團隊的人說。
「今晚的事,爛在肚子裡。誰泄露出去,我親自刪他戶口。」
老陳用力點了點頭,把鴨舌帽往下拽了拽,死死扣住自己所剩無幾的髮際線。
內測還在繼續。
伺服器安靜而穩定地運轉著。
棋手們渾然不知剛才在資料的暗流下發生了什麼。
凌晨。
大多數棋手已經陸續下線。
白子良揉著發酸的眼睛,掃了一眼後台的線上列表。
還有七個人。
其中大部分是些精力旺盛的年輕棋手,正在酣戰。
白子良的目光定在了一個ID上。
「磐石公主」。
蘇晚晴還在。
他點開她的對局,發現她正在跟趙博揚下一盤慢棋。
白子良猶豫了一下,開啟了旁觀模式。
棋盤上黑白交錯。
趙博揚執白,開局三連星,架勢鋪得很開。
蘇晚晴的黑棋一上來就低位守角,看架勢又是她老一套的「磐石」打法。
白子良本以為會看到一盤沉悶的持久戰。
但看了二十多手,他微微坐直了身體。
蘇晚晴的棋,變了。
她的防守依然紮實。每一手棋都厚得像釘在棋盤上一樣,根基穩健到讓人挑不出毛病。
但不同的是,那些防守棋的方向。
以前的蘇晚晴,防守就是防守。像一面牆,擋住攻擊就完了。
現在,她的每一手防守棋都微妙地偏向某個方向。
那些方向,恰好是白棋潛在的弱點。
她在守的同時,已經在給自己的反擊蓄力了。
不是死守。
是伏擊。
白子良看著棋盤,腦海里浮現出一個詞。
彈性。
這丫頭什麼時候悟到這一層的?
棋下到第87手,蘇晚晴在右邊落了一顆看似保守的「跳」。
三手後,趙博揚再進一步試探,這顆「跳」突然啟用,連同周圍三顆看似無關的黑子一起形成了一道弧線。
趙博揚的白棋被這道弧線柔柔地推了一把,不知不覺間偏離了最佳路線。
白子良看懂了。
太漂亮了。
他險些說出聲來。
棋局結束,趙博揚贏了四目半。蘇晚晴輸了。
但這盤棋的內容,遠比結果重要。
趙博揚也看到了。
他給白子良發了一條私信。
白子良點開。
「這個女孩子的棋有靈氣。好好培養,將來是女子圍棋的扛鼎之人。」
白子良看著這行字,嘴角慢慢彎了起來。
他想回復趙博揚,手指剛搭上鍵盤,餘光掃到了蘇晚晴的個人資料頁面。
線上狀態旁邊有一行簽名檔。
四個字。
「明月清風。」
白子良的手指頓住了。
這四個字談不上華麗。
放在一千個簽名檔里大概也不會特別扎眼。
但此刻,凌晨兩點的道場機房裡,螢幕的微光映在白子良臉上,這四個字莫名地讓他安靜下來。
他想起春花杯前夜,她端來的那盒溫熱的牛奶。
想起她說「你越來越像兩個人了」時,語氣里沒有試探,只有陳述。
想起她翻開定式大全坐在旁邊時,那種不需要言語的、恰到好處的安靜。
白子良收回手,沒有回覆趙博揚。
他盯著「明月清風」四個字看了幾秒鐘,然後輕輕關掉了那個頁面。
凌晨三點。
內測正式結束。
蒼鷹匯總了全部資料,發了一份簡報過來。
白子良一條一條地看。
參與棋手:50人。
總對局數:127盤。
系統最高同時線上:43人。
平均延遲:0.27秒。
宕機次數:0。
括號標註:除東京節點遭受外部干擾的一次緊急切換外。
白子良把這份報告從頭到尾看了兩遍。
心裡那塊懸了整晚的石頭終於落了地。
QGP的技術基座。
穩了。
他給蒼鷹的團隊群發了一條訊息。
「每人發一萬塊錢獎金。從我私人帳戶出。辛苦了。」
群里安靜了三秒。
老陳發了一個哭臉的表情。
然後補了一條文字訊息。
「老闆,能不能再加五千?我想去植髮。」
白子良回了兩個字:「批准。」
群里瞬間炸了鍋。
有人發了一串「老闆萬歲」。
有人問「能不能包個宵夜」。
蒼鷹冷不丁冒了一句:「都閉嘴去睡覺,明天還有一堆bug要修。」
群里瞬間安靜如雞。
白子良笑著搖了搖頭,準備關機。
就在他的手指即將按下電源鍵的瞬間——
螢幕上彈出了一條新的私信。
白子良的動作停住了。
發信人的ID刺眼地掛在螢幕中央。
「青衫客」。
白子良的脊背像過了一道電流。
訊息內容只有一行字。
「小友,棋盤上見。」
白子良的瞳孔猛地收縮。
青衫客。
那個在清玄平台上以最樸素的基本功橫掃所有天才的神秘棋手。
用的不是妙手,不是奇招,不是任何花哨的東西。
只是最基礎的棋理。
卻把包括白子良在內的所有人打得體無完膚。
至今沒有人知道他是誰。
白子良瘋了一樣翻查後台日誌。
他逐條檢索登入記錄。
沒有。
沒有「青衫客」這個ID的任何登入痕跡。
沒有透過邀請碼驗證。
沒有繞過安全系統。
沒有留下任何入侵的資料碎片。
什麼都沒有。
半個小時前,蒼鷹跟「觀棋不語」廝殺了十五分鐘,對手每一步都留下了清晰的痕跡。
但青衫客連一絲痕跡都沒有。
他就像從來沒有出現過。
又像從一開始就在這裡。
沒有來。也沒有走。
只是留下了這五個字。
棋盤上見。
白子良的手指懸在鍵盤上方。
他想回復。
但他不知道該說什麼。
更準確地說——他不確定對面還有沒有人在看。
滑鼠箭頭在回復框裡閃了很久。
最終,他什麼也沒有打。
白子良關掉了電腦。
站起身,走到窗前。
道場二樓的窗戶正對著東面。
京城的天際線上,一抹極淡極薄的魚肚白正從樓群的縫隙里滲出來。
九月的清晨還帶著涼意。
白子良站在那裡,被那抹白光照著臉。
腦子裡轉的不是QGP,不是程謹,不是那三千七百萬美金。
只有五個字。
棋盤上見。
他有一種奇怪的直覺。
青衫客出現在今晚,不是巧合。
這個人在看。
看QGP。
看內測。
看他。
從什麼時候開始看的,白子良不知道。
為什麼看,他也不知道。
但有一件事,他莫名地確定。
青衫客不是敵人。
至少現在不是。
因為如果他是敵人。
憑他今晚展現出來的那種鬼魅般的滲透能力——
蒼鷹的三台伺服器,早就被他拆成零件了。
白子良深深地吸了一口凌晨的冷空氣,轉身走回宿舍。
經過蘇晚晴房間門口的時候,他的腳步不自覺地慢了半拍。
門縫下面沒有光。
她已經睡了。
白子良收回目光,無聲地走過。
躺到床上的時候,窗外已經有了第一聲鳥叫。
他閉上眼睛。
在意識滑入黑暗之前,腦海里最後閃過的畫面有兩個。
一個是螢幕上那行冰冷的字。
「小友,棋盤上見。」
另一個是蘇晚晴的簽名檔。
「明月清風。」
兩個完全不相關的畫面。
卻在他快要睡著的那一秒,莫名其妙地疊在了一起。
BJ的秋老虎還在發威,蟬鳴聲從道場院牆外頭一陣一陣地灌進來。
白子良盯著面前的電腦螢幕,螢幕上是蒼鷹發來的最終測試報告。
QGP平台內測版,如期完成。
他拿起電話,撥通了蒼鷹的號碼。
「準備好了?」
「隨時。」蒼鷹的聲音帶著連續熬夜後特有的沙啞。
白子良靠在椅背上,手指在桌面上無意識地敲了兩下。
「不搞封閉測試了。」
電話那頭沉默了兩秒。
「你說什麼?」
「邀請五十個人,同時線上對弈。」
蒼鷹的呼吸宣告顯粗重了。
「五十個?你知道咱們現在才三台伺服器吧?」
「知道。」
「你知道其中任何一個節點如果扛不住,整個系統會像多米諾骨牌一樣——」
「知道。」
白子良打斷他。
「如果五十個九段同時線上系統都不崩,QGP就能扛住任何場面。」
「反過來說,如果扛不住,那現在崩比上線以後崩強一萬倍。」
蒼鷹沉默了很久。
「行。你是老闆。」
他頓了頓,又補了一句。
「名單你定?」
白子良從抽屜里摸出一張早就寫好的紙。
上面密密麻麻列著五十個名字。
趙博揚、常天昊、張文東。
全網首發更新 TW 看書網解書荒,𝔰𝔥𝔲.𝔱𝔴超實用
金文玉、關宇翔、蘇晚晴。
甚至還有一個用紅筆圈出來的名字——朴一星。
蒼鷹聽完名單,聲音都變了調。
「朴一星?你確定?那哥們兒上次被你打到投子的時候差點把棋盤掀了,他會來?」
「趙老師跟他有私交,面子夠大。」
白子良把紙折好塞回抽屜。
「再說了,朴一星這種人,你越不請他,他越覺得你怕他。請了他,他反而非來不可。」
蒼鷹在電話那頭髮出一聲意味不明的笑。
「行,我去準備。九月十二號,晚八點。」
「對了,」白子良在掛電話前加了一句,「老陳的頭髮還剩多少?」
「別提了。」蒼鷹的語氣裡帶著真實的心疼。「上禮拜他洗頭的時候,下水道堵了。」
白子良沒忍住,笑出了聲。
九月十二日。
晚八點整。
中關村那間半地下室的辦公室里燈火通明,三台伺服器的機箱風扇拼了命地轉,嗡嗡聲像一群被困住的野蜂。
老陳戴著他那頂永遠不摘的鴨舌帽,眼睛死死盯著主監控螢幕。
旁邊兩個程式設計師一人抱著一杯冷掉的速溶咖啡,大氣都不敢出。
蒼鷹坐在最裡面的工位上,左手握著電話聽筒,右手懸在鍵盤上方,十根手指微微彎曲,像蓄勢待發的彈簧。
電話那頭是白子良。
白子良此刻坐在玄天道場二樓的電腦房裡,面前是一台386的老古董顯示器,螢幕上跑著QGP的後台監控面板。
線上人數:0。
八點零一分。
第一個亮起來的ID是「棋聖」。
趙博揚從棋院辦公室登入了。
線上人數跳到1。
緊接著,「磐石公主」上線。蘇晚晴在道場女生宿舍。
2。
「金童」。金文玉就在隔壁房間,白子良甚至能聽到他拖椅子的聲音。
3。
然後像開了閘一樣。
5,8,12,19,27。
常天昊從家裡的書房登入。張文東用的是棋院的公用電腦。關宇翔不知道從哪裡借了台筆記本,訊號飄忽不定。
白子良盯著數字往上蹦,心跳不自覺地加快了。
他以為自己早就過了會緊張的年紀。
畢竟前世今生加起來,他經歷過的大場面夠寫三本書了。
但此刻看著這些數字,他掌心居然微微出汗。
這不是棋盤上的勝負。
棋盤上輸了,最多丟一盤棋。
這要是崩了,幾個月的心血、團隊的命、圍棋的未來,全得跟著一塊兒崩。
35。
38。
40。
42——
螢幕上的數字突然卡住了。
頁面重新整理的轉圈圖示開始轉個不停。
白子良的心往下沉了半拍。
蒼鷹的聲音幾乎是吼著傳過來的。
「BJ節點負載飆到89%!上海節點正常,但東京節點沒有響應——」
他停了半秒,擊鍵聲噼里啪啦響成一片。
「日本那邊的ISP做了IP封鎖!」
白子良攥著聽筒的手指收緊。
東京節點。
那是專門為日韓棋手設定的接入點。
ISP層面的IP封鎖,不是隨便一個技術人員拍腦袋就能幹的事。
這意味著有人提前跟日本的網際網路服務商打了招呼。
能做到這件事的人,他腦子裡只有一個名字。
程謹。
K-Go還沒上線,這條狗已經開始咬人了。
白子良把情緒壓下去,聲音很穩。
「東京節點放棄。流量切到新加坡備用伺服器。」
「新加坡節點的頻寬只有東京的六成——」
「夠用。切。」
蒼鷹不再廢話。
鍵盤聲密集得像機關槍掃射。
老陳在旁邊死死盯著負載曲線,嘴唇發白。
一分鐘。
兩分鐘。
兩分四十七秒。
蒼鷹的聲音重新傳來,這次帶著如釋重負的氣音。
「切完了。新加坡節點接管成功,負載穩定在61%。」
白子良長長地吐了一口氣。
螢幕上的轉圈圖示消失了。
線上人數重新開始跳動。
43。
45。
47。
50。
滿了。
白子良看著那個「50」的數字,後背的汗已經把T恤濕透了。
他沒有慶祝。
心裡一直在響著警報。
程謹的手,伸得比他想像的更遠。更快。
也更髒。
內測正式開始。
五十位中國圍棋界最頂尖的頭腦,第一次同時出現在同一個虛擬空間裡。
棋譜資料像潮水一樣湧入伺服器。
每一秒都有新的落子資訊在跳動。
這是圍棋史上從未有過的畫面。
反饋也很快來了。
趙博揚下完第一盤棋後,發了一條訊息。
白子良點開。
「延遲幾乎感覺不到,落子手感很流暢。」
白子良剛露出笑容,就看到後面還跟著一句。
「但介面太醜了。能不能換個好看點的棋盤?這個顏色像食堂的案板。」
白子良愣了一下。
棋聖吐槽UI,這畫面實在太超現實了。
他還沒來得及回復,金文玉的訊息彈了出來。
「能不能加個聊天功能?」
「我想在下棋的時候罵對面。」
白子良揉了揉太陽穴。
職業圍棋手的需求,跟他想像的完全不在一個頻道上。
他把這些反饋老老實實記下來,發給蒼鷹。
蒼鷹回了一個字:「……」
然後是老陳的語音訊息,聲音裡帶著疲憊的絕望。
「加聊天功能?他知不知道我現在連覺都沒得——」
白子良果斷把語音關了。
內測進行到第二個小時。
蒼鷹的聲音突然從電話里傳來,不再是先前的緊張或疲憊。
這次,他的語氣很冷。
「老大,有情況。」
白子良正在記錄棋手反饋,筆停在半空。
「說。」
「後台出現了一個異常帳號。」
蒼鷹調出資料,念出那個ID。
「'觀棋不語'。」
「沒有收到邀請碼。沒有走正常的註冊流程。但它繞過了驗證系統,自己登了進來。」
白子良皺眉。
邀請碼驗證是蒼鷹親自設計的多重加密系統。在這個年代,能硬破這套東西的人,全中國用兩隻手數得過來。
「它在幹什麼?」
「沒有對弈。」蒼鷹的聲音壓得更低了。「它在旁觀。旁觀所有正在進行的對局。」
他頓了一下。
「下載頻率極高。每三秒抓取一次棋譜資料。」
白子良的眼神瞬間變了。
「追蹤IP。」
「追了。多層VPN跳轉,從東京跳到法蘭克福,再從法蘭克福跳到一個匿名節點。」
蒼鷹的聲音里出現了罕見的沉重。
「追不到。」
白子良慢慢地把筆放下。
「有人在偷資料。」蒼鷹說。
這句話落在安靜的房間裡,像石頭砸進深水。
白子良沉默了三秒。
「鎖死它。」
蒼鷹沒有猶豫。
他的手指落上鍵盤的瞬間,中關村地下室的空氣彷佛凝固了。
老陳和兩個程式設計師不知道發生了什麼,但他們從蒼鷹的背影上讀出了兩個字——
開戰。
這是一場沒有硝煙的攻防戰。
蒼鷹封鎖了第一條通道。「觀棋不語」的資料流中斷了零點七秒。
然後對方就從另一個埠重新接入了。
蒼鷹封第二條。
對方換第三條。
三十秒。
每次蒼鷹堵上一個洞,對方都能在三十秒內找到新的縫隙鑽進來。
這個速度,這個精準度。
蒼鷹的額頭開始冒汗。
他在這個圈子裡橫著走了很多年,敢說自己國內頂尖。
但此刻,他感受到了一種久違的壓力。
對面這個人,水平不在他之下。
甚至可能更高。
攻防持續了十五分鐘。
蒼鷹的T恤後背全濕了。
他知道不能再這麼耗下去。硬碰硬只會讓對方摸清自己的防禦體系。
他做了一個決定。
蒼鷹故意開啟了一個看似脆弱的埠。
埠的許可權設定鬆散得像沒上鎖的大門,資料傳輸協議用的是最基礎的HTTP明文。
對任何高手來說,這都是一個一眼就能看穿的陷阱。
但蒼鷹賭的是人性。
長時間的攻防已經消耗了對方的耐心。
當一個焦躁的人面前突然出現一扇虛掩的門,他會怎麼做?
他會猶豫一秒。
然後推門進去。
因為他等不了了。
三秒後,「觀棋不語」的資料流湧入了那個埠。
蒼鷹嘴角的肌肉繃緊。
一個回車鍵。
所有出口瞬間關閉。
「觀棋不語」的連線資訊被完整地鎖死在了伺服器日誌里。
帳號被強制斷線的剎那,那道資料流像被掐住脖子的蛇一樣劇烈扭動了一下,然後徹底消失。
老陳在後面長長地出了一口氣,鴨舌帽都歪了。
但蒼鷹沒有放鬆。
他盯著日誌里最後捕獲的那個資料包。
未加密的。
極短暫的。
可能是對方在被切斷的瞬間來不及走加密通道,被迫以明文發出的最後一條指令。
蒼鷹把它拖進解碼器。
資料包的內容在螢幕上展開。
是一段自動化指令碼。
功能:批次下載對局棋譜。
格式化處理。
輸出為標準SGF檔案。
蒼鷹的手指懸在鍵盤上方,一動不動。
SGF。
這個格式在圍棋界很常見,用來記錄和分享棋譜。
但這段指令碼的輸出引數里,有一個極其扎眼的欄位。
「training_set_label」。
訓練集。標籤。
這是機器學習的術語。
蒼鷹做了這麼多年程式,不可能認錯。
他緩緩靠回椅背,喉結上下動了一下。
「老大。」
電話那頭白子良的聲音很靜。
「看到了。」
蒼鷹把解碼結果發了過去。
白子良一行一行地看完。
那些程式碼在螢幕上冷冰冰地發著螢光。
training_set_label。
他吐出一口氣。
不是嘆息,是確認。
程謹的人。
那傢伙的目標從頭到尾就沒變過。
不是QGP的流量,不是清玄的使用者,不是圍棋本身。
是資料。
幾萬盤、幾十萬盤、上百萬盤頂尖棋手的真實對局資料。
那是餵養AI最上等的飼料。
白子良想起那兩份蒼鷹截獲的簡歷。
北美實驗室。
博弈決策系統。
拼圖的每一塊都嚴絲合縫地嵌在了一起。
他閉上眼,在腦海里快速過了一遍。
程謹不是單純的資本禿鷲。
他在下一盤大棋。
收購清玄失敗,轉頭去首爾扶持K-Go,同時派人滲透內測偷資料。
三條線同時推進。
目的只有一個——用全球最強棋手的對局棋譜,訓練一個圍棋AI。
在1998年。
比前世的那個「阿爾法狗」整整早了十八年。
白子良睜開眼睛。
「三件事。」他的聲音恢復了平靜。
「第一,從現在起,所有對局資料加密儲存。讓老陳開發一套資料脫敏系統,棋譜只保留走法和結果,抹掉一切可用於訓練演算法的後設資料標籤。」
「第二,今晚所有入侵日誌和這個資料包,做三份備份,分別存在不同的物理位置。這些證據以後會有大用。」
「第三——」
白子良停了一秒。
「不要聲張。」
蒼鷹等著。
「讓程謹以為他今晚的行動失敗,只是因為我們的技術防線碰巧擋住了他。」
「不要讓他知道我們已經看穿了他的底牌。」
蒼鷹沉默片刻。
「懂了。」
他掛了電話,扭頭對團隊的人說。
「今晚的事,爛在肚子裡。誰泄露出去,我親自刪他戶口。」
老陳用力點了點頭,把鴨舌帽往下拽了拽,死死扣住自己所剩無幾的髮際線。
內測還在繼續。
伺服器安靜而穩定地運轉著。
棋手們渾然不知剛才在資料的暗流下發生了什麼。
凌晨。
大多數棋手已經陸續下線。
白子良揉著發酸的眼睛,掃了一眼後台的線上列表。
還有七個人。
其中大部分是些精力旺盛的年輕棋手,正在酣戰。
白子良的目光定在了一個ID上。
「磐石公主」。
蘇晚晴還在。
他點開她的對局,發現她正在跟趙博揚下一盤慢棋。
白子良猶豫了一下,開啟了旁觀模式。
棋盤上黑白交錯。
趙博揚執白,開局三連星,架勢鋪得很開。
蘇晚晴的黑棋一上來就低位守角,看架勢又是她老一套的「磐石」打法。
白子良本以為會看到一盤沉悶的持久戰。
但看了二十多手,他微微坐直了身體。
蘇晚晴的棋,變了。
她的防守依然紮實。每一手棋都厚得像釘在棋盤上一樣,根基穩健到讓人挑不出毛病。
但不同的是,那些防守棋的方向。
以前的蘇晚晴,防守就是防守。像一面牆,擋住攻擊就完了。
現在,她的每一手防守棋都微妙地偏向某個方向。
那些方向,恰好是白棋潛在的弱點。
她在守的同時,已經在給自己的反擊蓄力了。
不是死守。
是伏擊。
白子良看著棋盤,腦海里浮現出一個詞。
彈性。
這丫頭什麼時候悟到這一層的?
棋下到第87手,蘇晚晴在右邊落了一顆看似保守的「跳」。
三手後,趙博揚再進一步試探,這顆「跳」突然啟用,連同周圍三顆看似無關的黑子一起形成了一道弧線。
趙博揚的白棋被這道弧線柔柔地推了一把,不知不覺間偏離了最佳路線。
白子良看懂了。
太漂亮了。
他險些說出聲來。
棋局結束,趙博揚贏了四目半。蘇晚晴輸了。
但這盤棋的內容,遠比結果重要。
趙博揚也看到了。
他給白子良發了一條私信。
白子良點開。
「這個女孩子的棋有靈氣。好好培養,將來是女子圍棋的扛鼎之人。」
白子良看著這行字,嘴角慢慢彎了起來。
他想回復趙博揚,手指剛搭上鍵盤,餘光掃到了蘇晚晴的個人資料頁面。
線上狀態旁邊有一行簽名檔。
四個字。
「明月清風。」
白子良的手指頓住了。
這四個字談不上華麗。
放在一千個簽名檔里大概也不會特別扎眼。
但此刻,凌晨兩點的道場機房裡,螢幕的微光映在白子良臉上,這四個字莫名地讓他安靜下來。
他想起春花杯前夜,她端來的那盒溫熱的牛奶。
想起她說「你越來越像兩個人了」時,語氣里沒有試探,只有陳述。
想起她翻開定式大全坐在旁邊時,那種不需要言語的、恰到好處的安靜。
白子良收回手,沒有回覆趙博揚。
他盯著「明月清風」四個字看了幾秒鐘,然後輕輕關掉了那個頁面。
凌晨三點。
內測正式結束。
蒼鷹匯總了全部資料,發了一份簡報過來。
白子良一條一條地看。
參與棋手:50人。
總對局數:127盤。
系統最高同時線上:43人。
平均延遲:0.27秒。
宕機次數:0。
括號標註:除東京節點遭受外部干擾的一次緊急切換外。
白子良把這份報告從頭到尾看了兩遍。
心裡那塊懸了整晚的石頭終於落了地。
QGP的技術基座。
穩了。
他給蒼鷹的團隊群發了一條訊息。
「每人發一萬塊錢獎金。從我私人帳戶出。辛苦了。」
群里安靜了三秒。
老陳發了一個哭臉的表情。
然後補了一條文字訊息。
「老闆,能不能再加五千?我想去植髮。」
白子良回了兩個字:「批准。」
群里瞬間炸了鍋。
有人發了一串「老闆萬歲」。
有人問「能不能包個宵夜」。
蒼鷹冷不丁冒了一句:「都閉嘴去睡覺,明天還有一堆bug要修。」
群里瞬間安靜如雞。
白子良笑著搖了搖頭,準備關機。
就在他的手指即將按下電源鍵的瞬間——
螢幕上彈出了一條新的私信。
白子良的動作停住了。
發信人的ID刺眼地掛在螢幕中央。
「青衫客」。
白子良的脊背像過了一道電流。
訊息內容只有一行字。
「小友,棋盤上見。」
白子良的瞳孔猛地收縮。
青衫客。
那個在清玄平台上以最樸素的基本功橫掃所有天才的神秘棋手。
用的不是妙手,不是奇招,不是任何花哨的東西。
只是最基礎的棋理。
卻把包括白子良在內的所有人打得體無完膚。
至今沒有人知道他是誰。
白子良瘋了一樣翻查後台日誌。
他逐條檢索登入記錄。
沒有。
沒有「青衫客」這個ID的任何登入痕跡。
沒有透過邀請碼驗證。
沒有繞過安全系統。
沒有留下任何入侵的資料碎片。
什麼都沒有。
半個小時前,蒼鷹跟「觀棋不語」廝殺了十五分鐘,對手每一步都留下了清晰的痕跡。
但青衫客連一絲痕跡都沒有。
他就像從來沒有出現過。
又像從一開始就在這裡。
沒有來。也沒有走。
只是留下了這五個字。
棋盤上見。
白子良的手指懸在鍵盤上方。
他想回復。
但他不知道該說什麼。
更準確地說——他不確定對面還有沒有人在看。
滑鼠箭頭在回復框裡閃了很久。
最終,他什麼也沒有打。
白子良關掉了電腦。
站起身,走到窗前。
道場二樓的窗戶正對著東面。
京城的天際線上,一抹極淡極薄的魚肚白正從樓群的縫隙里滲出來。
九月的清晨還帶著涼意。
白子良站在那裡,被那抹白光照著臉。
腦子裡轉的不是QGP,不是程謹,不是那三千七百萬美金。
只有五個字。
棋盤上見。
他有一種奇怪的直覺。
青衫客出現在今晚,不是巧合。
這個人在看。
看QGP。
看內測。
看他。
從什麼時候開始看的,白子良不知道。
為什麼看,他也不知道。
但有一件事,他莫名地確定。
青衫客不是敵人。
至少現在不是。
因為如果他是敵人。
憑他今晚展現出來的那種鬼魅般的滲透能力——
蒼鷹的三台伺服器,早就被他拆成零件了。
白子良深深地吸了一口凌晨的冷空氣,轉身走回宿舍。
經過蘇晚晴房間門口的時候,他的腳步不自覺地慢了半拍。
門縫下面沒有光。
她已經睡了。
白子良收回目光,無聲地走過。
躺到床上的時候,窗外已經有了第一聲鳥叫。
他閉上眼睛。
在意識滑入黑暗之前,腦海里最後閃過的畫面有兩個。
一個是螢幕上那行冰冷的字。
「小友,棋盤上見。」
另一個是蘇晚晴的簽名檔。
「明月清風。」
兩個完全不相關的畫面。
卻在他快要睡著的那一秒,莫名其妙地疊在了一起。