AI 開發

AI Agent 會自己上網、寫程式和執行任務嗎?從 Browser Agent 到 JSON Tool Calling 完整解析

閱讀約 15 分鐘

產品頁會寫「自主上網、寫程式、執行任務」。工程上更準確的一句話是:模型只填 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,名字不同,形狀一樣。一輪通常只有四跳:

  1. 宣告:宿主給出 tools[] 或 inputSchema。
  2. 提議:模型填工具名和參數物件,不自己執行。
  3. 門禁:宿主校驗、做 allowlist、決定等不等待人。
  4. 回寫:截圖、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 都走同一條四跳:

  1. 觀察:截圖、倉庫狀態、上一次工具結果進入上下文。
  2. 提議:模型輸出工具名和參數物件。
  3. 執行:宿主打開頁面、改檔案、或打 API。副作用發生在這裡。
  4. 回寫: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。

延伸閱讀

更新記錄: 首次發布