TrendShift #13 딥다이브 · AI 에이전트 · 2026-06-04 분석

Hermes Agent 딥다이브
— 경험에서 스킬을 학습하고 스스로 성장하는 자기개선형 AI 에이전트

Hermes Agent는 Nous Research가 만든 자기개선형(Self-Improving) AI 에이전트입니다. 단순 챗봇이 아니라, 복잡한 작업을 수행하고 그 경험을 SKILL.md로 저장해 다음에 더 잘하는 "학습 루프"를 내장한 에이전트입니다. ⭐ 14,634 · Python 92%+ · MIT · NousResearch/hermes-agent
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

Hermes Agent가 정확히 무엇을 하는 물건인가

Hermes Agent경험에서 스킬을 자동 생성하고, 사용 중 스스로 개선하며, 세션 간 기억을 유지하는 자기개선형 AI 에이전트입니다. CLI + Telegram, Discord, Slack, WhatsApp, Signal, Email 등 20개 이상 메시징 플랫폼에서 하나의 에이전트가 동작하며, 대화에서 배운 것을 스킬(SKILL.md)로 저장하고 다음 대화에서 재사용합니다. 40개 이상 도구 모듈, 18개 스킬 카테고리, 6종 터미널 백엔드를 지원하는 풀스택 에이전트 플랫폼입니다.

한 컷 비유

"신입 직원이 매일 업무 노트를 쓰고, 그 노트를 보며 점점 숙련되는 것"

일반 AI 어시스턴트는 대화가 끝나면 모든 것을 잊습니다. Hermes는 복잡한 일을 처리한 뒤 절차를 SKILL.md 파일에 기록합니다. 다음에 비슷한 일이 생기면 그 노트를 꺼내 더 빠르고 정확하게 처리하죠.

게다가 노트가 불완전하면 patch 작업으로 조금씩 고쳐 씁니다. 시간이 지날수록 특정 작업에 특화된 전문가가 되는 구조입니다.

2왜 주목받는가

트렌딩 이유와 경쟁 에이전트 대비 강점
차별점설명
자기개선 루프복잡한 작업 수행 후 자동으로 SKILL.md 생성, 재사용 시 스킬 개선
크로스-세션 메모리MEMORY.md + USER.md + FTS5 세션 검색으로 과거 대화 기억
멀티플랫폼하나의 게이트웨이로 20개 이상 메시징 플랫폼 동시 지원
인프라 유연성$5 VPS부터 서버리스 GPU(Modal)까지 6종 터미널 백엔드
30개 이상 LLM 프로바이더Nous Portal, OpenRouter(200+ 모델), OpenAI, Anthropic, Google Gemini, NVIDIA NIM, MiniMax, Kimi, DeepSeek 등
RL 연구 도구배치 트래젝토리 생성 + Atropos RL 환경으로 도구호출 모델 훈련 가능
기존 에이전트의 한계
대화가 끝나면 모든 것을 잊는 "기억 없는 AI"

AutoGPT나 일반 챗봇은 세션이 새로 시작되면 이전 작업에서 배운 것을 전혀 기억하지 못합니다. 같은 복잡한 작업을 반복 요청할 때마다 처음부터 다시 시작하고, 동일한 실수를 반복합니다.

Hermes의 해법
경험이 쌓이는 에이전트 — SKILL.md + MEMORY.md

복잡한 작업을 성공하면 그 절차를 SKILL.md로 저장합니다. 보안 스캐닝을 거쳐 ~/.hermes/skills/에 보관되며, 다음 유사 작업에서 자동 참조합니다. 사용자 선호도는 USER.md에, 에이전트 학습은 MEMORY.md에 분리 저장합니다.

경쟁 에이전트 대비 위치

vsHermes Agent 장점
Claude Code멀티플랫폼(Telegram/Discord), 자동 스킬 생성, RL 훈련 도구 내장
AutoGPT실용적 스킬 시스템 + 보안 스캐닝 + 안정적 메모리 관리
Devin오픈소스 + 셀프호스팅 + 다양한 인프라 백엔드
OpenClawHermes Agent의 전신 — 마이그레이션 커맨드 제공

3기술 스택 전체 지도

백엔드 / 프론트엔드 / 인프라 각각 상세

① 백엔드 (Python 82.4%)

기술용도버전
Python코어 런타임≥3.11
OpenAI SDKLLM API 통합 (OpenAI 호환 엔드포인트)≥2.21.0
(선택) Anthropic SDKClaude 직접 연동 ([anthropic] extra)==0.87.0
Pydantic데이터 검증·설정 관리≥2.12.5
Jinja2프롬프트 템플릿≥3.1.5
httpx비동기 HTTP 클라이언트≥0.28.1
Rich터미널 UI (컬러·테이블·프로그레스)≥14.3.3
prompt_toolkit인터랙티브 CLI (자동완성, 멀티라인)≥3.0.52
Tenacity재시도 로직 (API 호출 복원력)≥9.1.4
(선택) faster-whisper음성→텍스트 변환 (로컬, [voice] extra)==1.2.1
SQLite FTS5세션 전문 검색내장

