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하지 않으며, 인트라넷을 직접 치지 않는다. 내는 것은 검증 가능한 객체뿐이다: 도구 이름, 인자, 가끔 다음 의도. 실제로 클릭하는 것은 호스트다.
- 웹에 가기: 모델은
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는 좌표 동작에 더 가깝다. 모델이 보는 것은 스크린샷이나 접근성 트리이고, 내는 것은 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 워크플로.
한 턴은 네 홉뿐이다
제품 페이지는 「자율적으로 끝낸다」고 쓴다. 공학에서 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, 세션, 인트라 주소를 공개 포맷터에 붙이지 마라. 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 개발 노트 더 보기
변경 기록: 최초 게시