iT邦幫忙

2026 iThome 鐵人賽

DAY 1
0
Claude AI

一個人的 IT 部門:用 Claude Code 從裸機到一整座 AI 機房系列 第 2

D02 AI 的記憶會過期,而且它不知道自己過期了

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20260807/20181284bVZ3tthkOT.png

有一天,我要 claude 去查一台機器上的收發件系統。它的記憶裡寫著資料表叫某個名字 —— 那是幾個月前寫進去的。它照著記憶回答我,然後自己補了一句「不過我上去查一下」。一查,表名根本不是那個,而是另一個名字。記憶錯了,而且錯了好幾個月都沒人發現。

一份長期記憶最危險的地方,不是漏記了甚麼,而是它過時但看起來很篤定。所以,我現在的規則是:記憶只能當線索,不能當事實。凡是牽涉到檔案、資料表、參數名稱的,一律要重新查證過才能寫進結論。

這些,都不是一開始就設計好的,也不是模型變聰明了,是把踩過的坑,一條一條交給它保管。

有一台機器跑語音辨識服務 (Whisper),在重開機之後,那個 whisper 服務不會自己回來,要手動啟動。第一次遇到, claude 以為是機器壞了,查了很久。隔了很久,機器又重啟,再次遇到 whisper 無反應,claude 還是又查了一遍。第三次遇到的時候,claude 才承認:這不是意外,這是這台機器的個性。於是把它寫成一份重開機的標準流程,存進 Claude Code 的長期記憶裡。從那之後,只要提到那台機器,claude 會先讀那份筆記,然後主動跟我說:「這台重開完 whisper 不會自己回來,我會手動啟用。」記憶的價值不在於它記得多少,在於同一個坑不會踩第三次。

另一件被寫進記憶的事:我的機隊沒有一台走預設的埠 (port) 。每一台的埠號還都不一樣。預設埠 (22、25、80、443),一天到晚有人在試密碼,fail2ban 抓到一大串。但也因為 port 設定都不一樣,我自己也記不住。所以那份速查表是我最早寫進記憶的東西之一:哪一台走哪個埠、密碼要去哪裡查,claude code 現在連線之前一定先查表,不會自己試,更不會自己猜。猜錯的代價不是連不上,是可能連到另一台機器,然後在錯的機器上執行對的指令。當然,多餘的猜測,會浪費 token。

還有一種更安靜的坑:有一次,要在遠端機器上寫一個需要 root權限的設定檔。最直覺的寫法是把密碼用管線餵過去,然後接一段文字內容寫進去。問題是那樣寫的時候,密碼會跟著那段文字一起被寫進檔案裡。指令會成功,檔案會建立,一切看起來正常 —— 然後你的密碼就躺在那個檔案的第一行。現在這件事被寫成一條規則:遠端要寫 root 檔案,先把檔案傳上去,再用安裝指令搬過去。這種坑的共同點是:它沒有錯,它只是成功地做了件錯事

既然坑都長這樣,我給它的授權反而是放寬的:直接執行,不要每一步都回頭問我。唯一的例外,是不可逆的操作,以及會影響到對外服務的操作 —— 那種要先請示我一下。這樣做,讓我不用當批准機器,一直按 Yes,但也代表我得把「不可逆」的定義寫清楚,不能事後才怪它。與此配套的是另一條硬規則:所有憑證一律去查資料庫或記憶,絕對不准猜。這條看起來很基本,但它是我踩過之後才寫下來的。

另一條規矩來自共用工作區。我常常同時開好幾個 Claude Code 的工作階段(session),處理不同的事,但它們可能在同一個程式碼倉庫裡。這種時候有一條規矩:不准用「把全部改動都加進去」這種偷懶的提交指令。因為 claude 以為的「全部」,可能包含了另一個工作階段正在改到一半的檔案。提交之前要先看清單、只提交自己動過的檔案。這條規則的來源不是理論,是claude code 真的把另一個 claude code 做到一半的東西提交上去過。

這些,都是和 claude code 共事一段時間,慢慢磨出來的,claude 查到問題,會主動提醒,這時,就是重要時刻:你得判斷,這個提醒,事件,要如何處理。是不是真的要照 claude 說的做?

有個 vm 很大,150G,叫 claude 做備份,按系統是放到 NFS 上,做完驗證錯誤。接下來,備份到該機器本身的硬碟上,驗證 ok,然後,複製到 NFS上,驗證又錯誤。claude 給了一堆推論及方案。150G,備份一次要將近30分鐘。 我之前的經驗:備份到 NFS,走內網, 大檔案容易出錯。應對的方法是:vm 要關機,保持NFS單一連線。所以,自己動手,關vm,從管理介面備份,順利成功。然後叫 claude 驗證,備份成功。這個牽涉到硬體,牽涉到經驗,這是 "" 的範疇,不是 claude 的事。如果我聽 claude 的,大概得先等到天荒地老了 .....

上面這些規則要放在哪裡? 專案規則檔 CLAUDE.md。Claude Code 會自動讀取兩層規則檔:一層是全域的、所有專案都適用的;一層是每個專案自己的。一開始我什麼都想寫進去,結果那個檔案越長越大,而每次對話它都要先讀一遍 —— 等於每次都在花錢重讀一堆這次用不到的東西。後來我把它砍到只剩「跨專案而且不顯而易見」的規則。判斷標準很簡單:如果這件事只在某一台機器成立,那它屬於那台機器的筆記,不屬於全域規則。我全域那份現在只剩下四件事:
用中文回我、直接執行不要每步問我、憑證一律去查不准猜、細節去讀記憶不要塞在這裡。

Claude Code 可以自訂「技能」(skill),也可以叫出專門的子代理來處理特定的活。我一開始很興奮,想把每個常做的事都包成一個技能。後來發現大部分情況下,一句話能觸發的事情,寫成一份記憶就夠了,不必做成工具。真正值得做成獨立子代理的,是那種需要自己的工作目錄、自己的一套規則,而且會跑很久的活 —— 例如整理我的知識庫。這個判斷標準是:需不需要隔離。需要隔離就做成子代理,不需要,只是要它記得的,就寫成記憶。

什麼不該寫進記憶?記憶不是越多越好。有三種東西我不寫:程式碼倉庫(git)本身已經記錄的(架構、改過什麼、提交歷史 —— 去讀原始碼就有,寫了只是重複);只對這次對話有意義的(這次要改哪一行,講完就沒用了);還有那些會過期的狀態(誰現在正在跑、磁碟現在用了多少)。記憶要放的是「非顯而易見、而且下次還會用到」的東西。判斷標準是問自己一句:三個月後還會需要它嗎?不會的話,講完就讓它走。

有關系統建立,我現在是這樣做:
給目標及需求,用fable做規劃,叫他出相關 md 檔及 tasks,讓sonnet執行,fable負責驗證稽核。

Day 01 講了我有什麼。今天講我怎麼用 Claude Code 管這些東西。它不是自動駕駛,是一個需要被交代清楚的同事。交代的方式有四種:一份專案規則檔、一套長期記憶、可以自訂的技能與子代理,以及一組「什麼可以自己做」的授權。明天,我們從最基礎的網域與固定位址開始。


上一篇
D01 一個沒有維運團隊的我
系列文
一個人的 IT 部門:用 Claude Code 從裸機到一整座 AI 機房2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言