huggingface/ml-intern
Published:
뭐 하는 거
Hugging Face가 낸 오픈소스 ML 인턴 에이전트. 자율적으로 논문 읽고, 데이터셋·모델·docs 뒤지고, 학습 스크립트 짜서 HF 생태계 위에서 돌리는 CLI 에이전트. Apache 2.0, Python 기반.
핵심 구성:
- Agentic Loop —
submission_loop→Handlers.run_agent()→ 최대 300 iteration LLM 호출 + tool 실행. litellm로 모델 추상화. - ToolRouter — HF docs/research, repos·datasets·jobs·papers, GitHub code search, sandbox/local tool, planning, MCP 서버 도구를 한 라우터로 묶음.
- ContextManager — 메시지 히스토리 + 170k에서 자동 compaction + 세션을 HF dataset으로 자동 업로드 (개인 private repo, Claude Code JSONL 포맷).
- Doom Loop Detector — 같은 tool 패턴 반복 감지하면 corrective prompt 주입.
- Approval flow — jobs, sandbox, destructive op은 사용자 승인 대기. Slack 게이트웨이로 out-of-band 알림 가능.
모델은 Anthropic / OpenAI / 로컬(ollama, vllm, lm_studio, llamacpp) 모두 OpenAI 호환 엔드포인트로 처리. LOCAL_LLM_BASE_URL 한 줄로 로컬 폴백.
왜 킵
당장 쓸 거는 아니고 나중에 코드 뜯어볼 레퍼런스. 특히 보고 싶은 부분:
- 에이전트 루프(
agent_loop.py)에서 submission_queue / event_queue를 어떻게 분리해서 CLI에 묻혔는지 - Doom Loop Detector 휴리스틱
- ContextManager의 auto-compaction 트리거와 HF dataset 업로드 파이프라인
- ToolRouter가 MCP 서버를 어떻게 통합하는지
- HF 자체 도구(repos / jobs / papers)를 tool spec으로 어떻게 노출했는지
설치 (참고용)
git clone git@github.com:huggingface/ml-intern.git
cd ml-intern
uv sync
uv tool install -e .
ml-intern --model anthropic/claude-opus-4-7 "fine-tune llama on my dataset"
