에이전트형 코딩 워크플로우는 최근 몇 년간 LLM의 가장 뜨거운 활용처로 자리 잡았습니다. 단순 코드 완성을 넘어 도구 호출, 다단계 검색, 자동 디버깅까지 모델이 직접 수행해야 하는 영역이 늘어났고, 이를 뒷받침할 자기 개선(self-improving) 훈련 패러다임이 주목받고 있습니다. 그 흐름의 중심에 Ornith-1.0이 등장했습니다. deepreinforce-ai가 공개한 이 모델군은 9B Dense부터 397B MoE까지 네 가지 크기로 제공되며, 강화학습으로 스캐폴드(scaffold)와 솔루션을 함께 최적화하는 독특한 훈련 방식을 채택했습니다.

Ornith-1.0은 무엇인가
Ornith-1.0은 에이전트형 코딩에 특화된 자기 개선 오픈소스 모델군입니다. Qwen 3.5와 Gemma 4 베이스 모델 위에 후훈련됐으며, 다음 네 가지 구성을 제공합니다.
- 9B Dense — 단일 80GB GPU에서 서빙과 파인튜닝 가능
- 31B Dense — 풀프리시션 멀티 GPU 서빙용
- 35B MoE — FP8/GGUF 양자화 옵션 포함
- 397B MoE — 멀티 GPU 노드 full-precision 서빙용
핵심 차별점은 강화학습(RL) 기반 자기 개선 훈련 프레임워크입니다. 기존 RLHF가 사람의 피드백을 받는다면, Ornith-1.0의 훈련은 모델이 솔루션 rollout뿐 아니라 그 rollout을 이끄는 스캐폴드(코드/도구 호출의 뼈대)까지 생성하도록 학습시킵니다. 스캐폴드와 결과 솔루션이 함께 최적화되면서 더 나은 검색 궤적과 더 높은 품질의 답을 찾아냅니다. 라이선스는 MIT로, 지역 제한 없이 상업적으로도 자유롭게 사용할 수 있습니다.
자기 개선 훈련 메커니즘
전통적인 코드 LLM 훈련은 "정답 코드"를 생성하도록 모델을 가르치는 데 집중합니다. 하지만 실제 에이전트형 코딩에서는 모델이 스스로 검색 전략을 세우고, 도구를 호출하고, 오류를 디버깅하는 일련의 과정을 함께 수행해야 합니다.
Ornith-1.0의 접근법은 다음과 같습니다.
- 모델은 스캐폴드 코드(문제 분석 → 검색 → 도구 호출 → 검증 로직)와 솔루션 코드를 동시에 생성합니다.
- 강화학습 보상은 최종 솔루션의 정확도와 실행 결과, 그리고 스캐폴드의 효율성(토큰 사용량, 단계 수) 모두를 반영합니다.
- 스캐폴드가 개선되면 솔루션의 정확도도 함께 올라가는 선순환 구조가 형성됩니다.
이 방식은 모델이 단순히 "정답을 외우는" 게 아니라 작업 풀이 전략 자체를 학습하도록 만듭니다. HN 댓글에서도 "사고 과정이 Qwen 3.6 35B보다 짧고, 같은 루프에 빠지는 일이 적다"는 실사용 후기가 나오고 있습니다.
벤치마크 성능 비교
README에 공개된 결과에서 Ornith-1.0은 비슷한 크기의 오픈소스 모델 대비 최첨단(SOTA) 성능을 달성했습니다. 주요 벤치마크별 수치는 다음과 같습니다.
| 모델 | Terminal-Bench 2.1 (Terminus-2) | SWE-bench Verified | SWE-bench Pro | SWE-bench Multilingual | NL2Repo | Claw-eval Avg |
|---|---|---|---|---|---|---|
| Ornith-1.0-9B | 43.1 | 69.4 | 42.9 | 52.0 | 27.2 | 63.1 |
| Ornith-1.0-35B | 64.2 | 75.6 | 50.4 | 69.3 | 34.6 | 69.8 |
| Ornith-1.0-397B | 77.5 | 82.4 | 62.2 | 78.9 | 48.2 | 77.1 |
특히 Terminal-Bench 2.1(터미널 환경 에이전트 평가)에서 397B 모델이 77.5점을 기록한 점은 주목할 만합니다. Claude Code 기준 평가(78.2)에서도 거의 동등한 수준으로, 오픈소스 모델로는 매우 드문 결과입니다.
평가 환경 상세

