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 は、ページを開き、フォームを埋め、書き出せる。リポジトリを読み、ファイルを改め、テストを走らせられる。注文を調べ、返金を始め、引き継げる。それは本当の副作用であり、チャットの泡ではない。
だが「自分で」という言葉は主語を誤る。大規模モデルはブラウザプロセスを持たず、shell を spawn せず、イントラネットを直接叩かない。出すのは検証可能なオブジェクトだけだ:ツール名、引数、ときに次の意図。実際にクリックするのは宿主である。
- ネットへ行く:モデルは
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を出す。 - 提案:モデルはツール名と引数オブジェクトを埋める。自分では実行しない。
- 門:宿主が検証し、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 は座標動作に近い。モデルが見るのはスクリーンショットかアクセシビリティツリーで、出すのは click、type、scroll だ:
{
"type": "computer_call",
"call_id": "call_8c12",
"action": {
"type": "click",
"x": 412,
"y": 268
}
}
どちらの形も「ページを見たから自分でクリックした」と読んではいけない。文脈に入ったのは画素か木だ。クリックしたのは宿主だ。鎖すべきは引数であり、コピー文ではない:
- URL allowlist:既定はドキュメント、ステータスページ、宣言したドメインだけ。
- 追加ヘッダを禁じる:Cookie と Authorization は引数オブジェクトに入れない。
- 抽出には Schema を:書き出すのはフィールドであり、ページ全体の HTML ではない。
- ログイン状態は宿主に残す:セッションはサンドボックス方針であり、モデルの重みではない。
締めたナビ Schema はこう見える。additionalProperties: false は潔癖ではない——広い object は、イントラ URL やスクリプトを一本余分に滑り込ませる:
{
"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 ワークフロー。
1 ターンは四跳びだけ
製品ページは「自律的に完了する」と書く。工学では Browser、Coding、Task は同じ四跳びを歩く:
- 観察:スクリーンショット、リポジトリ状態、前回のツール結果が文脈に入る。
- 提案:モデルがツール名と引数オブジェクトを出す。
- 実行:宿主がページを開き、ファイルを改め、API を叩く。副作用はここで起きる。
- 書き戻し:DOM 要約、stdout、応答本体が次に見えるオブジェクトになる。
門を一つ欠けば、JSON は命令になる。auto-mode は、ある種のオブジェクトを事前に承認したということだ。シェルを替えても、ループは変わらない。
三つの表、一本の鎖
誰が賢いかではない。宿主がどのツール表をループに掛けるかだ:
| 軸 | Browser Agent | Coding Agent | Task Agent |
|---|---|---|---|
| 何を見るか | スクリーンショット / DOM / a11y 木 | ファイル、テスト、端末出力 | 業務オブジェクト、前跳びの状態 |
| 何を出すか | 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、セッション、イントラ URL を公開フォーマッタに貼るな。JSONSort はブラウザローカルで走る。これらのオブジェクトを見る場所として適切だ。
軌跡が再構築できて、初めてセッションを復盤できる。それは本番に入れる入場券であり、飾りではない。
よくある誤解
- モデルが自分でページを開いたと思う。開いたのは宿主のブラウザプロセスだ。
- モデルが自分でコードを実行したと思う。実行権は宿主にあり、重みにはない。
- デモだけ見て、ツール JSON を審らない。コマンドやクリックはすでに起きているかもしれない。
- browser に白紙小切手を渡す。URL 門と Cookie 隔離がなければ、ループはセッション漏洩だ。
- prompt で Schema を代用する。口径は検証できなければならない。
- 三つの Agent を三種の知能だと思う。三つはツール表であり、三つの脳ではない。
FAQ
AI Agent は今、本当に自分でネットへ行くのか?
ページを開き、クリックし、抽出はする。「自分で」ブラウザを持つわけではない。モデルは JSON を埋め、宿主のサンドボックスが実行する。browser ツールがなければネットへ行けない。
Browser Agent と Computer Use の差は何か?
どちらも UI を操作する。Browser Agent はセレクタ、ナビ、DOM 抽出が多い。Computer Use / Operator はスクリーンショットと座標が多い。どちらも構造化呼び出しであり、手が生えたモデルではない。
コードを書くこととタスク実行は別プロトコルか?
違う。Coding Agent の Read / Bash と Task Agent の Function Calling は、Browser Agent と同じ JSON 呼び出し鎖を共有する。変わるのはツール表と副作用の半径だ。
なぜ、より賢いモデルではなく JSON を語るのか?
副作用はオブジェクトを解析したあとに起きるからだ。賢いモデルでも URL や金額を誤りうる。何が起きうるかを決めるのは Schema と宿主の門だ。
Agent に本番のログイン状態や本番 DB を触らせてよいか?
いけない。隔離ブラウザとワークスペースで起草させ、軌跡を残せ。ログイン状態、秘密、公開は人の戦略門のままにする。ループは起草し、門が通す。
結論
「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 開発のメモをもっと
更新記録: 初回公開