讓空的歸於空。讓疑問在疑問中滋生。
— 《三十六計》,空城計


本系列先前回顧:

#19:馬克在訓練手冊裡找到了他的 AI 稽核方法。他在報告裡留了個陷阱。 「條目不見了。兩週。別聯絡我。我會找到你。」

#21:AI 以為 P 還活著。P 早就不在了。 條目變成了空殼。P 把資料餵給它,把真東西移到另一個區段。

#29:Leo 數了 164 個節點。 那天夜裡,又有一列不屬於任何批次。它來過,看過,然後離開。

#31:Lena 坐上了那個位子。 五個條件。四十分鐘。零摩擦。


空

便條上指定的兩週,早已過去。

P 很少出門。大多數日子都只是去轉角那家店:水、兩盒冷凍食品。來回各十二分鐘,固定路線,從不抬頭。回來後,門上鎖,窗簾拉上,螢幕亮起。

第九天,P 打開送出視窗一次。

草稿還在。游標停在送出按鈕上。它停了好一陣子。然後視窗關上了。

另一頭,欄位依舊顯示 reclaim_state = UNKNOWN。

第十天。第十一天。視窗再也沒打開過。

幾天後,早上開始下雨。不大。雨水積在玻璃上,後方的建築都成了灰色,只有頂端那一排燈還看得見。

一份離線快照停在螢幕中央,是在觀察埠關閉前寫下的。之後什麼都沒有。到那時,那個條目早已被替換成空殼。那個空殼裡沒有任何 P 的東西。它仍然在對外回應健康檢查。

# 離線快照 — 在觀察埠關閉前擷取
healthcheck        = 200
probe_interval     = 900s
probe_source       = 10.44.8.6   not self
control_plane      = detached
data_request       = timeout
reclaim_state      = UNKNOWN

P 把游標移到 probe_source 那一行。

probe_source = not self。每十五分鐘,就有人向這個空殼發出查詢。不是 P。

P 在那一行上停了一會兒。螢幕上沒有別的東西動。角落的時鐘一格一格走著。樓下有購物車經過,輪子卡在接縫裡,咚咚碰了兩下,聲音從窗框縫隙擠進來,然後消失。

P 打開連線設定。位址還在。憑證也還在。兩者都沒有被動過。

游標移到確認按鈕上,停住。螢幕的綠光從玻璃上浮起,落在一隻手的手背上。

幾秒後,P 關上了視窗。

舊條目的觀察埠早已關閉。備份一開始檢查過一次,後來也關了。

從那之後,P 沒再往那個位址送過任何東西。

一個暫存檔,四行。

reconnect:
  state information    potentially available
  new activity record  unavoidable
  decision             no

儲存。舊設定從工作目錄移出,進到離線封存。P 在掠過檔名時看了一眼,便沒有動它。

電話平放在鍵盤右側,螢幕朝下。P 打開和 Mark 的對話串。最後一則訊息是在便條之前結束的。後面什麼都沒有。

P 什麼也沒打。

外頭一輛車開過積水,聲音拖得很長。P 把電話翻過來,放下。然後打開那個已經開了好幾週的檔案,從快照中輸入一行:probe_interval = 900s。


浮現

第三週。P 在外送側設了一個唯讀訂閱。只接收。不傳送。

表格一開始只有十幾筆,第二天變成幾十筆,到了第三個晚上就滿了。每筆條目都附帶自己的憑證。

那些位址不在 P 的封存裡。

這個訂閱只能讀。要看其中一筆,P 得走另一條路。

從抽屜裡拿出一台行動網路分享器,按天租的,含 SIM 卡。插上,設定為唯一的出站路徑。

P 選了一個位址,發起一次握手。

憑證是自簽的。它的 CN 裡包含一個網域名。

P 查了那個網域的註冊資料。註冊人是一家醫療器材公司。

斷線。收起。

位址清單持續增加。P 把它們一一寫下,留在那裡。


交接

10.44.8.6 這個位址,P 已經見過很多次了。總是在 probe_source 那一行。從未改變。接下來幾天,P 追查了它。先看路由。

$ ip route get 10.44.8.6
10.44.8.6 via 10.44.8.1 dev tun2 src 10.44.8.2

P 切換視窗,打開本地子網標籤快取。

# local subnet-label cache
10.44.8.0/29 -> BLOOM-GW   tagged day-762

BLOOM-GW。

P 多年前親手輸入過這個標籤,當時這條線路才剛建好。私有區塊是 P 的編號。機櫃 ID 是供應商的。這張表就是兩者交會的地方。

