AI Frontier

2026 Mac mini M4: Hermes Agent trajectory_compressor 메모리·토큰 최적화

MacHTML Lab2026.05.28 약 18분
Hermes Agent trajectory_compressor 메모리 토큰 최적화 Mac mini M4 2026

Hermes Agent(NousResearch/hermes-agent)는 긴 에이전트 실행을 모델 컨텍스트 창 안에 유지하면서, 운영자가 방금 수행한 작업을 통째로 버리지 않도록 돕는 전용 유틸리티 trajectory_compressor.py를 제공합니다. 게이트웨이, cron, 수 시간짜리 리서치 루프를 상시 가동하는 Mac mini M4에서는 토큰 압력이 도구 출력 잘림, 후속 턴 실패, 전체 transcript 재전송으로 인한 예상치 못한 과금으로 나타납니다. 이 Type C 설명은 upstream 기본값, 보호 헤드·요약 미들·보호 테일 모델, 대화형 /compress 슬래시 명령과 배치 CLI의 차이, macOS에서 프로덕션에 올리기 전 실행할 6단계 런북을 다룹니다.

하네스를 아직 고르는 중이라면 먼저 macOS와 Mac mini M4에서 Hermes Agent vs OpenClaw를 읽으세요. 세션이 어디에 상주할지 정한 뒤 압축을 조정하는 것이 순서입니다. 주요 upstream 참고: main의 trajectory_compressor.py, Hermes Agent README, 통합 메모리 계획용 Apple Mac mini 사양.

고지: 아래에서는 상시 가동 에이전트 스테이징으로 간략히 언급하는 MacHTML의 선택적 클라우드 Mac mini 임대에 대해 설명합니다.

Mac mini에서 토큰 한도가 아픈 이유

에이전트 하네스는 채팅 UI처럼 대화를 저장하지 않습니다. 모델을 호출할 때마다 구조화된 메시지 목록을 재생합니다. Telegram 게이트웨이와 로컬 도구 루프가 겹치면 하루 만에 system 프롬프트, human 지시, assistant 응답, tool JSON이 합쳐 수만 토큰에 달할 수 있습니다. 프로바이더가 하드 스톱하거나 조용히 잘라내면 운영자는 모델 탓을 하지만, 종종 transcript가 예산을 초과한 것뿐입니다.

상시 온라인 Mac mini M4는 노트북 수면 없이 게이트웨이를 24/7 돌릴 수 있다는 점에서 유리합니다. 그러나 하드웨어가 컨텍스트를 magically 넓히지는 않습니다. 압축은 운영 제어이지 칩 기능이 아닙니다. Hermes는 trajectory_compressor.py로 궤적 폴더를 더 짧은 동등 표현으로 다시 씁니다. 원래 system 계약, 첫 human 의도, 초기 tool 그라운딩, 충실한 중간 요약, 수정 비용이 큰 최근 턴을 남깁니다.

기본 예산은 압축 후 transcript target_max_tokens=15250, 중간 요약 자체 약 summary_target_tokens=750, 마지막 protect_last_n_turns=4 턴을 그대로 유지합니다. 튜닝 가능하지만 실무적 기본값은 “중간은 과감히, 지금 조종 중인 꼬리는 절단하지 않는다”는 뜻입니다.

토큰 최적화는 비용과도 맞닿습니다. OpenRouter로 추론해도 작은 후속 질문에 4만 토큰 trace를 다시 보내면 비용과 지연이 커집니다. 매 턴 더 큰 컨텍스트 모델로 바꾸기보다 스테이징 Mac mini에서 압축하는 편이 종종 더 쌉니다. 다음 주 교체할 게이트웨이에서 transcript를 최적화하지 않도록 위 비교 글과 함께 읽으세요.

Apple 실리콘 메모리는 통합입니다. 16 GB Mac mini에서 Hermes 게이트웨이와 가벼운 도구는 돌아가지만, 병렬 서브에이전트, 로컬 Ollama 사이드카, 거대한 비압축 로그가 같은 풀을 다툽니다. 압축의 주 목적은 모델 컨텍스트이지만, 게이트웨이 fan-out 중 거대 in-memory 메시지 배열의 RAM 부담도 줄입니다. 비압축 아카이브와 로컬 모델을 동시에 올릴 수 있다고 가정하기 전에 Apple Mac mini 사양을 확인하세요.

