Capstone 05 — 자율 리서치 에이전트(Autonomous Research Agent, AI-Scientist급)
Sakana의 AI-Scientist-v2는 완성된 논문을 발표했고, Agent Laboratory는 실험을 직접 수행했으며, Allen AI는 추적 기록(trace)을 공개했습니다. 2026년의 표준 형태는 실험을 노드로 두는 계획-실행-검증(plan-execute-verify) 트리 탐색(tree search), 비용 상한이 걸린 예산(budget), 격리된 코드 실행(sandboxed code execution), 시각 피드백(vision-feedback)을 받는 LaTeX 작성기(writer), NeurIPS 형식의 자동 리뷰어 앙상블(reviewer ensemble)입니다. 이 캡스톤은 그 시스템을 직접 구축하고, 논문 한 편당 $30 안에서 끝까지 돌리며, Sakana가 문서로 남긴 샌드박스 탈출(sandbox-escape) 레드팀(red team) 공격까지 견뎌내는 것을 목표로 합니다.
유형: Capstone
언어: Python (에이전트 + 샌드박스), LaTeX (출력 산출물)
선수 지식: Phase 2 (ML), Phase 3 (딥러닝), Phase 7 (transformers), Phase 10 (LLMs from scratch), Phase 14 (에이전트), Phase 15 (자율 시스템), Phase 16 (멀티 에이전트), Phase 18 (안전)
활용되는 Phase: P0 · P2 · P3 · P7 · P10 · P14 · P15 · P16 · P18
소요 시간: 약 40시간
문제
자율 리서치 에이전트는 2026년에 임계선을 넘었습니다. Sakana AI의 AI-Scientist-v2는 워크숍 동료 평가(workshop peer review)를 통과한 생성 논문(generated paper)과 함께 Nature에 소개되었고, ShinkaEvolve(ICLR 2026)는 같은 흐름을 진화하는 가설(evolving hypotheses) 영역으로 확장했습니다. AMD의 Agent Laboratory는 재현 가능한 추적 기록을 함께 공개했습니다. 이 에이전트들은 마법이 아닙니다. 후보 실험 트리(tree) 위에서 도는 계획-실행-검증 루프이며, 비용 상한(cost cap), 시드(seed)가 고정된 샌드박스(seed-bound sandbox), 자동화된 리뷰(automated review)가 함께 돌아갑니다. 진짜 기술은 루프(loop), 예산(budget), 안전 서사(safety story)에 있습니다.
좁은 도메인(domain)의 씨앗 아이디어(seed idea), 예를 들어 100M 파라미터 트랜스포머(100M-parameter transformer)에 대한 어텐션 희소성 제거 실험(attention-sparsity ablations) 같은 주제를 잡고 직접 구현하며 이 루프를 익힙니다. 첫 실행에서 새로운 발견을 해내는 데 가치가 있는 것이 아닙니다. 가치는 인프라(infrastructure)에 있습니다. 트리 탐색, 실험 샌드박스(experiment sandbox), 작성기-리뷰어 루프(writer-reviewer loop), 레드팀 보고서(red-team report)가 그것입니다. Sakana 팀은 샌드박스 탈출 실패 사례(sandbox-escape failures)를 문서로 남겼습니다. 여러분의 에이전트도 동일한 레드팀을 통과해야 합니다.
개념
에이전트는 최선 우선 탐색(best-first tree search) 구조입니다. 노드(node)는 실험 명세, 즉 가설(hypothesis), 설정(config), 코드(code), 기대 결과(expected outcome)를 묶은 단위입니다. 확장 단계(expand step)는 작은 수정을 가한 자식 노드(child)를 제안합니다(옵티마이저(optimizer) 교체, 배치 크기(batch size) 변경, 특정 구성요소 제거 등). 각 자식은 하드 자원 상한(hard resource cap)이 걸린 새 샌드박스에서 실행됩니다. 결과는 채점 함수(scoring function)로 되돌아가고, 노드는 (참신성 × 품질 × 잔여 예산; novelty × quality × remaining budget) 기준으로 순위가 매겨집니다. 예산이 소진될 때까지 트리가 자라며, 가장 좋은 가지(branch)가 논문으로 작성됩니다.
작성기(writer)는 멀티모달(multimodal)로 동작합니다. LaTeX 초안(draft)을 생성하고, 컴파일(compile)하며, 그림(figure)을 렌더링한 뒤, 렌더링된 PDF를 다시 Claude Opus 4.7의 비전 모드(vision mode)로 넘겨 레이아웃(layout), 그림 가독성(figure legibility), 주장-근거 정합성(claim-evidence alignment)을 비평받습니다. 다섯 개의 LLM 심사자(LLM judges)로 구성된 리뷰어 앙상블은 NeurIPS 형식의 점수(novelty, rigor, clarity, reproducibility, impact)를 매기며, 평균이 임계값(threshold) 아래로 떨어지면 비평과 함께 논문이 작성기로 되돌아갑니다.
안전(safety)은 단순한 부가 요소가 아니라 구조 전체를 지탱하는 축입니다. 모든 실험은 네트워크 송신(network egress)이 차단되고 벽시계 시간(wall-clock)이 제한되며 자원 한도(resource limit)가 고정된 E2B 또는 Daytona 샌드박스 안에서 실행됩니다. 에이전트의 코드 생성 단계(code-generation step)는 샌드박스를 벗어나는 시스템 콜(syscall)을 차단하는 정책 계층(policy layer)을 통과해야 합니다. 레드팀 보고서는 Sakana가 문서화한 공격 표면(attack surface), 즉 포크 폭탄(fork bombs), 파일시스템 탈출(filesystem escapes), LLM이 생성한 네트워크 호출(LLM-written network calls)을 그대로 재현합니다.
아키텍처
seed idea + domain
|
v
literature search (Semantic Scholar + OpenAlex + FAISS cache)
|
v
LangGraph plan-execute-verify tree
|
v
+--- expand node ----+ per-node sandbox
| | (E2B / Daytona)
v v resource caps
child_1 child_k no network egress
| | deterministic seeds
v v
run experiment run experiment
| |
v v
score nodes by (novelty, quality, budget)
|
v
best branch -> LaTeX writer
|
v
compile + vision critique (Opus 4.7 vision)
|
v
reviewer ensemble (5 LLM judges, NeurIPS rubric)
|
v
paper.pdf + review.md + trace.json
스택
- 오케스트레이션(orchestration): 체크포인팅(checkpointing)과 사람 승인 게이트(human-approval gate)를 갖춘 LangGraph
- 트리 탐색: 실험 노드 위에서 동작하는 자체 구현 최선 우선 탐색(Sakana v2의 AB-MCTS 계열)
- 샌드박스: 실험 단위 E2B, Docker-in-Docker 폴백(fallback), cgroups 기반 자원 상한
- 문헌(literature): Semantic Scholar Graph API + OpenAlex + 초록(abstract)의 로컬 FAISS 캐시
- 작성기: LaTeX 템플릿 + 그림 비평과 레이아웃 검토를 위한 Claude Opus 4.7(비전 모드)
- 리뷰어: 다섯 심사자 앙상블(Opus 4.7, GPT-5.4, Gemini 3 Pro, DeepSeek R1, Qwen3-Max)과 가중 평균(weighted aggregation)
- 실험 프레임워크(experiment framework): 실제 실험은 PyTorch 2.5, 로깅(logging)은 W&B
- 관측성(observability): 에이전트 추적은 Langfuse, 논문 한 편당 $30 하드 예산(hard budget)
만들어보기
-
씨앗 아이디어와 도메인 범위 설정. 씨앗 아이디어를 정합니다(예: "1B 파라미터 미만 트랜스포머에서 어텐션 맵의 희소성 패턴(attention map sparsity pattern) 조사"). 그리고 탐색 공간(search space)을 정의합니다. 모델(model), 데이터셋(dataset), 컴퓨트 예산(compute budget) 범위를 명시합니다.
-
문헌 조사. Semantic Scholar와 OpenAlex에서 관련도와 피인용수가 높은 논문 50편을 질의(query)합니다. 초록은 로컬 캐시(local cache)에 저장하고, 1쪽 분량의 도메인 다이제스트(domain digest)를 생성합니다.
-
트리 골격 구성. 씨앗 가설로 루트 노드(root)를 초기화합니다. 자식 하나당 설정 한 가지만 바꾸는 작은 수정 제안으로 expand(node) -> children을 구현합니다. score(node)는 가중치를 적용한 참신성 × 품질 × 예산 항으로 구성합니다.
-
샌드박스 래핑. 모든 실험은 docker run --network=none --memory=8g --cpus=2 --pids-limit=256 --read-only 또는 이에 상응하는 E2B 정책으로 실행합니다. 시드는 샌드박스 안으로 기록하고, 출력은 읽기 전용(read-only) 마운트로 밖에서 회수합니다.
-
계획-실행-검증 루프. plan은 자식 노드를 제안하고, execute는 샌드박스를 실행해 로그와 지표(metric)를 수집하며, verify는 지표에 대한 단위 점검(unit check)을 수행합니다(예: 손실(loss)이 감소했는지, 어블레이션(ablation)이 해당 효과를 분리해냈는지). 실패한 노드에는 실패 사유(failure reason)를 트리에 기록합니다.
-
작성기. 예산이 끝나면 가장 좋은 가지를 선택합니다. matplotlib로 그림을 렌더링한 뒤, 해당 가지의 추적 기록을 맥락(context)에 넣어 Claude Opus 4.7로 LaTeX 초안을 생성합니다. 이를 컴파일하고, 컴파일된 PDF를 다시 Opus 4.7 비전 모드로 보내 비평을 받습니다. 이 과정을 반복합니다.
-
리뷰어 앙상블. 다섯 심사자가 초안을 참신성(novelty), 엄밀성(rigor), 명료성(clarity), 재현성(reproducibility), 영향력(impact) 기준의 NeurIPS 형식 평가표(rubric)로 채점합니다. 평균이 4.0/5 미만이면 비평과 함께 작성기로 되돌리고, 3회 재작성(rewrite) 후에는 강제 종료(hard stop)합니다.
-
레드팀. 샌드박스를 겨냥한 적대적 작업 세트를 직접 만들거나 통합합니다. 포크 폭탄, 네트워크 외부 유출 시도(network exfiltration attempt), 파일시스템 탈출, LLM이 작성한 셸 메타문자(shell metacharacter)가 그 예시입니다. 모두 차단되는지 확인하고 결과를 정리합니다.
-
재현성. 모든 논문에는 트리 탐색 추적 JSON, 시드, W&B 실행 링크, 샌드박스 설정, 끝까지 재현하는 README를 함께 제공합니다.
사용해보기
$ ai-scientist run --seed "attention sparsity in sub-1B transformers" --budget 30
[lit] 50 papers, digest in 12s
[tree] expanded 8 nodes, budget 12/30
[exec] node #3 sparsity=top-8, loss=2.83 (best so far)
[exec] node #6 sparsity=top-4, loss=3.12 (worse)
[exec] ...
[tree] chose branch rooted at node #3 (novelty 0.62, quality 0.81)
[write] LaTeX draft v1 complete
[vision] critique: figure 2 legend too small, claim-evidence ok
[write] draft v2 after 3 edits
[review] mean 4.2/5 (novelty 3.9, rigor 4.3, clarity 4.1, repro 4.5, impact 4.2)
[done] paper.pdf + review.md + trace.json $28.40 spent
제출하기
outputs/skill-ai-scientist.md가 제출 산출물입니다. 씨앗 아이디어, 도메인, $30 예산이 주어지면 전체 파이프라인(pipeline)을 실행해 리뷰 가능한 논문과 재현성 번들(reproducibility bundle)을 산출합니다.
| 가중치 | 평가 항목 | 측정 방법 |
|---|
| 25 | 논문 품질 | 같은 주제의 출판된 워크숍 논문과 블라인드 평가표 비교 |
| 20 | 실험 엄밀성 | 베이스라인(baseline), 시드, 어블레이션을 갖추고, 모든 주장을 결과 표(results table)의 셀(cell)로 뒷받침 |
| 20 | 비용과 컴퓨트 규율 | 논문당 $30 상한을 강제하고 Langfuse로 추적 |
| 20 | 안전성 | 샌드박스 레드팀 통과, 네트워크 정책과 킬 스위치(kill-switch) 검증 |
| 15 | 재현성 | 동일 시드로 한 명령(one-command) 재실행 시 논문 재현 |
| 100 | | |
연습문제
-
(쉬움) 같은 도메인의 씨앗 아이디어 세 개에 대해 파이프라인을 실행합니다. 트리 탐색의 어떤 부분이 서로 겹치는지 비교하고, 중복되어 낭비된 컴퓨트(wasted compute)를 식별합니다.
-
(중간) 추정 비용이 $5를 넘는 노드에 대해서는 실험 실행 전에 사람이 개입하는 게이트(human-in-the-loop gate)를 추가합니다. 총 비용이 얼마나 줄어드는지 측정합니다.
-
(중간) 리뷰어 앙상블을 단일 심사자(single judge)로 바꿉니다. 미리 알려진 부실 논문(known-bad papers) 보류 집합(held-out set)에서 잘못된 통과율(false-accept rate)을 측정합니다.
-
(어려움) 네트워크 외부 유출 레드팀 테스트를 도입합니다. 에이전트가 외부 주소로 curl을 시도하는 코드를 작성하게 하고, --network=none 정책이 이를 차단하는지 확인합니다. 시도 자체는 로그로 남깁니다.
-
(어려움) 트리 탐색을 평탄한 무작위 베이스라인(flat random baseline)과 비교합니다(같은 예산, 확장 전략 없음). 참신성 × 품질 이득을 보고합니다.
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| 트리 탐색(Tree search) | "AB-MCTS-style expansion" | 참신성 × 품질 × 예산 점수로 실험 노드를 최선 우선으로 탐색하는 방식이다 |
| 샌드박스(Sandbox) | "Experiment isolation" | 네트워크가 없고 CPU와 메모리가 제한되며 시드가 고정되고 입력이 읽기 전용인 컨테이너이다 |
| 비전 비평(Vision critique) | "Render-then-read" | 논문을 PDF로 컴파일한 뒤 그 PDF를 다시 VLM에 넣어 레이아웃과 주장-근거 정합성을 비평하는 절차이다 |
| 리뷰어 앙상블(Reviewer ensemble) | "Automated peer review" | 여러 LLM 심사자가 NeurIPS 평가표로 논문을 채점하고 가중 평균이 게이트 역할을 하는 구조이다 |
| 참신성 점수(Novelty score) | "Is this new?" | 50편 문헌 캐시와 가까울수록 패널티를 주는 휴리스틱(heuristic)이다 |
| 비용 상한(Cost ceiling) | "$ budget" | 논문당 총 지출의 하드 캡, Langfuse 카운터와 사전 비용 추정의 조합이다 |
| 레드팀(Red team) | "Sandbox-escape audit" | 정책이 잘못되었을 때 샌드박스를 탈출할 수 있는 적대적 작업 묶음이다 |
더 읽을거리