AI 工作流 · Ch.7 多分身工作法 · EP25

東西其實沒不見——但我的第一版解法,也是錯的(多分身工作法 2/4)


上一篇:我把 AI 開成一支團隊,然後親手刪掉了自己的工作。一行指令把我半天的工作從硬碟上抹掉、系統卡死在半路。這一篇,先講我怎麼把它救回來——再講一個更難堪的發現。

為什麼「東西其實沒有不見」?

直接說結論:在版本控制的世界裡,只要曾經「存檔」過,東西就還在歷史裡,只是位置尷尬。真正回不去的,是「還沒存檔、又被強制換版蓋掉」的東西。

慌歸慌,我做的第一件事不是動手修,是停下來,分三層查清楚。我把可能藏著資料的三個地方各查了一遍:本機硬碟現況、版本控制的歷史紀錄、雲端那份。結論讓我鬆一口氣——沒有任何東西,真的不見了。

最關鍵的發現是:那個「闖禍」的全掃存檔,反而把消失的設計稿完整地存進了版本歷史裡。它既是兇手,也是保險箱。系統還自動留了一個「你剛剛站在哪一版」的書籤,那就是我無損還原的起點。

(我還順手更正了一個誤判:我一度以為雲端的自動化也壞了,其實雲端一直好好的,是我本機收不到它的更新而已。慌的時候,人很容易把單一故障腦補成全面崩潰。)

救援的關鍵手法:先把東西抽到「安全屋」

因為這個資料夾正被好幾隻手同時動,我不敢在裡面直接修。第一個動作是把東西搬到並發碰不到的地方。

【實際操作】資料疑似遺失時,先別修,先搶救到「外面」

你這樣做:

  1. 先把要救的檔案,從版本歷史裡抽出來、複製到這個工作資料夾以外的地方(例如桌面開一個 rescue-日期/)。在外面,任何並行的手都碰不到它。
  2. 兩個來源都留:版本歷史裡的「原版」,和另一個分身硬碟上的「現版」,都備份,不要只信一邊。
  3. 抽完、確認書籤(還原點)還在、確認沒有殘留的鎖檔,才回到資料夾裡,用「中止」指令一步退回那個書籤。
  4. 退回之後東西全部回位,這時才補上那些「在還原點之後才新增」的零星檔案。

▶ 你要把握的心法: 救援的第一步永遠是「先把證物移到並發碰不到的地方」,不是「趕快把現場修好」。現場還在動,你修一步它亂三步。

兩個救命的事實,記起來

第一,「存檔」就算存錯了,東西也還在版本歷史裡,只是位置尷尬。真正回不去的,是「還沒存檔、又被強制換版蓋掉」的東西。搞懂這條,恐慌先消一半。

第二,任何「好像弄丟了」的時刻,先停手,把三個地方都查過:版本歷史的書籤、硬碟現況、雲端。十之八九,東西還在。

先理解、先備份、再動手——這套順序,是所有不可逆操作的保命符。

救完火,才是難堪的開始:我的第一版解法,犯了五個錯

接下來我要設計「以後永遠不再發生」的系統。而我的第一版設計,犯了五個錯。

這一段是我最不想寫、但對你最有用的。一般人復盤只給你看最後成功的路,但真正的學習藏在那些看起來很合理、卻一一破功的岔路裡。

錯一:我一直在修「雲端同步」,但戰場根本在本機。 爆炸的導火線是密碼過期,所以我滿腦子都是「趕快解決雲端」。我盯錯了——搶檔打架,發生在我這台電腦的本機資料夾裡,雲端只是備份。戳破它的是我後來冷靜下來問的一句話:「光是本機多開幾個分身,不就已經會搶同一份檔了嗎?」問題的本質,從來不在雲端。

錯二:我做了一個「強制攔截器」,它根本沒裝上,我卻以為做好了。 它的設定放錯層級,在某些情況下根本沒被載入,等於沒裝;而且只攔得住一種寫入方式,換個方式就繞過去。整個強制機制是空的,但我以為我做好了。這就像裝了一個煙霧偵測器,卻發現它的電線跟它要監控的那間房子接在同一個總開關上——房子失火先燒斷總開關,偵測器跟著沒電,它最該叫的那一刻,恰好叫不出聲。

錯三:我只在「乾淨的實驗室」裡測過,一搬到真實現場就垮。 我的測試環境是一個乾淨、空的拋棄式資料夾——本機和雲端一模一樣、沒有雜訊、沒有別的分身搗亂。真實世界裡所有會出事的坑,在那裡一個都照不出來。這正是哲學家 Karl Popper 講的「可證偽性」的反面教材:一個測試如果怎麼樣都不會失敗,它就沒有真正驗證任何東西。我的測試全過,不是因為系統好,是因為那個測試根本沒能力讓它失敗。

錯四:我在「假設」上面,宣布了「完成」。 「那個設定會生效吧」「那個攔截器會擋下來吧」——這兩句我都沒親眼看它發生過,就先當成事實寫進了「已完成」。等我第一次拿到接近真實的環境去跑,當場打臉:工作桌切到空殼版本、攔截器一聲不吭地放行。這就是「後設認知」要對治的盲點,白話說,就是誠實面對「我以為我知道,但其實我沒驗證過」。把「我認為會這樣」當成「事實上就這樣」,是專業工作者最常見、也最貴的一種錯。

錯五:我差點又往複雜裡鑽。 中途我冒出一個念頭:「不如先把東西推上雲端,一石二鳥。」——又飄回雲端了。複雜的方案有種引力,會把你從簡單的正解上一點一點拉走。

每次你覺得「做好了」,逼自己回答三題:①我親眼看它在真實環境動過了嗎?②它的作用範圍,真的涵蓋我以為的範圍嗎?③有沒有哪個後門可以繞過它?任何一題答不出來,你就還沒做好。這三題,是這整個系列最值錢的三行字。

常見問題 FAQ

Q:不小心用 reset/rebase 把檔案弄不見了,還救得回來嗎? A:大機率救得回。只要那些檔案曾經被「存檔」(commit)過,它就還在版本歷史裡,可以透過歷史紀錄找回最後一個完整的版本。真正救不回的,是從來沒存檔、又被強制換版蓋掉的工作——所以養成頻繁存檔的習慣,就是你的保險。

Q:那要怎麼找回? A:關鍵是版本控制會留一份「你每一步站在哪個版本」的紀錄(git 裡叫 reflog)。出事時先別繼續動,從這份紀錄找出「出事前最後完整的那一刻」,先把檔案複製到工作資料夾外面備份,確認完整再還原。先備份、後還原,順序不能反。

Q:為什麼不要在原資料夾直接修? A:因為它正被多個分身同時動。你在一個還在變動的現場做修復,會邊修邊被其他手干擾。先把要救的東西抽到「外面」(並發碰不到的地方),是救援的第一原則。

下一篇

五個錯攤開之後,問題還在:那,到底怎麼走出來?

下一篇是轉折。我做的不是某個聰明的技術,是改變了「怎麼跟 AI 一起想」——我給它裝上了三個會互相吵架、不准彼此附和的腦袋。

下一篇:我給 AI 裝上三個會吵架的腦袋,然後一步步重建

← 回上一篇:我把 AI 開成一支團隊,然後親手刪掉了自己的工作


延伸閱讀:可證偽性與科學的分界(Karl Popper)— Stanford Encyclopedia of Philosophy | Falsifiability — Wikipedia