
AI 에이전트란 무엇인가 ― 실행형과 학습형, 두 가지 세계관의 지도【프롬프트로 풀어보는 AI 에이전트 #1】
요약
AI 에이전트의 개념을 실행형과 학습형 두 가지 세계관으로 구분하여 설명하는 연재 시리즈의 도입부입니다. 실제 오픈소스(OSS)의 코드와 프롬프트를 분석하여 독자가 스스로 에이전트를 구축할 수 있는 지식을 갖추는 것을 목표로 합니다.
핵심 포인트
- AI 에이전트는 LLM을 두뇌로 삼아 도구 호출, 관측, 사고의 루프를 반복하는 시스템임
- LLM 단독 모델과 달리 외부 프로그램과의 반복 메커니즘을 통해 자율성을 가짐
- 실제 오픈소스(OSS)의 코드와 프롬프트를 직접 분석하는 실전 중심의 접근법 채택
- 에이전트의 세계관을 실행형(Execution-type)과 학습형(Learning-type)으로 분류
연재 「프롬프트로 풀어보는 AI 에이전트」 제1회 (제0장: 인트로덕션).
실재하는 3가지 AI 에이전트 OSS를, 실제 코드와 실제 프롬프트를 원전에서 인용하며 분석하여,
최종적으로 「스스로 AI 에이전트를 만들 수 있는」 상태를 목표로 하는 총 12회의 연재입니다. 본 기사는 그 지도입니다.
시작하며 ― 이 연재가 하는 일
「AI 에이전트 (AI Agent)」라는 말이 최근 몇 년 사이 너무나 광범위하게 사용되고 있습니다. 챗봇도 에이전트, 자동으로 코드를 작성하는 툴도 에이전트, 논문 속의 연구 시스템도 에이전트. 같은 이름으로 불리고 있지만, 내부에서 일어나는 일은 전혀 다르다 ―― 그런 상황이라고 생각합니다.
이 연재는 그 혼란을 실제 소스 코드를 읽는 것으로 풀어냅니다. 제가 선택한 것은 실재하며 GitHub에 공개되어 있는 3가지 AI 에이전트 OSS입니다. 이것들을 해설 기사나 소개글이 아니라, 실제 코드와 실제 프롬프트를 원전에서 인용하며 하나씩 해부해 나가겠습니다.
단, 목적은 「3가지 OSS를 소개하는 것」이 아닙니다. 본 연재의 진정한 목표는, 독자인 당신이 연재를 다 읽었을 때 「스스로 AI 에이전트를 만들기 위한 지식을 한 차례 모두 갖춘」 상태가 되는 것입니다. 3가지 OSS는 그것을 위한 교재이자 부품 카탈로그입니다. 비교는 수단일 뿐이며, 당신이 직접 만들 수 있게 되는 것이 목적입니다.
제0장인 이 기사의 역할은 지도를 전달하는 것입니다. 구체적으로는 다음 4가지를 전달합니다.
- AI 에이전트란 무엇인가 (그리고 LLM 단독 모델과는 무엇이 다른가)
- 본 연재가 다루는 실행형(Execution-type) / 학습형(Learning-type)이라는 두 가지 세계관
- 해부 대상이 되는 3가지 OSS의 정체 (어느 것이 실행형이고, 어느 것이 학습형인가)
- 총 12회를 어떻게 걸어갈 것인가 (로드맵)와, 왜 「프롬프트 (Prompt)」라는 관점으로 읽는가
전문 용어는 처음 등장할 때 반드시 정의합니다. 사전 지식은 가정하지 않습니다. LLM을 API로 다뤄본 적이 있는 정도라면, 여기서부터 읽기 시작해도 괜찮습니다.
AI 에이전트란 무엇인가
먼저 용어를 정의하겠습니다. 본 연재에서는 용어를 처음 사용할 때 반드시 설명을 덧붙이므로, 여기서도 먼저 기초 용어를 다져놓겠습니다.
LLM (대규모 언어 모델, Large Language Model) 이란, 대량의 텍스트로 훈련되어 「지금까지의 문장에 이어질 가장 그럴듯한 다음 단어」를 예측함으로써 문장을 생성하는 AI 모델입니다. GPT, Claude, Gemini, Qwen 등이 이에 해당합니다. 중요한 성질이 두 가지 있습니다.
- LLM은 한 번 호출하면 문장(토큰 열)을 하나 반환할 뿐입니다. 웹 검색도 파일 조작도 커맨드 실행도, 그 자체로는 할 수 없습니다. 손발이 없는 「생각하는 머리」라고 생각하십시오.
- LLM은 스테이트리스 (Stateless) 입니다. 이전 대화를 스스로 기억하지 못합니다. 문맥은 매번 입력으로서 통째로 전달해 주어야 합니다.
그렇다면 AI 에이전트 (AI Agent) 란 무엇인가. 본 연재에서는 다음과 같이 정의합니다.
AI 에이전트란, LLM을 「두뇌」로 사용하면서, 툴을 호출하고 → 그 결과를 관측하고 → 다음 수를 생각하는, 이 과정을 루프로 반복함으로써 주어진 태스크를 자율적으로 수행하는 시스템이다.
LLM 단독 모델과의 차이는 이 한 문장에 응축되어 있습니다. LLM 단독 모델은 「한 번의 질문에 한 번의 답변을 하는 것」뿐입니다. AI 에이전트는 그 한 번의 응답을 프로그램이 받아, 필요하다면 도구를 움직이고, 결과를 돌려주어 다시 생각하게 만드는 ―― 이 반복 메커니즘을 외부에 가지고 있습니다.
여기서 본 연재의 열쇠가 되는 용어 두 가지를 정의합니다.
- 툴 (tool): LLM 스스로는 할 수 없는 조작을 대행하는 외부 함수나 커맨드입니다. 웹 검색, 파일 읽기/쓰기, 셸 커맨드 실행, 코드 실행 등이 있습니다. LLM은 「이 도구를 이 인수로 사용하고 싶다」라는 의도를 텍스트로 반환할 뿐이며, 실제로 그것을 실행하는 것은 당신이 작성한 프로그램의 코드 측입니다. 이 역할 분담이 에이전트를 이해하는 가장 큰 핵심입니다.
- 프롬프트 (prompt): LLM에 전달하는 지시문입니다. 특히 에이전트에서는 「너는 누구이며, 어떻게 행동하고, 어떤 도구를 가지고 있으며, 응답을 어떤 형식으로 반환해야 하는가」를 정의하는 긴 지시문 (시스템 프롬프트)이 핵심을 담당합니다.
즉, AI 에이전트란 「두뇌 (LLM)」와 「손발 (도구)」와 「행동 대본 (프롬프트)」와 「이것들을 돌리는 메커니즘 (루프)」를 조합한 것입니다. 본 연재에서는 이 4가지가 실재하는 OSS 중에서 구체적으로 어떤 코드와 프롬프트로 이루어져 있는지를, 오로지 원전을 통해 확인해 나갈 것입니다.
2가지 세계관 ― 실행형과 학습형
여기서부터가 이 연재에서 가장 중요한 구분입니다. 「AI 에이전트를 똑똑하게 만드는 것」에는 근본적으로 다른 두 가지 접근 방식이 있습니다. 이를 혼동하면 연재 전체를 읽을 수 없게 되므로, 지도의 중심에 이 두 개의 축을 놓겠습니다.
실행형 ― 모델은 고정, 추론 시에 도구로 태스크를 수행
첫 번째는 실행형입니다. 본 연재에서는 다음과 같이 정의합니다.
실행형 에이전트란, LLM의 내용물 (가중치, weights)은 그대로 고정한 채, 추론 시 (태스크를 해결하는 그 시점)에 도구를 사용하게 하고, 결과를 관측하게 하며, 다음 수를 생각하게 함으로써 태스크를 수행하게 하는 방식의 에이전트이다.
여기서 말하는 **가중치 (weights)**란, LLM이 훈련 결과로서 내부에 가지고 있는 방대한 수치 파라미터를 의미합니다. 모델의 「지식」이나 「능력」의 실체라고 생각하시면 됩니다. 실행형에서는 이 가중치에는 일절 손을 대지 않습니다. 똑똑함의 원천은 모델 그 자체가 아니라, 그 외부에 있는 「프롬프트」와 「도구」 그리고 「루프의 설계」입니다.
우리가 평소 「AI 에이전트」라고 부르는 것의 대부분은 이 실행형입니다. 앞서 언급한 「도구를 호출 → 관측 → 생각」하는 루프 (이를 다음 제1장에서 ReAct 루프로서 해부합니다)는 바로 실행형의 심장부입니다. 실행형 에이전트를 만든다는 것은, 어떤 프롬프트를 쓰고, 어떤 도구를 주며, 루프를 어떻게 돌릴지를 설계하는 것과 거의 같습니다. 그렇기에 본 연재는 「프롬프트로 읽어낸다」라는 이름을 붙였습니다.
학습형 ― 모델의 가중치 그 자체를 업데이트하여 자기 진화
두 번째는 학습형입니다.
학습형 에이전트란, 태스크를 해결한 경험을 바탕으로 LLM의 가중치 그 자체를 업데이트 (재훈련) 하여, 모델의 능력 자체를 끌어올리는 방식의 에이전트이다.
실행형이 「고정된 모델을 외부의 궁리로 잘 사용하는 것」에 반해, 학습형은 「모델 자체를 새로 만들어 버리는 것」입니다. 여기서 등장하는 것이 강화학습 (Reinforcement Learning, RL) 입니다. 에이전트가 행동하고, 그 결과에 따른 보상 (잘 되었는지/되지 않았는지를 수치화한 신호)을 받아, 보상이 높아지는 방향으로 자신의 파라미터를 업데이트해 나가는 훈련 프레임워크입니다. 학습형 에이전트는 태스크를 해결하고 그 결과를 채점하며, 그 채점을 보상으로 삼아 가중치를 다시 쓰는 루프를 돌립니다.
이 두 가지는 목적도, 필요한 계산 자원도, 결과물도 완전히 별개입니다. 실행형의 결과물은 「프롬프트와 코드」이며 노트북으로도 작성할 수 있습니다. 학습형의 결과물은 「훈련된 모델의 가중치」이며, 대부분의 경우 GPU 클러스터와 대량의 계산 시간을 필요로 합니다. 본 연재는 이 둘을 하나의 연속된 이야기로 나란히 놓지는 않겠습니다. 제1부에서 실행형을 심도 있게 해부하고, 제2부에서 「사실은 완전히 다른 해결 방법도 있다」는 형태로 학습형을 독립적으로 다룹니다.
지도로 한 장에 정리하면 다음과 같습니다.
| 구분 | 실행형 | 학습형 |
|---|---|---|
| 똑똑함의 원천 | 프롬프트 · 도구 · 루프의 설계 | 모델의 가중치 그 자체 |
| 모델의 가중치 | 고정 (건드리지 않음) | 업데이트 (재훈련함) |
| 똑똑하게 만드는 타이밍 | 추론 시 (태스크를 해결하는 그 시점) | 훈련 시 (사전에 가중치를 단련함) |
| 중심이 되는 기술 | 프롬프트 설계 · 도구 호출 · ReAct 루프 | 강화학습 (보상으로 가중치를 업데이트) |
| 주요 결과물 | 프롬프트와 코드 | 훈련된 모델의 가중치 |
| 본 연재에서의 취급 | 제1부 (제1~6.5장) | 제2부 (제7~9장) |
이 표의 좌우가 연재를 관통하는 두 가지 세계관입니다. 「실행형은 외부를 설계하고, 학습형은 내부를 새로 만든다」 ―― 이 한 줄만 기억하고 앞으로 나아가 주십시오.
해부할 3가지 OSS ― 그 정체
지도의 마지막 조각은 해부대에 올릴 세 가지의 정체입니다. 본 연재에서 다루는 것은 다음 세 가지입니다. 중요한 점은, 세 가지 중 두 가지가 실행형이고, 단 하나만이 학습형이라는 점입니다. 이를 혼동하면 연재 전체를 오독하게 되므로, 처음에 정확히 제시합니다.
| 약칭 | 리포지토리 (Repository) | 성격 | 한마디로 요약하자면 |
|---|---|---|---|
| agent-zero | agent0ai/agent-zero | 실행형·범용 | 모든 거동을 prompts/*.md로 외재화한 범용 실행 에이전트 |
| Hermes | NousResearch/hermes-agent | 실행형·상주 실용 | 3층 프롬프트 + 영구 메모리 + 프로파일 + kanban 분해를 갖춘 실용 에이전트 |
| Agent0 | aiming-lab/Agent0 | 학습형·연구 | 가중치를 업데이트하며 자기 진화하는 연구 프레임워크 (실행 에이전트가 아님) |
각각의 성격을 원전에서 확인한 범위 내에서 소개합니다.
agent-zero (실행형·범용)
agent-zero는 에이전트의 거동을 Python 코드가 아닌 Markdown 프롬프트 파일(prompts/*.md)로 외재화한다는 사상으로 만들어진 범용 실행형 에이전트입니다. 실제로 그 정체는 프롬프트 스스로가 선언하고 있습니다.
## your role agent zero autonomous json ai agent. solve superior tasks using available tools and subordinates. execute actions yourself. follow instructions and behavioral rules.
prompts/agent.system.main.role.md
[IMG:1]
「autonomous json ai agent」라고 되어 있듯이, agent-zero는 LLM이 정해진 형태의 JSON을 반환하게 하고, 이를 파싱하여 도구(tools)를 실행합니다. 「solve superior tasks using available tools and subordinates」라고 되어 있듯이, 도구(tools)에 더해 부하 에이전트(subordinates)에게 업무를 위임하는 기능도 갖추고 있습니다. 거동이 모두 프롬프트 파일에 작성되어 있기 때문에, 코드를 수정하지 않고 프롬프트를 편집하는 것만으로 에이전트의 성격을 바꿀 수 있다 ―― 이 점이 agent-zero를 교재로서 흥미롭게 만드는 요소입니다. 본 연재에서는 시스템 프롬프트(제2장), 도구 정의(제3장), 서브 에이전트(제5장) 등의 해부 과정에서 반복해서 등장합니다.
Hermes (실행형·상주 실용)
Hermes (NousResearch 제작)는 같은 실행형이라도 보다 실용 및 상주 운용에 치중한 에이전트입니다. agent-zero가 프롬프트 파일 중심인 것에 반해, Hermes는 LLM의 네이티브 함수 호출 (function calling) 기능을 토대로 하면서, 장기간 구동하기 위한 정교한 설계가 많이 반영되어 있습니다. 원전의 코드 구성에서 확인할 수 있는 주요 특징은 다음과 같습니다.
- 3층 프롬프트: 시스템 프롬프트를 '안정적인 층(stable layer) / 문맥의 층(context layer) / 휘발적인 층(volatile layer)'으로 나누어 구성 방식을 제어한다 (tier 명 stable/context/volatile은
agent/system_prompt.py가 정의하며,agent/prompt_builder.py,agent/context_engine.py등이 구성함). - 영구 메모리: 세션을 넘나들며 정보를 기억해 두는 메커니즘 (
tools/memory_tool.py,agent/memory_manager.py등). - kanban 분해: 태스크를 kanban(칸반)으로 분해·관리하며 작업을 진행한다 (
tools/kanban_tools.py). - 서브 에이전트 위임: 자식 에이전트를 생성하여 일을 맡긴다 (
tools/delegate_tool.py―― 소스 코드의 주석에 따르면 "Spawns child AIAgent instances with isolated context").
한마디로 말하자면, agent-zero가 '프롬프트로 거동을 외재화하는 사상의 순도'를 보여준다면, Hermes는 '실운용을 견딜 수 있는 에이전트가 갖추어야 할 기능의 두께'를 보여줍니다. 같은 실행형 두 모델을 나란히 배치함으로써 설계의 스펙트럼을 입체적으로 파악할 수 있게 하는 것 ―― 이것이 제1부의 목표입니다.
Agent0 (학습형·연구) ― 이곳만 세계관이 다르다
세 번째 Agent0(aiming-lab 제작, 논문 arXiv:2511.16043)는 앞의 두 가지와는 근본적으로 종류가 다릅니다. Agent0는 실행 에이전트(Execution Agent)가 아닙니다. LLM의 가중치(Weights)를 업데이트하여 에이전트를 자기 진화시키는 학습형(Learning-based) 연구 프레임워크입니다. README의 서두가 이를 명시하고 있습니다.
Agent0 is a fully autonomous framework that evolves high-performing agents from scratch without relying on any human-curated data. It employs a symbiotic competition between a Curriculum Agent(proposing tasks) and an Executor Agent(solving tasks with tools) ...――
Agent0/README.md
@30e1882
쉽게 풀어서 설명하자면, Agent0는 두 종류의 에이전트를 대결시킵니다. **Curriculum Agent(출제자 역할)**가 문제를 만들고, **Executor Agent(풀이자 역할)**가 도구(Tools)를 사용하여 문제를 풉니다. 출제자는 '풀이자가 풀 수 있을지 없을지 아슬아슬한 어려운 문제'를 만들도록 유도되고, 풀이자는 이를 풀 수 있도록 단련됩니다. 이러한 **적대적 공진화 (symbiotic competition)**를 통해, 인간이 준비한 데이터에 의존하지 않고(zero data), 양측의 가중치를 강화학습 (RL)으로 업데이트해 나갑니다. 실제로 이 리포지토리는 ADPO(README에서 명시한 학습 알고리즘)를 executor_train/verl_tool/trainer/ppo/core_algos.py에 구현하였으며 (Agent0/README.md @ 30e1882, L120), Qwen3-8B-Base 모델의 추론 능력을 수학 분야에서 +18%, 일반 추론에서 +24% 향상시켰다고 보고하고 있습니다 (지표는 동일 README.md의 Results 절 @ 30e1882, L19-22).
여기서 연재 전체와 관련하여 가장 중요한 주의사항을 하나 말씀드립니다.
Agent0를 agent-zero나 Hermes와 같은 '사용하면 바로 동작하는 에이전트'라고 생각하고 읽지 마십시오. Agent0 내부에도
| 회차 | 장 | 테마 | 이번 회차에서 얻는 것 |
|---|---|---|---|
| #2 | 제1장 | ReAct 루프 | LLM을 「생각하기 → 도구 사용 → 관측」 루프로 돌리는 최소 골격을 직접 작성할 수 있음 |
| #3 | 제2장 | 시스템 프롬프트 (System Prompt) = 인격·행동 규범 | 에이전트의 인격과 규약을 프롬프트로 정의하는 방법 |
| #4 | 제3장 | 도구 (Tool)의 정의와 제시 | LLM에게 도구를 정의·설명하고 호출하게 만드는 메커니즘 |
| #5 | 제4장 | 기억 (휘발성 / 영속성) | 단기 문맥 (Short-term Context)과 영속 메모리 (Persistent Memory)를 설계하는 방법 |
| ... | |||
| 제2부: 학습형이라는 별개의 해법 (제7~9장 / 총 3회) ―― 여기서 세계관이 전환됩니다. Agent0를 독립적으로 다루며, 「행동을 작성하는」 것이 아니라 「가중치 (Weights)를 학습시키는」 것이란 무엇인지를 해부합니다. 제1부의 연장선으로 읽지 마십시오. |
| 회차 | 장 | 테마 | 이번 회차에서 얻는 것 |
|---|---|---|---|
| #9 | 제7장 | 왜 실행이 아닌 진화인가 | 「가중치를 학습시킨다」라는 별개 해법의 동기와 적용 조건 |
| ... | |||
| 제3부: 총괄 (제10장 / 총 1회) ―― 마지막으로, 세 모델을 「프롬프트가 무엇을 담당하는가」라는 하나의 축으로 대조하여, 당신이 직접 제작할 때의 설계 판단 기준으로 삼을 수 있도록 정리합니다. |
| 회차 | 장 | 테마 | 이번 회차에서 얻는 것 |
|---|---|---|---|
| #12 | 제10장 | 프롬프트의 역할로 풀어보는 세 가지 세계관 | 3자 대조표 = 직접 제작 시의 설계 판단 기준 |
각 회차는 짧은 시간 안에 읽을 수 있는 분량으로 구성되어 있습니다. 제1부만으로도 「작동하는 실행형 에이전트를 직접 만든다」는 목적은 달성할 수 있습니다. 제2부는 그 너머에 「전혀 다른 해결 방식이 있다」는 시야를 넓히고 싶은 분들을 위한 독립적인 3회 분량입니다.
왜 「프롬프트」로 풀어내는가
연재 제목은 「프롬프트로 풀어보는 AI 에이전트」입니다. 마지막으로, 이 관점을 선택한 이유를 말씀드리겠습니다.
에이전트의 소스 코드를 열면 방대한 파일 양에 압도됩니다. 하지만 「이 프레임워크에서는 프롬프트가 무엇을 담당하고 있는가?」라는 하나의 질문을 축으로 삼아 읽으면, 설계의 핵심을 놀라울 정도로 명확하게 파악할 수 있습니다. 실례를 들어보겠습니다.
- agent-zero 에서는, 응답 형식도 종료 조건도 인격도, 우선 프롬프트 파일이 결정합니다. 「거동은 코드가 아니라 프롬프트로 결정된다」가 그 사상 자체입니다.
- Hermes 에서는 프롬프트가 세 개의 층 (Layer)으로 나뉘어 구성되며, 어떤 정보를 어느 층에 둘 것인가가 설계의 판단 기준이 됩니다.
- 그리고 Agent0 (학습형)에서는 프롬프트의 역할이 완전히 바뀝니다. 프롬프트는 「행동의 대본」이 아니라, 출제자가 문제를 만들기 위한 도구이며, 보상 신호 (Reward Signal)를 구성하는 재료가 되기도 합니다. 같은 「프롬프트」라는 단어가 실행형과 학습형에서 전혀 다른 역할을 수행하고 있습니다 ―― 이 대비야말로 제3부 (제10장) 총괄의 핵심입니다.
즉, 「프롬프트가 무엇을 담당하는가」라는 하나의 보조선은 세 모델의 본질적인 차이를 그대로 드러내는 척도가 됩니다. 그렇기에 본 연재는 기능을 기능으로서 나열하는 것이 아니라, 프롬프트의 역할이라는 축을 통해 세 모델을 풀어가고자 합니다.
이 연재를 다 읽은 당신이 만들 수 있는 것
마지막으로, 목표 지점을 미리 제시해 두겠습니다. 본 연재(특히 제1부)를 다 읽었을 때, 당신은 다음과 같은 최소한의 실행형 에이전트를 자신의 손으로 직접 조립할 수 있게 됩니다. 각 부품을 어느 회차에서 얻을 수 있는지도 함께 적어둡니다.
최소한의 자작 AI 에이전트 전체상 (이 로드맵이 연재의 목표 지점)
┌─────────────────────────────────────────────────────┐
│ SYSTEM_PROMPT │
...
이 의사 코드 (Pseudo-code) 중심에 있는 「반복 (Loop)」 블록 ―― 그것이 다음 회차인 제1장에서 해부할 ReAct 루프입니다. 단 수십 줄의 루프가 실행형 에이전트의 심장부입니다. 제1장에서는 이 골격을 의사 코드와 직접 따라 써볼 수 있는 Python 코드로 보여준 뒤, agent-zero와 Hermes가 이 동일한 골격을 어떻게 구현하고 있는지 원본 코드를 통해 대조합니다.
그리고 제2부 제7장부터는 이 그림을 잠시 옆에 치워두고, 「애초에 루프를 설계하는 것이 아니라, 모델의 가중치를 단련해 버리면 되지 않을까」라는 별개의 해법이 존재하는 세계로 들어갑니다.
지도는 전달했습니다. 다음 회차부터 실제 코드를 열어봅시다.
다음 회차(제1장: ReAct 루프)에서는 위 그림의 심장부인 「생각하기 → 도구 사용하기 → 관찰하기」의 루프를 agent-zero와 Hermes의 원천 코드(original code)로 해부합니다. 여러분이 직접 코드를 따라 쓰며(写経, transcription) 실행해 볼 수 있는 최소 구현체부터 시작하겠습니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기