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。

延伸阅读

更新记录: 首次发布