② 인프라 / DevOps

기술역할
Docker컨테이너화된 실행 환경
SSH원격 터미널 백엔드
Daytona서버리스 개발 환경 (휴면/활성화)
Modal서버리스 GPU 컴퓨팅
SingularityHPC/연구 환경 컨테이너
uvPython 패키지 관리자 (빠른 의존성 해결)

4아키텍처 심화 분석

시스템 구조도와 핵심 설계 패턴 5가지

시스템 구조도

┌─────────────────────────────────────────────────────────────────┐ │ 사용자 인터페이스 │ │ CLI(TUI) │ Telegram │ Slack │ Discord │ WhatsApp │ Signal │ └───────────────────────────┬─────────────────────────────────────┘ ▼ ┌───────────────────────┐ │ Gateway (통합 라우터) │ │ channel_dir / pairing │ │ delivery / session │ └──────────┬────────────┘ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ AIAgent (run_agent.py) — 핵심 오케스트레이터 │ │ ~5,462 lines │ │ Prompt Builder │ Context Compressor │ Smart Router │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ LLM API Layer (멀티 프로바이더) │ │ │ │ OpenAI │ Anthropic │ OpenRouter │ Nous │ Kimi │ MiniMax │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Tool Execution Engine │ │ │ │ 터미널/코드실행 │ 웹/브라우저 │ 파일작업 │ MCP │ 이미지 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Persistence Layer │ │ │ │ MEMORY.md │ USER.md │ Skills (SKILL.md) │ SQLite FTS5 │ │ │ └──────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ Terminal Backends (6종) │ │ Local │ Docker │ SSH │ Daytona │ Singularity │ Modal │ └──────────────────────────────────────────────────────────────────┘

패턴 1 — 자기개선 학습 루프 (핵심!)

작업 수행 → 복잡한 패턴 감지 → 스킬 자동 생성(SKILL.md) ↑ │ │ 재사용 시 스킬 개선 │ └─────────────────────────────────────┘ 1. 복잡한 작업 완료 → skill_manager_tool.py가 SKILL.md 생성 2. 보안 스캐닝 후 ~/.hermes/skills/ 에 저장 3. 다음 세션 유사 작업 → 스킬 인덱스 참조 4. 스킬이 불완전하면 patch 작업으로 점진적 개선
SKILL.md 구조
YAML 프론트매터 + 절차적 본문
SKILL.md는 YAML 메타데이터(이름, 설명, 버전, 관련 도구)와 에이전트가 따라야 할 절차적 지식을 담습니다. 보안 가드(skills_guard.py)가 악의적 내용을 필터링하고 agentskills.io 커뮤니티 허브에 공유할 수도 있습니다.

패턴 2 — 이중 상태 메모리

class MemoryStore:
    _system_prompt_snapshot  # 세션 시작 시 고정 (프리픽스 캐시 보존)
    memory_entries           # 실시간 업데이트 (디스크 즉시 반영)
    user_entries             # 사용자 프로필 (별도 관리)

세션 시작 시 한 번 로드한 스냅샷은 변경 불가 — LLM의 KV 캐시(프리픽스 캐싱) 효율을 극대화합니다. 라이브 상태는 원자적(atomic) 파일 쓰기로 안전하게 저장됩니다.

패턴 3 — 5단계 컨텍스트 압축

단계작업LLM 호출
1오래된 도구 결과 정리 (200자 초과 → 플레이스홀더)없음
2머리 메시지 보호 (시스템 프롬프트 + 초기 교환)없음
3꼬리 경계 식별 (최근 ~20K 토큰 보호)없음
4중간 턴 구조화 요약 (목표/진행/결정/다음단계)있음
5재압축 시 이전 요약 반복 업데이트있음

핵심: tool_call/result 쌍을 절대 분리하지 않고, 고아(orphan) 쌍은 _sanitize_tool_pairs()로 정리합니다.

패턴 4 — 스마트 모델 라우팅

사용자 메시지 → 라우팅 판단 │ ├─ 160자 이하 + 28단어 이하 + 코드블록 없음 │ + URL 없음 + 복잡 키워드 없음 │ → 저렴한 모델로 라우팅 (비용/지연 절감) │ └─ 그 외 → 프라이머리 모델 유지 31개 복잡도 키워드: debug, implement, refactor, analyze, design, docker, test, architecture, optimize ...

패턴 5 — 계층적 프롬프트 빌더 (First Found Wins)

