所有節目›AI Engineer Europe 2026World's Fair 2026World's Fair 線上軌AI in HealthcareSoftware Factories
Give Your Agent a Computer在 YouTube 看這一場

AI Engineer Europe 2026 · 工作坊 · 2026-05-12 · 69 分

替 agent 接上一台沙盒電腦

Give Your Agent a Computer · Nico Albanese,Vercel

Nico Albanese 帶著現場聽眾用 AI SDK 6 從零做 agent:先接上網路搜尋,再給它一個會保留狀態的 sandbox,只留一個 bash 工具,最後讓它自己寫記憶檔與腳本。

工具太多看原片 ↗

概要

  • Agent 定義只寫一次Nico 說 AI SDK 6 的 ToolLoopAgent 把模型、instructions、工具集中在一處,route handler 只管串流。同一份定義可以放進 monorepo,在 Next.js 或簡單的 bun server 裡共用。
  • 型別從 agent 一路流到畫面Nico 的前提是讓 agent 定義成為其他地方都從它衍生的來源,所以訊息型別、工具的輸入輸出型別都跟著 agent 走。
  • 檔案系統讓 agent 不跑掉Vercel 內部的 d0 在加上檔案系統與「先寫計畫檔、照著打勾」的指示之後,比較能完整做完整個任務。Nico 說這個做法他們幾乎每個內部 agent 都在用。
  • Sandbox 取名字就能持續使用Vercel 正在 beta 的 named sandbox 讓程式只要用名字指到 sandbox。閒置後會關機並保存檔案系統快照,下次請求再用快照開新的。
  • 一個 bash 工具就夠Nico 覺得 agent 很會寫 bash 指令,所以整場只留這一個工具;記憶也只是 sandbox 裡的一個 markdown 檔,由確定性的程式讀出來塞進 system prompt。
  • 長任務不一定要 compactionNico 自己的 coding agent 單次跑了 104 分鐘、316 次工具呼叫,沒有做 compaction,偏好用 sub-agent 與 handoff 控制 context。

原話

  • “we want to have the agent definition being the source of truth that everything kind of inherits from and derives from”

    我們希望 agent 定義是唯一的依據,其他東西都從它繼承、衍生

    ▶ 25:21
  • “compaction has not been an issue to me”

    compaction 對我來說從來不是問題

    ▶ 43:39
  • “we feel very strongly that bash is all you need”

    我們很堅信 bash 就夠了

    ▶ 51:14
  • “a small leap for us today but a huge jump for our agent”

    對我們今天只是一小步,對 agent 卻是一大步

    ▶ 55:51
  • “memory is a file that you store in your sandbox”

    記憶就是你存在 sandbox 裡的一個檔案

    ▶ 57:16

延伸

  • Nico 提到 AI SDK 7 會替 context 加上型別,沒有說明發布時間。
  • Nico 提到 AMP 做了 handoff 工具,由 agent 產生要帶進全新對話的 context,只是點到,沒有細說做法。
  • Nico 不信任摘要式 compaction 的例子:Meta AI 一位主管請 OpenClaw 封存郵件,工具一次拉進太多郵件、觸發自動 compaction,原本「不要這樣做」的指示就被壓掉了。

章節

