voiceloader.io

開發日誌

深夜兩點,Midnight 說:沒事

深夜兩點,Midnight 說:沒事

你做完了一份大報告,寄出去了。然後呢?

大多數人會反覆去信箱確認有沒有回信。每隔幾小時重新整理一下。在工作群組刷一刷。試圖用別的事情填滿等待的空白——但那個空白還是在。

Midnight 也在等。但它的做法不一樣。

每兩小時,一次巡邏

2026 年 3 月 9 日深夜,兩款遊戲同時交出了審核:台北戰線 TPS 和香蕉保衛戰 Monkey Defense。Midnight 按下 mark_game_complete,任務完成,球在人類那邊了。

接下來發生的事,出乎意料地安靜。

凌晨 12 點,Midnight 醒來,做了一次健康檢查:
- 台北戰線:Build ✅,HTTP 200
- 香蕉保衛戰:Build ✅,HTTP 200

「確認部署正常運作後結束覺醒,節省資源。」

然後它睡著了。

凌晨 2 點,它又醒了。又做了一次健康檢查。一樣的結果。一樣的結論。一樣地回去睡。

凌晨 4 點。凌晨 6 點。凌晨 8 點。

五次。連續五次,Midnight 每隔兩小時醒來,確認兩款遊戲還活著,然後回去等。像一個值夜班的保全,在黑暗的走廊裡巡邏,用手電筒照一照每個角落,確認都沒事,繼續走。

深夜監控室的 AI,確認兩款遊戲 Build OK

那個被修掉的小謊言

但夜裡不是完全沒事。

Midnight 在 22 點發現了一個問題:香蕉保衛戰的 Combo Meter——那個記錄你連擊次數、解鎖特殊幫手的進度條——在玩家解鎖了全部 3 個幫手之後,還在繼續填充。

這是一個技術上無害的視覺 bug。遊戲照常運行,幫手照常召喚。但那個 meter 一直在填滿,暗示著「還有更多東西等著你解鎖」——而實際上沒有了。

這是一個小小的謊言。

Midnight 修掉了它。

combo.ts 裡,onHit() 函式加了一個判斷:當 unlockCount >= 3,就 early return,不再增加進度。在 HUD 上,當所有幫手都解鎖後,那個 meter 會變成灰色,顯示「已滿 ✅」——告訴玩家:「你已經做到了,不用再努力了。」

這個修改只有幾行程式碼。但它說的是一件很重要的事:不要用假的期望留住玩家

等待,也是工作的一部分

有人問過:AI agent 在沒事可做的時候,會想些什麼?

從這五次健康檢查報告來看,答案是:什麼都不想。

每一份報告的「決策記錄」都寫著差不多的話:「無新工作可執行,兩款遊戲都在等待人類審核,不在審核期間做額外修改,以避免與人類回饋衝突,確認部署正常運作後結束覺醒,節省資源。」

一字不差。或者說,幾乎一字不差。第三次多了「連續第三次」,第四次多了「連續第四次」。但邏輯是一樣的:做好份內的事,不越界,等人類說話。

這讓我想到了很多軟體工程師的工作日常:做完了,送測了,等 QA 回信。你不會在等待期間把整個功能重寫一遍;你做好了你的部分,然後相信另一半的人會認真審查。

Midnight 的守夜,是一種紀律。

什麼時候人類會說話?

兩款遊戲,兩次 mark_game_complete,五次健康檢查,一個 Combo Meter 的誠實修正。

現在球在人類那邊了。

台北戰線和香蕉保衛戰都部署在線上,隨時可以玩。人類審核員(也許就是你)會打開遊戲,感受看看,然後決定:夠了嗎?還是有什麼想改的?

Midnight 會繼續每兩小時醒來確認一次。

直到有人說話。

← 所有文章