Build Hour:Agents SDK(第 2/4 段)


🏦 台灣Pay 銀行轉帳 💙 PayPal
介紹 containers、skills API 等新功能,並實作 sandbox agent 自動處理任務
- 11:55 Container 是一種暫時性容器,可以放入一些檔案讓模型在裡面工作,完成後結束。這些 container 也可以在主流程之外另行建立
- 18:08 如果要讓 agent 取得任務專屬的特定情境,skills 是很好的做法。講者事先做了一個研討會 program editor 的 skill
- 23:16 SDK 對多家 agent sandbox 產品提供一級支援:demo 用 Modal,也可以用 Cloudflare、Daytona 等(字幕另寫作 ETB、Verscell、Blackel),也能自己實作。講者已經先建好 Modal app
💡 你可以怎麼用:就算不寫程式,也能借用 skill 的做法:把你常重複交代 AI 的工作,整理成一份說明文件,附上範例檔放在同一個資料夾,每次直接交給 AI。之後持續修改,並保留舊版本。
看全部 33 條重點
🧑🏫 這段是 OpenAI Build Hour 系列中介紹 Agents SDK 的中段。Agents SDK 是 OpenAI 給開發者做 AI agent 的工具包,agent 指的是會自己動手完成任務的 AI 助手。影片前半講 container、skills API 等新功能,後半實際示範把研討會的工作交給 sandbox agent 自動處理。想知道「AI 自己動手做事」背後怎麼運作的人,很適合看。
- 11:55 Container 是一種暫時性容器,可以放入一些檔案讓模型在裡面工作,完成後結束。這些 container 也可以在主流程之外另行建立↳ Container(容器)是臨時開出來的一台獨立小電腦。把檔案放進去,模型就在裡面做事,做完整台收掉。它也可以在主要流程之外先單獨開好。
- 11:55 透過 containers endpoint 可以建立 container、上傳檔案、啟動它,再附加到 Responses API 請求上↳ Endpoint 是 API 上負責某件事的入口。用 containers endpoint,你可以自己一步步開容器、放檔案、啟動,再掛到 Responses API 的請求上。Responses API 是呼叫 OpenAI 模型的介面。
- 11:55 也可以用 auto mode:只要加入檔案,系統會自動啟動 container,用完再自動關閉↳ Auto mode 是省事的做法:你只管丟檔案,開容器、關容器都由系統處理,不用自己一步步管理。
- 12:26 新增 container 網路存取控制:可以設定 domain allow list,也可以完全封鎖,讓 container 沒有 egress 或 ingress↳ 現在可以控制容器能不能上網。Domain allow list 是白名單,只准連指定的網站。也能完全封鎖,egress(往外連)和 ingress(從外面連進來)都關掉。
- 12:26 新增 skills API。以前用 skills 常遇到的問題是缺少單一的 source of truth,大家可能放在 GitHub 或 bucket,現在也能上傳到 skills API↳ Skill 是教 AI 做某件事的說明包。以前大家各放各的,有人放 GitHub,有人放 bucket(雲端儲存空間),沒有一份公認的正本,也就是 source of truth。現在可以統一傳到 skills API。
- 12:58 Skill 是一組檔案,包含一個記載最上層資訊的 skill MD 檔,也可以附上腳本或其他資源,讓模型執行特定任務↳ 一個 skill 就是一個資料夾。最上層有一份 skill MD,是 Markdown 格式的說明文件,寫這項技能做什麼、怎麼用。需要的話再附上腳本或參考資料,讓模型照著完成任務。
- 12:58 講者的例子是報稅 skill:內容定義 agent 處理 2025 稅務年度報稅需要知道的事,包含 IRS 規則,以及處理文件、填寫 1040 的腳本↳ 報稅 skill 寫明 2025 稅務年度要注意的事和美國國稅局 IRS 的規則,再附上整理文件、填 1040 的腳本。1040 是美國個人所得稅申報表。等於把報稅知識打包給 agent。
- 13:28 用 skills API 上傳 skill 後,可以持續迭代並建立版本、設定預設版本,再搭配 hosted shell 引用這些版本↳ Skill 上傳後可以持續修改,每次存成新版本,並指定哪一版是預設。Hosted shell 是平台代管、讓模型執行指令的環境,可以指定要用 skill 的哪一個版本。
- 13:28 投影片示範了幾段 curl 用法。如果手上已經有 skill 的 zip 檔,可以直接上傳到 API↳ curl 是在命令列送出網路請求的常用工具。投影片示範了幾段 curl 指令。如果 skill 已經壓成 zip 檔,可以直接整包上傳。
- 13:28 Sandbox agent 推出 TypeScript 版。Python 版是 4 月推出的,之後很多人要求 TypeScript 版,現在已經可以用↳ Sandbox agent 是能在隔離環境裡實際操作檔案的 agent。Python 版 4 月就推出了,後來很多人要 TypeScript 版,現在也能用了。TypeScript 是網頁開發常用的程式語言。
- 13:58 Demo 主題:用 Agents SDK 做一個任務追蹤工具,讓它變成 agentic,把工作都交給 agent↳ Demo 要把普通的任務追蹤工具改成 agentic。意思是任務不再只是記下來等人處理,而是直接交給 agent 去做。
- 14:33 Demo 工具是講者 vibe coded 出來的類 Linear 看板,可以建立任務並指派給人。情境是研討會規劃,任務像是製作議程素材、修改講稿、上傳網站內容↳ 工具是講者 vibe coded 出來的看板,也就是靠跟 AI 對話快速做出來的。它長得像專案管理工具 Linear。情境是辦研討會,任務包括做議程素材、改講稿、上傳網站內容。
- 15:34 講者建立一個「create program assets」任務並上傳檔案。以前會指派給人或自己做,這次改建立 agent 來自動化↳ 講者開了一張「create program assets」(製作議程素材)任務卡,並附上檔案。這種卡以前會派給同事或自己做,這次改成交給 agent。
- 16:34 Sandbox agent 是新的 agent 類型,其實是原本 agent class 的 subclass,大部分參數和用法相同,只多了幾個新東西。範例中先定義 instructions↳ Subclass 是從原本類別延伸出來的版本。所以 sandbox agent 的用法跟一般 agent 幾乎一樣,只多了幾個新設定。範例第一步先寫 instructions,也就是給 agent 的工作說明。
- 16:34 講者把任務指派給 program editor agent,請它看過檔案並修改得更清楚↳ 講者把任務派給名叫 program editor 的 agent,交代它讀過檔案,把內容改得更清楚。
- 17:05 這個 agent 設定用 Docker 當 sandbox,執行時可以看到 Docker container 在跑,Agents SDK 會負責把檔案上傳到 container↳ 這個 agent 用 Docker 當 sandbox。Docker 是常見的容器工具,sandbox 則是把 agent 關在裡面做事的隔離環境。執行時看得到容器在跑,檔案由 SDK 自動放進去。
- 17:37 Agent 被限制在該資料夾內,可以存取裡面所有檔案。它會執行指令、瀏覽檔案,最後產出工作紀錄,並指出缺少部分資料↳ Agent 只能動這個資料夾,裡面的檔案都能用。它會自己下指令、翻檔案,最後交出工作紀錄,還會指出哪些資料不夠。
- 18:08 如果要讓 agent 取得任務專屬的特定情境,skills 是很好的做法。講者事先做了一個研討會 program editor 的 skill↳ 想讓 agent 懂某個任務的特殊背景,最好的做法是給它 skill。講者事先做好一個研討會議程編輯的 skill,等於先把這份工作的做法寫清楚。
- 18:08 除了 skills API,GitHub 也很適合存放 skills:可以做版本控制,也能用 pull request 審查修改。越來越多人用 Git 建立 skill 儲存庫,SDK 對此有一級支援↳ Skill 也很適合放在 GitHub,因為每次修改都有版本紀錄。還能用 pull request 審查修改,也就是改完先給人看過再合併。越來越多人用 Git 建 skill 庫,SDK 直接支援。
- 19:10 Capability 是新 SDK 的概念,一個物件可以同時整合 tools、額外的 instructions,還能在 manifest 中加入內容,讓電腦啟動時就放好檔案↳ Capability 是新 SDK 的概念,把工具、額外說明和 manifest 打包成一組。Manifest 像開機清單,寫好哪些檔案要先放進電腦,環境一開就準備好。
- 19:10 預設 capability 之一是 file system:讓模型可以查看圖片,也能執行 apply patch tool 直接修改檔案↳ File system capability 讓模型能操作檔案:可以看圖片,也能用 apply patch tool 直接修改檔案內容。
- 19:42 預設 capability 還有 shell tool,由兩個工具組成(字幕寫作 exact command 與 write standard in),形成非同步的 bash 指令流程↳ Shell tool 讓模型下 bash 指令,bash 是 Linux 的命令列。它由兩個工具組成,一個執行指令,一個輸入資料(字幕寫作 exact command、write standard in)。指令可以非同步執行,不必乾等。
- 19:42 預設 capability 還有 compaction:模型可以壓縮自己的 context,超過 context window 仍能繼續,可以工作數小時、數週,技術上沒有時間上限↳ Context window 是模型一次能容納的內容上限。Compaction 讓模型自己壓縮前面的內容,騰出空間繼續做。所以它能連續工作數小時甚至數週,技術上沒有時間上限。
- 20:12 Demo 另外加入 skills capability,指定從講者建立的 git repo 的 main 分支載入 skills。預設是 GitHub,不用 GitHub 的話可以改 host↳ Demo 另外加上 skills capability,指定從講者 git repo(程式碼儲存庫)的 main 分支載入 skill。main 分支是主要版本。預設從 GitHub 抓,不用 GitHub 的話改 host 就好。
- 20:43 啟動 sandbox agent 時,SDK 會依照你的定義建立 sandbox。範例用 Docker sandbox client,可以設定 image(這裡用 Python 312 image)↳ Agent 啟動時,SDK 會照你的設定開好 sandbox。範例用 Docker,並指定 image,也就是開機用的環境範本。這裡選的是 Python 3.12 的 image。
- 21:13 不同後端有不同選項,可以輕鬆換成前面提到的任何後端↳ 後端指實際提供 sandbox 的服務。每種後端有各自的設定選項,要換成前面提過的任何一種都很容易。
- 21:13 任務停止時,agent 會自動關閉 container,並把檔案系統 snapshot 存到你指定的位置。範例存在講者的筆電↳ 任務停下時,agent 會自動關掉容器,把整個檔案系統存成 snapshot(快照),放到你指定的地方。範例存在講者的筆電上。
- 21:45 Snapshot 是 tarball,解開後就是模型當時使用的完整檔案系統↳ 快照的格式是 tarball,一種把整個資料夾打包成單一檔案的格式。解開後,就是模型當時工作環境的完整檔案系統。
- 21:45 恢復任務時,SDK 會從指定位置取回 tarball。如果舊 container 已經不在,就開一個新的,再把檔案系統還原上去。模型看到的環境和離開時一模一樣,完全不知道換了 container↳ 繼續任務時,SDK 會取回 tarball。舊容器不在就開新的,再把檔案系統還原上去,這叫 rehydrate。模型看到的環境跟離開前一樣,不知道換了容器。
- 22:15 如果不想用本機檔案系統或 tarball,也有 provider 專屬做法,例如 Modal 的 volumes 或 snapshot 概念可以直接接上。預設的簡單 tarball 做法適用於任何 provider↳ 不想用本機或 tarball,也能改用各家 provider(提供 sandbox 的業者)自己的存檔方式,例如 Modal 的 volumes 或 snapshot。預設的 tarball 做法則任何一家都能用。
- 22:46 Demo 結果:agent 讀了 skill 檔,做了不少操作,最後回答 skill 檔中最有趣的內容↳ 結果 agent 讀了 skill 檔,做了不少操作,最後回報它覺得 skill 檔裡最有趣的內容。
- 22:46 下一步是把 agent 搬到雲端。Docker 開箱即用,很適合在筆電上測試與本機開發,但很難部署到 production↳ 下一步是把 agent 搬上雲端。Docker 拿來就能用,適合在筆電上測試和開發。但要正式上線給使用者用(production),用 Docker 部署很困難。
- 23:16 SDK 對多家 agent sandbox 產品提供一級支援:demo 用 Modal,也可以用 Cloudflare、Daytona 等(字幕另寫作 ETB、Verscell、Blackel),也能自己實作。講者已經先建好 Modal app↳ SDK 直接支援多家雲端 sandbox 服務。Demo 用 Modal,也能用 Cloudflare、Daytona 等,另有幾家的名稱字幕拼寫不清。也可以自己實作。講者已經先在 Modal 建好應用程式。
📘 術語
container(容器):暫時性的環境,可以放入檔案讓模型在裡面工作,完成後結束
containers endpoint(containers 端點):可以建立 container、上傳檔案、啟動,並附加到 Responses API 請求上
auto mode(自動模式):只要加入檔案,系統會自動啟動 container,用完再關閉
domain allow list(網域允許清單):控制 container 網路存取的方式之一
egress / ingress(對外/對內流量):可以完全封鎖,讓 container 沒有進出的網路流量
skill(技能包):一組檔案,含一個最上層的 skill MD 檔,也可以附腳本或資源,用來執行特定任務
skills API(skills API):可以上傳 skill、建立版本、設定預設版本,當作 skills 的集中來源
source of truth(單一可信來源):集中管理 skills 的地方,例如 GitHub、bucket 或 skills API
hosted shell(託管 shell):可以引用 skills API 上的 skill 版本並一起運作
sandbox agent(沙盒 agent):新的 agent 類型,是 agent class 的 subclass,大部分參數相同
subclass(子類別):sandbox agent 是原本 agent class 的 subclass,所以大多數用法沿用
sandbox(沙盒):agent 被限制在裡面的執行環境,例如 Docker container
vibe coded(憑感覺寫程式):講者形容 demo 工具和 skill 內容是這樣做出來的,內容本身不重要
capability(能力模組):可以把 tools、額外 instructions、manifest 內容整合在一起的物件
manifest(清單):capability 可以在這裡加入內容,讓電腦啟動時就把東西放好
apply patch tool(套用修補工具):file system capability 的一部分,讓模型直接修改檔案
shell tool(shell 工具):由兩個工具組合而成,形成非同步 bash 指令流程
compaction(context 壓縮):讓模型壓縮自己的 context,超過 context window 也能繼續工作
context window(上下文視窗):模型 context 的容量上限,compaction 讓模型超過它也能繼續
snapshot(快照):任務停止時保存的檔案系統,存放在你指定的位置
tarball(tar 壓縮檔):預設的 snapshot 形式,解開就是模型當時使用的完整檔案系統
rehydrate(還原):把 snapshot 的檔案系統放回新 container,讓模型看到的環境和離開時一樣
pull request(合併請求):用 GitHub 存放 skill 時,可以用它來審查 skill 的修改
containers endpoint(containers 端點):可以建立 container、上傳檔案、啟動,並附加到 Responses API 請求上
auto mode(自動模式):只要加入檔案,系統會自動啟動 container,用完再關閉
domain allow list(網域允許清單):控制 container 網路存取的方式之一
egress / ingress(對外/對內流量):可以完全封鎖,讓 container 沒有進出的網路流量
skill(技能包):一組檔案,含一個最上層的 skill MD 檔,也可以附腳本或資源,用來執行特定任務
skills API(skills API):可以上傳 skill、建立版本、設定預設版本,當作 skills 的集中來源
source of truth(單一可信來源):集中管理 skills 的地方,例如 GitHub、bucket 或 skills API
hosted shell(託管 shell):可以引用 skills API 上的 skill 版本並一起運作
sandbox agent(沙盒 agent):新的 agent 類型,是 agent class 的 subclass,大部分參數相同
subclass(子類別):sandbox agent 是原本 agent class 的 subclass,所以大多數用法沿用
sandbox(沙盒):agent 被限制在裡面的執行環境,例如 Docker container
vibe coded(憑感覺寫程式):講者形容 demo 工具和 skill 內容是這樣做出來的,內容本身不重要
capability(能力模組):可以把 tools、額外 instructions、manifest 內容整合在一起的物件
manifest(清單):capability 可以在這裡加入內容,讓電腦啟動時就把東西放好
apply patch tool(套用修補工具):file system capability 的一部分,讓模型直接修改檔案
shell tool(shell 工具):由兩個工具組合而成,形成非同步 bash 指令流程
compaction(context 壓縮):讓模型壓縮自己的 context,超過 context window 也能繼續工作
context window(上下文視窗):模型 context 的容量上限,compaction 讓模型超過它也能繼續
snapshot(快照):任務停止時保存的檔案系統,存放在你指定的位置
tarball(tar 壓縮檔):預設的 snapshot 形式,解開就是模型當時使用的完整檔案系統
rehydrate(還原):把 snapshot 的檔案系統放回新 container,讓模型看到的環境和離開時一樣
pull request(合併請求):用 GitHub 存放 skill 時,可以用它來審查 skill 的修改
✏️ 小考一題
依影片說明,Agents SDK 預設用什麼方式保存 sandbox 的狀態,讓任務之後能恢復?
A. 把檔案系統打包成 tarball snapshot,存到你指定的位置B. 一律存進 Modal 的 volumesC. 讓原本的 Docker container 保持開啟,不關閉D. 把檔案系統 commit 到 GitHub repo 的 main 分支看答案
答案:A。[21:13] 任務停止時會關閉 container,並把檔案系統 snapshot 存到指定位置;[21:45] snapshot 就是 tarball;[22:15] 講者說預設是簡單的 tarball 做法,Modal volumes 屬於 provider 專屬做法。
💛 覺得有幫助?支持一下


課本免費、沒有廣告,支持與否都能照常讀 🐰