freephdlabor 소개
지난 1년 사이 연구 과정을 자동화하는 에이전트 시스템이 여럿 나왔지만, 대부분은 아이디어 생성에서 실험, 논문 작성으로 이어지는 순서를 미리 고정해 둔 조립 라인에 가깝습니다. 고정된 순서는 오류 가능성을 줄여 주는 대신, 머신러닝 실험용으로 설계된 파이프라인을 재료과학이나 생물학으로 옮기려면 시스템을 상당 부분 다시 만들어야 한다는 비용을 남깁니다. 여기에 더해 며칠씩 이어지는 자율 연구는 실험 결과와 문헌 메모, 실패한 시도를 계속 쌓기 때문에, 컨텍스트 관리를 하지 않으면 에이전트가 필요한 정보를 놓치거나 반대로 맥락이 부풀어 오릅니다.
freephdlabor는 이 두 문제를 워크플로우를 없애는 방향으로 풀어낸 오픈소스 멀티에이전트 프레임워크입니다. Ed Li와 Junyu Ren을 비롯한 7명의 저자가 공개했고, 도구 호출과 에이전트 실행 구조는 smolagents 위에 올라가 있습니다. 정해진 단계 목록 대신 ManagerAgent 하나가 연구 이력과 다른 에이전트들의 설명을 들고 있다가 다음에 누구에게 무엇을 맡길지 그때그때 결정합니다. 저자들은 이 방식이 Agent Laboratory나 AI Scientist-v2 같은 고정 워크플로우 시스템과 갈리는 지점이라고 밝히면서, 자원을 미리 배분하는 Google의 AI Co-Scientist는 오픈소스로 공개되지 않았다는 점도 함께 적어 두었습니다.
저자들은 freephdlabor를 "동료 심사를 거친 연구를 처음부터 끝까지 자율적으로 만들어 낸 최초의 시스템" 이라고 소개하고 있으며, 그 근거로 이 시스템이 만든 논문 한 편이 ICLR 2025 워크숍에 채택된 사례를 함께 걸어 두었습니다. 실행 환경은 Python 3.11 이상과 Conda이며, 에이전트마다 다른 모델을 쓰도록 설정 파일에서 나눠 지정할 수 있습니다.
freephdlabor와 기존 연구 자동화 시스템 비교
저장소가 스스로 정리한 비교표는 네 가지 축을 듭니다. 아래 표는 그 축을 그대로 옮긴 것이며, "기존 시스템" 쪽 서술은 저자들이 자기 시스템과 대비해 적은 표현입니다:
| 항목 | freephdlabor | 기존 시스템 |
|---|---|---|
| 워크플로우 | 연구 결과에 따라 실시간으로 다음 단계를 조정 | 유연성이 거의 없는 사전 결정 워크플로우 |
| 커스터마이징 | 내장 지원 기능으로 에이전트를 추가하고 수정하고 제거 | 전체 재설계 없이는 적응이 어려움 |
| 사람의 개입 | 실시간으로 사람의 피드백을 자연스럽게 통합 | 정해진 워크플로우 검사점에서만 개입 |
| 연속 연구 | 컨텍스트 관리로 탐색을 지속 | 한 번 실행하고 끝나는 단발성 시도 |
여기서 가장 실질적인 차이는 커스터마이징 축입니다. 이 프레임워크는 다른 분야로 옮길 때 시스템 전체를 손대는 대신 ExperimentationAgent가 쓰는 RunExperimentTool을 그 분야의 도구로 바꾸는 정도로 시작할 수 있게 설계되어 있습니다. 재료과학이라면 결정 구조 예측이나 물성 계산을 수행하는 도구를 끼워 넣고, 나머지 조정과 메모리, 작업 흐름은 프레임워크가 처리하는 식입니다.
다만 표의 "기존 시스템" 열이 특정 시스템을 지목한 측정 결과가 아니라 저자들의 대비 서술이라는 점은 감안하고 읽는 것이 좋습니다. 같은 문제를 다루는 오픈소스 프로젝트로는 OpenScience와 AutoSci도 PyTorchKR에 소개된 적이 있습니다.
freephdlabor는 누구에게 맞는가
자기 분야에 맞는 연구 에이전트 팀을 직접 구성해 보려는 연구자에게는 freephdlabor가 적절한 출발점입니다. 에이전트 클래스와 도구, 초기화 함수, 실행 스크립트가 각각 분리되어 있고 저장소가 네 단계로 나눠 커스터마이징 방법을 안내하므로, 도구 하나를 바꾸는 것부터 시작할 수 있습니다. SLURM 클러스터용 템플릿도 함께 들어 있어 장시간 실행을 학교나 회사의 계산 자원에 올리기도 쉽습니다.
반대로 검증된 결과를 바로 받아 쓰려는 팀에게는 freephdlabor가 아직 적절한 선택지가 아닙니다. 실행에는 여러 LLM 제공자의 API 키가 필요하고, 실험을 실제로 실행하려면 CUDA를 지원하는 GPU도 권장 사양에 들어갑니다. 무엇보다 이 시스템이 내놓는 것은 사람의 검토를 전제로 한 초고이며, 저자들도 모든 과학 분야에 그대로 통하는 에이전트 시스템은 아직 가능하지 않다고 먼저 밝히고 있습니다.
freephdlabor의 핵심 기능
저장소가 내세우는 특징은 네 갈래로 정리되어 있습니다:
동적 워크플로우와 모듈형 구조는 위에서 다뤘고, 나머지 둘인 메모리와 통신 구조, 그리고 사람의 개입은 아래에서 이어서 살펴봅니다.
freephdlabor의 허브 앤 스포크 구조
freephdlabor는 에이전트끼리 직접 연결하지 않고 ManagerAgent를 가운데 두는 허브 앤 스포크(hub-and-spoke) 구조를 씁니다. 연구 이력 전체와 다른 에이전트들의 설명을 모두 들고 있는 것은 ManagerAgent 하나뿐이고, 위임은 도구 호출과 같은 방식으로 처리됩니다. 위임받은 에이전트는 자기 시스템 프롬프트와 전달받은 지시에 따라 필요한 만큼 도구를 호출하다가 final_answer 도구로 결과를 보고합니다:
이 구조는 에이전트 수가 늘어날 때 필요한 컨텍스트가 제곱으로 늘어나는 문제를 피하려는 선택입니다. 새 에이전트는 기존 에이전트 전부와 맞물릴 필요 없이 ManagerAgent와만 인터페이스를 맞추면 됩니다. 저장소의 freephdlabor/agents/에는 아이디어를 만드는 IdeationAgent, 실험을 수행하는 ExperimentationAgent, 자료를 정리하는 ResourcePreparationAgent, 논문을 쓰는 WriteupAgent, 심사 의견을 내는 ReviewerAgent, 교정을 맡는 ProofreadingAgent와 TypocheckAgent가 들어 있습니다. 블로그의 아키텍처 그림에는 이 가운데 다섯 개만 그려져 있으므로, 실제 구성은 저장소 쪽을 기준으로 보는 것이 정확합니다.
freephdlabor의 파일 기반 통신과 컨텍스트 관리
에이전트가 서로에게 문자열 하나로만 결과를 넘기면, 정보가 여러 번 옮겨 적히면서 원래 내용이 뭉개집니다. 저자들은 이를 전화 놀이(game of telephone) 문제라고 부르며, "고양이가 쥐를 잡는 장면" 이 몇 번의 전달을 거쳐 "여자아이가 입력 장치인 마우스를 뽑는 장면" 으로 바뀌는 예시를 들고 있습니다:
그래서 이 프레임워크는 중요한 정보를 공유 작업 폴더 안에 파일로 쓰고, 다른 에이전트에게는 파일 경로와 짧은 요약만 넘깁니다. 파일 이름은 길어져도 좋으니 내용을 알아볼 수 있게 붙이라고 권합니다. 이 폴더는 통신 채널인 동시에 토큰을 소모하지 않는 외부 메모리 역할도 합니다.
세션 안에서 대화가 길어지는 문제는 따로 처리합니다. 토큰이 모델 한계의 75%를 넘으면 AutomaticContextCompactor가 도구 사용 양상과 주요 관측, 최근 추론, 발생한 오류를 요약한 뒤, 그 요약과 마지막 3개의 ActionStep으로 에이전트 메모리를 재구성합니다.
freephdlabor의 중단과 재개, 프롬프트 자동 개선
실행 중인 에이전트에 끼어들어 지시를 주는 기능이 들어 있습니다. 콜백 서버를 열어 두고 nc로 접속한 뒤 interrupt를 입력하면, 현재 단계가 끝나는 시점에 에이전트가 멈추고 지시를 받습니다. 이때 입력한 내용이 현재 작업의 수정인지 새 작업인지 고르면 그 지시가 에이전트 메모리에 들어가고 작업이 이어집니다. 워크스페이스 상태와 에이전트 메모리가 통째로 저장되므로, --resume으로 이전 실행을 이어받는 것도 가능합니다.
커스터마이징을 돕는 장치도 있습니다. 시스템이 모든 LLM 호출을 시간 순서대로 results/{workspace}/agent_llm_calls.jsonl에 기록하고, 저장소의 .claude/commands/에 들어 있는 슬래시 명령으로 그 기록을 분석해 에이전트가 어떤 정보를 못 받았는지 찾고 시스템 프롬프트 개선안을 받을 수 있습니다.
freephdlabor 설치와 사용
Python 3.11 이상과 Conda 환경 관리자가 필요하고, 실험을 실행하려면 CUDA를 지원하는 GPU가 권장됩니다. 설치는 저장소를 내려받아 Conda 환경을 만드는 순서입니다:
git clone https://github.com/ltjed/freephdlabor.git
cd freephdlabor
conda env create -f environment.yml
conda activate freephdlabor
.env 파일에 사용할 LLM 제공자의 API 키를 채워 넣고, 필요하면 .llm_config.yaml에서 구성 요소별 모델을 따로 지정합니다. 실행은 연구 방향을 문장으로 적어 주는 것으로 시작합니다:
python launch_multiagent.py --task "investigate the effect of learning rate schedules on neural network generalization and report any interesting discoveries in a paper"
모델 선택은 에이전트용과 실험 도구용을 나눠 적을 수 있습니다. 저장소의 예시 설정은 주 에이전트에 추론(reasoning) 성능이 좋은 모델을, 실험 도구 내부에는 코드 생성과 피드백, 보고서 작성용 모델을 각각 지정하는 형태입니다:
main_agents:
model: claude-opus-5
budget_tokens: 16384
run_experiment_tool:
code_model: gpt-5.6
feedback_model: gpt-5.6
vlm_model: gpt-5.6
report_model: gpt-5.6
reasoning_effort: high
새 에이전트를 만들 때는 BaseResearchAgent를 상속하고 도구 목록과 시스템 프롬프트를 넘긴 뒤 ManagerAgent에 등록하면 됩니다. 저장소가 든 예시는 다음과 같은 형태입니다:
from .base_research_agent import BaseResearchAgent
from smolagents import Tool
class MyCustomAgent(BaseResearchAgent):
"""Custom agent for specialized research tasks."""
def __init__(self, model, workspace_dir: str, workspace_interpreter=None, **kwargs):
tools = [MyCustomTool()]
system_prompt = """
You are MyCustomAgent, specialized in [your domain].
Use your tools to accomplish research tasks in [your domain].
"""
super().__init__(
model=model,
agent_name="my_custom_agent",
workspace_dir=workspace_dir,
workspace_interpreter=workspace_interpreter,
tools=tools,
system_prompt=system_prompt,
**kwargs
)
실제로 어떤 결과물이 나오는지는 저장소에 함께 올라온 예시 논문 PDF에서 확인할 수 있습니다.
freephdlabor의 라이선스
freephdlabor는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.
단, 실험 수행 도구는 AI-Scientist-v2의 일부를 수정해 가져왔고 원격 측정에는 Phoenix를 씁니다. 상업적으로 사용하기 전에는 이들 구성 요소의 라이선스를 각각 확인해야 합니다.
freephdlabor 프로젝트 블로그
freephdlabor 기술 보고서 논문
freephdlabor 프로젝트 GitHub 저장소
더 읽어보기
-
Agent Laboratory: 자율 연구 수행 및 협업을 위한 AI 에이전트 프레임워크에 대한 연구 (feat. AgentRxiv)
-
Google, 과학 연구 과정에서 연구자를 돕는 'AI 공동연구자(AI Co-Scientist)' 공개 (feat. Gemini 2.0)
이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
은 이런 글들을 한국어로 정리해 나누고 있습니다. 회원으로 가입하시면 주요 글들을 이메일
로 보내드리고, 텔레그램(Telegram)과 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. ![]()
아래
쪽에 좋아요
를 눌러주시면 다음 글을 정리하는 데 힘이 됩니다~ ![]()




