Hermes Agent는 경험에서 스킬을 자동 생성하고, 사용 중 스스로 개선하며, 세션 간 기억을 유지하는 자기개선형 AI 에이전트입니다. CLI + Telegram, Discord, Slack, WhatsApp, Signal, Email 등 20개 이상 메시징 플랫폼에서 하나의 에이전트가 동작하며, 대화에서 배운 것을 스킬(SKILL.md)로 저장하고 다음 대화에서 재사용합니다. 40개 이상 도구 모듈, 18개 스킬 카테고리, 6종 터미널 백엔드를 지원하는 풀스택 에이전트 플랫폼입니다.
일반 AI 어시스턴트는 대화가 끝나면 모든 것을 잊습니다. Hermes는 복잡한 일을 처리한 뒤 절차를 SKILL.md 파일에 기록합니다. 다음에 비슷한 일이 생기면 그 노트를 꺼내 더 빠르고 정확하게 처리하죠.
게다가 노트가 불완전하면 patch 작업으로 조금씩 고쳐 씁니다. 시간이 지날수록 특정 작업에 특화된 전문가가 되는 구조입니다.
| 차별점 | 설명 |
|---|---|
| 자기개선 루프 | 복잡한 작업 수행 후 자동으로 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 환경으로 도구호출 모델 훈련 가능 |
AutoGPT나 일반 챗봇은 세션이 새로 시작되면 이전 작업에서 배운 것을 전혀 기억하지 못합니다. 같은 복잡한 작업을 반복 요청할 때마다 처음부터 다시 시작하고, 동일한 실수를 반복합니다.
복잡한 작업을 성공하면 그 절차를 SKILL.md로 저장합니다. 보안 스캐닝을 거쳐 ~/.hermes/skills/에 보관되며, 다음 유사 작업에서 자동 참조합니다. 사용자 선호도는 USER.md에, 에이전트 학습은 MEMORY.md에 분리 저장합니다.
| vs | Hermes Agent 장점 |
|---|---|
| Claude Code | 멀티플랫폼(Telegram/Discord), 자동 스킬 생성, RL 훈련 도구 내장 |
| AutoGPT | 실용적 스킬 시스템 + 보안 스캐닝 + 안정적 메모리 관리 |
| Devin | 오픈소스 + 셀프호스팅 + 다양한 인프라 백엔드 |
| OpenClaw | Hermes Agent의 전신 — 마이그레이션 커맨드 제공 |
| 기술 | 용도 | 버전 |
|---|---|---|
| Python | 코어 런타임 | ≥3.11 |
| OpenAI SDK | LLM API 통합 (OpenAI 호환 엔드포인트) | ≥2.21.0 |
| (선택) Anthropic SDK | Claude 직접 연동 ([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 | 세션 전문 검색 | 내장 |
| 기술 | 역할 |
|---|---|
| Docker | 컨테이너화된 실행 환경 |
| SSH | 원격 터미널 백엔드 |
| Daytona | 서버리스 개발 환경 (휴면/활성화) |
| Modal | 서버리스 GPU 컴퓨팅 |
| Singularity | HPC/연구 환경 컨테이너 |
| uv | Python 패키지 관리자 (빠른 의존성 해결) |
class MemoryStore:
_system_prompt_snapshot # 세션 시작 시 고정 (프리픽스 캐시 보존)
memory_entries # 실시간 업데이트 (디스크 즉시 반영)
user_entries # 사용자 프로필 (별도 관리)
세션 시작 시 한 번 로드한 스냅샷은 변경 불가 — LLM의 KV 캐시(프리픽스 캐싱) 효율을 극대화합니다. 라이브 상태는 원자적(atomic) 파일 쓰기로 안전하게 저장됩니다.
| 단계 | 작업 | LLM 호출 |
|---|---|---|
| 1 | 오래된 도구 결과 정리 (200자 초과 → 플레이스홀더) | 없음 |
| 2 | 머리 메시지 보호 (시스템 프롬프트 + 초기 교환) | 없음 |
| 3 | 꼬리 경계 식별 (최근 ~20K 토큰 보호) | 없음 |
| 4 | 중간 턴 구조화 요약 (목표/진행/결정/다음단계) | 있음 |
| 5 | 재압축 시 이전 요약 반복 업데이트 | 있음 |
핵심: tool_call/result 쌍을 절대 분리하지 않고, 고아(orphan) 쌍은 _sanitize_tool_pairs()로 정리합니다.
5,462줄 단일 오케스트레이터(run_agent.py)의 설계 — 도구 호출, 대화 관리, 에러 핸들링을 하나의 클래스로 통합하는 방식을 배울 수 있습니다. IterationBudget 클래스로 부모/자식 에이전트의 LLM 호출 예산을 추적하는 패턴도 실무에서 유용합니다.
계층적 프롬프트 조립 패턴(Identity → Platform → Skills → Context → Memory → Ephemeral), 프롬프트 인젝션 방어(위험 패턴 스캐닝 + 투명 유니코드 차단), 20,000자 초과 파일의 head/tail 트렁케이션(70% 머리 / 20% 꼬리)을 배울 수 있습니다.
이중 상태 패턴(고정 스냅샷 + 라이브 상태), 원자적 파일 쓰기(temp-file → os.replace()), SQLite FTS5 전문 검색 구현, 문자 기반 예산 관리를 배울 수 있습니다.
5단계 압축 전략, tool_call/result 쌍 무결성 유지, 역방향 탐색으로 최근 대화 보호, 구조화된 요약 템플릿(Goal/Progress/Decisions/Next Steps)은 대형 LLM 애플리케이션 개발에 바로 적용 가능합니다.
SKILL.md 프론트매터 + 본문 구조, 보안 가드로 에이전트 생성 스킬 안전성 검증, 패치(find-and-replace) 기반 점진적 스킬 개선 메커니즘을 배울 수 있습니다.
규칙 기반 라우팅(메시지 길이, 단어 수, 코드블록, URL, 복잡도 키워드)으로 비용을 최적화하는 2-tier 모델 라우팅 패턴은 실무 LLM 애플리케이션에서 매우 유용합니다.
| 항목 | 요구사항 |
|---|---|
| OS | Linux, macOS, WSL2, Windows 네이티브 (PowerShell 설치 지원) |
| Python | ≥3.11 |
| Git | 설치 필요 (유일한 사전 요구사항) |
| RAM | 2GB+ (로컬 음성 변환 시 4GB+) |
| 디스크 | ~500MB (의존성 포함) |
| 터미널 백엔드 | 추가 요구사항 |
|---|---|
| Local | 없음 (기본) |
| Docker | Docker Engine 설치 |
| SSH | SSH 접근 가능한 원격 서버 |
| Daytona | Daytona 계정 (유휴 시 자동 휴면) |
| Modal | Modal 계정 (서버리스 GPU, 종량제) |
| Singularity | HPC 클러스터 접근 |
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc
hermes model # LLM 프로바이더 설정
hermes # 대화 시작
기본 대화 후 /skills, /usage, /insights 커맨드를 탐색합니다.
~/.hermes/SOUL.md를 작성하여 에이전트 성격을 커스터마이징합니다.
나는 한국어를 주 언어로 사용하는 개발 어시스턴트입니다.
코드 리뷰 시 항상 보안 관점을 포함합니다.
답변은 간결하게, 코드 예시와 함께 제공합니다.
복잡한 작업을 요청하고(예: "Python 프로젝트 테스트 커버리지 분석 후 누락 테스트 작성"), 에이전트가 스킬을 자동 생성하는지 관찰합니다. ~/.hermes/skills/에서 생성된 SKILL.md를 분석하고, 유사한 작업을 다시 요청하여 스킬 재사용·개선을 확인합니다.
hermes gateway setup # Telegram Bot 토큰 입력
hermes gateway start # 게이트웨이 시작
Telegram에서 에이전트와 대화하며 CLI와 동일한 기능(스킬, 메모리)을 확인합니다.
agent/context_compressor.py 소스 코드를 분석하고, 요약 템플릿을 한국어로 수정합니다. 꼬리 보호 토큰 예산을 조정하여 성능을 비교하고, 코드 블록을 우선 보존하는 커스텀 압축 전략을 구현합니다.
| 주차 | 주제 | 핵심 학습 내용 |
|---|---|---|
| 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 파이프라인 탐색 |
| 키워드 | 설명 |
|---|---|
| Self-Improving Agent | 경험을 통해 스킬을 생성·개선하는 자율 에이전트. Hermes의 핵심 차별점 |
| SOUL.md | 에이전트의 정체성·성격 정의 파일. ~/.hermes/SOUL.md |
| SKILL.md | 에이전트가 학습한 절차적 지식을 YAML 프론트매터 + 본문으로 저장하는 파일 |
| MEMORY.md | 에이전트의 장기 메모리. 환경 사실·프로젝트 관례·학습 인사이트 저장 |
| USER.md | 사용자 프로필. 선호도·커뮤니케이션 스타일·워크플로우 습관 기록 |
| Context Compression | 토큰 한도 근접 시 5단계로 대화를 압축하는 메커니즘 |
| Smart Model Routing | 메시지 복잡도에 따라 저렴/강력 모델을 자동 선택하는 비용 최적화 |
| Gateway | 여러 메시징 플랫폼을 하나의 프로세스로 통합하는 라우팅 레이어 |
| FTS5 | SQLite의 Full-Text Search 5 엔진. 과거 세션을 전문 검색하는 데 사용 |
| Honcho | 변증법적 사용자 모델링. 대화를 통해 사용자 이해도를 점진적으로 심화 |
| Prefix Caching | LLM의 KV 캐시를 활용하여 반복 시스템 프롬프트의 연산 비용 절감 |
| Atomic Write | temp-file → os.replace() 패턴으로 파일 쓰기의 원자성 보장 |
| Trajectory | 에이전트의 대화 + 도구 호출 시퀀스. RL 훈련 데이터로 활용 |
| Atropos | Nous Research의 RL 훈련 환경. 도구 호출 모델 강화학습에 사용 |
| MoA | Mixture of Agents. 여러 모델 출력을 합의하여 최종 답변 생성 앙상블 |
| agentskills.io | Hermes 스킬을 공유하는 커뮤니티 허브 |
| uv | Astral의 Python 패키지 관리자. pip보다 10~100배 빠른 의존성 해결 |