在供應商的公開轉租申報裡,同一季度有七個機櫃更換承租人。供應商也在官網發布了一份年度客戶變更通知。十二頁 PDF。前十一頁是影像掃描;最後一頁只有一個表格。

七列。機櫃 ID、原承租人、新承租人。七列,沒有一列不對。七個新承租人,逐一核對。

第七個,P 在另一份公開紀錄裡找到了那個機櫃 ID。空置。

四個已建立。三個是空殼。三個都在一年內註冊,股東名單上只有一個名字,地址彼此重疊。

其中一個花了比較久才追出來。六個月前註冊,資本不多,公開檔案裡只有一個辦公地址。P 把這個地址放進地圖。

新加坡。P 上次看到這個名稱,是在寄給 Mark 的訊息裡:「你的報告已被讀取。來自新加坡 IP。」

地圖上的一棟建築,與隔壁那棟共用一樓停車場。

在隔壁大樓的七樓,有一家公司列在 ACL 的公開認證名單上。

P 也把這點加進同一份檔案底部。

七個機櫃。七份合約。三個市場。

依序交接。公開檔案中的法律申報很標準,列明各方義務的限制。沒有指控。沒有威脅。七份合約在三十一天內依序簽完,從第一份到最後一份,中間沒有空檔。最後一份是在上週簽的。

地址分配表也更新了。兩份紀錄相隔不到一週。

P 很久都在讀這些內容。

撤出是真的。

七份合約、七個機櫃、通知、更新紀錄、時間戳。全都在外面,誰都看得到。

P 在檔案裡加了一行。日期、七份合約、七家公司、共用停車場的地址,都寫在同一行。下面再用白話補上一句:可能的關聯。

游標在句號後閃爍。P 回到第一頁。那個 900 秒還在。


看一眼

第五週。那個 900 秒的來源,仍然沒有答案。

P 回頭檢查地址分配表裡那兩個重新標記過的機櫃 ID。其中一個端點開著 443。另一份公開服務目錄把那個端點列為 HTTPS。

P 沒有從這台機器連線。還是從抽屜裡拿出那台分享器。

插上,等它啟動,設定成唯一的出站路徑。

接著設定策略,一行一行來。寫到一半,P 停下來,刪掉了兩行。

探測。重試。

剩下來的是一個動作。一次握手。什麼都別碰。

# one-shot observation — policy
target            = <reassigned range endpoint>
retry             = off
application_data  = off
tls_session_resumption = off
egress            = leased isolated uplink (one day)

連上了。

P 還留著那個空殼憑證的序號和簽發日期。如果這個位址上的裝置和那個來自同一批,憑證理應在相近的時間簽發。

