AI Agent 會自己上網、寫程式和執行任務嗎?從 Browser Agent 到 JSON Tool Calling 完整解析
產品頁會寫「自主上網、寫程式、執行任務」。工程上更準確的一句話是:模型只填 JSON,宿主去打開瀏覽器、改檔案、調 API。本文從 Browser Agent 走到 JSON Tool Calling,回答三個問題:它會不會自己做?真正做事的是誰?你該檢查哪一段物件?
閱讀前速覽
| 概念 | 一句話 | 落在哪 |
|---|---|---|
| Browser Agent | 對著網頁或桌面做結構化動作 | computer_use / browser JSON |
| Coding Agent | 讀倉庫、改檔案、跑命令 | tool_use / Bash |
| Task Agent | 調業務 API、寫狀態、交接手 | tool_calls / arguments |
| JSON Tool Calling | 工具名、參數、結果的契約 | Schema / payload |
先記住分工:模型提議物件,宿主執行副作用。換牌子,這條 JSON 呼叫鏈不變。
會做事。不會「自己」做事
2026 年的 Agent 已經能打開網頁、填表、匯出;能讀倉庫、改檔案、跑測試;能查訂單、開退款、交接手。這些都是真副作用,不是聊天氣泡。
但「自己」這個詞會把責任寫錯。大模型不持有瀏覽器行程,不 spawn shell,也不直接打你的內網。它只生成一段可校驗的物件:工具名、參數、偶爾還有下一步意圖。真正點下去的是宿主。
- 上網:模型發出
browser_navigate或computer_call,宿主的瀏覽器沙箱執行。 - 寫程式:模型發出 Read / Edit / Bash,宿主的工作區執行。
- 執行任務:模型發出
tool_calls,宿主調 API 或工作流。
若你還把 Agent、Tool Calling、Function Calling 糊成一個詞,先讀 AI Agent 完整指南。本文只談一件事:三種產品殼,共用一條 JSON 呼叫鏈。
三種殼,一張工具表
市場把產品叫 Browser Agent、Coding Agent、Computer Use、Operator、ChatGPT Agent。殼不同,表是同一張:能做什麼,取決於宿主暴露了哪些工具。
- Browser Agent:分頁、截圖、點擊、抽取 DOM。演示最好看,權限也最容易被低估。
- Coding Agent:倉庫、補丁、測試、終端機。改的是磁碟和行程。
- Task Agent:訂單、工單、日曆、退款。改的是業務系統。
不要按品牌買能力。按工具表買能力。沒有 browser 工具,它上不了網;沒有 Bash,它寫不了能跑的補丁;沒有業務函數,它執行不了退款。
JSON Tool Calling 才是同一條骨架
Tool Calling、Function Calling、computer_use,名字不同,形狀一樣。一輪通常只有四跳:
- 宣告:宿主給出
tools[]或inputSchema。 - 提議:模型填工具名和參數物件,不自己執行。
- 門禁:宿主校驗、做 allowlist、決定等不等待人。
- 回寫:截圖、stdout、API 回應變成下一輪可見的物件。
這就是為什麼 Schema 比 prompt 值錢。prompt 影響它填什麼;Schema 和宿主決定什麼能發生。口徑見 AI 為什麼需要 JSON Schema,協議邊界見 MCP Tool Schema vs Function Calling。
Browser Agent:上網的不是模型
Browser Agent 看起來最像「自己上網」。螢幕上真的有分頁在動。動作仍然是物件。
結構化的 Browser Agent——Playwright 風格、Claude 的 browser 工具、不少 MCP 瀏覽器——發出的是可校驗的導航:
{
"type": "tool_use",
"id": "call_nav_1",
"name": "browser_navigate",
"input": {
"url": "https://docs.example.com/api/orders",
"wait_until": "domcontentloaded"
}
}
OpenAI 一側的 computer use / Operator 更接近座標動作。模型看見的是截圖或可訪問性樹,發出的是點擊、輸入、捲動:
{
"type": "computer_call",
"call_id": "call_8c12",
"action": {
"type": "click",
"x": 412,
"y": 268
}
}
兩種形狀都不要讀成「模型看見了頁面所以自己點了」。看見的是像素或樹進了上下文;點下去的是宿主。你該鎖住的是參數,不是文案:
- URL allowlist:預設只開文件站、狀態頁、你宣告過的域。
- 禁止額外頭:Cookie、Authorization 不能進參數物件。
- 抽取要有 Schema:匯出的應是欄位,不是整頁 HTML。
- 登入態留在宿主:工作階段屬於沙箱策略,不屬於模型權重。
一份收緊的導航 Schema 長這樣。additionalProperties: false 不是矯情——寬 object 等於讓模型多塞一個內網位址或一段指令碼:
{
"name": "browser_navigate",
"description": "Open a URL in the isolated browser",
"inputSchema": {
"type": "object",
"properties": {
"url": { "type": "string", "format": "uri" },
"wait_until": {
"type": "string",
"enum": ["load", "domcontentloaded"]
}
},
"required": ["url"],
"additionalProperties": false
}
}
GPT-6 Astra 指南 把 browsing 和 computer use 寫成同一條能力。工程上它們仍是工具 JSON。寬瀏覽器工具等於把登入態交給迴圈,安全面見 AI Agent 安全與 JSON 驗證。
Coding Agent:寫程式的也不是模型
AI Coding Agent 與 JSON 呼叫鏈 已經拆過 Claude Code 與 GPT Agent。這裡只補一句和 Browser Agent 對齊的話:寫程式同樣是填 JSON。
{
"type": "tool_use",
"id": "call_read_1",
"name": "Read",
"input": {
"path": "src/billing/refund.py"
}
}
模型不會 open() 檔案。宿主讀完,把內容寫成 tool_result。下一輪它才可能發出 Edit 或 Bash。
和上網的差別只是工具面:一邊是 url / selector / screenshot,一邊是 path / command / patch。迴圈相同。
執行任務:副作用在 API,不在權重
「執行任務」最容易被產品文案吞掉。客服退款、工單分派、日曆寫入,都是 Task Agent。形狀仍是 Function Calling:
{
"tool_calls": [{
"id": "call_task_3",
"type": "function",
"function": {
"name": "create_ticket",
"arguments": "{\"title\":\"Refund A-1042\",\"priority\":\"high\"}"
}
}]
}
這裡最危險的不是文筆,是寬 object。金額上限、enum、additionalProperties: false,必須寫在 Schema 裡,不能寫在「請小心」裡。
多 Agent 交接也是 JSON。handoff 物件比一段「請交給帳單組」可稽核。把工具與工作流收成 Schema,見 JSON Schema 與 AI Agent 工作流。
一輪迴圈只有四跳
產品頁會寫「自主完成」。工程上,Browser、Coding、Task 都走同一條四跳:
- 觀察:截圖、倉庫狀態、上一次工具結果進入上下文。
- 提議:模型輸出工具名和參數物件。
- 執行:宿主打開頁面、改檔案、或打 API。副作用發生在這裡。
- 回寫:DOM 摘要、stdout、回應體變成下一輪可見的物件。
四跳缺一門禁,JSON 就是命令。auto-mode 等於你預先同意了某一類物件。換殼,這條迴圈不變。
三張表,同一條鏈
不是誰更聰明,而是宿主把哪張工具表掛進迴圈:
| 維度 | Browser Agent | Coding Agent | Task Agent |
|---|---|---|---|
| 看見什麼 | 截圖 / DOM / 可訪問性樹 | 檔案、測試、終端機輸出 | 業務物件、上一跳狀態 |
| 發出什麼 | navigate / click / type | Read / Edit / Bash | lookup / create / handoff |
| 副作用在哪 | 瀏覽器沙箱、登入態 | 工作區磁碟、行程 | 業務 API、下游系統 |
| 你鎖什麼 | URL、Cookie、抽取 Schema | cwd、逾時、網路門 | 金額、列舉、必填欄位 |
換牌子,迴圈不變。你要穩定的是工具契約和執行世界,不是某一家的演示影片。
你該檢查物件,不是演示影片
Agent「上網寫程式執行任務」之後,審的物件不該是最後一句「我已經辦好了」。審的是軌跡。
- 把
tool_use/tool_calls/computer_call格式化,看名字和參數是不是你以為的那一下。 - 用 JSONPath 提取 抽出
url、command、name,不要靠眼睛掃散文。 - 和上週能過的軌跡 JSON Diff。迴圈漂了,先看工具表和參數形狀,再怪模型。
- 截圖、stdout、API 回應要進軌跡,不要只留一句「已完成」。
- Cookie、工作階段、內網位址不要貼進公共格式化站。JSONSort 在瀏覽器本地跑,適合看這些物件。
軌跡能重建,工作階段才能復盤。這是 Agent 能進生產流程的前提,不是錦上添花。
常見誤區
- 以為模型自己打開了網頁。打開網頁的是宿主的瀏覽器行程。
- 以為模型自己執行了程式。執行權在宿主,不在權重。
- 只看演示影片,不審工具 JSON。命令和點擊可能已經發生了。
- 給 browser 一張空白支票。沒有 URL 門和 Cookie 隔離,迴圈就是工作階段洩漏。
- 用 prompt 代替 Schema。口徑必須能校驗。
- 把三種 Agent 當成三種智慧。它們是三張工具表,不是三個大腦。
FAQ
AI Agent 現在真的會自己上網嗎?
會打開網頁、點擊、抽取。不會「自己」持有瀏覽器。模型填 JSON,宿主的沙箱執行。沒有 browser 工具,它上不了網。
Browser Agent 和 Computer Use 有什麼差別?
目標都是操作介面。Browser Agent 常走選擇器、導航、DOM 抽取;Computer Use / Operator 更常走截圖和座標動作。兩邊都是結構化呼叫,不是模型長出了手。
寫程式和執行任務是不是另一套協議?
不是。Coding Agent 的 Read / Bash 和 Task Agent 的 Function Calling,與 Browser Agent 共用同一條 JSON 呼叫鏈。變的是工具表和副作用半徑。
為什麼強調 JSON,而不是模型更聰明?
因為副作用發生在解析物件之後。更聰明的模型仍可能填錯 URL 或金額。Schema 和宿主門禁決定什麼能發生。
要不要讓 Agent 直接碰生產登入態或生產庫?
不要。讓它在隔離瀏覽器和作業區裡起草,把軌跡留下。登入態、金鑰、發布仍是人的戰略門。迴圈負責起草,門禁負責放行。
結論
AI Agent 會上網、寫程式、執行任務——這句話只對一半。它對的是副作用已經發生;錯的是主語。主語是宿主,謂語是執行,賓語是模型填出來的 JSON。
從今天起,少爭論它「會不會自己做」。先把 Browser、Coding、Task 三張工具表、Schema 和工作階段軌跡寫進倉庫。模型會換;這條 JSON Tool Calling 鏈應該先穩定。事故怎麼從同一條鏈長出來,見 Claude 事件與工具 JSON。
延伸閱讀
- AI Agent 是什麼?完整指南 執行時、Tool Calling 與 JSON 契約
- AI Coding Agent 與 JSON 呼叫鏈 Claude Code、GPT Agent 如何寫程式
- MCP Tool Schema vs Function Calling 工具 JSON 的協議邊界
- AI 為什麼需要 JSON Schema Schema / Function Calling / Structured Output
- AI Agent 安全與 JSON 驗證 驗證能擋住什麼、擋不住什麼
- JSONSort 本地工具箱 格式化、校驗、Diff
- 全部文章 更多 JSON 與 AI 開發筆記
更新記錄: 首次發布