본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 27. 12:27

"장난감"에서 "교재"로: 500행 AI 프레임워크의 자기 수양

요약

기존의 복잡한 Agent 프레임워크와 달리, Agent의 작동 원리를 깊이 있게 이해할 수 있도록 설계된 교육용 프레임워크 FROST를 소개합니다. 500행 미만의 단순한 코드로 Store, Skill, Agent라는 세 가지 핵심 개념을 구현하여 학습 격차를 해소하는 데 집중합니다.

핵심 포인트

  • 기존 프레임워크의 과도한 추상화로 인한 학습 격차 문제 지적
  • FROST는 프로덕션용이 아닌 교육용 프레임워크로 설계됨
  • Store, Skill, Agent라는 세 가지 핵심 클래스로 구성된 단순한 구조
  • 복잡한 의존성 없이 Agent의 내부 동작 원리 이해에 최적화

왜 나는 500행짜리 Agent 바퀴를 새로 만들려고 하는가?

안녕하세요, FROST의 저자입니다.

2026년이 되었습니다. Agent 프레임워크는 눈이 휘둥그레질 정도로 많습니다. LangGraph는 월 다운로드 수가 3,450만 회에 달하고, Dify는 GitHub에서 129.8K Stars를 획득했으며, 주요 기업들은 앞다투어 자신들의 SDK를 밀어붙이고 있습니다. 이런 환경에서 또 다른 "바퀴(wheel)"를 만드는 것이 과연 불필요한 일은 아닐까요?

솔직히 말씀드리면, 저도 오랫동안 고민했습니다.

하나의 혼란: 초보자의 딜레마

이 일은 한 번의 실패한 튜터링에서 시작되었습니다.

저는 한 친구의 Agent 개발 입문을 돕기 위해 LangChain을 추천했습니다. 결과적으로 그는 두 달 동안 공부했지만, 여전히 chain.invoke()와 씨름하고 있었고, 머릿속에는 "Agent가 도대체 어떻게 작동하는가"라는 개념이 전혀 자리 잡지 못했습니다.

문제는 어디에 있었을까요?

현재의 프레임워크들은 너무 강력합니다. 모든 복잡성을 숨겨버릴 정도로 강력합니다. 단 세 줄의 코드로 Agent를 실행할 수 있지만, 내부에서 어떤 일이 일어나는지는 영원히 알 수 없습니다. 마치 운전을 배우는 것과 같습니다. 가속 페달을 밟고 코너를 도는 법은 배웠지만, 엔진이 어떻게 작동하는지, 변속기가 어떻게 변속되는지는 전혀 모르는 상태와 같습니다.

Agent의 본질을 진정으로 이해하고자 하는 사람들에게 이것은 거대한 격차(Gap)입니다.

요구사항기존 옵션
빠른 제품 개발LangChain/CrewAI
...

이 공백이 바로 FROST가 존재하는 이유입니다.

FROST의 설계 철학: Less is More

FROST는 프로덕션급(production-grade) 프레임워크가 아닙니다. 이것은 교육용 프레임워크입니다.

이는 의도적으로 다음을 포기했음을 의미합니다:

  • ❌ 복잡한 의존성 생태계 (LangChain이 필요 없음)
  • ❌ 풍부한 도구 통합 (100개 이상의 내장 도구가 없음)
  • ❌ 분산 배포 능력 (단순한 단일 머신 Python)

FROST는 오직 세 가지 핵심 개념만을 유지합니다:

# Store - 기억 컨테이너 (신경 세포의 저장 기능과 유사)

class Store:  
    """컨텍스트, 기억, 상태를 저장"""  
    def __init__(self): self.data = {}

# Skill - 순수 함수 변환 (신경 세포의 처리 기능과 유사)

class Skill:  
    """입력→처리→출력, 무상태(stateless)"""  
    def __call__(self, store, *args, **kwargs): pass

# Agent - 실행 단위 (신경 세포 자체와 유사)

class Agent:  
    """Skill을 호출하고, Store를 조작하여 목표를 달성"""  
    def __init__(self, skills: list[Skill], store: Store): pass  

