TL;DR
NOOA는 에이전트를 단일 Python 클래스 단위로 구조화하고 타입화된 입출력과 참조 전달 메모리 등을 결합해 동일한 LLM에서 정확도와 토큰 비용을 동시에 개선한 객체지향 에이전트 하니스이다. 에이전트의 능력은 메서드, 상태는 필드, 프롬프트는 도크스트링, 계약은 타입 주석으로 표현되며 런타임에 LLM이 점(...)으로 표시된 메서드 바디를 Python 코드로 완성해 결정형 출력과 검사 가능한 트레이스를 생성한다. 인간 판독 가능한 SQLite 기반 장기 메모리는 에이전트가 기록을 명시적으로 관리하고 관계를 통해 지식을 누적하게 하며 배경 리플렉션으로 중복 제거·요약·연결을 수행해 정보 신선도를 유지한다. 다양한 벤치마크에서 NOOA는 SWE-bench 82.2%, CyberGym L1 86.8%, ARC-AGI-3에서 50.2%~85.1% 구간의 성과와 더불어 토큰 사용량을 대폭 절감한 점을 보였고 샌드박싱·레드팀 감사를 통해 런타임 보안성을 확보한 상태로 오픈 리서치 표면으로 공개되었다.
빠른 이해
새로운 점
객체지향적 에이전트 설계와 참조 전달 메모리 조합으로 동일 모델에서 정확도와 토큰 비용을 동시에 개선했다는 점
핵심 메커니즘
사용자는 에이전트를 Python 클래스 형태로 정의하면 런타임에서 LLM이 점(...)으로 표기된 메서드 바디를 Python 코드로 완성하고, 도구 결과는 참조 전달로 라이브 객체로 제공되어 모델은 타입화된 입력을 받아 코드 작성과 메서드 호출을 통해 결정형 출력과 영속적 레코드를 생성한다.
핵심 수치
- SWE-bench Verified (GPT-5.5): 82.2%- 제출 시점 공개 리더보드의 79.2% 대비 우위
- SWE-bench (Opus 4.6): 79.8%- 범용 253행 에이전트로 달성
- CyberGym L1 (취약점 재발견, 모델 제한된 환경): 86.8%- 네트워크 접근 차단 상태에서 측정
- ARC-AGI-3 (GPT-5.5 fleet): 50.2% mean RHAE- 기술적 기여: world-model skill +8.5, memory +11.8
- ARC-AGI-3 (GPT-5.6-sol fleet): 85.1% mean RHAE- 게임 당 비용 약 $13.3, 25게임 중 19게임 완전 해결
- 토큰·호출 수 비교 (SWE-bench, GPT-5.5): NOOA: 29 호출 / 약 1.1M 토큰 vs 비교 하니스: 66 호출 / 2.2M 토큰- 동일 모델에서 NOOA가 더 적은 토큰으로 동등 또는 더 나은 성능 달성
섹션별 상세
연구 개요와 핵심 인사이트
에이전트를 단일 클래스 객체로 설계하는 방법
class SupportAgent(Agent):
"""You are a support agent for a customer service system."""
order_db: OrderDB # object state: model-visible, passed by reference
def is_refund_eligible(self, order: Order) -> bool:
"""Return whether an order is eligible for a refund."""
return order.delivered and order.days_since_delivery
TicketKind: """Classify the customer message into the best ticket kind."""
...
async def triage(self, message: str, photo: Image | None, order: Order | None) -> Ticket:
"""Triage a customer message and create a support ticket."""
...이 코드는 에이전트를 단일 Python 클래스로 표현하고 메서드 바디를 런타임에 LLM이 완성하도록 하는 NOOA의 객체지향적 설계 예시로, 상태는 필드로 유지되고 일부 메서드는 점(...)으로 표기되어 모델이 해당 부분을 생성하도록 한다.
여섯 가지 모델 인터페이스 설계 원칙
장기 메모리 설계와 운영 방식
벤치마크 결과와 비용·토큰 효율성
취약점 탐지 워크플로와 검증 메커니즘
보안·배포·오픈 연구 관점
용어 해설
- 참조 전달(Pass by Reference)
- — 데이터를 문자열로 직렬화해 모델에 전달하는 대신 실행 환경의 객체 주소를 모델이 참조하도록 하는 기법으로, 모델이 전체 값을 컨텍스트로 불러오지 않고도 객체의 미리보기와 메타데이터만 보고 판단하거나 코드에서 직접 조작하게 해 토큰 사용량을 줄이고 캐시 유효성을 유지한다.
- 타입화된 상태 기반 장기 메모리(Typed State Memory)
- — 에이전트의 상태와 장기 기억을 타입 주석과 구조화된 레코드로 관리하는 메커니즘으로, 각 레코드는 중요도·태그·관계(예: supports, contradicts)를 가지며 SQLite 같은 인간 판독 가능한 저장소에 유지되어 재훈련 없이 지식 누적과 검증 가능한 감사가 가능하게 만든다.
- 프로그래머블 루프 엔지니어링(Programmable Loop Engineering)
- — 에이전트의 제어 흐름을 외부 워크플로 그래프나 고정된 오케스트레이션이 아니라 일반 Python 루프로 구현해 개발자와 모델이 루프를 수정·생성·재사용할 수 있게 하는 방식으로, 모델이 자체적으로 반복적 의사결정 구조를 생성하고 호출 흐름을 제어할 수 있게 한다.
- 컨텍스트 압축(Context Compaction)
- — 대화나 도구 결과가 늘어남에 따라 입력 컨텍스트 창이 가득 차는 문제를 해결하기 위해 요약하거나 핵심만 추출해 토큰을 줄이는 절차로, NOOA는 참조 전달과 지속 가능한 캐시로 이 절차를 크게 줄여 세션 중 전반적 토큰 소비를 낮춘다.
기술
- Python
- SQLite
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.