핵심 압축 모델

upstream trajectory_compressor.py는 사후 감사하기 쉬운 3영역 정책을 구현합니다.

  • 보호 헤드:system, human, gpt, tool 메시지를 유지해 페르소나, 안전, 초기 tool 스키마가 살아남습니다.
  • 요약 미들: 헤드와 테일 사이는 OpenRouter 기본 모델로 요약해 약 summary_target_tokens=750의 서술과 핵심 사실로 접습니다.
  • 보호 테일: 마지막 protect_last_n_turns=4 턴을 그대로 두어 최근 운영자 수정과 tool 오류를 요약에서 재구성하지 않고 참조할 수 있습니다.

기본 target_max_tokens=15250은 압축 후 transcript 상한입니다. 스킬이 추가 system 텍스트를 주입한 뒤에도 프로바이더 한도 안에 머무는 게이트웨이 세션용 가드레일로 보세요. 특정 모델에 맞출 때는 요금 페이지의 마케팅 컨텍스트 길이가 아니라 tool·completion 여유를 뺀 실사용 창에 target_max_tokens를 맞춥니다.

요약 기본값은 OpenRouter의 google/gemini-3-flash-preview입니다(환경에서 재정의 가능). 오래된 run 배치 재생에서는 품질 대 속도·비용 트레이드오프입니다. 컴플라이언스가 엄격하면 승인 모델로 바꾸고 어떤 궤적 폴더를 압축했는지 로그하세요. 요약은 설계상 손실이 있습니다. 결정과 블로커를 남기고 모든 스택 trace 줄을 남길 필요는 없습니다.

압축은 Hermes 큐레이션 memory 파일이나 FTS5 세션 검색을 대체하지 않습니다. 단일 스레드가 창을 넘었을 때의비상 브레이크입니다. 주 단위 사실은 memory, 오늘 밤 인시던트 스레드가 이미 3만 토큰이면 trajectory 압축—이 구분이 현실적입니다.

두 가지 표면: /compress vs 배치 CLI

Hermes는 의도적으로 두 가지 조작감으로 압축을 노출합니다.

표면사용 시점동작
/compress 슬래시 명령활성 Hermes TUI 또는 게이트웨이 연결 세션에서 컨텍스트가 한계에 닿는다고 느낄 때.실행 중 궤적에 묶인 대화형 압축. “지금 막히는” 순간용.
python trajectory_compressor.pydata/ 아래 저장 run, CI fixture, 마이그레이션 전 아카이브의 오프라인 housekeeping.샘플 비율, 토큰 상한, 입력 디렉터리를 명시하는 배치 유틸. 재현 가능한 ops용.

혼동하지 마세요. 슬래시 명령은 운영자 제어 표면, Python 진입점은 게이트웨이 업그레이드 후나 거대 trace를 티켓에 붙이기 전 과거 폴더를 손보는 방법입니다. 게이트웨이가 아직 메시지를 append하는 live 파일에 CLI를 돌리면 경쟁 상태가 납니다. 세션을 멈추거나 궤적을 scratch 디렉터리에 복사하세요.

배치 모드는 샘플링도 지원합니다. 예: --sample_percent=15로 수백 run의 압축 품질을 프로파일하고 실험 중에는 전부 요약 과금하지 않습니다. 프로덕션 기본값을 선언하기 전 100%로 올리세요.

예시 및 기본값 표

매개변수기본값메모
target_max_tokens15250압축 후 상한. 모델 창이 허용할 때만 신중히 상향.
summary_target_tokens750중간 요약 세그먼트 예산.
protect_last_n_turns4테일에 그대로 둘 최근 턴 수.
OpenRouter 요약 모델google/gemini-3-flash-preview정책 준수를 위해 env/프로바이더 설정으로 재정의.

upstream 대표 CLI:

python trajectory_compressor.py --input=data/my_run
python trajectory_compressor.py --input=data/my_run --sample_percent=15
python trajectory_compressor.py --input=data/my_run --target_max_tokens=16000

