본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 22. 02:59

스스로 벤치마크를 수행하는 오픈 소스 AI 에이전트를 만들었습니다 (그리고 실제로 성능이 좋습니다)

요약

로컬 LLM을 활용하여 API 비용 없이 스스로 벤치마크를 수행할 수 있는 오픈 소스 AI 에이전트 'open-agent'를 소개합니다. 3,000줄의 Python 코드로 구성된 이 프로젝트는 롤링 윈도우 방식의 문맥 관리를 통해 소형 모델에서도 효율적인 추론과 실행이 가능하도록 설계되었습니다.

핵심 포인트

  • API 의존성 없는 로컬 LLM 기반의 단일 파일 에이전트 구현
  • 롤링 윈도우 방식을 통한 효율적인 컨텍스트 관리 및 메모리 유지
  • 외부 하네스 없이 에이전트 루프 내에서 직접 벤치마크 수행 가능
  • llama.cpp 백엔드를 활용하여 저사양 환경에서도 실행 가능

API 비용 없음. VC 투자 없음. 단 3,000줄의 Python 코드와 llama.cpp 백엔드뿐입니다.

안녕하세요, 저는 로컬 LLM (Large Language Model)을 백엔드로 사용하여 즉시 실행 가능한 또 다른 터미널 IDE를 구축했습니다.

이름은 open-agent입니다. 6GB VRAM 환경에서 Qwen 3.6 35B를 실행하며, 개인정보 보호 중심의 설정/환경임에도 불구하고 매우 놀라운 결과를 보여줍니다.

동료 개발자들에게 도움이 될 수 있도록, 왜 이렇게 만들었는지와 어떻게 작동하는지에 대해 심층적으로 분석해 보겠습니다.

모든 에이전트 프레임워크의 문제점

저는 LangChain, CrewAI, AutoGen 등을 테스트하는 데 수개월을 보냈습니다.

이들은 모두 동일한 DNA를 공유합니다: 에이전트처럼 꾸며진 API 래퍼 (API wrappers)라는 점입니다. 파이프라인을 구성하고, 이를 GPT-4에 연결하면 끝입니다. 신용카드 잔액이 바닥나는 순간, 당신의 에이전트도 끝납니다.

그렇다면 벤치마크는 어떨까요? 대부분의 프레임워크는 다른 사람의 논문에서 수치를 골라옵니다 (cherry-pick). 그들은 자신의 코드에 대해 SWE-bench를 직접 실행하지 않습니다. 그들의 에이전트가 이전에 본 적 없는 저장소(repo)의 버그를 실제로 고칠 수 있다는 것을 증명하지 못합니다.

저는 다른 것을 원했습니다.

제 노트북에서 실행되는 단일 파일 에이전트 말입니다. API 키도 필요 없고, 클라우드 의존성도 없습니다. OpenAI나 DeepSeek과 동일한 산업 표준을 사용하여 — 결함을 숨기는 외부 하네스(harness)가 아닌, 에이전트 자체의 루프 안에서 — 스스로를 벤치마크하는 에이전트입니다.

그래서 직접 만들었습니다.

Open-Agent 소개

3,000줄의 Python 코드. 단 하나의 파일. 24개의 도구. 11개의 REPL 명령. 4개의 벤치마크. API 비용은 0원입니다.

loop.py  ─  전체 코드
benchmark/
  ├── bigcodebench.py    코드 합성 (1140개 문제)
...

이것은 API를 래핑하는 것이 아닙니다. 이것이 에이전트입니다. 모든 도구, 모든 시스템 프롬프트, 모든 컨텍스트 관리 기법이 읽고, 수정하고, 이해할 수 있는 단 하나의 파일 안에 모두 들어 있습니다.

작동 원리

핵심은 ReAct 루프 (ReAct loop) — 즉, 작업이 완료될 때까지 반복되는 추론(Reason) + 행동(Act)입니다. 하지만 중요한 것은 세부 사항입니다.

루프 (The Loop)

1. 시스템 프롬프트 (System prompt) → 사용자의 약력(bio), 선호도, 24개의 도구 정의(tool definitions)가 주입됨
2. 사전 점검 (Preflight) → 프로젝트를 매핑하고, 문맥 파악을 위해 웹을 검색함
3. 생각 (Think) → LLM이 다음에 무엇을 할지 결정함
...

서류상으로는 혁신적인 것이 없습니다. 마법은 각 단계 사이에서 일어나는 일에 있습니다.