1. .hermes.md / HERMES.md (git root까지 탐색) 2. AGENTS.md (재귀 디렉토리 스캔) 3. CLAUDE.md (작업 디렉토리만) 4. .cursorrules (작업 디렉토리만) 보안: _scan_context_content()로 프롬프트 인젝션 패턴, 투명 유니코드(U+200B 등) 차단

5디렉토리 구조 해부

핵심 디렉토리와 각 파일의 역할
hermes-agent/ ├── agent/ # 핵심 에이전트 엔진 (90개 이상 모듈) │ ├── prompt_builder.py # 시스템 프롬프트 조립 │ ├── context_compressor.py # 5단계 컨텍스트 압축 │ ├── model_metadata.py # 모델 라우팅: _should_use_cheap_model() 내장 │ ├── anthropic_adapter.py # Anthropic API 어댑터 │ ├── prompt_caching.py # 프리픽스 캐싱 최적화 │ ├── trajectory.py # 대화 트래젝토리 관리 (RL용) │ └── usage_pricing.py # API 비용 추적 │ ├── tools/ # 40개 이상 도구 모듈 │ ├── terminal_tool.py # 셸 명령 실행 │ ├── memory_tool.py # MEMORY.md / USER.md 관리 │ ├── skill_manager_tool.py # 스킬 생성/편집/패치/삭제 │ ├── skills_guard.py # 스킬 보안 검증 │ ├── skills_hub.py # agentskills.io 통합 │ ├── delegate_tool.py # 서브에이전트 생성 │ ├── mcp_tool.py # MCP 서버 연동 │ ├── mixture_of_agents_tool.py # MoA (다중 에이전트 합의) │ └── session_search_tool.py # FTS5 세션 검색 │ ├── skills/ # 18개 카테고리 내장 스킬 │ ├── software-development/ │ ├── research/ │ ├── data-science/ │ └── smart-home/ ... │ ├── gateway/ # 멀티플랫폼 메시징 게이트웨이 │ ├── platforms/ # 플랫폼별 어댑터 │ └── hooks.py # 이벤트 훅 │ ├── run_agent.py # AIAgent 클래스 (5,462줄, 핵심) ├── toolsets.py # 도구셋 정의 (~50개 코어 도구) └── batch_runner.py # 배치 트래젝토리 생성 (RL용)

6학습 포인트 (기술별)

이 레포에서 무엇을 배울 수 있는가

6.1 에이전트 아키텍처

5,462줄 단일 오케스트레이터(run_agent.py)의 설계 — 도구 호출, 대화 관리, 에러 핸들링을 하나의 클래스로 통합하는 방식을 배울 수 있습니다. IterationBudget 클래스로 부모/자식 에이전트의 LLM 호출 예산을 추적하는 패턴도 실무에서 유용합니다.

6.2 프롬프트 엔지니어링

계층적 프롬프트 조립 패턴(Identity → Platform → Skills → Context → Memory → Ephemeral), 프롬프트 인젝션 방어(위험 패턴 스캐닝 + 투명 유니코드 차단), 20,000자 초과 파일의 head/tail 트렁케이션(70% 머리 / 20% 꼬리)을 배울 수 있습니다.

6.3 메모리 시스템 설계

이중 상태 패턴(고정 스냅샷 + 라이브 상태), 원자적 파일 쓰기(temp-file → os.replace()), SQLite FTS5 전문 검색 구현, 문자 기반 예산 관리를 배울 수 있습니다.

6.4 컨텍스트 윈도우 관리

5단계 압축 전략, tool_call/result 쌍 무결성 유지, 역방향 탐색으로 최근 대화 보호, 구조화된 요약 템플릿(Goal/Progress/Decisions/Next Steps)은 대형 LLM 애플리케이션 개발에 바로 적용 가능합니다.

6.5 스킬 시스템 (자기개선)

SKILL.md 프론트매터 + 본문 구조, 보안 가드로 에이전트 생성 스킬 안전성 검증, 패치(find-and-replace) 기반 점진적 스킬 개선 메커니즘을 배울 수 있습니다.

6.6 스마트 모델 라우팅

규칙 기반 라우팅(메시지 길이, 단어 수, 코드블록, URL, 복잡도 키워드)으로 비용을 최적화하는 2-tier 모델 라우팅 패턴은 실무 LLM 애플리케이션에서 매우 유용합니다.

7하드웨어 / 시스템 요구사항

플랫폼별 요구사항
항목요구사항
OSLinux, macOS, WSL2, Windows 네이티브 (PowerShell 설치 지원)
Python≥3.11
Git설치 필요 (유일한 사전 요구사항)
RAM2GB+ (로컬 음성 변환 시 4GB+)
디스크~500MB (의존성 포함)
터미널 백엔드추가 요구사항
Local없음 (기본)
DockerDocker Engine 설치
SSHSSH 접근 가능한 원격 서버
DaytonaDaytona 계정 (유휴 시 자동 휴면)
ModalModal 계정 (서버리스 GPU, 종량제)
SingularityHPC 클러스터 접근