live 세션에서는 tool 체인이 길어졌지만 작업이 끝나지 않았을 때—특히 또 다른 서브에이전트를 붙이거나 실패 tool을 새 모델 호출로 재시도하기 전에 /compress를 실행합니다. 팀 규범: 단일 tool 성공마다가 아니라 주요 마일스톤 후 압축. 그렇지 않으면 요약이 아직 필요한 뉘앙스를 지웁니다.

6단계 런북

  1. Mac mini에 Hermes Agent clone/업데이트 후 repo 루트에 trajectory_compressor.py 존재 확인(소스).
  2. OpenRouter(또는 선택) API 키 export. 배치 압축과 같은 shell에서. 요약은 키 없으면 즉시 실패.
  3. data/에서 스테이징 궤적 선택. 토큰 팽창이 알려진 것을 before/after diff용으로 복사.
  4. 기본값으로 dry batch: python trajectory_compressor.py --input=data/my_run 실행 후 헤드/테일 intact 확인.
  5. 프로덕션 모델에 여유 필요 시 상한 조정—예 --target_max_tokens=16000—설정 승격 전 --sample_percent=100으로 재실행.
  6. live 동작 검증: Mac mini에서 Hermes 세션 시작, 의도적으로 컨텍스트 키운 뒤 /compress 발행, 보호 테일 인지가 남는지 확인.

선택한 기본값을 게이트웨이 포트, LaunchAgent 라벨과 함께 내부 runbook에 기록해 다음 운영자가 프로덕션 장애로 “재발견”하지 않게 하세요.

문제 해결

요약 실패 또는 중간이 비어 있음

OpenRouter 자격 증명, 모델 allowlist, rate limit을 확인하세요. 입력 폴더를 줄여 재시도해 궤적 파서가 malformed tool payload에 막히지 않는지 봅니다. google/gemini-3-flash-preview가 컴플라이언스로 금지면 승인 모델로 바꾸고 문서 갱신—압축을 조용히 끄지 마세요.

압축 후 에이전트가 최근 수정을 “잊음”

일시적으로 protect_last_n_turns를 늘리거나 summary_target_tokens 공격성을 낮춥니다. 메시지가 append되는 live 폴더에 batch 압축하지 않았는지 확인. 복사본으로 재실행해 테일을 소스와 diff하세요.

Mac을 켜 두지 않고 Telegram을 상시 운영하려면 저가 VPS Hermes Agent Docker + Telegram 봇 가이드를 참고하세요.

범위 제한 repo 읽기·npm test·가드된 자동 수정이 필요하면 2026 Hermes Agent MCP + Claude Opus 4.8: 로컬 코드 샌드박스를 읽어보세요.

FAQ

trajectory 압축이 Hermes memory 파일을 대체하나요?

아니요. 압축은 단일 궤적 스레드만 짧게 합니다. 큐레이션 memory와 스킬은 장기 저장소입니다. memory는 주 단위, 압축은 오늘 밤 폭주 세션—병행하세요.

OpenClaw 운영자도 이 스크립트를 써야 하나요?

유틸은 Hermes Agent에 동봉됩니다. OpenClaw transcript 형태는 다릅니다—batch 전 migrate/export하고 비교 가이드대로 게이트웨이를 분리하세요.

요약 비용은?

batch 비용은 중간 턴 수와 OpenRouter 요금에 비례합니다. 실험은 15% 샘플링으로 지출을 줄이고, 기본값을 신뢰하면 프로덕션은 100%.

압축+게이트웨이에 필요한 Mac mini RAM?

압축만 배치로 돌리면 16 GB로 대체로 충분합니다. 같은 Mac mini에서 게이트웨이, 로컬 모델, 병렬 서브에이전트도 돌리면 24 GB가 더 안전합니다(Apple 사양).

클라우드 Mac mini에서 Hermes 압축 검증

상시 가동 Mac mini M4에서 긴 궤적을 배치 압축하고 /compress 동작을 검증한 뒤 프로덕션 게이트웨이 토큰 예산을 확정하세요.

Mac 에이전트 스테이징
상시 가동 스테이징