실제로 작동하는 문맥 관리 (Context Management)

소형 모델 (7B, 14B, 35B)은 컨텍스트 윈도우 (context window)를 빠르게 채웁니다. 한계에 도달할 때까지 턴 (turn)을 계속 추가하는 단순한 방식은 모델이 자신이 무엇을 하고 있는지 잊어버리기 전까지 약 20분 정도만 작동합니다.

Open-agent는 롤링 윈도우 (rolling window) 방식을 사용합니다:

┌─────────────────────────────────────────┐
│  시스템 프롬프트 (System prompt)    ─  항상 유지  │
│  그라운딩 문맥 (Grounding context) ─  항상 유지  │
...

처음 3개의 메시지 (시스템, 그라운딩, 메모리)는 유지됩니다. 마지막 9개의 턴도 유지됩니다. 그 사이의 모든 내용은 "섀도우 컨텍스트 (Shadow Context)" 요약본으로 압축됩니다.

결과: 에이전트는 7B 모델에서도 흐름을 놓치지 않고 500단계 이상의 스텝 (steps)을 실행할 수 있습니다.

웹 우선 철학 (The Web-First Philosophy)

대규모 언어 모델 (LLM)은 시간에 얼어붙어 있습니다. 당신의 모델도, 나의 모델도, 모두가 마찬가지입니다. 이들의 학습 데이터는 최소 6개월 전 것이며, 종종 그보다 더 오래되었습니다.

Open-agent는 웹을 보조 수단이 아닌 **주요 추론 엔진 (primary reasoning engine)**으로 취급합니다.

모든 사소하지 않은 작업은 search_web으로 시작됩니다. 이는 단순히 체크박스 형태의 기능이 아니라, 시스템 프롬프트에 내장된 필수 요구 사항입니다:

"당신은 1단계와 2단계 동안 어떠한 구현 코드도 작성하는 것이 금지됩니다 (FORBIDDEN). 당신의 첫 번째 행동은 반드시 search_web을 호출하는 것이어야 합니다."

이러한 규율 — 먼저 조사하고, 나중에 코딩하는 것 — 이 소형 모델이 체급 이상의 성능을 내게 만드는 핵심입니다. 좋은 검색 결과를 가진 35B 모델은 기억에 의존해 추측하는 70B 모델을 이깁니다.

24개의 도구 (The 24 Tools)

도구는 에이전트의 손입니다. 각 도구는 함수 호출 (function calling)을 통해 LLM이 호출할 수 있는 Python 함수로 등록됩니다.

파일 작업 (File Operations)

도구기능
read_file_section20~50행을 읽음 (문맥 유지 규율이 내장됨)
...

검색 (Search)

Tool기능
search_webSearXNG + Mojeek 폴백 (fallback), 다중 변형 (multi-variant)
...

실행 (Execution)

Tool기능
run_python샌드박스 실행 (30초 타임아웃)
...

계획 및 메모리 (Planning & Memory)

Tool기능
todo_write / read / update미션 크리티컬 (Mission-critical) 계획 추적
...

메타 및 자기 개선 (Meta & Self-Improvement)

Tool기능
sentinel_map_codebase글로벌 프로젝트 청사진 (blueprint)
...

실제로 저를 흥분시키는 부분: 자기 벤치마킹 (Self-Benchmarking)

모든 에이전트 프레임워크는 성능 수치를 주장합니다. 하지만 그중 거의 어느 것도 자신의 에이전트 루프(agent loop) 내부에서 직접 벤치마크를 실행하지는 않습니다.

Open-agent는 실행합니다.

from benchmark.bigcodebench import run_benchmark

# 대화형 모드에서 사용하는 것과 동일한 함수
...

또는 REPL에서:

/benchmark bigcodebench --instances 50 --subset hard

에이전트는 모든 벤치마크 문제에 대해 대화형 모드에서 사용하는 것과 동일한 함수인 run_agent()를 호출합니다. 동일한 도구, 동일한 문맥 관리 (context management), 동일한 시스템 프롬프트 (system prompts)를 사용합니다. 서브프로세스 (subprocess)도, 래퍼 (wrapper)도, 부정행위도 없습니다.

네 가지 벤치마크

BigCodeBench — 임베디드 유닛 테스트 (unittest) 케이스가 포함된 1,140개의 코드 합성 (code synthesis) 문제. Qwen과 DeepSeek에서 사용됨. 로컬에서 평가되며 외부 패키지가 필요하지 않음.