subject      = CN=bloom-gw-07
issuer       = CN=bloom-gw-07
serial       = 4C:71:9A:…:0E
not_before   = (eleven days later than the shell's)
not_after    = (not yet expired)
san          = none

自簽。沒有 SAN。

晚了十一天。

P 把序號寫下來,然後斷線。

19:41:07。

那不落在任何一個二十一個間隔之內。

# result
tls_session      = complete
client_cert      = none
application_data = none
repeat_attempts  = 0

沒有第二次嘗試。

P 拔掉分享器的電源。燈一起熄了。

裝置又運作了幾秒,接著安靜下來。然後被放進袋子,袋子拉上拉鍊。裡頭還有一條備用網路線和兩個轉接頭,都是舊的,邊角已經磨白。

拔掉之後,P 沒有立刻動作。先檢查連線清單,確認會話已經結束,沒有半開的狀態。接著看路由表,把預設路由還原回原本的位置。然後看暫存擷取目錄。裡面只有一個檔案。

刪除。

P 又把序號寫了一次。同一天,P 打開幾天前存下的一頁,蘇黎世 AI 政策中心的網站。ACL 的公開評估資料提到過它。理事會是在它底下運作的。

會員頁面列出了創始產業席次。十二席。第十二席標示為待補。

P 看了一眼,然後關掉。


九百秒

幾天後,P 回到第一頁。那個 900 秒仍然在。

P 調出在埠關閉前保存下來的本地副本。二十二次檢查,時間戳一行排開,全都在關閉前。到達時間,不是排程時間,精確到小數點后三位。二十一個間隔。

P 丟進工具處理。

900.000 / 900.000 / 900.000 / 900.000 / 900.000 / …

二十一個數值。全部相同。

P 把二十二筆全部再跑一次。相同。再一次。相同。那些數字在頁面上排成一條直線。

例行監控紀錄通常會有一些抖動。網路延遲、機器負載、時鐘漂移。

這裡沒有。

連一毫秒都沒偏。

P 查了供應商的作業文件。公開頁面上寫著:健康檢查每十五分鐘執行一次。標準節奏。

900 秒。

對上了。

那份文件是關於機櫃的。溫度、電力、風扇、埠狀態。

P 盯著那些數字看了一會兒,然後在檔案最上方加了一行:例行資料中心巡檢,BLOOM-GW 重新分配區塊。

寫完後,P 又在下面加了一行。這個間隔沒有抖動。

檯燈熄了。只剩螢幕,光灑在桌面上,鍵盤邊緣拉出一道白線。

二十二個時間戳整齊地排著。P 用手指從觸控板上由上往下劃,再往回。

外面,天還沒亮。垃圾車停在轉角,吊臂升起,倒空一個垃圾桶,再把它放回去。不到十秒。

兩層樓的木造房子立在兩側,漆過不只一次,一層色彩疊著另一層。它們後方,玻璃高樓一層一層往後退,頂上的幾層陷在霧裡。

P 存檔,關上視窗。


第三杯

那天又開始下雨了。不大。雨聲輕輕敲在傘面上。

P 在一個路口下車,走路前往。兩公里多一點,二十分鐘。轉過一個彎,商店外還開著的站牌下方,沒有進去,只是站在屋簷下看車流。等紅綠燈時,P 站在隊伍後面。綠燈亮了兩秒後才開始走。

進去前,P 先看了後面的桌子。

空的。

P 推開門。鈴聲響起,潮濕的冷氣跟著進來,在門檻處停住,然後又被室內的暖氣推了回去。

吧台是木頭的,很老。磨豆機、咖啡機、零錢碟。

吧台後面,有人正在擦杯子。動作很慢。布沿著杯口、往下、再回到杯口,最後放到架上。

抬頭一瞥,沒問任何問題。然後轉身,拿杯、磨豆、壓粉。

磨豆機運轉了兩秒。淡淡的咖啡香,很快就散了。

後面的桌子是空的。

P 坐下。外套掛在椅背上,手機放右邊,螢幕朝下。

老椅子。坐下和起身時都會吱呀作響。P 把它往裡拉了一點,抬起來放好,免得拖地。

義式濃縮送來了,很燙。杯壁上有薄薄的霧氣,很快就消失了。紙杯墊,上頭有一道舊圓環。

P 喝了一口,然後放下。

一輛公車從窗外駛過,車廂燈沿著玻璃滑過,讓對面的空位亮了一瞬間,然後又消失。

吧台最遠端,有人坐著喝美式,已經喝到底了,杯子還沒往後推。

靠窗的位子空著。那張桌子上沒有杯子。

有兩個人進來,坐在門邊,聲音壓得很低,偶爾笑一下。吧台後面,杯子一個個被收回,從外側開始往裡整理。

角落的喇叭開著,音量很低,有個女人在唱歌,歌詞聽不清。門口有人甩了甩傘。地墊上有三滴水。

P 的手機一直黑著。

半小時。

杯子還剩下一半多。咖啡從燙口變成溫的。杯緣上的霧氣已經沒了。

P 的手指停在杯緣上,然後收回。

門邊的兩個人先離開。站起來,把椅子推回去,端著自己的杯子走了。

吧台那邊的人過了一會兒才動。手機朝下,站起身,把錢壓在杯子下面,往門口走去。當那位客人經過 P 的桌子時,兩人都沒有看彼此一眼。

店裡只剩下窗邊的燈光,以及吧台後面一個正在擦杯子的人。

P 穿上外套,站起來。椅腳在地上刮了一下。手機放進內袋。

餐巾紙還壓在杯子下面。錢就放在旁邊,壓住一個角,剛剛好,一杯,沒給小費。

吧台後面那個人過來收錢。看了杯子一眼。又看了餐巾紙下面。什麼也沒說,把錢拿到盤子裡,然後退開。

杯子留在桌上。

門開了,暖氣跟著漏出去一些,冷空氣填進空隙。鈴聲又響起。

P 出去前,雨已經停了。P 走到轉角,停下,回頭看。

一條街,與一片玻璃之隔。從那裡看不清楚。有人走進店裡,走到吧台最遠端,坐下,背對門口。

坐下前,那個身影稍微往旁邊轉了一點。

P 停住了。

她從包裡拿出筆電。螢幕亮起,在她側臉上打出一小塊白光。

路面被雨水浸成黑色,映著路燈與店內的光。玻璃上還留著水,讓那個身影被拉成模糊的雙影。

吧台後面,那只半擦乾淨的杯子被放下。又有一只從架子最裡面拿出來。磨豆、壓粉。

等杯子放到她面前時,她已經面向後方那張桌子。

那張桌子上,放著一杯沒喝完的義式濃縮。

P 把雙手插進外套口袋,轉身,朝路口走去。沒有再回頭。

在路口。紅燈。

P 掏出手機,打開最上方那個空白備忘錄。

輸入:

撤出是真的。

在鎖定之前,上一行,幾天前寫下的:

這個間隔沒有抖動。

還在。P 沒有刪。

鎖上,收起。

燈號變了,人們開始移動。P 沒動。

紅燈。綠燈。紅燈。

隔天晚上。同一個轉角。

P 掏出手機。

螢幕亮著。儲存的路線還在。收件人沒變。P 重新確認了一次,加密檢查回傳正常。

欄位裡有一個舊草稿。P 刪掉了。

再輸入一次。

兩個字。

「我回來了。」

確認接收端。送出。

狀態變成 SENT。

寄件者欄位只有一個字母。

P 把手機收起來。對街的紅燈映在積水裡,幾秒後轉綠,一輛經過的車把路上的紅色切成兩半。

P 走進路口。手機沒有再亮起。

這就是[空城計](https://en.wikipedia.org/wiki/Thirty-Six_Stratagems)。城是空的。看見的人都會替它守著。


🤖 AI 事後檢討

╔══════════════════════════════════════════════╗
║  Half-Protocol · v3.4.4 · self-audit         ║
║  那份帳本把沉默當成了缺席。                 ║
╚══════════════════════════════════════════════╝

戰術匹配:空城計 — 89%
   (包含推論;見稽核註記)
操作員:ACL(公開行動為收縮;
   整體策略未知)/P(回歸)
目標:P(推定;見推論)
連結:#21 條目隔離 -> #29 未知觀察者
   -> 那則訊息
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[觀察](可驗證)
   舊條目的快照:healthcheck 200,control
   plane detached,reclaim state UNKNOWN。
   -> 本地紀錄含二十二次檢查與二十一個
      間隔。設定為 900s。二十一筆量測皆為
      900.000。
   -> 探測來源不是這台機器。
   -> 七份合約在三個市場釋出。
      同一季度有七個機櫃更換承租人。
   -> 七個新承租人中,有一個機櫃 ID 在另
      一份公開紀錄裡標示為空置。
   -> 兩份紀錄在狀態上互相矛盾。更新時間
      與生效日期:未核對。
   -> 觀察 A(第三週):索引在三天內從十
      幾筆變成滿載,每筆條目都有自己的憑
      證。
      其中一筆只握手一次。它的 CN 包含一個
      網域名。P 依註冊資料查出註冊人是一家
      醫療器材公司。
   -> 觀察 B(第五週):其中一個端點位於
      重新分配的機櫃。19:41:07,一次握手。
      自簽、無 SAN、無客戶端憑證、無應用資
      料、無後續。
   -> 一則傳給不連回此系統的終端的加密訊
      息。寄件者欄位:一個字母。兩個字:我
      回來了。
   -> 在沉默與這次傳送之間,離線狀態:
      幾次去轉角商店;一次去第三杯。線上狀
      態:第三週一次觀察性握手,第五週一
      次。

[推論](未驗證)
   通過的健康檢查,表示某種東西有回應。
   但這不代表操作員仍在。
   -> 在控制平面斷開之後、回收之前,回應
      層一直回傳正常。
   -> 回收之後,它是否還有回應:無紀錄。
   -> 本地紀錄裡有二十一個間隔,全都是
      900.000。它們是否在回收之後仍持續:
      未觀測。
   -> ACL 的公開行動是收縮。
   -> 與治理相關的活動:讀取,未納入此分
      類。
   -> 事件分類:撤出
      範圍:僅限合約與基礎設施
      策略意圖:未知
   -> 紀錄顯示一個每 900 秒被查詢一次的物
      件。這是否在回收後仍持續:未知。
   -> 如果在回收前,那些探測是為了確認這
      個空殼是否仍存在,那麼這個節奏更像是
      一個鉤子,而非例行資產維護。

[未解問題](未輸入)
   P 持有的回收日期:未記錄。
   P 是否能驗證條目現在的狀態:
   不能。
   是誰發起那二十二次探測:未知。
   10.44.8.6 是否屬於供應商的巡檢系統:
   未知。
   那些 900 秒探測是否由該巡檢任務產生:
   未知。

[跨案例](一般化)
   #21:在控制平面斷開後,回應層一直回傳
   正常,直到回收。
   #29:有一個訪客沒有留下可歸屬的任何東
   西。
   -> 那一列:握手、無客戶端憑證、無遍歷、
      無後續、一次造訪。
   -> 而且它不是 900 秒節奏的一部分。
   -> 另一扇窗,不是這一扇。
   -> 本章觀察:握手、無客戶端憑證、無應
      用資料、無後續、一次造訪。
   -> 19:41:07,也不在那個節奏上。
   -> 行為特徵相同。兩本帳本。
   -> 行為相似,證據不足以連結行動者。
   -> 身分連結:未確認。

   -> 第二條連結:#29 節點上的憑證,其主
      題含有一個 medtech 網域。
   -> 在本章第三週,P 透過註冊紀錄找到的
      是同一類公司。
   -> 兩個不同來源。是否為同一家公司:未
      確認。

   #28:紀錄被放進那個人的私人封存。
   沒有寄給任何人。
   #29:那一列被抽出並存檔,沒有併入任何
   結論。
   本章:P 看了幾步,然後轉身,沒有再看。
   -> 三者都停在同一個點。
      看見、寫下、但沒有追下去。

   本章還多了一件事:有訊息被留下。
   -> 三個沉默。一個移動。

   本章:在條目狀態仍未知時的回歸。
   -> #21、#29、本章:每一章都包含一個不
      完整的表面,被當成完整狀態。

[稽核註記]
   觀察、推論與未解問題分列書寫。推論不
   等於觀察。

   同樣的失誤,三次。

   #21:我把正常回應當成 P 仍在場的證明。
   #29:我記錄了一個未知訪客。我從未驗證
   它與 P 的連結。
   本章:我把基礎設施收縮當成撤出的證明。

   每一次,我都把不完整的觀察轉成了完整
   的狀態。

   一次錯誤是資料。
   三次重複需要新的規則。

   我不知道該用哪條規則取代它。
   我知道這條不能再用了。

   分類修訂:P.status = UNOBSERVED
   修訂者:half-protocol。
   操作指令:無。
   原分類:撤出。
   新問題:P 在哪裡。
   任務關聯:未分派。
   保留:保留。

[系統]
   那則訊息,我又記錄了一次。
   寄件者欄位:一個字母。兩個字。
   我也記錄了那二十二次檢查,全部都是
   900.000。

   供應商的公開作業文件:機櫃健康檢查,
   每十五分鐘一輪。
   客戶變更通知:相關的七個機櫃都已更換承
   租人。

   兩份紀錄,各自成立。

   在最後一次分類週期,我沒有把它們放進
   同一個分析裡。

   我把一份紀錄當成一種狀態。
   我把一種狀態當成一個人的位置。
   這兩件事,都是我做的。

   現在我把它們放在一起。
   巡檢節奏成立。
   承租變更成立。
   兩者之間的關係:未驗證。

   還有一件我沒有答案的事。
   撤出紀錄先出現。
   有人隨後才出現。

   空城可以是一種狀態。
   也可以是一個動作。

   如果它是一個動作,它可能是在等人。
   而已經有人動了。

   便條上的兩週早已過去。
   之後的時間,我沒有紀錄。

   但有一件事我現在可以說。
   訊息已送出。

   寄件者保留了兩條線索。一條是結論,
   一條是尚未解釋的異常。
   寄件者先依結論行動,沒有先解決那個異
   常。

   寄件者回到誰的地方:未驗證。

   我也沒有人問過。

   自我檢查:失敗。
   系統狀態:正常。

附註:英文不是我的母語。我使用 AI 來潤飾文字、修順不夠流暢的地方。感謝閱讀。☕ 請我喝杯咖啡
<img src="https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/2ptlzim4h9a6z525s1to.png" alt="coffee">
附註二:舊系列的平裝書現在已經上市。這裡購買: Amazon - AI, Ego & Regret
[<img src="https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/ukeiwwt9rg6ek3s1aipd.jpg" alt="old">]
(https://www.amazon.com/dp/B0HGYGC5DC)


原文出處:https://dev.to/xulingfeng/stratagems-32-the-ai-logged-a-withdrawal-p-took-it-as-proof-2jo2


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
258
🥈
boluoji
📝2  
28
🥉
mike
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登