
【초보자 필독】 Hermes Agent의 기억·스킬·멀티 에이전트 완전 정복
요약
Hermes Agent의 기억 관리 방식과 스킬(Skill) 구축 전략을 다룹니다. 에이전트가 스스로 판단하여 기록하는 기억 메커니즘과 효율적인 멀티 에이전트 운영을 위한 파일 관리 및 SOP 작성법을 설명합니다.
핵심 포인트
- 에이전트 책정형 기억 방식을 통한 토큰 절약 및 노이즈 방지
- SOUL, USER, MEMORY 파일의 역할 분담 및 용량 관리
- 트리거, 절차, 검증, 주의점을 포함한 스킬(Skill) 구성 요소
- 기억을 스킬로 승화시키고 정기적으로 감사하는 워크플로우
Hermes Agent를 사용하기 시작한 여러분, 이런 경험 없으신가요?
- 어제 가르쳐준 것을 오늘 잊어버린다…
- 서브 에이전트(Sub-agent)에게 태스크를 던졌는데, 아무것도 이해하지 못한다…
- 설정 파일이 너무 많아서 어디에 무엇을 써야 할지 혼란스럽다…
사실 이것은 모두 3가지 사고방식을 이해하면 해결됩니다. 이 기사에서는 필자가 실제로 겪었던 시행착오와 그로부터 얻은 「제로에서 바로 사용할 수 있는 실전 지식」을 정리했습니다.
- Hermes Agent를 막 설치한 분
- 「기억시키는」 방법을 잘 모르겠는 분
- 멀티 에이전트(Multi-agent) 사용법에서 막혀 있는 분
- 어쨌든 최단 거리로 마스터하고 싶은 분
"어, 말한 거 전부 다 기억하고 있는 거 아니었어?"
→ 아닙니다. Hermes는 에이전트 책정형 기억(Agent-determined memory) 방식을 채택하고 있습니다. 즉, 에이전트 스스로가 「이것은 중요하다」라고 판단한 것만을 장기 기억(Long-term memory)에 기록합니다.
이것은 버그가 아니라 **설계 사상(Design philosophy)**입니다:
토큰 절약 (Token saving): 전체 내용을 기록하면 추론 비용(Inference cost)이 급증함 -
노이즈 방지 (Noise prevention): 시행착오나 중간 단계의 생각은 장기 보존할 가치가 없음
중요한 것은 명시적으로 지시하는 것입니다:
내 취향을 기억해줘: 모든 코드는 Python 3.11을 사용할 것.
현재 진척 상황을 저장해줘: 데이터 클렌징(Data cleansing)과 특징량 엔지니어링(Feature engineering) 완료. 다음은 모델 학습.
| 파일 | 넣는 내용 | 작성 주체 |
|---|---|---|
| SOUL.md | 영구적인 규칙·행동 지침 | 당신 |
| USER.md | 당신의 취향·습관 | 에이전트 |
| MEMORY.md | 작업 메모·환경 정보 | 에이전트 |
🔴
철칙: 절대로 SOUL.md에 써야 할 고정 규칙을 MEMORY.md에 넣지 말 것. MEMORY.md는 에이전트가 자동으로 정리·압축할 가능성이 있습니다.
용량 관리 기준:
- MEMORY.md: 상한 2,200자 → 1,800자 이내가 쾌적
- USER.md: 상한 1,375자 → 1,100자 이내가 쾌적
코드가 아니라 플러그인도 아닙니다. 「재사용 가능한 표준 작업 절차서 (SOP, Standard Operating Procedure)」입니다.
훌륭한 스킬(Skill)에 필요한 4요소:
| 요소 | 내용 |
|---|---|
| 트리거 (Trigger) | 어떤 상황에서 이 스킬을 사용해야 하는가 |
| 절차 (Procedure) | 구체적으로 무엇을 어떻게 하는가 |
| 검증 방법 (Verification) | 성공했는지 여부의 판단 기준 |
| 주의점 (Caution) | 과거에 빠졌던 함정 |
① 신규 생성:
이 데이터 처리 플로우를 skill로서 저장해줘. 이름은 data-pipeline.
트리거 조건, 절차, 검증 방법, 주의점을 포함해서.
② 기억으로부터 승화:
배포 절차를 기억하고 있지. 그걸 deploy-workflow라는 skill로 만들어줘.
③ 핀포인트 수정 (전체를 다시 쓰지 않음):
stock-daily-report 스킬을 업데이트해줘. 주의점에 다음을 추가해:
「금요일 장 마감 후 데이터는 토요일 아침까지 지연될 가능성 있음」
④ 정기 감사:
모든 스킬을 리뷰해줘. 중복은 통합, 불분명한 것은 다시 작성, 오래된 것은 업데이트.
먼저 리포트를 내고, 확인 후에 실행해줘.
SKILL.md 안에 기억 확인 단계를 심어두세요:
## 절차
1. MEMORY.md에 이 API에 관한 특이 사항이 있는지 확인
2. 있다면 우선적으로 따름
...
2개부터 시작해서 최대 3개까지. 전문가의 명언입니다.
- 이론상의 최대 병렬 수를 쫓기보다, 비용과 품질 관리가 중요
- API 제한·IP 차단 방지 관점에서도 2~3개가 안전권
서브 에이전트는 메인 에이전트의 대화 내용을 전혀 모릅니다.
서브 에이전트는 **완전히 깨끗한 대화 컨텍스트(Conversation context)**에서 기동합니다.
❌ 잘못된 예:
「아까 그 TypeError, 고쳐놔」
✅ 올바른 예:
delegate_task(
goal="api/handlers.py의 TypeError를 수정",
context="""
...
SOUL.md 또는 AGENTS.md에 명기:
## 멀티 에이전트 협업 규칙
- Planner Agent: 태스크 분해와 진척 관리만 수행. 실행하지 않음
- Executor Agent: 데이터 취득·처리만 수행. 의사결정하지 않음
...
프로파일은 완전히 격리된 (completely isolated) Hermes 환경입니다. 설정, 기억, 세션, 스킬이 모두 독립되어 있습니다.
| 커맨드 | 내용 |
|---|---|
hermes profile create mybot | 완전 신규 프로파일 |
hermes profile create work --clone | API 키와 모델 설정만 인계 (기억은 신규) |
hermes profile create backup --clone-all | 기억을 포함하여 완전 복제 |
활용 예시:
# 터미널 1: 코딩 어시스턴트 (Coding Assistant)
coder chat
# 터미널 2: 리서치 어시스턴트 (Research Assistant) (기억과 스킬도 완전 독립)
...
hermes doctor 실행 시 에러 없음 -
API 키는 .env에 기술 (config.yaml에는 작성하지 않음) -
GATEWAY_HEARTBEAT=true 설정 완료 -
사용자 화이트리스트 설정 완료 (TELEGRAM_ALLOWED_USERS) -
승인 모드 (Approval Mode) 설정 완료 (smart / manual) -
서버 타임존 확인 완료 (timedatectl로 확인 필요) - Cron 작업은 운영 환경 투입 전 수동 검증 완료
| 문제 | 원인 | 해결책 |
|---|---|---|
| 에이전트가 기억하지 못함 | 세션이 너무 짧음 / 중요하다고 판단되지 않음 | "장기 기억에 저장해줘"라고 명시 |
| ... | timedatectl 확인 → Gateway 확인 → 수동 실행 | |
| API 비용 폭증 | 병렬 수가 너무 많음 | 2~3개로 제한, 서브 태스크는 저렴한 모델 사용 |
| Tirith가 방해함 | 승인 모드가 너무 엄격함 | smart 모드로 변경 |
hermes doctor # 종합 진단 — 우선 이것을 실행
hermes memory status # 기억 시스템 상태 확인
hermes mcp status # MCP 연결 상태 확인
...
Hermes Agent는 마법이 아닙니다. 본질은 단 3가지입니다:
- 기억 (Memory): "잊어버렸다"를 해결함 → 하지만 중요한 내용은 스스로 명시할 것
- 스킬 (Skill): "이거 어떻게 하더라"를 해결함 → 반복되는 패턴을 SOP(표준 운영 절차)화
- 서브 에이전트 (Sub-agent): "혼자서는 무리"를 해결함 → 단, 완전한 컨텍스트 (Context)가 필수
초보자의 80%는 "기억은 자동이라고 믿는 것"과 "서브 에이전트에게 배경을 전달하지 않는 것"에서 좌절합니다. 이 두 가지만 파악해도 고통의 80%는 사라집니다.
우선은 **"장기 기억에 저장해줘"**와 "context에 전부 적어줘", 이 두 가지부터 시작해 보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기