SWE-bench Lite — 12개의 인기 있는 Python 리포지토리에서 가져온 300개의 실제 GitHub 버그. 에이전트는 각 리포지토리를 클론(clone)하고, 코드베이스를 탐색하며, 수정을 적용하고, git 패치(patch)를 생성합니다. swebench의 공식 Docker 하네스 (harness)로 평가됩니다.

Agentic Bench — 10개의 결정론적 (deterministic) 도구 사용 작업: llama.cpp를 위한 OpenAI 호환 프록시 구축, 모델 라우터, 로그 분석기, 컨텍스트 윈도우 시각화 도구, 스킬 생성기. 셀프 호스팅 LLM 인프라에 관한 모든 것.

GAIA — 다단계 추론 (multi-step reasoning)을 위한 Meta의 골드 표준. 에이전트는 웹을 검색하고, 파일을 다운로드하며, 데이터를 처리하고, 답변을 합성합니다. HuggingFace 인증이 필요합니다.

각 벤치마크 모듈은 독립된 파일입니다:

benchmark/
  bigcodebench.py    ←  run_agent()를 직접 임포트(imports)함
  swebench.py        ←  클론된 저장소(cloned repo)에서 run_agent()를 임포트(imports)함
...

디스패처 레이어(Dispatcher layer) 없음. CLI 러너(runner) 없음. 추상화 간접 참조(abstraction indirection) 없음. 각 벤치마크는 Python이나 REPL에서 직접 호출할 수 있는 독립된 함수입니다.

3,000줄의 코드가 제공하는 가치

기능수치
Python 코드 라인 수3,062
...

이 시스템은 localhost:8083에서 실행되는 llama.cpp 위에서 작동합니다. OpenAI 호환 엔드포인트(endpoint)가 있다면 무엇이든 대체제로 사용할 수 있습니다. 토큰당 비용을 지불하는 일은 절대 없습니다.

여기서 오픈 소스가 중요한 이유

에이전트 프레임워크(agent framework) 분야는 다음과 같은 것들로 가득 차 있습니다:

  • 벤더의 장난감 (Vendor playthings) — API 크레딧을 판매하기 위해 설계된 프레임워크
  • 학술적 프로토타입 (Academic prototypes) — GitHub 저장소는 있지만 몇 달 동안 업데이트되지 않은 논문용 코드
  • 설정의 악몽 (Configuration nightmares) — 끝도 없이 이어지는 YAML 파일들

Open-agent는 이 중 그 어느 것도 아닙니다.

이것은 오후 한나절이면 다 읽을 수 있는 단일 Python 파일입니다. 복잡성을 추상화 뒤에 숨기지 않고, 모든 것을 공개합니다. 벤치마크는 실제적이며, 평가는 정직하고, 도구는 실용적입니다.

또한 단일 파일로 구성되어 있기 때문에, 포크(fork)하여 내부를 완전히 수정하거나, 시스템 프롬프트(system prompts)를 다시 쓰고, 자신만의 도구를 추가하며, 여러분의 머신에서 실행되는 모든 코드를 한 줄 한 줄 이해할 수 있습니다.

로드맵 (Roadmap)

다음 단계:

  • 멀티 에이전트 오케스트레이션 (Multi-agent orchestration) — 병렬 연구를 위한 서브 에이전트(sub-agents) 생성
  • 비전 도구 (Vision tools) — 스크린샷 및 다이어그램 처리
  • 장기 기억 (Long-term memory) — 세션 간 회상을 위한 벡터 스토어 (vector store)
  • WebSocket 브리지 (WebSocket bridge) — Copilot의 대안으로서 VS Code에 연결

하지만 기반은 이미 견고합니다. 로컬에서 실행되고, 안정적으로 작동하며, 자신의 성능을 정직하게 알려주는 에이전트입니다.

사용해 보기

git clone https://github.com/your-username/open-agent
cd open-agent
pip install -r requirements.txt
...

벤치마크 실행:

python -m benchmark.bigcodebench --instances 10
python -m benchmark.swebench --instances 5
python -m benchmark.agentic_bench
...

llama.cpp, Python, 그리고 로컬 AI가 미래라는 흔들리지 않는 믿음으로 구축되었습니다. 이 에이전트를 만드는 과정에서 어떠한 API 키도 해를 입지 않았습니다.

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0