對話 UI 不是任務迴圈本體

發布: 約 2 分鐘

做 coding agent 時,最順手的寫法常常是:聊天 UI 載入 → while 或輪詢開始跑 → 工具呼叫寫在同一個前端 bundle。Demo 漂亮。然後你一切分頁、一重整、一讓 UI 晚點掛上——迴圈就跟畫面一起蒸發。

山姆鍋愈來愈把一句話當預設:

對話 UI 負責說話與展示;任務迴圈住在別處。

目錄

展開目錄

為什麼要拆

  • UI 可以晚掛、可以不掛(headless)、可以換皮。
  • 迴圈需要自己的生命週期:啟動、暫停、恢復、收尾。
  • 副作用出口(打 API、改檔)最好跟「渲染按鈕」脫鉤,才好測、好重跑。

這不是什麼新哲學,比較像把「畫面」跟「服務」分開——只是 agent 時代大家又一次踩進同一條河。

案例:Controller

在遊樂場的 SAM 模型裡,常駐邏輯偏向 controller.js(Controller);畫布 UI 經 functions.js 跟後端說話,而不是自己私藏無限迴圈當唯一執行面。總管要能在 UI 還沒就緒時仍被驅動——這對「對口」這種角色很實際。

你在別的宿主上可以用 worker、用伺服器行程、用 extension background。名字不重要,別跟 React/Svelte 元件壽命綁死比較重要。

結語

若你的 agent 關掉視窗就不會收尾,或開著視窗才敢跑長任務,值得重新畫一張責任圖。山姆鍋自己也是被「重整等於暗殺 agent」整過才改口。你有更粗暴但好用的拆法,下面留言區歡迎開講。

Sampot (山姆鍋)

獨立軟體開發者,專長分散式系統、Web 應用與雲端服務架構。目前一人開發NT² Vault:結構化數位資產保管箱。工作之餘關注開源軟體的發展與應用,偶爾在這裡碎念與分享。