클라우드에서 항상 실행되며 메신저를 통해 사용자와 소통하는 AI 에이전트가 조용히 자리 잡고 있다. 이들은 일반 채팅창처럼 열고 닫는 방식이 아니라, 마치 절대 로그오프하지 않는 동료처럼 작동한다.
Hermes는 이러한 아이디어를 구현한 가장 흥미로운 사례 중 하나다. OpenClaw 같은 유사 에이전트와 차별화되는 점은 바로 내장된 자체 개선 루프(self-improving loop) 시스템이다. 이 시스템은 사용자의 대화를 분석하고, 유용한 패턴을 추출하며, 그 패턴을 자체 메모리와 기술 세트에 영구적인 업그레이드로 전환한다.
이 글에서는 Hermes가 어떻게 구성되어 있는지, 설정 방법은 무엇인지, 그리고 그 자체 개선 루프가 내부적으로 어떻게 작동하는지 자세히 살펴본다.
Hermes가 무엇이며 OpenClaw와 어떻게 다른가
Hermes는 클라우드 기반 AI 에이전트로, 구조적으로 OpenClaw와 유사하다. 즉, 24시간 내내 실행되며 터미널이나 브라우저 탭 대신 메시징 앱을 통해 상호작용한다.
의미 있는 차이점은 세 가지다.
첫째, Hermes는 기본 제공되는 내장 기술(built-in skills) 라이브러리가 훨씬 더 방대하므로, 사용자가 직접 통합을 설정하는 데 드는 시간이 줄어든다.
둘째, 설정 과정이 상당히 간소화되어 있다. 안내형 TUI가 거의 모든 것을 처리해 준다.
셋째, 가장 중요한 점은 Hermes가 지속적인 자체 개선을 염두에 두고 설계되었다는 것이다. 단순히 작업을 실행하는 것뿐만 아니라, 시간이 지남에 따라 작업을 더 잘 실행하는 방법에 대한 절차적 지식을 축적한다.
설치 및 초기 설정
Hermes를 실행하는 것은 단일 명령어로 가능하다.
Windows에서 PowerShell에 다음을 입력한다:
iex (irm
Linux, macOS 또는 WSL에서는 다음을 입력한다:
curl -fsSL
설치가 완료되면 터미널을 다시 시작하고 hermes setup 명령어를 실행한다. 그러면 모델 선택, 터미널 백엔드, 메시징 게이트웨이, 도구 설정을 순차적으로 안내하는 설정 과정이 시작된다.

모델 선택 및 라우팅

설정에서 가장 먼저 결정해야 할 사항은 에이전트의 '두뇌' 역할을 할 LLM 제공업체다. 인증은 원시 API 키 대신 OAuth를 통해 이루어지며, 별도의 API 키를 생성하지 않고도 기존 Claude Code 또는 Codex CLI 세션을 통해 로그인할 수 있다.
여기서 정말 잘 설계된 부분은 Hermes가 주 대화에 사용되는 모델과 백그라운드 및 보조 작업에 사용되는 모델을 분리하는 방식이다. 기본적으로는 동일한 모델이 둘 다 처리하지만, 각 보조 작업을 서로 다른 제공업체로 독립적으로 지정할 수 있다.
이런 방식의 재정의(override)를 지원하는 작업들은 다음과 같다:
- vision – 이미지 분석 및 설명
- web_extract – 긴 웹 페이지 요약
- compression – 넘치는 대화 컨텍스트 압축
- title_generation – 세션 제목 생성
- curator – 자체 개선 루프를 담당하는 백그라운드 에이전트
- kanban_decomposer – 칸반 모드에서 큰 작업을 하위 작업으로 분해
- goal_judge – /goal 이 실제로 달성되었는지 확인하는 에이전트
이 설정은 config.yaml에서 직접 구성한다. 예를 들면 다음과 같다:
1# 대화 및 복잡한 추론을 위한 기본 모델2model:3 provider: "anthropic"4 default: "claude-4-8-sonnet"5 auxiliary:6 vision:7 provider: "gemini"8 model: "gemini-2.5-flash"9 compression:10 provider: "custom"11 base_url: "http://localhost:11434/v1"12 api_key: "none"13 model: "qwen2.5:32b"
이런 명시적 라우팅은 OpenRouter를 기본 선택으로 사용할 때 발생하는 실제 문제를 해결해 준다. 동일한 이름의 모델이 여러 제공업체에 의해 다양한 양자화 수준으로 배포되는 경우가 많으며, OpenRouter는 각 새 요청을 약 20개 제공업체 중 하나에 자동으로 분배한다.
실제 효과는 단일 세션 내에서 일관된 하나의 모델과 대화하는 것이 아니라, 설정이 각기 다른 여러 인스턴스와 대화하게 된다는 것이다. 그중 일부는 툴 호출과 프롬프트 템플릿을 다른 것보다 더 안정적으로 처리한다. Hermes 내에서 수동으로 라우팅하면 이 문제를 완전히 피할 수 있다.

또한, 대화 모델의 비용을 절약하면서도 코딩 품질을 희생하고 싶지 않다면, Hermes는 /claude_code 및 /codex 명령어를 지원한다. 이 명령어는 코딩 작업을 설정된 채팅 모델이 처리하는 대신 해당 CLI 도구에 직접 위임한다.

터미널 백엔드

아키텍처의 핵심 구성 요소는 터미널 백엔드 환경(Terminal Backend Environment)이다. 이 환경은 셸 명령어와 Python 스크립트가 실제로 실행되는 위치와 방식, 그리고 에이전트가 파일 시스템에 접근하는 방식을 결정한다. Hermes는 5가지를 지원한다.
Local이 기본값이다. 명령어는 사용자 계정과 동일한 권한으로 컴퓨터에서 직접 실행된다. 격리(isolation)는 없다. 에이전트가 실제 프로젝트 파일을 편집하도록 허용하려는 로컬 개발 및 신뢰할 수 있는 개인적 사용에 적합한 선택이다.
여기서 안전성은 전적으로 내장된 승인 시스템에 의존한다. 이 시스템은 파괴적인 명령어(예: rm -rf /, DROP TABLE)를 가로채서 실행하기 전에 명시적인 허가를 요청한다.
Docker는 에이전트를 격리된 샌드박스 내에서 실행하여 호스트 시스템에 접근하지 못하게 한다. SSH는 에이전트가 원격 연결을 통해 원격 서버에서 명령어를 실행하고 파일을 작업하도록 한다. Modal은 모든 것을 서버리스 클라우드 샌드박스에서 실행한다. 즉, 코드가 실제로 실행된 초 단위로만 비용을 지불하는 컴퓨팅을 임대하는 것이다.
Daytona는 AI 코딩 에이전트를 위해 특별히 제작된 컨테이너 관리 계층이다. Docker를 직접 실행하는 것보다 빠르며, 환경 설정과 종속성 설치를 자동으로 처리한다.
대부분의 개인적 사용 사례에서는 Local로도 충분하다. 다른 옵션은 주로 신뢰할 수 없는 코드를 실행하거나 팀 규모로 운영할 때 중요하다.
메시징 게이트웨이 및 도구 설정

터미널 백엔드 다음으로 설정 단계는 에이전트와 실제로 대화할 곳을 선택하는 것이다. Telegram이 가장 정교한 옵션이다. Telegram을 선택하면 사전 구성된 봇을 즉시 생성하는 직접 링크가 제공된다. 수동으로 봇 토큰을 설정할 필요가 없다.



나머지 설정에서는 개별 도구와 해당 제공업체(브라우저 자동화, 이미지 생성, 텍스트 음성 변환, 웹 검색)를 활성화하는 과정을 안내한다. 특히 웹 검색의 경우, 자체 호스팅 Firecrawl 또는 Exa가 에이전트 지향 스크래핑 및 검색에 강력한 선택으로 두드러진다.




X 검색을 사용하려면 Grok 구독이 필요하다. 메뉴에서 이 옵션을 찾기 전에 알아두는 것이 좋다.

알아두면 유용한 슬래시 명령어
Hermes는 긴 슬래시 명령어 목록을 제공한다. 대부분 이름에서 기능을 짐작할 수 있지만, 몇 가지는 특히 주목할 만하다.
/background <프롬프트>: 주 세션을 방해하지 않고 백그라운드에서 작업을 실행한다./goal: 장기 목표를 설정하여 에이전트가 지속적으로 작업하게 한다. 일시 중지, 재개, 지우기, 상태 확인 등의 하위 명령어가 있다./subgoal: 활성 목표 아래에 있는 더 작은 하위 목표를 관리한다./kanban: 여러 독립 에이전트에 걸쳐 비동기적이고 장기 실행되는 작업을 조율한다. 실제 칸반 보드처럼 작동하여 작업 풀이 작업 에이전트 간에 분산되고, 에이전트 간에 작업이 전달됨에 따라 할 일(to-do), 진행 중(in-progress), 완료(done) 단계를 거친다.
개발 측면에서 /github_pr_workflow는 CI를 포함한 전체 브랜치-투-병합(branch-to-merge) 주기를 처리하고, /github_code_review는 풀 리퀘스트를 검토하며, /codebase_inspection는 저장소의 언어별 구성과 코드 라인 수를 분석한다. /dogfood는 웹 앱에서 버그를 찾고 증거 기반 보고서를 생성하는 전용 QA 모드다. /spike는 본격적인 개발에 들어가기 전에 아이디어를 검증하기 위해 빠르고 일회성 실험을 실행한다. /systematic_debugging는 버그를 4단계로 분석하여 수정을 시도하기 전에 근본 원인을 파악한다.
또한 통합별 명령어 클러스터도 있다. /notion, /obsidian, /airtable, /google_workspace, /arxiv, /blogwatcher, /polymarket, /ocr_and_documents, /youtube_content 등이 각각 특정 외부 서비스 또는 워크플로를 래핑하며, /bundles는 작은 YAML 설정 파일을 통해 여러 기존 기술을 하나의 슬래시 명령어 아래에 그룹화한다.
Cron 작업 및 Webhook
두 가지 자동화 기본 요소에 특별히 주목해야 한다.
- Cron 작업을 사용하면 타이머에 따라 스크립트 실행을 예약할 수 있다. 생성 시
-no-agent를 전달하면 Hermes는 일반 Python 또는 bash 스크립트를 실행하고 LLM 토큰을 전혀 소모하지 않고 출력만 메신저로 전달한다. - Webhook은 더 강력한 기능이다. 타이머가 아닌 외부 이벤트에 에이전트가 반응하도록 한다. 예를 들어, 새로운 GitHub 풀 리퀘스트가 생성되면 특정 프롬프트와 기술 세트를 가진 에이전트를 자동으로 트리거하도록 webhook을 설정할 수 있다. 즉, PR당 수동 개입 없이 대기 중인 리뷰어 에이전트를 즉시 가동하는 것이다.
컨텍스트 엔진
컨텍스트 엔진은 대화 기록이 모델의 토큰 한도에 근접할 때 Hermes가 이를 압축하고 관리하는 방식을 제어한다. 두 가지 옵션이 있다.
- 기본값인 Compressor는 긴 대화의 중간 부분에 손실 요약(lossy summarization)을 적용한다.
- 대안인 LCM(Lossless Context Management)은 구조적으로 다른 접근 방식을 취한다. 텍스트 요약을 생성하는 대신 대화의 핵심 지점에 대한 방향성 비순환 그래프(directed acyclic graph)를 구축하여, 에이전트가 높은 수준의 압축된 뷰에서 이를 뒷받침하는 특정 원본 메시지까지 탐색할 수 있게 한다.

메모리 엔진
외부 메모리 제공업체는 Hermes의 기본 제공 로컬 메모리 파일( MEMORY.md 및 USER.md)과 함께 실행되며, 의미 검색(semantic search) 및 지식 그래프(knowledge graphs)와 같은 기능을 추가한다.
몇 가지는 설정 TUI를 통해 직접 구성할 수 있다.
- Honcho는 상세한 사용자 프로필 모델링을 기반으로 구축되었다. 백그라운드 LLM 호출을 사용하여 두 계층에 걸쳐 관찰 내용을 종합한다. 기본 계층은 세션 요약 및 프로필이고, 변증법적 계층은 사용자의 현재 요구 사항을 분석한다.
- OpenViking은 파일 시스템 스타일의 지식 계층 구조를 구축하는 컨텍스트 데이터베이스다. 계층적 컨텍스트 검색을 지원하며, 각 세션이 끝날 때 추출된 사실을 이벤트, 패턴, 선호도 등 6가지 범주로 자동 정렬한다.
- Mem0는 완전 관리형 클라우드 메모리 서비스다. 사실 추출은 LLM을 통해 서버 측에서 이루어지며, 의미 검색, 결과 재순위 지정, 자동 중복 제거를 포함한다. 클라우드 호스팅 방식이므로 여기서 유일하게 반복 비용이 발생하는 옵션이다.
- Hindsight는 GraphRAG 스타일의 지식 그래프를 기반으로 구축된 더 발전된 장기 메모리 시스템이다. 세션에서 엔터티를 추출하고, 엔터티 간의 관계를 구축하며, 툴 호출을 포함한 전체 대화 턴을 보존한다. 메모리는 세계에 대한 사실, 에이전트 자신의 경험, 의견, 관찰의 네 가지 범주로 분할된다.
- Holographic은 외부 종속성이 없는 로컬 SQLite 기반 사실 저장소다. 저장된 사실에 대한 신뢰 점수 시스템과 Holographic Reduced Representations을 사용하여 대수적이고 구성적인 쿼리를 지원하며, 지식 베이스 내에서 모순을 자동으로 감지하는 기능이 있다.
- RetainDB는 팀 메모리를 위한 클라우드 API다. 벡터, BM25 및 재순위 지정 방법 전반에 걸친 하이브리드 검색을 제공하며, 메모리를 7개의 개별 유형으로 분할하고 델타 압축을 사용하여 저장소 효율성을 유지한다.
- ByteRover는 CLI를 통해 액세스하는 휴대용 로컬 메모리 시스템이다. 계층적 지식 트리를 구축하고 손실 압축이 컨텍스트에서 떨어뜨리기 전에 중요한 사실을 추출한다.
- Supermemory는 그래프 API와 함께 의미론적 장기 메모리를 제공한다. 대화가 종료된 후 전체 세션 로그를 수집하여 지식 그래프를 구축하고, 현재 턴의 오염을 방지하기 위해 주기적으로 검색된 사실을 정리하며, 에이전트 프로필별로 메모리를 별도의 컨테이너에 격리할 수 있다.
일상적인 사용의 경우, 대부분의 사람들에게 기본 로컬 메모리로 충분하다. 더 무거운 시스템은 대부분의 워크플로에서 아직 필요하지 않은 기능을 위해 실제 리소스 비용(특히 로컬 호스팅 옵션의 경우 RAM)을 지불하는 셈이다.
자체 개선 루프
이 기능은 Hermes를 기존 에이전트와 가장 차별화하는 요소다. 비동기 백그라운드 프로세스 세트가 지속적으로 대화를 분석하고, 유용한 패턴을 추출하며, 해당 패턴을 장기 메모리와 절차적 메모리(기술)에 기록한다. 그런 다음 축적된 지식을 유지 관리하여 시간이 지나도 퇴화되지 않도록 한다. 전체 시스템은 주 채팅과 병렬로 실행되며 트리거 시스템, 백그라운드 검토 에이전트, 큐레이터의 세 가지 구성 요소로 구축된다.
- 트리거 시스템
Hermes는 모든 메시지를 실시간으로 분석하지 않는다. 그렇게 하면 이점 없이 토큰만 소모되기 때문이다. 대신 두 가지 카운터에 의존하며, 각 카운터가 임계값을 초과하면 반영(reflection) 단계를 트리거한다.
메모리 트리거는 사용자 프롬프트 10개마다 실행되어, 저장할 가치가 있는 새로운 사실이 대화에 나타났는지 확인한다.
기술 트리거는 단일 턴 내에서 툴 호출 반복이 10번 이루어질 때마다 실행된다. 그 논리는 에이전트가 시행착오를 통해 문제를 해결하는 데 그만큼 많은 단계를 소비했다면, 그 경험을 분석하고 재사용 가능한 기술로 전환할 가치가 있다는 것이다.
두 카운터 중 하나가 한계에 도달하면 내부 함수가 실행되어 현재 대화의 스냅샷을 백그라운드 검토 프로세스에 전달한다.
- 백그라운드 검토 에이전트
이 스냅샷은 주 세션을 방해하지 않고 병렬로 실행되는 완전히 분리된 독립 에이전트 프로세스로 전달된다. 이 에이전트는 두 가지 방향으로 작동한다.
- 선언적 측면에서, 새로운 사용자 선호도나 환경 세부 사항(예: Supabase 선호, Python 3.12 특정 프로젝트)을 발견하면 MEMORY.md 또는 USER.md를 업데이트한다(사실이 속한 파일에 따라 다름).
- 절차적 측면에서, 에이전트가 사소하지 않은 문제를 해결했거나 복잡한 프로세스를 알아냈다고 감지하면, 새 기술을 생성하거나, 기존 기술을 편집하거나, 대상 패치를 적용하거나, 기술을 완전히 삭제할 수 있다. 생성된 모든 기술은 에이전트 생성(agent-generated)으로 명시적으로 태그가 지정되므로 그 출처를 항상 추적할 수 있다.
큐레이터가 이렇게 자체 생성된 기술 중 실제로 유지할 가치가 있는 기술을 최종적으로 판단할 수 있도록 Hermes는 숨겨진 사용 로그를 유지 관리한다. 이 로그는 각 기술에 대해 프롬프트에 로드된 횟수, 에이전트가 읽기 위해 연 횟수, 편집된 횟수, 생성, 마지막 사용, 마지막 편집 타임스탬프를 추적한다.
- 큐레이터
통제되지 않은 상태로 두면 이 프로세스는 결국 수백 개의 기술을 생성할 수 있으며, 그중 일부는 중복되거나 오래된 것이다.
큐레이터는 지식 베이스가 저하되는 것을 방지하기 위해 존재한다. 큐레이터는 두 가지 조건이 동시에 충족될 때만 시작된다. 마지막 실행 이후 충분한 시간이 지났고(기본값 7일), 메인 에이전트가 활성 작업을 방해하지 않을 만큼 충분히 오랫동안 유휴 상태였을 때(기본값 2시간)이다.
변경을 수행하기 전에 큐레이터는 전체 기술 디렉토리를 자동으로 백업하므로, 만족스럽지 않은 결과가 나오면 단일 터미널 명령어로 롤백할 수 있다.
큐레이터의 작업은 두 단계로 이루어진다:
- 첫 번째 단계는 순전히 기계적이며 LLM 호출을 전혀 포함하지 않는다. 사용 메트릭을 확인하고, 30일 이상 사용되지 않은 에이전트 생성 기술을 '폐기 예정(deprecated)'으로 표시하고, 90일 이상 사용되지 않은 모든 항목을 보관 폴더로 이동한다. 중요한 기술은 이 프로세스로부터 보호하기 위해 명시적으로 고정(pin)할 수 있다.
- 두 번째 단계는 실제 LLM 검토이다. 큐레이터의 보조 작업에 대해 구성된 모델(기본적으로 주 대화와 동일한 모델이지만 더 저렴한 모델로 지정 가능)을 사용하여 별도의 격리된 에이전트 인스턴스를 통해 실행된다. 너무 저렴한 모델을 사용하는 것은 주의해야 한다. 이러한 결정의 품질은 기술 라이브러리에 실질적인 영향을 미치기 때문이다.
큐레이터는 각 기술에 대해 여전히 정확하고 유용하면 그대로 유지하고, 오류나 오래된 방법이 포함되어 있으면 수정하고, 실질적으로 동일한 내용을 다루는 다른 기술과 병합(관련 스크립트, 평가, 참조 파일을 올바르게 재배치하고 상대 경로를 다시 작성)하거나, 완전히 보관하기로 결정한다.
사이클이 끝나면 큐레이터는 병합 후 이전 기술 이름이 새 이름에 어떻게 매핑되었는지 정확히 보여주는 이름 변경 맵(rename map)을 포함한 상세 보고서를 생성한다. 따라서 모든 결정背后的 reasoning을 완전히 감사할 수 있다.
Hermes를 효과적으로 사용하기
이와 같은 클라우드 에이전트는 24시간 내내 실행할 수 있는 모든 프로세스(코딩 작업은 눈에 띄는 예외)에 진정으로 가치가 있다. 단, 해당 프로세스를 신중하게 디지털화하고 평가를 포함한 견고한 기술을 구축했을 경우에 한한다.
좋은 결과를 내는 경향이 있는 워크플로는 대략 다음과 같다:
- 먼저, 프로세스를 처음부터 끝까지 상세히 설명하는 자신의 목소리를 녹음한다. 이상적으로는 받아쓰기 도구를 사용하여 정확하게 캡처한다. 이 단계는 프로세스를 진정으로 이해하거나 제대로 조사한 경우에만 효과적이다.
- 해당 녹음 또는 노트를 가져와 기술 생성 도구를 사용하여 코딩 에이전트에 제공하여 초안을 작성한다. 특히 복잡한 작업의 경우, 처음부터 에이전트에 완전히 맡기기에는 충분하지 않을 것이다.
- 평가 지표(evals)를 구축한다. 올바른 결과를 나타내는 참조 솔루션이다. 이를 통해 기술이 제대로 수행되고 있는지 측정할 수 있으며, 추측에 의존하지 않아도 된다.
- 테스트 환경에서 기술을 실행하고 관찰 결과를 바탕으로 평가 지표와 기술 내용을 모두 개선한다. 대부분의 편집 작업은 에이전트에 위임하지 않고 직접 수행한다.
- 기술이 일관되고 결정론적으로 작동하는 경우에만 항상 켜져 있는 에이전트에 넘겨야 한다. 프로세스가 일부 외부 서비스에 의존하는 경우, 처음부터 새로 구축하기 전에 기존 MCP 서버 또는 CLI가 이미 이를 처리하는지 확인하는 것이 좋다.
더 넓은 의미는 이와 같은 에이전트에 맡길 수 있는 작업의 범위는 주로 사용자가 작업을 얼마나 잘 지정할 수 있는지에 달려 있으며, 에이전트의 원시적인 능력에 달려 있지 않다는 것이다.
사용 사례 전반에 걸쳐 세 가지 원칙이 유효한 것으로 보인다: 감독되지 않은 24시간 클라우드 에이전트에 코딩 작업을 아웃소싱하지 말고, 에이전트가 실제로 생성하는 것을 검토하는 인간을 루프에 유지하며, 기술 개선을 한 번에 끝내고 떠날 수 있는 작업이 아니라 지속적인 작업으로 취급하라.
이 내용이 유용했다면 북마크에 추가하길 바란다. 다시 찾아보고 싶을 것이다.
이와 같은 더 많은 분석을 보려면 @ScottyBeamIO를 팔로우하라.
군더더기 없이, 실제로 작동하는 것만 다룬다.





