蓋 /playgrounds/(遊樂場)的時候,山姆鍋腦中一度有畫面:下方開一格「真的」Linux,Agent 或人類敲兩下指令,世界就完整了。技術上也不是幻想——用 v86 之類的東西,在瀏覽器裡餵 Alpine,聽起來很帥。
後來那條路被砍掉了。這篇不是功能速報,只是把當時怎麼想清楚的過程寫下來,給同樣會被「完整感」勾走的人當參考。
目錄
展開目錄
問題本來是什麼
遊樂場要解決的,比較像:
- 多檔的單頁小程式(SAM)能編、能存(OPFS)、能在畫布上像從網路開站一樣跑。
- 需要時掛一點 Workers 形的
/api/*。 - 可選地,讓一種叫 Agent 的 SAM 透過宿主 API 去改檔、重載、讀 console。
主軸是輕量 Web 實驗,不是在分頁裡重建一台開發用筆電。
Linux guest 對「讓人覺得這裡很強大」很有幫助;對「讓人更快驗證一個小前端+一點假後端」幫助沒那麼直接。慢、映像大、網路與編譯鏈也不會 magically 出現——guest 裡以為有的世界,常常是另一個要餵養的怪物。
看起來很酷,槓桿卻低
山姆鍋自己也喜歡酷的東西,所以這段辯護其實是在辯自己。
若 Agent 的日常是:改幾個檔 → 重載畫布 → 看 console 有沒有爆,那它需要的是觀察迴圈與清楚的宿主契約,不是一把互動式 TTY。人類若只是想算個式子、跑點 Python,Pyodide 這類路徑比較貼題;下方再留 JavaScript REPL,也是給人按的,不是假裝 shell。
後來遊樂場若還有「命令列」味道,走的是薄很多的 WASI 路線——能跑有限指令,但不是把 v86 換皮復活。界線很重要:一旦宣稱「這裡有 Linux」,期待值會長到你養不起。
妥協長什麼樣子
工程上常沒有對錯,只有可不可以辯護——這點山姆鍋很久以前就寫過類似的感觸。這次可以講白:完整 Linux 不提供(v86/Alpine 面板已移除);也不給 Agent 互動 shell,改靠宿主 API 與觀察迴圈。人類若要玩數據/公式,留下 Python REPL(與 runPython 同路);若還想要一點命令列手感,則是薄很多的 WASI/runCmd,範圍收斂。
砍掉之後,遊樂場比較像遊樂場:場地裡有沙盒,沙盒裡堆 SAM;而不是一台塞進 iframe 的迷你機房。
結語
若你正在做類似的「瀏覽器 IDE/實驗場」,山姆鍋想分享的只有一句:先對齊使用者(或 Agent)每天重複的那三步,再決定要不要上 guest OS。 完整感很貴,而且帳單常在上線後才寄到。
場地仍在 遊樂場,免費亂玩;你若也砍過自己心愛的架構,下面留言區歡迎說當初怎麼死心的。