벤치마크마다 평가 하네스와 디코딩 설정이 다르기 때문에, 단순 점수 비교는 의미가 없습니다. Ornith-1.0 README는 각 벤치마크의 재현 가능한 설정을 명시적으로 공개합니다.
- Terminal-Bench 2.1 Terminus-2: Harbor/Terminus-2 프레임워크, parser=json, temperature=1.0, top_p=1.0, 128K 컨텍스트. 4시간 timeout, 32 CPU 코어, 48GB RAM, 5회 평균.
- Terminal-Bench 2.1 Claude Code: Claude Code 2.1.126, parser=json, temperature=1.0, top_p=1.0, max_new_tokens=131072, 5회 평균.
- SWE-bench Verified/Pro/Multilingual: OpenHands 하네스, temperature=1.0, top_p=0.95, 256K 컨텍스트.
- NL2Repo: temperature=1.0, top_p=1.0, 400K 컨텍스트, 48K 출력, anti-hacking filters 적용.
- ClawEval: 실제 사용자 작업 분포 기반 에이전트 벤치마크, temperature=0.6, 256K 컨텍스트.
권장 샘플링 파라미터는 temperature=0.6, top_p=0.95, top_k=20이며, 보고된 벤치마크 설정을 정확히 재현하려면 temperature=1.0을 사용해야 합니다.
실행 환경과 체크포인트
Ornith-1.0은 reasoning model입니다. 기본적으로 assistant turn이 블록으로 시작한 뒤 최종 답변을 반환합니다. 서빙 시에는 reasoning parser를 켜서 chain-of-thought를 별도 reasoning_content 필드로 반환하고, tool-call parser를 켜서 블록을 OpenAI 스타일 tool_calls로 노출합니다.
필요한 런타임 버전은 다음과 같습니다.
- Transformers ≥ 5.8.1
- vLLM ≥ 0.19.1
- SGLang ≥ 0.5.9
모든 체크포인트는 OpenAI 호환 인터페이스를 노출하고 256K 토큰 컨텍스트 창을 지원합니다. 즉, 같은 API 클라이언트 코드로 어떤 크기든 호출할 수 있습니다. Hugging Face Transformers, vLLM, SGLang, llama.cpp, Ollama 등 다양한 런타임으로 실행 가능합니다.
OpenAI 호환 API로 즉시 사용하기
vLLM 또는 SGLang으로 Ornith-1.0을 서빙하면, 표준 OpenAI 클라이언트로 바로 호출할 수 있습니다. 아래는 Python 예시입니다.
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="EMPTY",
)
resp = client.chat.completions.create(
model="Ornith-1.0-35B",
messages=[{"role": "user", "content": "이 함수의 시간 복잡도를 줄여줘"}],
)
print(resp.choices[0].message.content)
print("reasoning:", resp.choices[0].message.reasoning_content)
응답 메시지에서 reasoning_content는 추론 trace를, content는 최종 답변을 담습니다. 도구를 전달하면 well-formed 함수 호출을 생성하고, 서버는 이를 표준 tool_calls 필드로 파싱해 반환합니다. 이 덕분에 OpenHands, Hermes Agent, OpenClaw 같은 에이전트 프레임워크에 그대로 연결할 수 있습니다.
코딩 CLI도 마찬가지입니다. OPENAI_BASE_URL과 OPENAI_API_KEY를 Ornith-1.0 엔드포인트로 지정하면 OpenCode, Codex CLI, Claude Code 등을 로컬 모델로 구동할 수 있습니다.
어떤 모델 크기를 선택할까
실제 워크플로우에 Ornith-1.0을 도입할 때 가장 먼저 부딪히는 질문은 "어떤 크기를 고를 것인가"입니다.
- 9B Dense + GGUF — 24GB GPU나 M1/M2 Mac에서 llama.cpp/Ollama로 로컬 추론 가능. 일반적인 코드 자동완성, 단일 파일 리팩터링에 충분합니다.
- 35B MoE + FP8 — RTX PRO 6000(sm120) 같은 80GB GPU에서 vLLM으로 200토큰/초 이상. multi-file 변경, 테스트 자동 생성, 에이전트 루프에 적합합니다.
- 397B MoE — 멀티 GPU 노드 필요. 장기 컨텍스트, 복잡한 리팩토링, 학습 데이터 생성용으로 최적입니다.
HN 사용자 후기에 따르면 35B FP8 빌드는 Qwen 3.6 35B-A3B와 27B 사이 성능에, "과도하게 생각하거나 같은 루프에 빠지는 일이 훨씬 적다"는 정성적 우위가 있습니다. 단, 매우 긴 단순 커널 구현 같은 작업에서는 Kimi K2.6이나 GLM 5.2 같은 더 큰 공개 모델이 여전히 우위라는 평가도 있습니다.
마무리 — 자기 개선의 진짜 의미
Ornith-1.0의 가장 큰 시사점은 "자기 개선"이라는 단어의 재해석입니다. HN 댓글에서도 지적됐듯이, 이 모델은 디스크 위의 가중치를 스스로 바꾸지 않습니다. 강화학습 훈련 과정에서 스캐폴드 생성 전략이 함께 최적화되면서 추론 시 더 효율적인 풀이 경로를 찾는다는 의미입니다.
이 접근법은 에이전트 거버넌스에 새로운 질문을 던집니다. 에이전트가 시간에 따라 자기 행동 패턴을 바꾸게 되면, 왜 특정 방식으로 행동했는지 추적하는 일이 점점 더 중요해집니다. 출처 추적과 안전장치를 어떻게 설계할 것인가는 오픈소스 에이전트 생태계의 다음 과제가 될 것입니다.
지금 바로 시작하고 싶다면, Hugging Face Ornith-1.0-9B-GGUF를 내려받아 Ollama로 실행해 보세요. 30분 안에 로컬에서 동작하는 에이전트형 코딩 어시스턴트를 만들 수 있습니다.
- --
- 핵심 정리*
- Ornith-1.0은 9B/31B/35B/397B 네 가지 크기로 제공되는 MIT 라이선스 오픈소스 모델
- 강화학습으로 스캐폴드와 솔루션을 함께 최적화하는 자기 개선 훈련이 핵심
- Terminal-Bench 2.1, SWE-bench 시리즈, NL2Repo, ClawEval에서 비슷한 크기 대비 SOTA
- OpenAI 호환 API + 256K 컨텍스트 + 표준 tool_calls로 어떤 에이전트 프레임워크와도 즉시 연동
'AI 뉴스' 카테고리의 다른 글
| 더 나은 모델, 더 나빠진 도구 — LLM 도구 호출 역설과 하네스의 미래 (0) | 2026.07.06 |
|---|---|
| 클로드 코드는 요청에 스테가노그래피 표시를 하고 있음 — 바이너리에 숨은 분류 마커 분석 (0) | 2026.07.02 |
| Atlassian의 DESIGN.md 공개 — 이식 가능한 디자인 컨텍스트를 실전 테스트하며 얻은 교훈 (0) | 2026.07.02 |
| Claude Sonnet 5 공개 — Opus급 에이전트를 Sonnet 가격에 가져오다 (0) | 2026.07.02 |
| Show GN: [프롬프트] AI 1:1 밀착 원어민 튜터 — DPP 5단계로 배우는 튜터 프롬프트 설계 (0) | 2026.07.02 |