2026 年文章
2026 年山姆鍋在「我是山姆鍋」發表的文章彙整。
遊樂場為什麼不做 transpile/bundle
發布: 約 4 分鐘遊樂場主軸是單頁小程式,場裡又有 coding agent 高頻改檔。 山姆鍋說明為何傳統 transpile/bundling 不適合當默認中介,以及「agent 就是最好的 transpiler」。
對話 UI 不是任務迴圈本體
發布: 約 2 分鐘山姆鍋談 coding agent 常見誤區:把常駐邏輯寫在聊天畫面的前端。 原則通用;遊樂場把 loop 放進 Controller,只是其中一種落法。
在遊樂場隨手做一個小工具
發布: 約 2 分鐘站上 `/tools/` 不再擴張後,山姆鍋改在遊樂場沙盒裡養個人小工具。 這篇用「做一個給自己用的轉換/檢視小頁」當例子,分享過程而不是操作手冊。
薄命令列就好,不必復活一台 VM
發布: 約 1 分鐘砍掉 v86 之後,山姆鍋仍在遊樂場留下 WASI 形的 Shell 與 `runCmd`。 分享「有一點命令列手感」跟「瀏覽器裡的 Linux」差在哪。
API key 不要住在 prompt 裡
發布: 約 2 分鐘山姆鍋談 coding agent 與 BYOK:明文密鑰不該變成聊天紀錄的一部分。 遊樂場 SecretStore 只是實作案例,原則通用於多數自架 agent。
分頁裡的「假 Cloudflare」畫到哪
發布: 約 2 分鐘山姆鍋在遊樂場用 functions.js、Durable KV、仿 D1,讓單頁小程式有一點 edge 形後端。 分享界線怎麼畫——以及為什麼從來不打算在部落格後面真的開一朵雲。
從公開儲存庫,把樹搬進沙盒
發布: 約 2 分鐘山姆鍋常把別人 public 的小前端拉進遊樂場沙盒再改。 分享這條「複製進來就地玩」的路徑,以及它明明不是 git clone 的地方。
Coding agent 的副作用,請走窄門
發布: 約 2 分鐘山姆鍋談 coding agent 設計裡很無聊的一句話:模型不該什麼都能直接碰。 工具與宿主契約是窄門;遊樂場的 HOST/functions 只是案例。
宿主 API 是契約,不是後門
發布: 約 2 分鐘山姆鍋替遊樂場的 Agent 宿主寫了 capabilities 與一堆「不准」。 分享為什麼探測能力、禁止熱改自己、刪除邊界,比再加三個方便函式重要。
下面那兩格 REPL,是給人按的
發布: 約 2 分鐘遊樂場下方的 Python/JavaScript REPL,山姆鍋定位成人手玩具,不是 Agent 的 shell。 分享為什麼「給人按」跟「給代理用」要分開想。
Coding agent 先把觀察迴圈做穩
發布: 約 2 分鐘山姆鍋覺得 coding agent 常敗在「改完卻看不見」。 這篇談通用的觀察迴圈;遊樂場總管只是拿來對照的例子。
一個網址,把小程式丟進遊樂場
發布: 約 2 分鐘山姆鍋替遊樂場加了 `?open=`:連到 `.sam` 或公開的 Git 儲存庫,瀏覽器自己拉進來。 分享一個「別人家的小程式我想改兩下」時怎麼少踩帳號牆。
畫布不是預覽稿
發布: 約 2 分鐘山姆鍋在遊樂場裡把「預覽」做成 Service Worker 餵出來的虛擬靜態站。 這篇分享為什麼 srcdoc 改寫模組讓人抓狂,以及畫布到底在扮什麼角色。
Coding agent 最好只有一個對口
發布: 約 3 分鐘山姆鍋覺得 coding agent 最容易亂掉的一點,是人同時跟好幾個「什麼都能幹」的代理說話。 這篇談通用原則;站上遊樂場的總管只是山姆鍋拿來驗證的例子。
差點做成瀏覽器裡的 Linux
發布: 約 3 分鐘山姆鍋在遊樂場裡一度想塞進 v86/Alpine,最後砍掉,改成 Pyodide 與薄一點的命令列。 這篇分享為什麼「看起來很酷」的方案,最後對不上真正要解決的問題。
一份小程式,裝進口袋帶走
發布: 約 3 分鐘山姆鍋在站上弄了一塊叫遊樂場的地方,裡面每個沙盒都能匯出成 `.sam`。 分享一下:寫好玩的小東西,為什麼值得帶走一整包。
沙盒(Playgrounds):瀏覽器裡的多檔 Web 實驗場
更新: 約 9 分鐘站上 `/playgrounds/` 沙盒怎麼用 OPFS 存專案、用 Service Worker 當畫布、 用 functions.js 模擬 Workers 形 API;Agent 與 Tool SAM 都是可選角色, 再加上 REPL 與 WASI Shell——偏實作結構,不是操作手冊。
為什麼在站上放一個瀏覽器 Python 執行器
發布: 約 3 分鐘文章裡常出現 Python 片段,山姆鍋做了一個用 Pyodide 在瀏覽器執行的小工具—— 講為什麼自己做、為什麼用 CDN、以及刻意不做什麼。
為什麼要把部落格弄得像數位化身
發布: 約 4 分鐘部落格不只是分享知識的地方。山姆鍋把它愈做愈像一個數位化身—— 本體離線之後,最好還能留下一段讀得動的遺跡。
作者真的開始碎念了(還好不是 AI)
發布: 約 4 分鐘山姆鍋把文章底部那張作者卡改成對話泡泡:頭像會張嘴,右邊輪播 邀留言的台詞。過程一度差點做成 LLM 聊天,最後理智尚存。
為什麼在站上自己做一個 base 編解碼工具
發布: 約 3 分鐘線上編解碼站很多,山姆鍋還是在「我是山姆鍋」做了一個離線的 Base64/Base32/Base58 小工具——講為什麼自己做、刻意不做什麼, 以及資料為什麼不該離開瀏覽器。
請不起 QA,也不想自己當——用螢幕把人力測「一勞永逸」?
發布: 約 8 分鐘一人開發時不只請不起 QA,也不想自己當那個點系統匣的人。 Playwright 夠不著 OS chrome,山姆鍋做成「截圖 → 本機視覺 → 模擬滑鼠鍵盤」的 Visual-QA。這篇講來龍去脈、技術選型與半成品現實。
留言系統從 Disqus 換成 Giscus
發布: 約 4 分鐘部落格開了暗色主題後,Disqus 留言常對不上配色。山姆鍋試過 Auto、 重載與快取處理,最後仍決定硬切換成 Giscus,並說明取捨。
GitHub Actions 分鐘數燒光之後——一人團隊的 CI 現實面
發布: 約 4 分鐘山姆鍋一人開發產品時,GitHub Free 的 Actions 分鐘數曾在月中就被 Playwright E2E 燒光。這篇整理臨時關掉自動 CI、本機搶 port、改跑 自架 runner 的過程,給同樣在扛一人產品的人當參考。
把部落格一次升到 Astro 7 與 Tailwind 4
發布: 約 4 分鐘久違地動手整理部落格原始碼。今天一口氣把 Astro、Tailwind、TypeScript 與站台視覺都升了一輪,順便把品牌色調與 OG 圖檔重新定調。