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 开发笔记
更新记录: 首次发布