네, 이토록 간단합니다. 세 개의 클래스, 500행이 채 되지 않는 코드.

하지만 바로 이러한 단순함이 "이해"를 가능하게 만듭니다.

한 줄의 코드로 실행되는 Agent

from frost import Agent, Store, Skill

# "검색 도우미" Skill 정의

class SearchSkill(Skill):  
    def __call__(self, store, query):  
        result = web_search(query) # 여기는 당신의 검색 구현부입니다  
        store.set("last_search", result)  
        return result

# Agent 생성 및 실행

store = Store()  
agent = Agent(skills=[SearchSkill()], store=store)  
response = agent.run("오늘 서울 날씨 어때?")  
print(response)  

LangChain을 사용하여 동일한 기능을 구현하는 것과 비교해 보세요:

from langchain.agents import AgentExecutor, create_react_agent  
from langchain_openai import ChatOpenAI

# ... 여기에 십여 줄의 초기화 코드가 더 필요합니다

FROST는 당신이 첫 번째 줄의 코드를 작성할 때부터 자신이 무엇을 하고 있는지 알게 해줍니다:

  1. Agent는 실행자입니다.
  2. Skill은 그것의 능력입니다.
  3. Store는 그것의 기억입니다.

마법도 없고, 블랙박스도 없습니다. 오직 명확한 데이터 흐름만이 존재합니다.

왜 FROST라고 부르는가?

FROST의 전체 이름은 Fractal Remote Organ of Scalable Thoughts — 즉, 확장 가능한 사고를 위한 프랙탈 원격 기관입니다.

이 이름은 설계 영감인 **신경 세포 (Neural Cell)**에서 유래되었습니다.

생물학에서 각 신경 세포는 매우 단순합니다:

  • 신호를 수신함
  • 신호를 처리함
  • 신호를 발신함

하지만 수십억 개의 신경 세포가 서로 연결될 때, 지능이 창발(Emergence)합니다.

FROST는 소프트웨어 계층에서 이 과정을 재현하려고 시도합니다:

Neural Cell (신경 세포)          →  Agent (에이전트)
Synapse (시냅스)              →  Skill (기술)
Long-term Memory (장기 기억)     →  Store (저장소)
...

이것은 뇌를 모방하는 것이 아니라, 생물계의 지혜를 배우는 것입니다: 단순한 단위 + 명확한 연결 = 복잡한 행동.

나의 시행착오 일기

제로 베이스에서 프레임워크를 작성하는 사람으로서, 제가 빠졌던 함정(Pitfall)은 코드 줄 수보다 더 많았습니다:

함정 1: "완전함"을 추구하다 프로젝트를 망칠 뻔함

처음에는 설정 관리, 로그 시스템, 오류 재시도(Error Retry)를 포함한 "완전한 프레임워크"를 설계했습니다. 2,000줄을 작성한 후 저는 깨달았습니다:

  • 코드 복잡도가 기하급수적으로 상승함
  • 핵심 개념이 세부 사항 속에 파묻힘
  • 교육적 가치가 제로(0)가 됨

교훈: 교육용 프레임워크의 제1원칙은 **최소화(Minimization)**입니다. 기능은 나중에 추가할 수 있지만, 첫인상은 되돌릴 수 없습니다.

함정 2: "이게 무슨 소용인가"라는 의구심

가장 흔한 의구심은 다음과 같습니다: "이렇게 단순한 프레임워크를 실제 운영 환경(Production Environment)에서 누가 쓰겠습니까?"

저의 대답은 이렇습니다: 이것은 운영 환경을 위한 것이 아닙니다.

FROST의 사용자 페르소나는 다음과 같습니다:

  • Python을 막 배우고 Agent를 이해하고 싶은 학생
  • 애플리케이션 계층에서 저수준(Low-level) 원리까지 깊이 파고들고 싶은 개발자
  • 학생들에게 Agent의 작동 원리를 보여주고 싶은 강사

**"모든 것을 할 수 있는 것"보다

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0