很多開發者把代碼沙盒當成安全措施——隔離未知代碼,防止系統被搞崩。但我最近發現,沙盒真正的價值可能更“自私”一點:它幫你防的不是外來的惡意,而是你過去幾個月在各種項目中隨手安裝的技能、悄悄積累的配置文件,以及那些你根本不記得還存在的環境變量。
在 Tessl 工作讓我整天跟智能體技能打交道:寫技能、測技能、調參數、跑評估,就為了驗證這些東西到底有沒有照預想中那樣跑。如果你也在重度使用 Claude Code、Codex 之類的 AI 編程工具,估計節奏差不多。
![]()
問題就是這么悄悄出現的——某天我突然意識到自己的 ~/.claude/ 目錄已經成了垃圾場,橫跨十幾個項目的技能、設置和命令全堆在一起。每次坐下來測試新寫的技能,智能體都拖著一大堆歷史包袱。
不相干項目的技能會滲透進來,結果難以解讀:這個行為到底是我新技能的功勞,還是藏在某個角落的舊配置在作祟?這相當于在錯誤的環境中調試,而且那個環境還是隱形的。
我需要一個“干凈房間”——一個能讓智能體只帶著我指定的上下文運行,其他什么都不帶的地方。這就是我動手做 lincubate 的原因。它的方案很直接:把智能體丟進 LXD 容器里跑,和宿主機徹底隔開。項目文件可以通過綁定掛載讓智能體正常操作代碼,但 ~/.claude/ 目錄呢?除非你特意要求,否則它壓根不會出現。如果加上 --allow-claude-skills 標志,就等于主動說“把我主機上的技能帶進去”。不傳這個標志,容器就是一張白紙。智能體看見的只有你的項目,沒有積攢的配置、沒有借來的技能、沒有意外驚喜。這等于把沙盒從一個模糊的安全概念,變成了一個實用的專注工具。
為什么選了 LXD 而不是 Docker?我被問過好幾次了。原因很個人:我用了多年 LXD,在自己的 Ubuntu ThinkPad 上很順手。LXD 給的是完整系統容器——有正確的 init、systemd、真實的用戶賬戶,而不是只包住一個進程。它更像輕量虛擬機,當 AI 編程智能體期待在一個接近正常 Linux 系統的環境里工作時,這點就很重要了。
智能體要安裝軟件包、跑構建工具、啟動服務,完整系統容器處理這些毫無摩擦。還有個現實因素:在我老舊的 ThinkPad 上,LXD 明顯比 Docker 輕。差別不是巨大,但一天的開發工作下來,足夠讓我有感知。如果你是個 Docker 選手,說了這么多并非要踩誰,我只是按自己的習慣寫了個符合自己工作流的工具。
核心使用方式很簡單:在項目目錄里指定技能文件和上下文,lincubate 就給你一個無污染的評估環境。后續計劃還在推進,但底層思路沒變——要讓智能體的行為可復現,第一步就是把那些看不見的歷史包袱清掉。
如果你正在寫智能體技能,或者單純希望 Claude Code 的運行不依賴你從來沒清理過的古老配置,不妨試試這種“干凈房間”方式。它不會讓你的技能變厲害,但至少能讓你確定,究竟是哪個動作在真正起作用。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.