8직접 해볼 수 있는 실습 과제

난이도별 실습
과제 1

Hermes Agent 설치 및 기본 대화 ⭐ 초급

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc
hermes model   # LLM 프로바이더 설정
hermes         # 대화 시작

기본 대화 후 /skills, /usage, /insights 커맨드를 탐색합니다.

과제 2

커스텀 SOUL.md 작성 ⭐ 초급

~/.hermes/SOUL.md를 작성하여 에이전트 성격을 커스터마이징합니다.

나는 한국어를 주 언어로 사용하는 개발 어시스턴트입니다.
코드 리뷰 시 항상 보안 관점을 포함합니다.
답변은 간결하게, 코드 예시와 함께 제공합니다.
과제 3

스킬 생성 및 개선 루프 관찰 ⭐⭐⭐ 중급

복잡한 작업을 요청하고(예: "Python 프로젝트 테스트 커버리지 분석 후 누락 테스트 작성"), 에이전트가 스킬을 자동 생성하는지 관찰합니다. ~/.hermes/skills/에서 생성된 SKILL.md를 분석하고, 유사한 작업을 다시 요청하여 스킬 재사용·개선을 확인합니다.

과제 4

메시징 게이트웨이 설정 ⭐⭐⭐ 중급

hermes gateway setup   # Telegram Bot 토큰 입력
hermes gateway start   # 게이트웨이 시작

Telegram에서 에이전트와 대화하며 CLI와 동일한 기능(스킬, 메모리)을 확인합니다.

과제 5

컨텍스트 압축기 커스터마이징 ⭐⭐⭐⭐⭐ 심화

agent/context_compressor.py 소스 코드를 분석하고, 요약 템플릿을 한국어로 수정합니다. 꼬리 보호 토큰 예산을 조정하여 성능을 비교하고, 코드 블록을 우선 보존하는 커스텀 압축 전략을 구현합니다.

9관련 기술 심화 학습 로드맵

주차별 학습 계획
주차주제핵심 학습 내용
1주차에이전트 기초OpenAI Function Calling API / run_agent.py 메인 루프 분석 / toolsets.py 구조 이해
2주차메모리와 컨텍스트memory_tool.py 이중 상태 패턴 / SQLite FTS5 학습 / context_compressor.py 분석
3주차스킬 시스템skill_manager_tool.py + skills_guard.py / 커스텀 스킬 3개 작성 / 자기개선 루프 실험
4주차멀티플랫폼 인프라gateway/ 코드 분석 / Telegram 게이트웨이 / Docker 백엔드 / 크론 스케줄러
5주차고급 주제smart_model_routing.py / 보안 스캐닝 로직 / RL 파이프라인 탐색

10핵심 키워드 사전

처음 보면 낯선 용어들 정리
키워드설명
Self-Improving Agent경험을 통해 스킬을 생성·개선하는 자율 에이전트. Hermes의 핵심 차별점
SOUL.md에이전트의 정체성·성격 정의 파일. ~/.hermes/SOUL.md
SKILL.md에이전트가 학습한 절차적 지식을 YAML 프론트매터 + 본문으로 저장하는 파일
MEMORY.md에이전트의 장기 메모리. 환경 사실·프로젝트 관례·학습 인사이트 저장
USER.md사용자 프로필. 선호도·커뮤니케이션 스타일·워크플로우 습관 기록
Context Compression토큰 한도 근접 시 5단계로 대화를 압축하는 메커니즘
Smart Model Routing메시지 복잡도에 따라 저렴/강력 모델을 자동 선택하는 비용 최적화
Gateway여러 메시징 플랫폼을 하나의 프로세스로 통합하는 라우팅 레이어
FTS5SQLite의 Full-Text Search 5 엔진. 과거 세션을 전문 검색하는 데 사용
Honcho변증법적 사용자 모델링. 대화를 통해 사용자 이해도를 점진적으로 심화
Prefix CachingLLM의 KV 캐시를 활용하여 반복 시스템 프롬프트의 연산 비용 절감
Atomic Writetemp-file → os.replace() 패턴으로 파일 쓰기의 원자성 보장
Trajectory에이전트의 대화 + 도구 호출 시퀀스. RL 훈련 데이터로 활용
AtroposNous Research의 RL 훈련 환경. 도구 호출 모델 강화학습에 사용
MoAMixture of Agents. 여러 모델 출력을 합의하여 최종 답변 생성 앙상블
agentskills.ioHermes 스킬을 공유하는 커뮤니티 허브
uvAstral의 Python 패키지 관리자. pip보다 10~100배 빠른 의존성 해결

11참고 링크

더 깊이 공부하고 싶다면