Day 11 的結論是:事實要從程式碼和實際畫面來。
這個結論有一個很直接的後果——我得讓它看更多東西。 更多程式碼、更多環境、更多實際的資料。
於是下一個問題馬上就來了:
那,要給到什麼程度?
今天這篇講的是我畫的兩條線。第一條很好畫,大家都會同意。第二條是我自己畫的,而且它嚴格得多。
我們公司內部有一個 wiki,放的是維運相關的東西。
我打開看過之後,對這個專案的判斷很快就出來了,原話是這樣:
「我也不建議你去讀他,怕危險。」
那上面有什麼?我不會寫細節,但類型講得出來:
這些東西的共同點是:它們不是「知識」,是「鑰匙」。
一個新人需要知道「這個功能怎麼用」,但不需要知道資料庫的連線字串。那不是上手的障礙,那是另一個層級的東西。
這條線沒什麼好討論的,我想多花一點篇幅在另一件事上——
我一開始的想法很單純:我不給它那個站的帳號,不就好了?
後來覺得這個想法太樂觀,原因有三個:
第一,資料的入口不只一個。 我不給帳號,不代表那些內容不會以別的形式出現——有人在票卡留言裡貼了一段設定、某個檔案剛好躺在專案目錄裡、某張截圖的角落拍到了不該拍到的東西。
第二,我自己也會手滑。 為了問一個問題,順手把一整段東西貼進去,這件事太容易發生了。
第三,也是最關鍵的一點——讀進去就收不回來了。
這一點值得停一下。刪掉一個檔案、撤銷一個權限,這些動作都是可逆的。但一段內容一旦進了對話,它就已經在那裡了。你可以把對話刪掉,但你沒有辦法確定它有沒有被記住、被記錄、被帶到下一個地方。
所以我的作法不是只有「不給」,而是在指令層明確寫出來:那個站不要去讀,那類內容不要主動去找。
把邊界寫成規則,而不是只靠「它應該碰不到」。
(這件事還有另一半,關於「權限給到哪裡」,那是明天和後天的題目。)
上面那條線,任何做資安的人都會跟你講一樣的話。
而我自己畫的那條,從來沒有人要求過我,它是這樣:
我只給它讀我知道的資料。
第一次講出來的時候,連我自己都覺得這聽起來有點小家子氣——資料不是越多越好嗎?我手上明明有更多東西可以餵。
但理由其實很具體,而且跟保密一點關係都沒有:
我不知道的資料,如果過幾天被改掉了,我不會知道。
一份文件寫錯了,它從第一天就是錯的,你有機會在驗收的時候抓到。
但過期不一樣——它上線那天是對的。
而且過期不會發出任何聲音。沒有人會來通知你「欸,你文件裡第 7 條從昨天開始不成立了」。它就靜靜地待在那裡,繼續正確地長著一副正確的樣子。
Day 8 那個最嚴重的錯,本質上就是這件事:卡片說「還沒修」,而東西早就修好了。資料變了,描述沒變。
那麼,誰有能力發現一份文件過期了?
只有一種人:知道那一塊現在長什麼樣子的人。
所以問題就變得很簡單了。如果我餵進去的是一塊我自己都不懂的東西:
我不是在防它出錯。我是在防一種我永遠不會發現的錯。
我後來把這件事想得更清楚了一點。這條線管的根本不是 AI,是我自己的驗證能力:
我能餵給它的範圍,等於我能驗證的範圍。
超出這個範圍的東西——就算它答對了,我也不知道它答對了。
而這句話的反面,才是真正嚇人的地方:
一個我無法驗證的正確答案,和一個我無法驗證的錯誤答案,對我來說是同一個東西。
它們長得一樣、讀起來一樣、都很有自信。我沒有任何方法把它們分開。
那我把它們放進知識庫,到底是在做什麼?
| 第一條:機密線 | 第二條:我知道線 | |
|---|---|---|
| 排除什麼 | 帳密、金鑰、連線資訊、權限組態 | 我沒做過的模組、別人負責的系統、我沒測過的功能 |
| 為什麼 | 外洩的風險 | 我驗不了,也察覺不到它過期 |
| 誰會同意 | 所有人 | 沒有人要求過,我自己畫的 |
| 範圍 | 小 | 大很多 |
第二條線排掉的東西,比第一條多得多。
而且它排掉的全都是無害的資料——沒有任何保密問題,只是我不熟而已。
它讓這個知識庫小很多。
有些新人一定會問、而且很合理的問題,我知道答案不在裡面。因為那一塊是別人負責的,我沒有真的跑過。
我糾結過這件事。少一塊內容,是實實在在的損失。
但後來我的想法是這樣:
Day 9 那個結論,在這裡又冒出來了一次。
這個知識庫最需要它的使用者,剛好是最沒有能力驗證它的人。
如果我放了一塊連我自己都驗不了的內容進去,我做的事情其實是:把一個我無法承擔的驗證責任,轉嫁給一個更沒有能力承擔的人。
新人讀到那一段,不會知道那是「我不確定的區域」,只會把它當成跟其他段落一樣可靠的東西。
一個小而可信的知識庫,和一個大而有幾個未爆彈的知識庫,我選前者。
而且這個選擇還有一個好處:我知道缺口在哪裡。 缺口是可以被補的;而未爆彈,你連它在哪都不知道。
不是。這條線不是「永遠不碰」,是順序問題:
不知道的東西,要先變成知道的,才能進去。
而「變成知道的」有幾種很具體的作法:
最後那一條,跟 Day 11 的結尾是同一句話:
一個誠實的「不知道」,比一個通順的猜測有價值太多了。
差別只在於,Day 11 講的是不要讓 AI 猜,今天講的是不要讓我自己猜。
今天講的是「什麼不給」。
但實際運作起來,事情沒有這麼二元——它不是一個「給 / 不給」的開關,而是分層:
有些東西是金庫,誰都不碰;有些東西是給新人看的,要讓它好找;而還有一個問題是——新人到底要從哪裡進去?
明天講三層存放,以及一個我想了很久的決定:為什麼入口我放了兩個地方。