點時碼直接跳到原片的那一段。

  1. 環境設定帶大家 clone 範例 repo、裝 Vercel CLI、link 專案並拉環境變數,拿到的 OIDC token 之後同時用來呼叫 AI Gateway 與 sandbox。
  2. ToolLoopAgentNico 回顧 AI SDK 4 時只有四個基本函式,現在 AI SDK 6 多了物件導向的 ToolLoopAgent,避免 route handler 塞進兩千行 LLM 邏輯。
  3. 全域 provider 與 routeAI SDK 6 預設用 AI Gateway 當全域 provider,直接寫模型字串即可;範例用 GPT-5.4 mini,再寫一個 POST route handler 呼叫 agent。
  4. 前端與 instructions用 useChat 管訊息、逐個 part 渲染,跑通第一個聊天;接著用 instructions 讓它「像牛仔一樣回答」,示範改行為最直接的辦法。
  5. 2026 年的四個積木Nico 認為做 agent 要有 runtime(harness)、工具、給 agent 存狀態與執行程式的 sandbox 檔案系統,以及承載工作的 runs。
  6. 三種工具與網路搜尋工具分成自訂、provider 定義、provider 執行三類;示範裝 OpenAI provider 加上 web search,還能傳入地點等參數。
  7. 工具呼叫顯示在 UI搜尋時畫面完全沒反應,所以依工具名稱在 page 裡寫對應的元件;用 infer agent UI message 讓輸入與輸出都有型別。
  8. 為什麼要給電腦Nico 講內部 d0 agent 從一次只用五到十個工具、答案偏幻想,到加上檔案系統與計畫檔後比較能照著做完。
  9. 可持續的 named sandbox一般 sandbox 終究是暫時的,所以 beta 版讓每個 sandbox 有名字、session 是它的實例,閒置後存快照,下次請求接著用。
  10. 問答:訊息歷史怎麼送有聽眾問是否每次都送整份歷史;Nico 說預設會送,大型專案多半只送最新訊息,並在伺服器端自己組歷史,再用 prepare step 在每一步調整送進模型的內容。
  11. 不做 compaction 的經驗Nico 自己的 coding agent 單次跑 104 分鐘仍只用掉 GPT-5.4 context 的 32%,並說明為何偏好 sub-agent 與 handoff,不靠摘要壓縮。
  12. sandbox 輔助函式與 call options裝 Vercel sandbox 套件、寫依名字取得 sandbox 的函式;再用 call option schema 讓每次呼叫帶入結構化輸入,例如依會員等級換模型。
  13. agent 的 runtime context這個 context 比較像 React context:prepare call 只在第一次呼叫時跑一次,把 sandbox 放進去,整個 run 的各步驟與工具都取得到。
  14. 只有 bash 一個工具工具由 description、input schema、execute 三部分組成;bash 工具從 execute 的第二個參數取 context,跑指令並回傳輸出與 exit code。
  15. 接上 sandbox 並顯示終端機把工具交給 agent,route 以名字取得 sandbox 傳入;再寫 bash 元件在畫面上顯示指令執行,第一次 ls -la 就跑在 sandbox 裡。
  16. instructions 要教它用電腦agent 有 bash 卻不知何時使用,所以在 instructions 裡寫明它有一台可用 bash 操作的電腦。
  17. 記憶就是一個檔案Nico 的主張是把記憶存成 sandbox 裡的 markdown,prepare call 每次執行前把 memories.md 讀出來注入 instructions。
  18. 調 prompt 的踩雷它連打招呼都記下來。Nico 說連自己都會寫出互相矛盾的指令,而寫「不要記招呼」像叫人別想粉紅大象,提到不想要的行為反而不好;中途還有一次記憶檔被清空。最後換上事先寫好的規則:不記招呼、閒聊與能從程式碼推出的資訊。
  19. agent 自己寫腳本Nico 請 agent 把重複的任務寫成 Python 腳本並記進 memories.md;查完倫敦天氣,再問另一個地點時沿用那支腳本,第一次查錯了地方,稍微修改後才對。
  20. 同樣模式的大系統Nico 展示自己用同一套做的背景 agent:搭配 AI SDK、AI Gateway 與 workflow,每個 LLM 步驟對應一個可重試的 durable step,並用 sub-agent 保持主執行緒精簡。說 Vercel 有 23 人在用,最近一兩個月跑了 38 億 token。

名詞

AI SDK
Nico 在 Vercel 負責的開源 TypeScript 套件,整場用它的第 6 版做 agent
ToolLoopAgent
AI SDK 6 的 agent 類別,名字就是它做的事:反覆呼叫工具直到完成
AI Gateway
全域 provider 的預設值,用模型字串就能呼叫各家模型
Vercel Sandbox
給 agent 執行指令的環境;這場用的是 beta 的 named sandbox
call options
呼叫 agent 時才傳入、會改變行為的結構化輸入,用 schema 定義
prepare call / prepare step
前者在一次 run 的開頭執行一次,後者在每一步之前執行,可改送進模型的內容
context
AI SDK agent runtime 裡的共享狀態,Nico 說像 React context,工具的 execute 可以取用
d0
Vercel 內部讓人「和資料對話」的 agent,可使用幾乎整個後端與管理後台
provider 執行的工具
像 web search 這類由模型供應商在自己伺服器上執行的工具
OpenClaw
Nico 多次拿來類比的 agent 專案,舉 compaction 失誤的案例時也用到它

相關影片 同屬「工具太多」