제품 설명
anchor alias
anchor alias
anchor alias
anchor alias
anchor alias
anchor alias
anchor alias
제품 설명
모든 설정은 쉬운 액세스를 위해 ~/.hermes/ 디렉토리에 저장됩니다.
디렉토리 구조
~/.hermes/
├── config.yaml # Settings (model, terminal, TTS, compression, etc.)
├──.env # API keys and secrets
├── auth.json # OAuth provider credentials (Nous Portal, etc.)
├── SOUL.md # Primary agent identity (slot #1 in system prompt)
├── memories/ # Persistent memory (MEMORY.md, USER.md)
├── skills/ # Agent-created skills (managed via skill_manage tool)
├── cron/ # Scheduled jobs
├── sessions/ # Gateway sessions
└── logs/ # Logs (errors.log, gateway.log — secrets auto-redacted)
설정 관리
hermes config # View current configuration
hermes config edit # Open config.yaml in your editor
hermes config set KEY VAL # Set a specific value
hermes config check # Check for missing options (after updates)
hermes config migrate # Interactively add missing options
# Examples:
hermes config set model anthropic/claude-opus-4
hermes config set terminal.backend docker
hermes config set OPENROUTER_API_KEY sk-or-... # Saves to.env
hermes config set 명령은 자동적으로 오른쪽 파일로 변환합니다. API 키는 .env로 저장되며, config.yaml로 다른 모든 것을 저장합니다.
구성 우선
설정은이 순서에서 해결됩니다 (최고 우선):
- CLI 인수 — e.g.,
hermes chat --model anthropic/claude-sonnet-4(직업 오버라이드) ~/.hermes/config.yaml- 모든 비보안 설정을 위한 기본 설정 파일~/.hermes/.env- env vars에 대한 fallback; ** 비밀 (API 키, 토큰, 암호)에 대한 **- Built-in defaults - 다른 설정이 없을 때 하드 코딩된 안전 기본값
비밀 (API 키, 봇 토큰, 암호)는 .env에서 이동합니다. 다른 모든 것 (모델, 터미널 백엔드, 압축 설정, 메모리 제한, 도구)는 config.yaml에 간다. 둘 다 놓을 때, config.yaml는 비보안 설정을 위해 이깁니다.
환경 변수 대체
config.yaml를 사용하여 ${VAR_NAME} 문법을 참조할 수 있습니다
auxiliary:
vision:
api_key: ${GOOGLE_API_KEY}
base_url: ${CUSTOM_VISION_URL}
delegation:
api_key: ${DELEGATION_KEY}
단 하나 가치 일에 있는 다수 참고: url: "${HOST}:${PORT}"입니다. 참고된 변수가 설정되지 않은 경우, placeholder는 verbatim (${UNDEFINED_VAR}는 as-is)를 유지한다. ${VAR} 문법만 지원됩니다. - bare $VAR는 확장되지 않습니다.
AI 공급자 설정 (OpenRouter, Anthropic, Copilot, 사용자 정의 엔드포인트, 자체 호스팅 LLMs, fallback 모델 등)을 위해 AI Provider를 참조하십시오.
공급자 Timeouts
providers.<id>.request_timeout_seconds를 제공업체 전체 요청 시, 모델별 오버라이드를 위한 providers.<id>.models.<model>.timeout_seconds를 설정할 수 있습니다. 각 운송 (OpenAI-wire, native Anthropic, Anthropic-compatible)의 기본 턴 클라이언트에 적용됩니다, 추락 체인, credential 교체 후 재건, (OpenAI-wire) per-request timeout kwarg — 그래서 구성 된 값은 레거시 HERMES_API_TIMEOUT env var 승리.
providers.<id>.stale_timeout_seconds를 비스트링 스테이플 콜 디텍터로 설정할 수 있으며, 모델별 오버라이드를 위한 providers.<id>.models.<model>.stale_timeout_seconds도 설정할 수 있습니다. 이것은 레거시에 승리 HERMES_API_CALL_STALE_TIMEOUT env var.
이 언셋은 레거시 기본(HERMES_API_TIMEOUT=1800s, HERMES_API_CALL_STALE_TIMEOUT=300s, native Anthropic 900s)을 유지한다. 현재 AWS Bedrock (both bedrock_converse 및 AnthropicBedrock SDK 경로 사용 boto3 자체 타임 아웃 구성)에 대해 유선이 없습니다. cli-config.yaml.example의 댓글을 보시기 바랍니다.
터미널 백엔드 구성
Hermes는 7개의 맨끝 백엔드를 지원합니다. 각 에이전트의 쉘 명령이 실제로 실행되는지 결정합니다. 로컬 머신, 도커 컨테이너, SSH를 통해 원격 서버, 모달 클라우드 샌드 박스 (직접 또는 노우스 관리 게이트웨이를 통해), 데이토나 워크스페이스, Vercel Sandbox 또는 Singularity/Apptainer 컨테이너.
terminal:
backend: local # local | docker | ssh | modal | daytona | vercel_sandbox | singularity
cwd: "." # Gateway/cron working directory (CLI always uses launch dir)
timeout: 180 # Per-command timeout in seconds
env_passthrough: # Env var names to forward to sandboxed execution (terminal + execute_code)
singularity_image: "docker://nikolaik/python-nodejs:python3.11-nodejs20" # Container image for Singularity backend
modal_image: "nikolaik/python-nodejs:python3.11-nodejs20" # Container image for Modal backend
daytona_image: "nikolaik/python-nodejs:python3.11-nodejs20" # Container image for Daytona backend
Modal, Daytona 및 Vercel Sandbox, container_persistent: true와 같은 클라우드 샌드 박스에 대해 Hermes는 sandbox recreation의 파일 시스템 상태를 보존하려고합니다. 동일한 라이브 샌드 박스, PID 공간 또는 배경 프로세스가 나중에 실행 될 것이라고 약속하지 않습니다.
Backend 개요
| 기타 | 명령 실행 | 절연성 | 제품 정보 |
|---|---|---|---|
| ** 지역** | 당신의 기계 직접 | 이름 * | 개발, 개인용 |
| 도커 | 단일 지속성 Docker 컨테이너 (세션 전체 공유, /new, 하위 시약) | 풀 (namespaces, 캡 드롭) | 안전 sandboxing, CI/CD |
| 시 | SSH를 통한 원격 서버 | 네트워크 경계 | 원격 dev, 강력한 하드웨어 |
| **모듈 ** | Modal 클라우드 sandbox | 전체 (클라우드 VM) | Ephemeral 클라우드 컴퓨팅, evals |
| ** 데이토나 ** | Daytona 작업 공간 | 가득 차있는 (cloud 콘테이너) | 관리된 클라우드 dev 환경 |
| **vercel_sandbox ** | Vercel 샌드박스 | 전체 (클라우드 마이크로VM) | snapshot-backed filesystem persistence와 클라우드 실행 |
| ** 스타일** | Singularity/Apptainer 콘테이너 | 네임스페이스(--containall) | HPC 클러스터, 공유 기계 |
지역 Backend
기본값. 명령은 격리 없이 당신의 기계에 직접 달립니다. 특별한 설치가 필요 없습니다.
terminal:
backend: local
에이전트는 사용자 계정과 동일한 파일 시스템 액세스를 가지고 있습니다. hermes tools를 사용하여 원하는 도구를 비활성화하거나 샌드박스에 Docker로 전환하십시오.
Docker 백엔드
보안 경화를 가진 Docker 컨테이너 내부 명령을 실행합니다 (모든 기능은 삭제되지 않고 권한 확장, PID 제한).
** 단일 영구 용기, per-command.** 헤르메스는 1개의 긴 살아있는 콘테이너를 처음 사용하고 각 맨끝, 파일 및 execute_code를 통해서 docker exec를 통해서 동일한 콘테이너 — 회의, /new, /reset, 그리고 delegate_task 시약 — 헤르메스 과정의 일생 동안 시작합니다. /workspace의 작업 방향 변경, 설치 패키지 및 파일은 로컬 쉘처럼 다음으로 하나의 도구 호출에서 수행됩니다. 컨테이너가 중단되어 종료됩니다. See **컨테이너 라이프사이클 ** 자세한 내용은 아래에서 확인하세요.
terminal:
backend: docker
docker_image: "nikolaik/python-nodejs:python3.11-nodejs20"
docker_mount_cwd_to_workspace: false # Mount launch dir into /workspace
docker_run_as_host_user: false # See "Running container as host user" below
docker_forward_env: # Env vars to forward into container
- "GITHUB_TOKEN"
docker_volumes: # Host directory mounts
- "/home/user/projects:/workspace/projects"
- "/home/user/data:/data:ro" #:ro for read-only
# Resource limits
container_cpu: 1 # CPU cores (0 = unlimited)
container_memory: 5120 # MB (0 = unlimited)
container_disk: 51200 # MB (requires overlay2 on XFS+pquota)
container_persistent: true # Persist /workspace and /root across sessions
Requirements: Docker Desktop 또는 Docker Engine 설치 및 실행. 헤르메스 프로브 $PATH 플러스 일반 macOS 설치 위치 (/usr/local/bin/docker, /opt/homebrew/bin/docker, Docker 데스크탑 앱 번들). Podman은 상자에서 지원됩니다. HERMES_DOCKER_BINARY=podman (또는 전체 경로)를 설정하면 설치됩니다.
컨테이너 라이프사이클: Hermes는 세션, docker run -d... sleep 2h, ..., ... 및 delegate_task 하위 시약을 위한 단일 긴 수명 컨테이너(...)를 재사용합니다. docker exec 를 통해 명령을 실행하여 로그인 쉘을 사용하여 작업 지시 변경, 설치 패키지 및 /workspace의 파일을 모두 실행합니다. 컨테이너는 Hermes 폐쇄에 멈추고 제거됩니다 (또는 idle-sweep이 그것을 구호 할 때).
평행한 subagents spawned 통해 delegate_task(tasks=[...])이 하나의 컨테이너를 공유합니다 - concurrent cd, env mutations 및 같은 경로에 쓰기가 콜드됩니다. 하위 시약이 고립 된 샌드 박스를 필요로한다면, register_task_env_overrides()를 통해 per-task 이미지 오버라이드를 등록해야합니다. RL 및 벤치 마크 환경 (TerminalBench2, HermesSweEnv 등)은 per-task Docker 이미지를 자동으로 수행합니다.
** 보안 경화: 더 보기
--cap-drop ALL만DAC_OVERRIDE,CHOWN,FOWNER백을 추가--security-opt no-new-privileges에 대해서--pids-limit 256에 대해서/tmp(),/var/tmp(),/run()
증명서: docker_forward_env에 나열된 Env vars는 쉘 환경에서 먼저 해결됩니다. ~/.hermes/.env. Skills는 required_environment_variables를 자동으로 병합합니다.
SSH 백엔드
SSH를 통해 원격 서버에 명령을 실행합니다. 연결 재사용을 위한 ControlMaster 사용 (5 분 idle keepalive). Persistent 포탄은 기본적으로 활성화됩니다 — 국가 (cwd, env vars)는 명령의 맞은편에 살아납니다.
terminal:
backend: ssh
persistent_shell: true # Keep a long-lived bash session (default: true)
** 필수 환경 변수:**
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=ubuntu
** 옵션:**
| 옵션 정보 | 기본 정보 | 이름 * |
|---|---|---|
TERMINAL_SSH_PORT에 대해서 | 22 | SSH 포트 |
TERMINAL_SSH_KEY에 대해서 | (시스템 기본) | SSH 개인 키 경로 |
TERMINAL_SSH_PERSISTENT에 대해서 | true에 대해서 | Enable persistent 포탄 |
일부: BatchMode=yes 및 StrictHostKeyChecking=accept-new와 함께 init 시간에 연결합니다. Persistent Shell은 단일 bash -l 프로세스를 원격 호스트에서 유지하고 임시 파일을 통해 기념합니다. stdin_data 또는 sudo가 자동으로 한 샷 모드로 떨어졌다는 명령.
Modal 백엔드
Modal 클라우드 샌드박스에서 명령을 실행합니다. 각 작업은 구성 가능한 CPU, 메모리, 디스크를 가진 고립된 VM를 가져옵니다. Filesystem은 세션 전반에 걸쳐 스냅샷/restored 할 수 있습니다.
terminal:
backend: modal
container_cpu: 1 # CPU cores
container_memory: 5120 # MB ()
container_disk: 51200 # MB ()
container_persistent: true # Snapshot/restore filesystem
필수: 하나 MODAL_TOKEN_ID + MODAL_TOKEN_SECRET 환경 변수, 또는 ~/.modal.toml 구성 파일.
기간: 사용할 때, sandbox 파일 시스템은 정리하고 다음 세션에 복원됩니다. 스냅샷은 ~/.hermes/modal_snapshots.json에서 추적됩니다. 이 파일 시스템 상태를 보존, 라이브 프로세스, PID 공간, 또는 배경 작업.
증명서: ~/.hermes/ (OAuth 토큰 등)에서 자동 장착하여 각 명령 이전에 동기화됩니다.
데이토나 백엔드
Daytona에서 명령을 실행합니다. persistence를 위한 정지/resume 지원.
terminal:
backend: daytona
container_cpu: 1 # CPU cores
container_memory: 5120 # MB → converted to GiB
container_disk: 10240 # MB → converted to GiB (max 10 GiB)
container_persistent: true # Stop/resume instead of delete
필수: DAYTONA_API_KEY 환경 변수.
기간: 사용할 때, 샌드박스는 정리에 멈추지 않고 다음 세션에 재개합니다. Sandbox 이름은 패턴을 따릅니다 hermes-{task_id}.
** 디스크 제한:** Daytona는 최대 10 GiB를 적용합니다. 위의 요청은 경고로 캡핑됩니다.
Vercel 샌드박스 백엔드
Vercel Sandbox 클라우드 마이크로VM 명령을 실행합니다. Hermes는 정상적인 맨끝 및 파일 공구 표면을 이용합니다; Vercel 특정한 모형 방위 공구가 없습니다.
terminal:
backend: vercel_sandbox
vercel_runtime: node24 # node24 | node22 | python3.13
cwd: /vercel/sandbox # default workspace root
container_persistent: true # Snapshot/restore filesystem
container_disk: 51200 # Shared default only; custom disk is unsupported
필수 설치: 옵션 SDK 추가 설치:
pip install 'hermes-agent[vercel]'
** 필수 인증:** VERCEL_TOKEN, ... 및 VERCEL_TEAM_ID의 세 가지 액세스 토큰을 구성합니다. 이것은 Render, Railway, Docker 및 이와 유사한 호스트에 배포 및 정상적인 장기간의 Hermes 프로세스에 대한 지원 설정입니다.
One-off 현지 개발 Hermes는 또한 짧은 라이브 Vercel OIDC 토큰을 허용합니다
VERCEL_OIDC_TOKEN="$(vc project token <project-name>)" hermes chat
연결된 Vercel 프로젝트 디렉토리에서 프로젝트 이름을 omit 할 수 있습니다
VERCEL_OIDC_TOKEN="$(vc project token)" hermes chat
OIDC 토큰은 부족하고 문서화 된 배포 경로로 사용할 수 없습니다.
Runtime: terminal.vercel_runtime 지원 node24, node22, python3.13. 설치되지 않은 경우, Hermes 기본값은 node24입니다.
기간: container_persistent: true일 때, Hermes는 정리 중에 샌드박스 파일 시스템을 스냅샷과 같은 작업을 위한 샌드박스를 복원합니다. Snapshot 내용에는 Hermes-synced credentials, Skill, cache 파일이 포함되어 있으며 sandbox에 복사되었습니다. 이 파일 시스템 상태를 보존; 그것은 살아있는 sandbox 정체성, PID 공간, 포탄 국가, 또는 실행 배경 프로세스를 보존하지 않습니다.
** 배경 명령:** terminal(background=true)는 Hermes의 일반적인 비현상 공정 흐름을 사용합니다. 샌드박스가 살아있을 때, 샌드박스가 살아있을 때, 샌드박스가 정상적인 공정 도구를 통해 프로세스를 해소할 수 있습니다. Hermes는 Cleanup 또는 재시작 후 Native Vercel detached-process Recovery를 제공하지 않습니다.
** 디스크 크기:** Vercel Sandbox는 현재 Hermes를 지원하지 않습니다. container_disk 자원 손잡이. container_disk unset 또는 공유 기본 51200에 남겨두십시오. 비 기본 값은 자동 무시되는 대신 진단 및 백업 생성이 실패합니다.
Singularity/Apptainer 백엔드
Singularity/Apptainer 컨테이너에서 명령을 실행합니다. HPC 클러스터를 설계하고 Docker가 사용할 수없는 공유 기계.
terminal:
backend: singularity
singularity_image: "docker://nikolaik/python-nodejs:python3.11-nodejs20"
container_cpu: 1 # CPU cores
container_memory: 5120 # MB
container_persistent: true # Writable overlay persists across sessions
문의: apptainer 또는 singularity$PATH의 이진.
** 이미지 처리:** Docker URL (docker://...)은 SIF 파일과 캐시로 자동 변환됩니다. Existing .sif 파일은 직접 사용됩니다.
스크래치 디렉토리: 순서에서 해결하는: TERMINAL_SCRATCH_DIR → TERMINAL_SANDBOX_DIR/singularity → /scratch/$USER/hermes-agent (HPC 컨벤션) → ~/.hermes/sandboxes/singularity.
Isolation: 호스트 홈 디렉토리를 설치하지 않고 전체 네임스페이스 고립을 위해 --containall --no-home를 사용합니다.
자주 묻는 질문
터미널 명령이 즉시 실패하거나 터미널 도구가 비활성화 된 경우:
- Local - 특별한 요구 사항 없음. 시작했을 때 가장 안전한 기본입니다.
- Docker - Docker를 확인하려면
docker version을 실행하십시오. 실패하면 Docker 또는hermes config set terminal.backend local를 수정합니다. - SH — 둘 다
TERMINAL_SSH_HOST와TERMINAL_SSH_USER를 설정해야 합니다. Hermes는 누락된 경우 명확한 오류를 기록합니다. - ** 모드 ** — 필요
MODAL_TOKEN_IDenv var 또는~/.modal.toml입니다. 실행hermes doctor확인. - Daytona - 필요
DAYTONA_API_KEY입니다. Daytona SDK는 서버 URL 구성을 처리합니다. - Singularity — 필요
apptainer또는singularity$PATH. HPC 클러스터에 공통.
의심 할 여지없이 terminal.backend를 local로 설정하고 명령이 먼저 실행되도록 확인합니다.
원격 호스트 파일 동기화 Teardown
SSH, Modal, Daytona 백엔드 (이제의 작업 나무가 호스트가 Hermes를 실행하는 것보다 다른 기계에 살고 있음), Hermes는 원격 샌드 박스 내부에 터치 된 에이전트를 추적하고 세션 찢어 / 샌드 박스 정리에 ~/.hermes/cache/remote-syncs/<session-id>/에서 호스트로 다시 수정 된 파일을 동기화합니다.
- Triggers on: 세션 닫기,
/new,/reset, 게이트웨이 메시지 타임아웃,delegate_task아이가 원격 백엔드를 사용했을 때 시약 완료. - 전체 나무를 덮고, 수정되지 않고, 파일을 명시적으로 열 수 없습니다. 추가, 편집 및 삭제는 모두 캡처됩니다.
- 원격 샌드 박스는 당신이 찾고 갈 때 아래로 찢어 졌을 수 있습니다; 로컬
~/.hermes/cache/remote-syncs/…복사는 에이전트가 변경되는지의 저자 기록입니다. - 큰 바이너리 출력 (모델 체크 포인트, 원시 데이터 세트)는 크기로 캡핑됩니다 -
file_sync_max_mb(기본100) 이상의 동기화 건너뛰기 파일. 당신이 더 큰 artifacts를 기대한다면 Bump.
terminal:
file_sync_max_mb: 100 # default — sync files up to 100 MB each
file_sync_enabled: true # default — set false to skip the sync entirely
이것은 당신이 명시적으로 scp 또는 ...에 대리인에게 말하지 않고 세션 종료 후 파괴되는 ephemeral 클라우드 샌드 박스에서 결과를 복구하는 방법입니다.
Docker 볼륨 마운트
Docker 백엔드를 사용할 때 docker_volumes는 컨테이너와 호스트 디렉토리를 공유할 수 있습니다. 각 항목은 표준 도커 -v 구문을 사용합니다. host_path:container_path[:options].
terminal:
backend: docker
docker_volumes:
- "/home/user/projects:/workspace/projects" # Read-write (default)
- "/home/user/datasets:/data:ro" # Read-only
- "/home/user/.hermes/cache/documents:/output" # Gateway-visible exports
이것은 유용합니다:
- Providing files 에이전트 (datasets, configs, 참조 코드)
- **처리 파일 ** 에이전트에서 (작성 코드, 보고서, 수출)
- **Shared workspaces ** 당신과 에이전트 모두 같은 파일에 액세스
메시징 게이트웨이를 사용하고 생성된 파일을 보내려면 에이전트를 원하면
MEDIA:/...는 별점이 가능한 수출 마운트를 선호합니다
/home/user/.hermes/cache/documents:/output입니다.
- Docker 내부의 파일을
/output/...로 작성 MEDIA:에서 ** 호스트 경로**를, 예를 들면:MEDIA:/home/user/.hermes/cache/documents/report.txt에 대해서/workspace/...또는/output/...를 출력하지 않는 경우 호스트의 게이트웨이 프로세스에 대한 존재
YAML 중복 키가 침묵적으로 앞머리를 무시합니다. 이미 있다면
docker_volumes: 블록, 추가 대신 동일한 목록에 새로운 마운트를 병합
또 다른 docker_volumes: 키가 나중에 파일에 있습니다.
환경 변수를 통해 설정할 수 있습니다: TERMINAL_DOCKER_VOLUMES='["/host:/container"]' (JSON 배열).
도커 Credential 운송
기본적으로 Docker 터미널 세션은 임의 호스트 자격 증명을 상속하지 않습니다. 컨테이너 내부에 특정 토큰이 필요한 경우 terminal.docker_forward_env에 추가하십시오.
terminal:
backend: docker
docker_forward_env:
- "GITHUB_TOKEN"
- "NPM_TOKEN"
Hermes는 현재 쉘에서 각각 나열된 변수를 먼저 해결하고, ~/.hermes/.env로 돌아갑니다.
docker_forward_env에 나열된 것은 컨테이너 내부에서 실행되는 명령에 표시됩니다. 단말 세션에 편안한 exposing입니다.
호스트 사용자로 컨테이너를 실행
root (UID 0)로 기본 Docker 컨테이너가 실행됩니다. /workspace 또는 다른 bind-mounts가 호스트에 뿌리가 소유 한 파일에 대해 sudo chown로 만든 세션 후 호스트 편집기에서 편집할 수 있습니다. terminal.docker_run_as_host_user 플래그는 다음과 같이 수정합니다
terminal:
backend: docker
docker_run_as_host_user: true # default: false
사용할 때, Hermes appends --user $(id -u):$(id -g) 에 docker run 명령 그래서 바인드 마운트 디렉토리로 작성된 파일 (/workspace, /root, docker_volumes)는 호스트 사용자에 의해 소유, 루트가 아닌. 무역 떨어져: 콘테이너는 더 이상 apt install를 수 없습니다 또는 /root/.npm와 같은 뿌리 소유한 경로에 쓰기 — HOME가 비 루트 사용자 (또는 이미지 빌드 시간에 필요한 툴링 추가)에 의해 소유되는 기본 이미지를 사용합니다.
이 false (기본값)을 뒤로 호환되는 동작을 찾습니다. 작업 흐름이 주로 "edit 마운트 호스트 파일"이고 sudo chown -R의 피곤 때 켜십시오.
선택 사항: 발사 디렉토리를 /workspace에 마운트
Docker sandboxes는 기본적으로 격리됩니다. Hermes doesnot는 명시적으로 선택하지 않는 한 컨테이너로 현재 호스트 작업 디렉토리를 전달합니다.
config.yaml에서 사용 가능:
terminal:
backend: docker
docker_mount_cwd_to_workspace: true
사용할 때:
~/projects/my-app에서 Hermes를 실행하면 호스트 디렉토리가/workspace에 바인딩됩니다- Docker 백엔드가
/workspace에서 시작합니다 - 파일 도구 및 터미널 명령 모두 동일한 장착 된 프로젝트를 볼
비활성화되면 /workspace는 을 통해 뭔가를 명시적으로 마운트하지 않는 한 sandbox 소유를 유지합니다. docker_volumes입니다.
보안 거래:
false샌드박스 경계 유지true는 디렉토리에 직접 액세스하여 Hermes를 시작하게 됩니다
옵트 인을 사용하면 컨테이너가 호스트 파일에서 작업 할 때만 사용하십시오.
공급 업체
기본적으로 각 터미널 명령은 자체 하위 처리에서 실행됩니다. - 작업 디렉토리, 환경 변수, 쉘 변수는 명령 사이에 재설정됩니다. 쉘**가 활성화되면, execute() 통화를 통해 한 번의 생동감 넘치는 버쉬 프로세스가 유지됩니다.
이것은 **SSH 백엔드 에 가장 유용합니다. 또한 1 대의 연결 오버 헤드를 제거합니다. Persistent Shell은 SSH의 기본으로 사용할 수 있으며 로컬 백엔드를 위해 비활성화합니다.
terminal:
persistent_shell: true # default — enables persistent shell for SSH
비활성화:
hermes config set terminal.persistent_shell false
** 명령을 통해 어떤 persists:**
- 작업 디렉토리 (
cd /tmp다음 명령에 대한 스틱) - 수출 환경 변수 (
export FOO=bar) - 포탄 변수 (
MY_VAR=hello)
** 보증:**
| 1 단계 | 옵션 정보 | 기본 정보 |
|---|---|---|
| 사이트맵 | terminal.persistent_shell에 대해서 | true에 대해서 |
| SSH 오버라이드 | TERMINAL_SSH_PERSISTENT에 대해서 | config 예제 |
| 지역 override | TERMINAL_LOCAL_PERSISTENT에 대해서 | false에 대해서 |
Per-backend 환경 변수는 가장 높은 우선순위가 발생합니다. 로컬 백엔드에 persistent 포탄을 원한다면:
export TERMINAL_LOCAL_PERSISTENT=true
필요한 명령 stdin_data 또는 sudo는 IPC 프로토콜에 의해 이미 점유되어 있기 때문에, 원스톱 모드로 다시 떨어졌다.
Code Execution 및 README의 Terminal 섹션를 참조하여 각 백엔드에 대한 세부 정보를 확인할 수 있습니다.
기술 설정
스킬은 SKILL.md frontmatter를 통해 자신의 구성 설정을 선언할 수 있습니다. ...의 skills.config 네임스페이스 아래에 저장된 값(paths, preferences, domain settings)입니다.
skills:
config:
myplugin:
path: ~/myplugin-data # Example — each skill defines its own keys
기술 설정 작업:
hermes config migrate는 모든 활성화된 기술을 스캔하고, 구성되지 않은 설정을 발견하고, 당신을 신속하게 제공합니다hermes config show는 "Skill Settings"의 모든 기술 설정을 표시하고 기술에 속합니다- 기술이 로드될 때, 해결된 구성 값은 기술 컨텍스트로 자동 주입됩니다
** 수동 설정 값: 더 보기
hermes config set skills.config.myplugin.path ~/myplugin-data
자신의 기술에서 설정 설정 선언에 대한 자세한 내용은 Creating Skills — Config Settings를 참조하십시오.
Guard on Agent-created 기술 쓰기
대리인이 skill_manage를 사용하여 기술, 편집, 패치, 또는 삭제할 때, 헤르메스는 선택적으로 위험한 키워드 패턴에 대한 새로운 / 업데이트 된 내용을 검사 할 수 있습니다 (사실 수확, 명백한 신속한 주입, exfil 지침). 스캐너는 ** 기본으로 ** - 합법적으로 터치 ~/.ssh/ 또는 $OPENAI_API_KEY를 언급하는 실제 에이전트 워크플로우를 자주 여행했습니다. 스캐너를 원하면 에이전트의 기술이 땅을 씁니다
skills:
guard_agent_created: true # default: false
언제, 어떤 덩어리 skill_manage는 스캐너의 합리적 인 승인 프롬프트로 표면을 작성합니다. 수락된 쓰기 땅; denied 쓰기는 대리인에 explanatory 과실을 돌려줍니다.
메모리 구성
memory:
memory_enabled: true
user_profile_enabled: true
memory_char_limit: 2200 # ~800 tokens
user_char_limit: 1375 # ~500 tokens
파일 읽기 안전
단 하나 read_file 통화가 돌아갈 수 있는 방법을 제어합니다. 한계를 초과하는 것은 offset 및 ...를 사용하는 오류로 거부됩니다. 이것은 컨텍스트 창을 홍수로부터 분화 된 JS 번들 또는 큰 데이터 파일의 단일 읽기를 방지합니다.
file_read_max_chars: 100000 # default — ~25- tokens
큰 컨텍스트 창을 가진 모형에 있고 수시로 큰 파일을 읽으십시오. 작은 텍스트 모델에 대 한 낮은 효율을 읽을 수:
# Large context model (+)
file_read_max_chars: 200000
# Small local model ( context)
file_read_max_chars: 30000
이 에이전트는 또한 파일을 읽을 수 있습니다 자동으로 — 같은 파일 영역이 두 번 읽을 경우, 파일 hasn't 변경되지 않은 경우, 경량 stub는 콘텐츠를 다시 종료 대신 반환됩니다. 이 리셋은 컨텍스트 압축에 그래서 에이전트는 자신의 내용이 떨어져 요약 한 후 파일을 다시 볼 수 있습니다.
공구 산출 Truncation 한계
3개의 관련 모자 통제 얼마나 많은 익지않는 산출 공구가 전에 돌려보낼 수 있는 방법 Hermes truncates 그것:
tool_output:
max_bytes: 50000 # terminal output cap (chars)
max_lines: 2000 # read_file pagination cap
max_line_length: 2000 # per-line cap in read_file's line-numbered view
max_bytes—terminal명령이 결합된 stdout/stderr의 많은 캐릭터를 생산할 때, Hermes는 첫 40%와 마지막 60%를 유지하고[OUTPUT TRUNCATED]알림을 삽입합니다. 기본50000(일반적인 토큰을 통해 ≈12- 토큰).max_lines—limit단 하나read_file호출의 위 경계. 이 위의 요청은 단일 읽기가 컨텍스트 창을 홍수 할 수 없습니다. 기본2000.max_line_length-read_file가 선 번호보기를 방출 할 때 적용되는 인라인 캡. 이보다 더 긴 라인은... [truncated]에 따라이 많은 숯에 truncated. 기본2000.
전화 당 더 많은 원시 출력을 감당할 수 있는 큰 컨텍스트 창을 가진 모형에 한계를 올립니다. 작은 텍스트 모델에 대 한 그들을 낮추는 도구 결과 압축을 유지:
# Large context model (+)
tool_output:
max_bytes: 150000
max_lines: 5000
# Small local model ( context)
tool_output:
max_bytes: 20000
max_lines: 500
글로벌 툴킷 Disable
CLI 및 각 게이트웨이 플랫폼에서 특정 툴을 억제하려면
장소, agent.disabled_toolsets의 이름을 나열:
agent:
disabled_toolsets:
- memory # hide memory tools + MEMORY_GUIDANCE injection
- web # no web_search / web_extract anywhere
이 apply after per-platform 도구 설정 (platform_toolsets 작성한
hermes tools), 그래서 도구가 여기에 나열되어 항상 제거됩니다 - 경우에도
플랫폼의 저장된 설정은 여전히 목록입니다. 이것을 사용하면
15+ 플랫폼 행을 편집하는 것보다 "turn X off everywhere"의 전환
hermes tools UI입니다.
리스트를 비우거나 키를 omitting, no-op입니다.
Git Worktree 고립
동일한 repo에 평행한 다수 대리인을 달리기를 위한 격리한 git worktrees:
worktree: true # Always create a worktree (same as hermes -w)
# worktree: false # Default — only when -w flag is passed
활성화되면 각 CLI 세션은 .worktrees/에서 자체 지점으로 신선한 worktree를 만듭니다. 에이전트는 파일을 편집 할 수 있습니다, 커밋, 푸시, 각 다른 사람과 interfering없이 PR을 만들. 깨끗한 worktrees는 출구에 제거됩니다; 더러운 것은 수동 회복을 위해 지켜집니다.
.worktreeinclude를 통해 worktree로 복사할 수 있는 gitignored 파일을 나열할 수 있습니다
#.worktreeinclude.env.venv/
node_modules/
Context 압축
Hermes는 모델의 컨텍스트 창에 머무르는 긴 대화를 자동으로 압축합니다. 압축 summarizer는 별도의 LLM 통화입니다 - 당신은 어떤 공급자 또는 endpoint에 그것을 점할 수 있습니다.
모든 압축 설정은 config.yaml (환경 변수 없음)에 있습니다.
가득 차있는 참고
compression:
enabled: true # Toggle compression on/off
threshold: 0.50 # Compress at this % of context limit
target_ratio: 0.20 # Fraction of threshold to preserve as recent tail
protect_last_n: 20 # Min recent messages to keep uncompressed
hygiene_hard_message_limit: 400 # Gateway safety valve — see below
# The summarization model/provider is configured under auxiliary:
auxiliary:
compression:
model: "" # Empty = use main chat model. Override with e.g. "google/gemini-3-flash-preview" for cheaper/faster compression.
provider: "auto" # Provider: "auto", "openrouter", "nous", "codex", "main", etc.
base_url: null # Custom OpenAI-compatible endpoint (overrides provider)
compression.summary_model, compression.summary_provider, compression.summary_base_url 의 이전 구성은 auxiliary.compression.* 로 자동 마이그레이션됩니다. 수동 작업이 필요하지 않습니다.
hygiene_hard_message_limit는 게이트웨이 전용 ** 압축 안전 밸브 **입니다. 수천 개의 메시지를 가진 런웨이 세션은 모델 컨텍스트 한계를 정상적인 %-of-context 임계 값 화재 전에 명중 할 수 있습니다. 메시지가이 천장을 교차 할 때, Hermes는 토큰 사용에 관계없이 압축을 강제합니다. Default 400 - 매우 긴 세션이 정상이며 공격적인 압축을 강제하기 위해 더 낮은 플랫폼에 대한 인상. 실행 게이트웨이에 이 값을 편집하면 다음 메시지 (아래 참조)에 영향을줍니다.
최근 릴리스의 경우, model.context_length 또는 compression.* 키에서 config.yaml의 실행 게이트웨이에서 다음 메시지에 영향을 미칩니다. - 게이트웨이 재시작 없음, /reset 없음, 세션 교체 필요 없음. 캐시 시약 서명에는 이러한 키가 포함되므로, 게이트웨이는 투명하게 변화가 보일 때 에이전트를 재구성합니다. API 키 및 도구 / 스킬 구성은 여전히 일반 재로드 경로가 필요합니다.
일반 설정
** 과태 (자동 탐지) - 필요한 구성 없음: * 이름 * 이름
compression:
enabled: true
threshold: 0.50
주요 공급자 및 주요 모형을 사용하십시오. Override per-task (e.g. auxiliary.compression.provider: openrouter + model: google/gemini-2.5-flash) 기본 채팅 모델보다 저렴 한 모델에 압축을 원한다면.
** 특정 공급자 ** (OAuth 또는 API 키 기반):
auxiliary:
compression:
provider: nous
model: gemini-3-flash
어떤 공급자도 일하십시오: nous, openrouter, codex, anthropic, main 등.
** 사용자 정의 엔드포인트 ** (각자 호스팅, 오라마, 지이, DeepSeek 등):
auxiliary:
compression:
model: glm-4.7
base_url: https://api.z.ai/api/coding/paas/v4
사용자 정의 OpenAI 호환 엔드 포인트에 포인트. 사용 OPENAI_API_KEY auth.
3개의 손잡이가 상호 작용하는 방법
auxiliary.compression.provider에 대해서 | auxiliary.compression.base_url에 대해서 | 제품정보 |
|---|---|---|
auto (기본값) | 설정하기 | Auto-detect 최고의 제공 업체 |
nous / openrouter 등. | 설정하기 | 그 공급자의 힘은, 그것의 auth를 이용합니다 |
| 이름 * | 설치하기 | 사용자 정의 엔드포인트 (provider 무시) |
요약 모형 **must **는 당신의 주요 대리인 모형으로 적어도 큰 상황 창이 있습니다. 압축기는 요약 모형에 대화의 가득 차있는 중간 단면도를 보냅니다 — 그 모형의 컨텍스트 창이 주요 모형 보다는 더 작으면, 요약 외침은 컨텍스트 길이 과실에 실패할 것입니다. 이 일이 일어날 때, 중간 회전은 ** 요약없이 떨어지는 **, 대화를 잃는 것은 조용히. 모델을 무시하면 컨텍스트 길이가 충족하거나 메인 모델을 초과합니다.
Context 엔진
컨텍스트 엔진은 모델의 토큰 제한에 접근할 때 대화가 관리되는 방법을 제어합니다. 내장 compressor 엔진은 손실된 요약을 사용합니다 (Context Compression. 플러그인 엔진은 대안 전략으로 교체 할 수 있습니다.
context:
engine: "compressor" # default — built-in lossy summarization
플러그인 엔진(예: LCM for lossless context management)를 사용하려면:
context:
engine: "lcm" # must match the plugin's name
플러그인 엔진은 ** 자동 활성화 ** - 당신은 명시적으로 설정해야합니다 context.engine 플러그인 이름. 사용 가능한 엔진은 hermes plugins → 공급자 플러그인 → Context Engine을 통해 검색 및 선택 할 수 있습니다.
Memory Providers를 기억 플러그인을 위한 아날로그 단일 선택 시스템을 참조하십시오.
Iteration 예산 압력
에이전트는 많은 도구 통화와 복잡한 작업을 수행 할 때, 그것은 낮은 실행하지 않고 그것의 반복 예산 (기본: 90 회전)을 통해 태울 수 있습니다. 예산 압력은 자동으로 한계에 접근으로 모델을 경고:
| 뚱 베어 | 1 단계 | 모델이 보는 것 |
|---|---|---|
| 70% | 주 메뉴 | [BUDGET: 63/90. 27 iterations left. Start consolidating.]에 대해서 |
| 90% | 제품정보 | [BUDGET WARNING: 81/90. Only 9 left. Respond NOW.]에 대해서 |
경고는 마지막 도구 결과의 JSON (_budget_warning 필드로)로 별도의 메시지보다는 주사됩니다. 이것은 신속한 캐싱을 보존하고 대화 구조를 혼란시키지 않습니다.
agent:
max_turns: 90 # Max iterations per conversation turn (default: 90)
api_max_retries: 3 # Retries per provider before fallback engages (default: 3)
예산 압력은 기본적으로 활성화됩니다. 이 에이전트는 도구 결과의 일부로 자연스럽게 경고를보고, 그 일을 통합하고 반복을 실행하기 전에 응답을 제공합니다.
반복 예산이 완전히 배출되면 CLI는 사용자에게 알림을 보여줍니다. ⚠ Iteration budget reached (90/90) — response may be incomplete입니다. 예산이 능동적 일 동안 실행되면, 에이전트는 멈추기 전에 수행 된 요약을 생성합니다.
agent.api_max_retries는 얼마나 많은 시간을 통제합니다 Hermes는 transient Errors (rate limits, connection drops, 5xx)before fallback-provider 엇바꾸기에 공급자 API 호출을 보냅니다. 기본값은 3 - 총 4개의 시도입니다. fallback 제공 업체를 구성하고 빠르게 실패하고 싶다면 0로 이를 떨어뜨리십시오. flaky endpoint에 대한 크라우닝 retries 대신 첫 번째 일시적 오류가 발생합니다.
API 타임아웃
Hermes는 스트리밍을 위한 별도의 타임아웃 레이어와 비스트링 통화를 위한 stale Detector를 제공합니다. stale Detectors auto-adjust for local services only when you Leave them at their implicit defaults.
| 시간 아웃 | 기본 정보 | 지역 공급자 | 콘피그 / env |
|---|---|---|---|
| 소켓 읽기 timeout | 120s | 1800년대에 자동 냉각하는 | HERMES_STREAM_READ_TIMEOUT에 대해서 |
| Stale 스트림 검출 | 180s | 자동 비활성화 | HERMES_STREAM_STALE_TIMEOUT에 대해서 |
| Stale 비스트림 검출 | 300s | 왼쪽 implicit 때 자동 비활성화 | providers.<id>.stale_timeout_seconds 또는 HERMES_API_CALL_STALE_TIMEOUT |
| API 호출 (non-streaming) | 1800s | 견적 요청 | providers.<id>.request_timeout_seconds / timeout_seconds 또는 HERMES_API_TIMEOUT |
** 소켓은 timeout을 읽습니다 **는 공급자로부터 데이터의 다음 펑크를 기다리는 방법을 제어합니다. Local LLMs는 첫 번째 토큰을 생산하기 전에 큰 컨텍스트에 미리 채우기를 위해 몇 분 걸릴 수 있으므로 Hermes는 로컬 엔드포인트를 감지 할 때 30 분에 이것을 제기합니다. HERMES_STREAM_READ_TIMEOUT를 명시적으로 설정하면, 그 값은 항상 엔드포인트 탐지에 관계없이 사용됩니다.
**Stale 스트림 검출 ** SSE 유지 보수 핑을 수신 연결하지만 실제 콘텐츠가 없습니다. 이것은 전적으로 지방 공급자를 위해 완전히 풀 채우기 도중 지키지 않습니다.
Stale non-stream detection는 너무 긴 응답을 일으키지 않는 비 급류 통화를 죽이고 있습니다. 기본적으로 Hermes는 긴 prefills 동안 false 긍정을 방지하기 위해 로컬 엔드 포인트에 이것을 비활성화합니다. providers.<id>.stale_timeout_seconds, providers.<id>.models.<model>.stale_timeout_seconds, 또는 HERMES_API_CALL_STALE_TIMEOUT를 명시적으로 설정한 경우, 해당 값은 로컬 엔드포인트에서도 선호됩니다.
Context 압력 경고
반복 예산 압력에서 분리, 컨텍스트 압력은 대화가 compaction 임계 값에 어떻게 닫는지 추적합니다. - 더 오래된 메시지를 요약하는 컨텍스트 압축 화재가 있는 지점. 대화가 길어질 때와 에이전트가 이해하는 데 도움이됩니다.
| 주요사업 | 1 단계 | 자주 묻는 질문 |
|---|---|---|
| ** ≥ 60%** 임계값 | - 한국어 | CLI는 cyan 진행 막대를 보여줍니다; Gateway는 정보 통지를 보냅니다 |
| ** ≥ 85% ** 임계값 | 제품정보 | CLI는 대담한 황색 막대기를 보여줍니다; 출입구 warns 조밀함은 imminent입니다 |
CLI에서, 컨텍스트 압력은 도구 출력 피드의 진행 막대로 나타납니다:
◐ context ████████████░░░░░░░░ 62% to compaction 48k threshold (50%) · approaching compaction
메시징 플랫폼에서 일반 텍스트 알림이 전송됩니다
◐ Context: ████████████░░░░░░░░ 62% to compaction (threshold: 50% of window).
auto-compression이 비활성화되면, 경고는 당신이 컨텍스트가 대신 truncated 수 있음을 알려줍니다.
Context 압력은 자동 — 필요 없음. 그것은 사용자 직면 알림으로 순화하고 메시지 스트림을 수정하거나 모델의 맥락으로 아무것도 주입하지 않습니다.
Credential 풀 전략
동일한 공급자를 위한 다중 API 열쇠 또는 OAuth 토큰이 있을 때, 교체 전략을 구성하십시오:
credential_pool_strategies:
openrouter: round_robin # cycle through keys evenly
anthropic: least_used # always pick the least-used key
옵션: fill_first (과태), round_robin, least_used, random. 전체 문서에 대한 Credential Pool를 참조하십시오.
보조 모델
Hermes는 이미지 분석, 웹 페이지 요약, 브라우저 스크린 샷 분석, 세션 제목 생성 및 컨텍스트 압축과 같은 측면 작업을 위한 "auxiliary" 모델을 사용합니다. 기본적으로 (auxiliary.*.provider: "auto"), 헤르메스는 **메인 채팅 모델에 대한 모든 보조 작업 ** - hermes model에서 선택된 동일한 공급자 / 모델. 시작하려면 아무것도 구성 할 필요가 없지만 비싼 이유 모델 (Opus, MiniMax M2.7 등) 보조 작업에는 의미있는 비용을 추가해야합니다. 메인 모델에 관계없이 저렴하고 빠른 측면 작업을 원한다면 auxiliary.<task>.provider 및 auxiliary.<task>.model를 명시적으로 설정하십시오 (예를 들어, 비전 및 웹 추출을위한 OpenRouter의 Gemini Flash).
Earlier는 저렴한 공급자 측 기본적으로 분할 집계 사용자 (OpenRouter, Nous Portal)을 구축합니다. 즉, surprising — 집단 구독을 지불한 사용자는 보조 트래픽을 처리하는 다른 모델을 볼 수 있습니다. auto는 이제 모든 사람에게 메인 모델을 사용하고 config.yaml의 per-task overrides는 여전히 승리합니다 (Full auxiliary config reference.
auxiliary 모델 구성
손 편집 YAML 대신, hermes model을 실행하고 "메뉴에서 보조 모델 구성". 대화 형 per-task picker를 얻을 수 있습니다
$ hermes model
→ Configure auxiliary models
vision currently: auto / main model
web_extract currently: auto / main model
session_search currently: openrouter / google/gemini-2.5-flash
title_generation currently: openrouter / google/gemini-3-flash-preview
compression currently: auto / main model
approval currently: auto / main model
triage_specifier currently: auto / main model
작업 선택, 공급자 선택 (OAuth flows open a browser; API-key Provider prompt), 모델 선택. auxiliary.<task>.*의 config.yaml로 변경합니다. 메인 모델 선택기와 동일한 기계 - 더 이상 문법을 배울 수 없습니다.
비디오 자습서
범용 설정 패턴
Hermes의 모든 모델 슬롯 - 보조 작업, 압축, fallback - 동일한 세 개의 손잡이를 사용합니다
| 이름 * | 그것은 무엇입니까 | 기본 정보 |
|---|---|---|
provider에 대해서 | auth 및 routing에 대한 어떤 공급자 | "auto"에 대해서 |
model에 대해서 | 어떤 모델 요청 | 공급자의 기본값 |
base_url에 대해서 | 사용자 정의 OpenAI 호환 엔드포인트 (overrides Provider) | 설정하기 |
base_url가 설정되면 Hermes는 공급자를 무시하고 endpoint가 직접 호출합니다 (api_key 또는 OPENAI_API_KEY를 사용). provider만 설정하면, Hermes는 공급자의 내장 오우 및 기본 URL을 사용합니다.
auto, main, openrouter, nous, openai-codex, openrouter, nous, openai-codex, ...KEN_TOKEN_TOKEN_TOKEN_TOKEN_TOKEN_TOKEN_TO, ..., ..., ..., __HER, __HER, __HER, ..., __HER, __HER, __HER, __HER, __HER, __HER, __HER, __HER, ..., __HER, __HER, ..., ..., ..., __HER, __HER, __HER, __HER, __HER, __.
minimax-oauth는 브라우저 OAuth를 통해 로그인합니다. hermes model를 실행하고 **MiniMax (OAuth)**를 선택하여 인증합니다. 보조 작업 사용 MiniMax-M2.7-highspeed 자동으로. MiniMax OAuth 가이드를 참조하십시오.
xai-oauth는 SuperGrok 구독자에 대한 브라우저 OAuth를 통해 로그인합니다 (API 키 필요 없음). hermes model를 실행하고 **xAI Grok OAuth (SuperGrok Subscription)**를 선택하여 인증합니다. 동일한 OAuth 토큰은 각 직접 xAI 표면 (chat, 보조 작업, TTS, 이미지 gen, 비디오 gen, transcription)에 재사용됩니다. xAI Grok OAuth 가이드를 참조하고, Hermes가 원격 호스트가 SSH / Remote Hosts 이상 OAuth를 볼 경우.
"main" is for auxiliary tasks only"main" 공급자 옵션은 "주요 에이전트가 어떤 공급자든지 사용"을 의미합니다. auxiliary:, compression:, fallback_model: configs에서만 유효합니다. 상단 레벨 model.provider 설정의 유효값이 없습니다. 사용자 정의 OpenAI 호환 엔드포인트를 사용하는 경우, provider: custom를 model: 섹션으로 설정합니다. 모든 주요 모델 공급자 옵션에 대한 AI Providers를 참조하십시오.
전체 보조 구성 참조
auxiliary:
# Image analysis (vision_analyze tool + browser screenshots)
vision:
provider: "auto" # "auto", "openrouter", "nous", "codex", "main", etc.
model: "" # e.g. "openai/gpt-4o", "google/gemini-2.5-flash"
base_url: "" # Custom OpenAI-compatible endpoint (overrides provider)
api_key: "" # API key for base_url (falls back to OPENAI_API_KEY)
timeout: 120 # seconds — LLM API call timeout; vision payloads need generous timeout
download_timeout: 30 # seconds — image HTTP download; increase for slow connections
# Web page summarization + browser page text extraction
web_extract:
provider: "auto"
model: "" # e.g. "google/gemini-2.5-flash"
base_url: ""
api_key: ""
timeout: 360 # seconds (6min) — per-attempt LLM summarization
# Dangerous command approval classifier
approval:
provider: "auto"
model: ""
base_url: ""
api_key: ""
timeout: 30 # seconds
# Context compression timeout (separate from compression.* config)
compression:
timeout: 120 # seconds — compression summarizes long conversations, needs more time
# Session search — summarizes past session matches
session_search:
provider: "auto"
model: ""
base_url: ""
api_key: ""
timeout: 30
max_concurrency: 3 # Limit parallel summaries to reduce request-burst 429s
extra_body: {} # Provider-specific OpenAI-compatible request fields
# Skills hub — skill matching and search
skills_hub:
provider: "auto"
model: ""
base_url: ""
api_key: ""
timeout: 30
# MCP tool dispatch
mcp:
provider: "auto"
model: ""
base_url: ""
api_key: ""
timeout: 30
# Kanban triage specifier — `hermes kanban specify <id>` (or the
# dashboard's ✨ Specify button on Triage-column cards) uses this
# slot to expand a one-liner into a concrete spec and promote the
# task to `todo`. Cheap fast models work well here; spec expansion
# is short and doesn't need reasoning depth.
triage_specifier:
provider: "auto"
model: ""
base_url: ""
api_key: ""
timeout: 120
각 보조 작업에는 구성 가능한 timeout (초)이 있습니다. 과태: 시각 120s의 web_extract 360s의 승인 30s의 압축 120s. 보조 작업에 대한 느린 로컬 모델을 사용하는 경우 이러한 증가. Vision은 또한 HTTP 이미지 다운로드에 대한 별도의 download_timeout (기본 30s)가 있습니다. — 느린 연결 또는 자체 호스팅 이미지 서버를 위해 이것을 증가시킵니다.
Context 압축은 임계값과 compression: 블록을 가지고 있으며, 모델/프로바이더 설정에 대한 auxiliary.compression: 블록이 있습니다. - 위의 Context Compression을 참조하십시오. fallback 모델은 fallback_model: 블록을 사용합니다. Fallback Model를 참조하십시오. 모든 3는 동일한 공급자/model/base_url 본을 따릅니다.
세션 검색 Tuning
auxiliary.session_search에 대한 reasoning-heavy 모델을 사용하는 경우 Hermes는 이제 두 개의 내장 컨트롤을 제공합니다
auxiliary.session_search.max_concurrency: 많은 일치하는 세션을 제한 Hermes는 한 번에 요약합니다auxiliary.session_search.extra_body: 공급자별 전달 정상화 통화에 OpenAI 호환 요청 필드
예:
auxiliary:
session_search:
provider: "main"
model: "glm-4.5-air"
timeout: 60
max_concurrency: 2
extra_body:
enable_thinking: false
``max_concurrency`를 사용하여 공급자 비율 제한 요청 파열을 요청하고 `session_search`를 사용하여 안정성에 대한 병렬성을 거래하십시오.
사용 `extra_body`는 해당 작업을 통과하기 위해 Hermes를 원할 때만 사용 가능합니다. Hermes는 객체 as-is를 전달합니다.
:::warning
`extra_body`는 공급자가 실제로 보내는 필드를 지원할 때만 효과적입니다. 공급자가 네이티브 OpenAI-compatible reasoning-off 플래그를 노출하지 않는 경우, Hermes는 대신에 하나를 합성할 수 없습니다.
:::
### OpenRouter 여정 & Pareto auxiliary 작업에 대한 코드 \{#openrouter-routing--pareto-code-for-auxiliary-tasks}
auxiliary 작업이 OpenRouter에 해결 될 때 (잘 명시적으로 또는 `provider: "main"`를 통해 메인 에이전트가 OpenRouter에 있습니다), 주요 에이전트의 `provider_routing` 및 `openrouter.min_coding_score` 설정 **를 propagate**가 아닌 경우, 각 보조 작업은 독립적입니다. OpenRouter 제공 업체의 선호 또는 사용하려면 [Pareto Code router](/docs/integrations/providers#openrouter-pareto-code-router) 특정 보조 작업을 위해, `extra_body`를 통해 per-task를 설정:
```yaml
auxiliary:
compression:
provider: openrouter
model: openrouter/pareto-code # use the Pareto Code router for this task
extra_body:
provider: # OpenRouter provider routing prefs
order: [anthropic, google] # try these providers in order
sort: throughput # or "price" | "latency"
# only: [anthropic] # restrict to a specific provider
# ignore: [deepinfra] # exclude specific providers
plugins: # OpenRouter Pareto Code router knob
- id: pareto-router
min_coding_score: 0.5 # 0.0–1.0; higher = stronger coders
모양 거울 OpenRouter는 채팅 완료 요청 몸에 허용. Hermes는 전체를 전달합니다. extra_body verbatim, 그래서 다른 OpenRouter 요청 바디 필드는 openrouter.ai/docs에서 문서화됩니다.
비전 모델 변경
이미지 분석을 위한 Gemini Flash 대신 GPT-4o를 사용하려면:
auxiliary:
vision:
model: "openai/gpt-4o"
또는 환경 변수를 통해 (~/.hermes/.env):
AUXILIARY_VISION_MODEL=openai/gpt-4o
공급자 옵션
이 옵션은 ** 보조 작업 설정** (auxiliary:, compression:, fallback_model:)에 적용되며, 메인 model.provider 설정이 아닙니다.
| 회사 소개 | 이름 * | 제품 정보 |
|---|---|---|
"auto"에 대해서 | 유효한 제일 (과태). 비전은 OpenRouter → Nous → Codex를 공개합니다. | — |
"openrouter"에 대해서 | Force OpenRouter - 모든 모델 경로 (Gemini, GPT-4o, Claude 등) | OPENROUTER_API_KEY에 대해서 |
"nous"에 대해서 | 힘 Nous 포털 | hermes auth에 대해서 |
"codex"에 대해서 | Force Codex OAuth (ChatGPT 계정). 비전 지원 (gpt-5.3-codex). | hermes model → 코덱 |
"minimax-oauth"에 대해서 | Force MiniMax OAuth (브라우저 로그인, API 키 없음). 보조 작업을 위한 MiniMax-M2.7-highspeed를 사용합니다. | hermes model → MiniMax (오우) |
"xai-oauth"에 대해서 | Force xAI Grok OAuth (SuperGrok 구독자, API 키에 대한 브라우저 로그인). 이름 * OAuth 토큰은 채팅, TTS, 이미지, 비디오 및 비문을 다룹니다. | hermes model → xAI Grok OAuth (슈퍼그로 구독) |
"main"에 대해서 | 당신의 활동적인 custom/main endpoint를 사용하십시오. 이것은 OPENAI_BASE_URL + OPENAI_API_KEY 또는 hermes model / config.yaml를 통해 저장된 사용자 정의 엔드포인트에서 올 수 있습니다. OpenAI, 로컬 모델 또는 OpenAI-compatible API와 함께 작동합니다. ** 보조 작업 만 - model.provider에 유효하지 않습니다. ** | 사용자 정의 엔드포인트 자격 + 기본 URL |
주요 공급자 카탈로그에서 직접 API 키 제공 업체는 기본적으로 라우터를 우회 할 때 사이드 작업을 원할 때 여기에서 작동합니다. gmi는 한번 유효하다 GMI_API_KEY 구성:
auxiliary:
compression:
provider: "gmi"
model: "anthropic/claude-opus-4.6"
GMI 보조 라우팅의 경우, GMI의 /v1/models 엔드포인트에 의해 반환된 정확한 모델 ID를 사용하십시오.
일반 설정
** 직접 사용자 정의 엔드 포인트를 사용 ** (provider: "main" 이상 로컬 / 자체 호스팅 API):
auxiliary:
vision:
base_url: "http://localhost:1234/v1"
api_key: "local-key"
model: "qwen2.5-vl"
``base_url`는 `provider`에 대한 선행을 갖추는 가장 명시한 방법입니다. 직접 엔드포인트 오버라이드의 경우, 헤르메스는 구성 `api_key`를 사용하거나 `OPENAI_API_KEY`로 돌아갑니다. 그 사용자 정의 엔드포인트를 위해 `OPENROUTER_API_KEY`를 재사용하지 않습니다.
**Using 오픈 비전을 위한 AI API 키:**
```yaml
# In ~/.hermes/.env:
# OPENAI_BASE_URL=https://api.openai.com/v1
# OPENAI_API_KEY=sk-...
auxiliary:
vision:
provider: "main"
model: "gpt-4o" # or "gpt-4o-mini" for cheaper
** 비전을위한 OpenRouter를 사용 ** (모든 모델로 루트):
auxiliary:
vision:
provider: "openrouter"
model: "openai/gpt-4o" # or "google/gemini-2.5-flash", etc.
** Codex OAuth** (ChatGPT Pro/Plus 계정 - API 키 필요 없음):
auxiliary:
vision:
provider: "codex" # uses your ChatGPT OAuth token
# model defaults to gpt-5.3-codex (supports vision)
** MiniMax OAuth** (브라우저 로그인, API 키 필요 없음):
model:
default: MiniMax-M2.7
provider: minimax-oauth
base_url: https://api.minimax.io/anthropic
``hermes model` 을 실행하고 **MiniMax (OAuth)** 를 선택하고 자동으로 설정하십시오. 중국 지역을 위해, 기본적인 URL은 `https://api.minimaxi.com/anthropic`일 것입니다. [MiniMax OAuth 가이드](../guides/minimax-oauth.md)를 전체 산책로에 볼 수 있습니다.
** 로컬/self-hosted 모델:**
```yaml
auxiliary:
vision:
provider: "main" # uses your active custom endpoint
model: "my-local-model"
``provider: "main"`는 어떤 공급자든지 사용합니다 헤르메스는 정상적인 채팅에 사용됩니다. (예: `beans`), `openrouter` 또는 레거시 `OPENAI_BASE_URL` 엔드포인트와 같은 내장 공급자.
:::tip
Codex OAuth를 주요 모델 공급자로 사용하는 경우 비전은 자동으로 작동하며, 추가 구성이 필요하지 않습니다. Codex는 시각을 위한 자동 탐지 사슬에서 포함됩니다.
:::
:::warning
**Vision은 다중 모델이 필요합니다. ** `provider: "main"`를 설정한 경우, endpoint가 다중/vision을 지원한다는 것을 확인합니다. 그렇지 않으면 이미지 분석이 실패합니다.
:::
### 환경 변수 (legacy) \{#openrouter-routing--pareto-code-for-auxiliary-tasks}
Auxiliary 모델은 환경 변수를 통해 구성될 수 있습니다. 그러나 `config.yaml`는 선호하는 방법입니다. `base_url` 및 `api_key`를 포함한 모든 옵션을 관리하고 지원할 수 있습니다.
| 설정하기 | 환경 변수 |
|---------|---------------------|
| 비전 공급자 | `AUXILIARY_VISION_PROVIDER`에 대해서 |
| 비전 모델 | `AUXILIARY_VISION_MODEL`에 대해서 |
| 비전 endpoint | `AUXILIARY_VISION_BASE_URL`에 대해서 |
| 비전 API 키 | `AUXILIARY_VISION_API_KEY`에 대해서 |
| 웹 추출 공급자 | `AUXILIARY_WEB_EXTRACT_PROVIDER`에 대해서 |
| 웹 추출 모델 | `AUXILIARY_WEB_EXTRACT_MODEL`에 대해서 |
| 웹 추출물 endpoint | `AUXILIARY_WEB_EXTRACT_BASE_URL`에 대해서 |
| 웹 추출물 API 열쇠 | `AUXILIARY_WEB_EXTRACT_API_KEY`에 대해서 |
압축 및 fallback 모델 설정은 구성입니다. yaml 전용.
:::tip
`hermes config`를 실행하여 현재 보조 모델 설정을 볼 수 있습니다. 기본적으로 다를 때만 노출됩니다.
:::
## Reasoning 노력 \{#changing-the-vision-model}
응답하기 전에 얼마나 많은 "thinking"모델을 제어하십시오
```yaml
agent:
reasoning_effort: "" # empty = medium (default). Options: none, minimal, low, medium, high, xhigh (max)
unset (default) 때, 노력이 "medium"에 과태를 기울일 때 - 대부분의 작업에 잘 작동하는 균형 수준. value overrides를 설정 - 더 높은 이유 노력은 더 많은 토큰과 대기 시간의 복잡한 작업에 더 나은 결과를 제공합니다.
/reasoning 명령을 사용하여 실행 시간에 대한 이유를 변경할 수 있습니다
/reasoning # Show current effort level and display state
/reasoning high # Set reasoning effort to high
/reasoning none # Disable reasoning
/reasoning show # Show model thinking above each response
/reasoning hide # Hide model thinking
공구 사용 Enforcement
일부 모델은 때때로 도구 호출 대신 텍스트로 작업을 설명합니다 ("나는 테스트 실행합니다..." 실제로 터미널을 호출 대신). Tool-useforcement injects system prompt 지도를 steers the model back to real call tools.
agent:
tool_use_enforcement: "auto" # "auto" | true | false | ["model-substring",...]
| 주요 특징 | 채용 정보 |
|---|---|
"auto" (기본값) | 모형 일치를 위해 사용: gpt, codex, gemini, gemma, grok. 다른 모든 사람들을 위해 비활성화 (Claude, DeepSeek, Qwen, 등). |
true에 대해서 | 항상, 모델에 관계없이. 당신이 그들을 수행 대신 작업에 대한 현재의 모델을 설명하는 경우 유용한. |
false에 대해서 | 모델에 관계없이 항상 비활성화됩니다. |
["gpt", "codex", "qwen", "llama"]에 대해서 | 모델명이 나열된 substrings (case-insensitive) 중 하나를 포함할 때만 활성화됩니다. |
그것은 무엇을 주사
활성화될 때, 지도의 3개의 층은 체계 신속한에 추가될지도 모릅니다:
-
** 일반 도구 사용 집행 ** (모든 일치 모델) - 도구가 의도를 설명 대신 즉시 호출 할 모델을 구축, 작업이 완료 될 때까지 작업을 유지, 결코 미래 행동의 약속으로 차례를 종료.
-
**OpenAI 실행 분야 ** (GPT 및 Codex 모델 만) - GPT 별 실패 모드에 대한 추가지도: 부분 결과에 대한 버려진 작업, 사전 요구 사항 보기를 건너, 도구 사용 대신 복도, 검증없이 "done"를 선언.
-
** 구글 운영 지침 ** (Gemini 및 Gemma 모델 만) - conciseness, 절대 경로, 병렬 도구 통화 및 검증 된 패턴.
이들은 사용자에게 투명하며 시스템 프롬프트에만 영향을 줍니다. 이미 공구를 안정적으로 사용 하는 모델 (클래드와 같은) 이 지도를 필요로 하지 않습니다, 왜 "auto" 그들을 제외.
그것을 켜기
기본 자동 목록에서 모델을 사용하지 않고 자주 설명합니다. would 대신 수행, tool_use_enforcement: true를 설정하거나 목록에 모델 substring을 추가하십시오
agent:
tool_use_enforcement: ["gpt", "codex", "gemini", "grok", "my-custom-model"]
TTS 구성
tts:
provider: "edge" # "edge" | "elevenlabs" | "openai" | "minimax" | "mistral" | "gemini" | "xai" | "neutts"
speed: 1.0 # Global speed multiplier (fallback for all providers)
edge:
voice: "en-US-AriaNeural" # 322 voices, 74 languages
speed: 1.0 # Speed multiplier (converted to rate percentage, e.g. 1.5 → +50%)
elevenlabs:
voice_id: "pNInz6obpgDQGcFmaJgB"
model_id: "eleven_multilingual_v2"
openai:
model: "gpt-4o-mini-tts"
voice: "alloy" # alloy, echo, fable, onyx, nova, shimmer
speed: 1.0 # Speed multiplier (clamped to 0.25–4.0 by the API)
base_url: "https://api.openai.com/v1" # Override for OpenAI-compatible TTS endpoints
minimax:
speed: 1.0 # Speech speed multiplier
# base_url: "" # Optional: override for OpenAI-compatible TTS endpoints
mistral:
model: "voxtral-mini-tts-2603"
voice_id: "c69964a6-ab8b-4f8a-9465-ec0925096ec8" # Paul - Neutral (default)
gemini:
model: "gemini-2.5-flash-preview-tts" # or gemini-2.5-pro-preview-tts
voice: "Kore" # 30 prebuilt voices: Zephyr, Puck, Kore, Enceladus, etc.
xai:
voice_id: "eve" # xAI TTS voice
language: "en" # ISO 639-1
sample_rate: 24000
bit_rate: 128000 # MP3 bitrate
# base_url: "https://api.x.ai/v1"
neutts:
ref_audio: ''
ref_text: ''
model: neuphonic/neutts-air-q4-gguf
device: cpu
이 컨트롤 모두 text_to_speech 도구와 음성 모드에 대한 답변 (/voice tts CLI 또는 메시징 게이트웨이).
** 속도가 내리는 후 계층: ** 공급자 별 속도 (예: tts.edge.speed) → 글로벌 tts.speed → 1.0 기본값. 글로벌 tts.speed 를 설정하여 모든 공급자의 균일한 속도를 적용하거나, 미세 편두통 제어를 위한 오버라이드.
표시 설정
display:
tool_progress: all # off | new | all | verbose
tool_progress_command: false # Enable /verbose slash command in messaging gateway
platforms: {} # Per-platform display overrides (see below)
tool_progress_overrides: {} # DEPRECATED — use display.platforms instead
interim_assistant_messages: true # Gateway: send natural mid-turn assistant updates as separate messages
skin: default # Built-in or custom CLI skin (see user-guide/features/skins)
personality: "kawaii" # Legacy cosmetic field still surfaced in some summaries
compact: false # Compact output mode (less whitespace)
resume_display: full # full (show previous messages on resume) | minimal (one-liner only)
bell_on_complete: false # Play terminal bell when agent finishes (great for long tasks)
show_reasoning: false # Show model reasoning/thinking above each response (toggle with /reasoning show|hide)
streaming: false # Stream tokens to terminal as they arrive (real-time output)
show_cost: false # Show estimated $ cost in the CLI status bar
tool_preview_length: 0 # Max chars for tool call previews (0 = no limit, show full paths/commands)
runtime_footer: # Gateway: append a runtime-context footer to final replies
enabled: false
fields: ["model", "context_pct", "cwd"]
file_mutation_verifier: true # Append an advisory footer when write_file/patch calls failed this turn
language: en # UI language for static messages (approval prompts, some gateway replies). en | zh | ja | de | es | fr | tr | uk
파일 mutation verifier
display.file_mutation_verifier 는 true (기본값), Hermes 는 write_file 또는 patch 호출이 차례로 실패하고 동일한 경로로 성공적인 쓰기에 의해 초래되지 않았습니다. 이것은 수동으로 실행하는 것을 요구하지 않고 "배너 패치의 배치, 반 침묵적으로 실패, 모델은 성공의 클래스를 요약 git status 모든 편집 후.
예제 footer:
⚠️ File-mutation verifier: 3 file(s) were NOT modified this turn despite any wording above that may suggest otherwise. Run `git status` or `read_file` to confirm.
• concepts/automatic-organization.md — [patch] Could not find match for old_string
• concepts/lora.md — [patch] Could not find match for old_string
• concepts/rag-pipeline.md — [patch] Could not find match for old_string
footer를 억제하기 위해 file_mutation_verifier: false (또는 HERMES_FILE_MUTATION_VERIFIER=0)를 설정합니다. 실제 실패가 턴 끝에 걸려있을 때 만의 불 - 실패 패치를 retries하고 동일한 턴 내에서 성공하는 모델은 그 파일에 대한 트리거되지 않습니다.
정적 메시지를 위한 UI 언어
display.language 설정은 static user-facing 메시지의 작은 세트를 번역합니다. CLI 승인 프롬프트, Gateway slash-command replies (예: 재시작 배수 통지, "approval이 만료됨", "goal cleared"). 그것은 **** 에이전트 응답, 로그 라인, 도구 출력, 오류 추적, 또는 slash-command 설명 번역 — 그 영어 체류. 다른 언어로 응답 할 에이전트를 원한다면, 그냥 당신의 프롬프트 또는 시스템 메시지에 알려.
지원된 가치: en (기본값), zh (중국어 간체), ja (일본어), de (독일), es (스페인어), fr (프랑스), tr (터키), uk (미국) 잘 알려진 값은 영어로 돌아갑니다.
HERMES_LANGUAGE env var로 이 per-session를 설정할 수 있습니다.
display:
language: zh # CLI approval prompts appear in Chinese
| 주요 특징 | 당신이 볼 |
|---|---|
off에 대해서 | Silent — 최종 응답 |
new에 대해서 | 도구 변경 시에만 도구 표시 |
all에 대해서 | 모든 도구는 짧은 미리보기 (기본)와 호출 |
verbose에 대해서 | 전체 args, 결과, 디버그 로그 |
CLI에서 /verbose로 이 모드를 통해 주기합니다. /verbose를 메시징 플랫폼(Telegram, Discord, Slack 등)에서 사용하려면 위의 tool_progress_command: true를 설정하십시오. 명령은 다음 모드를 순환하고 설정에 저장합니다.
Runtime-metadata footer (게이트웨이 전용)
display.runtime_footer.enabled: true일 때, Hermes는 final 메시지에 작은 런타임 컨텍스트 풋러를 추가합니다. 각 게이트웨이 턴의 메시지는 다음과 같습니다. CLI는 상태 표시 줄 (모델, 컨텍스트 %, cwd, 세션 기간, 토큰, 비용). 기본값으로 떨어져; 팀이 입증을 포함하기 위해 모든 응답을 원하면 per-gateway에서 선택.
display:
runtime_footer:
enabled: true
fields: ["model", "context_pct", "cwd"] # any of: model, context_pct, cwd, duration, tokens, cost
``/footer` 슬래시 명령은 모든 세션에서 실행 시간에 이를 구합니다.
Telegram/Discord/Slack 대답에 덧붙여 말하십시오:
— claude-opus-4.7 · 12 tool calls · 2m 14s · $0.042
턴의 ** 메시지 만 옵트 아웃됩니다. 간 업데이트는 깨끗합니다.
### Per-platform 진행 오버라이드 \{#per-platform-progress-overrides}
다른 플랫폼에는 다른 verbosity 필요가 있습니다. 예를 들어, 신호는 메시지를 편집 할 수 없습니다. 그래서 각 진행 업데이트는 별도의 메시지가됩니다. — noisy. `display.platforms`를 사용하여 per-platform 모드를 설정하십시오
```yaml
display:
tool_progress: all # global default
platforms:
signal:
tool_progress: 'off' # silence progress on Signal
telegram:
tool_progress: verbose # detailed progress on Telegram
slack:
tool_progress: 'off' # quiet in shared Slack workspace
오버라이드 없는 플랫폼은 글로벌 tool_progress 값으로 돌아갑니다..................................................................... 레거시 display.tool_progress_overrides 키는 여전히 백워드 호환성을 위해로드하지만 처음 로드에 display.platforms로 deprecated 및 migrated입니다.
interim_assistant_messages는 게이트웨이 전용입니다. 활성화되면 Hermes는 별도의 채팅 메시지로 완료된 중간 회전 보조 업데이트를 보냅니다. 이것은 tool_progress에서 독립적이며 게이트웨이 스트리밍이 필요하지 않습니다.
제품 정보
privacy:
redact_pii: false # Strip PII from LLM context (gateway only)
``redact_pii`이 `true`인 경우, 해당 플랫폼에서 LLM으로 전송하기 전에 시스템 프롬프트에서 개인 식별 정보를 안전하게 보호합니다
| 제품정보 | 제품정보 |
|-------|-----------|
| 전화 번호 (WhatsApp/Signal에 사용자 ID) | `user_<12-char-sha256>`에 구워 |
| 사용자 ID | `user_<12-char-sha256>`에 구워 |
| 채팅 ID | 숫자 부분 해시, 플랫폼 접두사 보존 (`telegram:<hash>`) |
| 홈 채널 ID | 숫자 부분 hashed |
| 사용자 이름 / 사용자 이름 | ** 영향을받지 않음 ** (사용자 중심, 공개적으로 볼 수 있음) |
**플랫폼 지원:** Redaction는 WhatsApp, Signal 및 Telegram에 적용됩니다. Discord 및 Slack은 언급 시스템 (`<@user_id>`)이 LLM 컨텍스트에서 실제 ID를 요구합니다.
Hashes는 deterministic입니다 — 동일한 사용자는 항상 동일한 해시에 지도합니다, 그래서 모형은 그룹 채팅에 있는 사용자 사이에서 아직도 구별할 수 있습니다. Routing and Delivery는 내부의 원래 값을 사용합니다.
## 음성 텍스트 (STT) \{#display-settings}
```yaml
stt:
provider: "local" # "local" | "groq" | "openai" | "mistral"
local:
model: "base" # tiny, base, small, medium, large-v3
openai:
model: "whisper-1" # whisper-1 | gpt-4o-mini-transcribe | gpt-4o-transcribe
# model: "whisper-1" # Legacy fallback key still respected
공급자 행동:
local는faster-whisper를 사용합니다.pip install faster-whisper와 별도로 설치하십시오.groq는 Groq의 Whisper 호환 엔드포인트를 사용하고GROQ_API_KEY를 읽습니다.openai는 OpenAI 연설 API를 사용하고VOICE_TOOLS_OPENAI_KEY를 읽습니다.
요청된 공급자가 사용할 수 없는 경우, Hermes는 이 순서에서 다시 자동적으로 떨어졌습니다: local → groq → openai.
Groq 및 OpenAI 모델은 환경 중심입니다
STT_GROQ_MODEL=whisper-large-v3-turbo
STT_OPENAI_MODEL=whisper-1
GROQ_BASE_URL=https://api.groq.com/openai/v1
STT_OPENAI_BASE_URL=https://api.openai.com/v1
음성 모드 (CLI)
voice:
record_key: "ctrl+b" # Push-to-talk key inside the CLI
max_recording_seconds: 120 # Hard stop for long recordings
auto_tts: false # Enable spoken replies automatically when /voice on
beep_enabled: true # Play record start/stop beeps in CLI voice mode
silence_threshold: 200 # RMS threshold for speech detection
silence_duration: 3.0 # Seconds of silence before auto-stop
사용 /voice on 에서 마이크 모드를 활성화, record_key 시작/스톱 레코딩 및 /voice tts toggle 말한 답글. Voice Mode를 End-to-end 설정 및 플랫폼 별 동작을 참조하십시오.
관련 동영상
Stream 토큰은 터미널 또는 메시징 플랫폼으로 전체 응답을 기다리고 있습니다.
제품정보 관련 동영상
display:
streaming: true # Stream tokens to terminal in real-time
show_reasoning: true # Also stream reasoning/thinking tokens (optional)
활성화할 때, 응답은 스트리밍 박스 안에 토큰 별 토큰을 나타냅니다. 도구 호출은 여전히 조용히 캡처됩니다. 공급자가 스트리밍을 지원하지 않는 경우, 자동으로 정상 디스플레이로 돌아갑니다.
게이트웨이 스트리밍 (Telegram, Discord, Slack)
streaming:
enabled: true # Enable progressive message editing
transport: edit # "edit" (progressive message editing) or "off"
edit_interval: 0.3 # Seconds between message edits
buffer_threshold: 40 # Characters before forcing an edit flush
cursor: " ▉" # Cursor shown during streaming
fresh_final_after_seconds: 60 # Send fresh final (Telegram) when preview is this old; 0 = always edit in place
활성화되면 봇은 첫 번째 토큰에 메시지를 보냅니다. 그 이후로 더 많은 토큰이 도착합니다. 메시지 편집 (Signal, Email, Home Assistant)를 지원하지 않는 플랫폼은 첫 번째 시도에서 자동 감지됩니다. - 스트리밍은 메시지의 홍수가없는 세션을 위해 우아하게 비활성화됩니다.
프로그레시브 토큰 편집없이 별도의 천연 중간 회전 보조 업데이트, 설정 ...입니다.
** Overflow 처리:** 스트림 텍스트가 플랫폼의 메시지 길이 제한을 초과하는 경우 (~4096 숯), 현재 메시지는 최종화되고 새로운 것은 자동으로 시작됩니다.
Fresh 최종 (전보): Telegram의 editMessageText는 원래 메시지 타임 스탬프를 보존하므로 장기간의 스트림 응답은 완료 후도 첫 번째 토큰 타임 스탬프를 유지합니다. fresh_final_after_seconds > 0 (기본 60)의 경우, 완료된 답변은 브랜드의 새로운 메시지로 전달됩니다 ( stale Preview best-effort deleted) 그래서 Telegram의 눈에 띄는 타임스탬프가 완료 시간을 반영합니다. 짧은 미리보기는 여전히 장소에 종료. 0로 설정하여 항상 편집합니다.
스트리밍은 기본적으로 비활성화됩니다. ~/.hermes/config.yaml에서 스트리밍 UX를 시도할 수 있습니다.
그룹 채팅 세션 Isolation
공유 대화가 방당 한 대화를 유지하거나 참가자당 한 대화를 제어하십시오
group_sessions_per_user: true # true = per-user isolation in groups/channels, false = one shared session per chat
true는 기본이며 권장 설정입니다. Discord 채널에서, Telegram 그룹, Slack 채널 및 유사한 공유 컨텍스트, 각 sender는 플랫폼이 사용자 ID를 제공할 때 자신의 세션을 가져옵니다.false는 오래된 공유 룸 행동을 반전합니다. 그것은 당신이 명시적으로 원하는 경우에 유용 할 수 있습니다 Hermes 하나의 협업 대화와 같은 채널을 치료하기 위해, 그러나 또한 사용자는 컨텍스트를 공유, 토큰 비용, 및 중단 상태.- 직접 메시지가 잘못되었습니다. 헤르메스는 일반적으로 채팅 / DM ID로 DM을 사용합니다.
- 스레드는 부모 채널에서 격리 유지 어느 방법;
true, 각 참가자는 스레드 내부 자신의 세션을 얻을.
행동 세부 사항 및 예의 경우 Sessions 및 Discord Guide를 참조하십시오.
인증 DM 채용 정보
Hermes가 알 수없는 사용자가 직접 메시지를 보낼 때 무엇을 제어:
unauthorized_dm_behavior: pair
whatsapp:
unauthorized_dm_behavior: ignore
pair는 기본값입니다. Hermes denies 액세스, 하지만 DM에 한 번 페어링 코드와 함께 replies.ignore침묵적으로 DM을 삭제합니다.- 플랫폼 섹션은 글로벌 기본을 무시하므로, 한 플랫폼 조용자를 만드는 동안 쌍을 활성화 할 수 있습니다.
빠른 명령
LLM을 호출하지 않고 쉘 명령을 실행하는 사용자 정의 명령을 정의하거나 다른 하나의 슬래시 명령을 정의합니다. Exec 빠른 명령은 빠른 서버 체크 또는 유틸리티 스크립트에 대한 메시징 플랫폼 (Telegram, Discord, etc.)에서 유용하다.
quick_commands:
status:
type: exec
command: systemctl status hermes-agent
disk:
type: exec
command: df -h /
update:
type: exec
command: cd ~/.hermes/hermes-agent && git pull && pip install -e.
gpu:
type: exec
command: nvidia-smi --query-gpu=name,utilization.gpu,memory.used,memory.total --format=csv,noheader
restart:
type: alias
target: /gateway restart
사용법: 유형 /status, /disk, /update, /gpu, 또는 CLI 또는 어떤 메시징 플랫폼에서 /restart. exec 명령은 호스트에서 로컬로 실행하고 직접 출력을 반환합니다. — LLM 통화 없음, 토큰이 소모되지 않습니다. alias 명령은 지정된 슬래시 명령 대상에 다시 쓰기합니다.
- 30-second timeout - 긴 실행 명령은 오류 메시지로 사망
- Priority - 빠른 명령은 기술 명령 전에 체크되어 있으므로 기술 이름을 무시할 수 있습니다
- Autocomplete - 빠른 명령은 파견 시간에 해결되며 내장된 슬래시-command autocomplete 테이블에 표시되지 않습니다
- Type - 지원된 유형은
exec및alias입니다. 다른 유형은 오류를 보여줍니다 - ** 모든 곳에서 작업 ** — CLI, Telegram, Discord, Slack, WhatsApp, Signal, Email, Home Assistant
String-only prompt shortcuts는 빠른 명령을 유효하지 않습니다. 재사용 가능한 신속한 작업 흐름을 위해 기술 또는 별명을 기존 슬래시 명령으로 만듭니다.
인간 지연
메시징 플랫폼에서 인간의 같은 응답 pacing을 시뮬레이션:
human_delay:
mode: "off" # off | natural | custom
min_ms: 800 # Minimum delay (custom mode)
max_ms: 2500 # Maximum delay (custom mode)
코드 실행
execute_code 도구 구성:
code_execution:
mode: project # project (default) | strict
timeout: 300 # Max execution time in seconds
max_tool_calls: 50 # Max tool calls within code execution
mode 스크립트에 대한 작업 디렉토리 및 Python 해석기를 제어합니다
project(기본값) - 스크립트는 Active virtualenv/conda env's python과 함께 세션 작업 디렉토리에서 실행됩니다. 프로젝트 deps (pandas,torch, 프로젝트 패키지) 및 상대 경로 (.env,./data.csv)는 자연적으로 해결하고terminal()참조.strict— 스크립트는sys.executable(Hermes's own python)과 임시 디렉토리에서 실행됩니다. 최대 재현성, 하지만 프로젝트 deps 및 상대 경로는 해결되지 않습니다.
환경 스크럽 (스트라이프 *_API_KEY, *_TOKEN, *_SECRET, *_PASSWORD, *_CREDENTIAL, *_PASSWD, *_AUTH) 및 도구 화이트리스트는 모두 모드와 동일하게 적용됩니다. 전환 모드는 보안 게시물을 변경하지 않습니다.
웹 검색 백엔드
web_search, web_extract, web_crawl 도구 지원 5 백엔드 제공. config.yaml 또는 hermes tools의 백엔드 구성:
web:
backend: firecrawl # firecrawl | searxng | parallel | tavily | exa
# Or use per-capability keys to mix providers (e.g. free search + paid extract):
search_backend: "searxng"
extract_backend: "firecrawl"
| 기타 | 카테고리 | 제품정보 | 제품 정보 | 뚱 베어 |
|---|---|---|---|---|
| ** Firecrawl** (기본값) | FIRECRAWL_API_KEY에 대해서 | ✔ | ✔ | ✔ |
| **SearXNG ** | SEARXNG_URL에 대해서 | ✔ | — | — |
| *패럴 * 이름 | PARALLEL_API_KEY에 대해서 | ✔ | ✔ | — |
| **타비 ** | TAVILY_API_KEY에 대해서 | ✔ | ✔ | ✔ |
| ** 엑셀 ** | EXA_API_KEY에 대해서 | ✔ | ✔ | — |
** 백엔드 선택:** web.backend가 설정되지 않은 경우, 백엔드는 API 키에서 자동 감지됩니다. SEARXNG_URL만 설정하면 SearXNG가 사용됩니다. EXA_API_KEY만 설정하면 Exa가 사용됩니다. TAVILY_API_KEY만 설정하면 Tavily가 사용됩니다. PARALLEL_API_KEY만 설정하면 병렬이 사용됩니다. 그렇지 않으면 Firecrawl는 기본값입니다.
SearXNG는 70+ 검색 엔진을 쿼리하는 무료 셀프 호스팅, 개인 정보 보호 검사 메타 분석 엔진입니다. API 키가 필요 없음 — 그냥 설정 SEARXNG_URL 인스턴스에 (예를 들어, http://localhost:8080). SearXNG는 검색 전용입니다; web_extract 및 web_crawl는 별도의 추출 공급자가 필요합니다 ( web.extract_backend). Docker 설정 지침에 대한 Web Search setup guide를 참조하십시오.
** 자체 호스팅 Firecrawl:** FIRECRAWL_API_URL 를 설정하여 자신의 인스턴스에 포인트를 지정합니다. 사용자 정의 URL이 설정되면 API 키가 선택됩니다 (server에서 `USE_DB_AUTHENTICATION=***를 설정하여 auth를 비활성화합니다).
Parallel 검색 모드: PARALLEL_SEARCH_MODE를 사용하여 검색 행동을 제어합니다. fast, one-shot 또는 agentic (기본값: agentic).
Exa: EXA_API_KEY를 ~/.hermes/.env로 설정하십시오. category 필터링 (company, research paper, news, people, personal site, pdf) 및 도메인/날짜 필터를 지원합니다.
뚱 베어
브라우저 자동화 동작 구성:
browser:
inactivity_timeout: 120 # Seconds before auto-closing idle sessions
command_timeout: 30 # Timeout in seconds for browser commands (screenshot, navigate, etc.)
record_sessions: false # Auto-record browser sessions as WebM videos to ~/.hermes/browser_recordings/
# Optional CDP override — when set, Hermes attaches directly to your own
# Chrome (via /browser connect) rather than starting a headless browser.
cdp_url: ""
# Dialog supervisor — controls how native JS dialogs (alert / confirm / prompt)
# are handled when a CDP backend is attached (Browserbase, local Chrome via
# /browser connect). Ignored on Camofox and default local agent-browser mode.
dialog_policy: must_respond # must_respond | auto_dismiss | auto_accept
dialog_timeout_s: 300 # Safety auto-dismiss under must_respond (seconds)
camofox:
managed_persistence: false # When true, Camofox sessions persist cookies/logins across restarts
user_id: "" # Optional externally managed Camofox userId
session_key: "" # Optional session key sent when Hermes creates a tab
adopt_existing_tab: false # Reuse an existing tab for this identity before creating one
**Dialog 정책: 더 보기
must_respond(과태) - 대화 상자를 캡처하고browser_snapshot.pending_dialogs에서 표면을 캡처하고browser_dialog(action=...)로 전화하는 에이전트를 기다립니다. 응답 없이dialog_timeout_s초 후에, 대화상자는 영원히 넣기에서 페이지의 JS 실을 방지하기 위하여 자동 파견됩니다.auto_dismiss- 캡처, 즉시 삭제. 이 에이전트는 실제로browser_snapshot.recent_dialogs에서 대화 상자 레코드를 볼 수 있습니다.auto_accept- 캡처, 즉시 받아들입니다. 공격적인beforeunload프롬프트를 가진 페이지를 위해 유용한.
전체 대화 워크플로우에 대한 browser feature page를 참조하십시오.
브라우저 도구는 여러 공급자를 지원합니다. Browserbase, Browser Use 및 Local Chrome CDP 설정에 대한 자세한 내용은 Browser 기능 페이지를 참조하십시오.
시간 영역
IANA timezone 문자열로 서버 로컬 시간대를 오버라이드합니다. 로그, cron scheduling 및 시스템 프롬프트 시간 주입에 타임 스탬프를 수정합니다.
timezone: "America/New_York" # IANA timezone (default: "" = server-local time)
지원 값: IANA 시간대 식별자 (예: America/New_York, Europe/London, Asia/Kolkata, UTC). Server-local 시간 동안 빈 또는 omit을 남겨 주세요.
관련 제품
메시징 게이트웨이에 대한 Discord-specific 행동 구성:
discord:
require_mention: true # Require @mention to respond in server channels
free_response_channels: "" # Comma-separated channel IDs where bot responds without @mention
auto_thread: true # Auto-create threads on @mention in channels
require_mention-true(기본값)일 때 봇은@BotName로 언급될 때 서버 채널에서만 응답합니다. DM은 항상 언급하지 않고 작동합니다.free_response_channels— 봇이 언급하지 않고 모든 메시지에 응답하는 채널 ID의 목록.auto_thread—true(기본값)이 자동적으로 대화를 위해 스레드를 생성하고, 채널을 깨끗하게 유지 (Slack 스레드).
보안 보안
Pre-execution 보안 검사 및 비밀 중복:
security:
redact_secrets: false # Redact API key patterns in tool output and logs (off by default)
tirith_enabled: true # Enable Tirith security scanning for terminal commands
tirith_path: "tirith" # Path to tirith binary (default: "tirith" in $PATH)
tirith_timeout: 5 # Seconds to wait for tirith scan before timing out
tirith_fail_open: true # Allow command execution if tirith is unavailable
website_blocklist: # See Website Blocklist section below
enabled: false
domains:
shared_files:
redact_secrets— iftrue, 자동으로 API 키, 토큰 및 도구 출력의 암호와 같은 특성 패턴을 감지하고, 대화 컨텍스트 및 로그를 입력하기 전에. ** 기본적으로 ** - 도구 출력에서 실제 자격 증명을 사용하여 일반적으로 작동하고 안전 그물을 원한다. 으로 설정true명시적으로 켜기.tirith_enabled—true일 때, 터미널 명령은 Tirith에 의해 스캔됩니다.tirith_path- tirith 바이너리 경로. tirith가 비표준 위치에 설치되면 이것을 설정합니다.tirith_timeout- 타이중 검사를 기다리는 최대 초. 명령은 스캔 시간이 지남에 따라 진행합니다.tirith_fail_open-true(기본값), tirith가 사용할 수 없거나 실패하면 명령이 실행될 수 있습니다.false로 설정하여 tirith가 인증할 수 없는 명령을 차단합니다.
웹 사이트 Blocklist
에이전트의 웹 및 브라우저 도구에 의해 액세스되는 특정 도메인을 차단:
security:
website_blocklist:
enabled: false # Enable URL blocking (default: false)
domains: # List of blocked domain patterns
- "*.internal.company.com"
- "admin.example.com"
- "*.local"
shared_files: # Load additional rules from external files
- "/etc/hermes/blocked-sites.txt"
웹 또는 브라우저 도구가 실행되기 전에 차단 된 도메인 패턴과 일치하는 URL이 거부됩니다. 이것은 web_search, web_extract, browser_navigate 및 URL에 액세스하는 도구에 적용됩니다.
도메인 규칙 지원:
- Exact 도메인:
admin.example.com에 대해서 - Wildcard 하위 도메인:
*.internal.company.com(모든 하위 도메인 차단) - TLD 와일드 카드:
*.local에 대해서
공유 파일에는 라인당 하나의 도메인 규칙이 포함되어 있습니다 (블록 라인과 # 코멘트는 무시됩니다). 읽거나 읽을 수 있는 파일은 경고를 기록하지만 다른 웹 도구를 사용하지 않습니다.
정책은 30 초 동안 캐시되어 있으므로 구성 변경은 다시 시작하지 않고 신속하게 효력을 발생합니다.
스마트 승인
제어 방법 Hermes는 잠재적으로 위험한 명령을 처리합니다
approvals:
mode: manual # manual | smart | off
| 주요 특징 | 채용 정보 |
|---|---|
manual (기본값) | 모든 조각 명령을 실행하기 전에 사용자를 증명합니다. CLI에서 대화 형 승인 대화 상자를 보여줍니다. 메시징에서, queues a pending 승인 요청. |
smart에 대해서 | auxiliary LLM을 사용하여 파쇄 명령이 실제로 위험한지 평가합니다. Low-risk 명령은 세션 레벨 지속으로 자동 승인됩니다. 실제로 위험한 명령은 사용자에게 에스컬레이션됩니다. |
off에 대해서 | 자주 묻는 질문 HERMES_YOLO_MODE=true와 동일합니다. **주의와 함께 사용. 더 보기 |
스마트 모드는 특히 승인 피로를 줄이기 위해 유용합니다. 에이전트는 여전히 정품 파괴적인 명령을 잡는 동안 안전한 작업에 더 자율적으로 작동 할 수 있습니다.
approvals.mode: off 설정은 터미널 명령의 모든 안전 검사를 비활성화합니다. 신뢰할 수있는, sandboxed 환경에서만 사용하십시오.
자주 묻는 질문
자동 파일 시스템 스냅 샷을 파괴 파일 작업 전에. Checkpoints & Rollback를 참고해 주세요.
checkpoints:
enabled: false # Enable automatic checkpoints (also: hermes chat --checkpoints). Default: false (opt-in).
max_snapshots: 20 # Max checkpoints to keep per directory (default: 20)
관련 상품
delegate 공구를 위한 subagent 행동을 구성하십시오:
delegation:
# model: "google/gemini-3-flash-preview" # Override model (empty = inherit parent)
# provider: "openrouter" # Override provider (empty = inherit parent)
# base_url: "http://localhost:1234/v1" # Direct OpenAI-compatible endpoint (takes precedence over provider)
# api_key: "local-key" # API key for base_url (falls back to OPENAI_API_KEY)
max_concurrent_children: 3 # Parallel children per batch (floor 1, no ceiling). Also via DELEGATION_MAX_CONCURRENT_CHILDREN env var.
max_spawn_depth: 1 # Delegation tree depth cap (1-3, clamped). 1 = flat (default): parent spawns leaves that cannot delegate. 2 = orchestrator children can spawn leaf grandchildren. 3 = three levels.
orchestrator_enabled: true # Global kill switch. When false, role="orchestrator" is ignored and every child is forced to leaf regardless of max_spawn_depth.
Subagent 공급자:모델 override: 기본적으로, subagents는 부모 에이전트의 공급자와 모델을 상속합니다. delegation.provider 및 delegation.model를 설정하여 다른 공급자에 대한 하위 시약을 경로를 지정합니다:모델 쌍 — 예를들면, 좁게 스코프를 위한 저렴한/빠른 모델을 사용하세요.
** 직접 엔드포인트 override:** 명백한 사용자 정의 엔드포인트 경로를 원한다면 delegation.base_url, delegation.api_key 및 delegation.model를 설정하십시오. 그것은 OpenAI 호환 엔드 포인트에 직접 서브 시약을 보내고 delegation.provider에 우선 복용. delegation.api_key가 omitted 경우, Hermes는 OPENAI_API_KEY로 돌아갑니다.
delegation 공급자는 CLI/gateway 시작으로 동일한 credential 해결책을 이용합니다. 모든 구성 공급자는 지원됩니다: openrouter, nous, copilot, zai, kimi-coding, minimax, 공급자가 설정되면 시스템이 올바른 기본 URL, API 키 및 API 모드를 자동으로 해결합니다. 수동 자격 배선이 필요하지 않습니다.
Precedence: delegation.base_url config → delegation.provider config → 부모 공급자(inherited). delegation.model config → 부모 모델(inherited). model를 provider없이 설정하면 부모의 자격 증명을 유지하면서 모델명 만 변경합니다 (OpenRouter와 같은 동일한 공급자 내에서 모델을 전환하는 데 사용).
** 폭력과 깊이: ** max_concurrent_children 캡 배치 당 병렬로 실행하는 방법 (기본 3, 1 층, 천장 없음). DELEGATION_MAX_CONCURRENT_CHILDREN env var를 통해 설정할 수 있습니다. 모델이 모자보다 더 이상 tasks 배열을 제출할 때, delegate_task는 침묵적으로 truncating보다 제한을 설명하는 도구 오류를 반환합니다. max_spawn_depth delegation 트리 깊이를 제어합니다 (1-3으로 클램프). 기본적으로 1에서, 위임은 평평합니다: 아이들은 할머니를 향하고 ...는 leaf에 자동으로 정렬됩니다. 2에 올리는 것은 관현악 아이들이 잎을 웅장하게 할 수 있도록 해줍니다. 3는 3층의 나무입니다. 에이전트는 role="orchestrator"를 통해 호출 당 오케스트라션을 선택한다. orchestrator_enabled: false는 모든 아이를 떼어낸다. max_spawn_depth: 3의 max_concurrent_children: 3의 비율은 3×3×3 = 27 동시 잎 에이전트에 도달 할 수 있습니다. Subagent Delegation → Depth Limit and Nested Orchestration 사용 패턴을 참조하십시오.
프로젝트
clarification 신속한 동작 구성:
clarify:
timeout: 120 # Seconds to wait for user clarification response
텍스트 파일 (SOUL.md, AGENTS.md)
Hermes는 두 가지 다른 컨텍스트 범위를 사용합니다
| 파일 형식 | 제품정보 | 관련 상품 |
|---|---|---|
SOUL.md에 대해서 | **개인 에이전트 정체 ** - 에이전트가 (시스템 프롬프트에서 #1)인지 정의 | ~/.hermes/SOUL.md 또는 $HERMES_HOME/SOUL.md |
.hermes.md / HERMES.md | 프로젝트별 지침 (최고 우선 순위) | git root로 이동 |
AGENTS.md에 대해서 | 프로젝트별 지침, 코딩 컨벤션 | Recursive 디렉토리 워크 |
CLAUDE.md에 대해서 | Claude Code context 파일 (또한 감지) | 작업 디렉토리 만 |
.cursorrules에 대해서 | Cursor IDE 규칙 (또한 감지) | 작업 디렉토리 만 |
.cursor/rules/*.mdc에 대해서 | Cursor 규칙 파일 (또한 감지) | 작업 디렉토리 만 |
- SOUL.md는 에이전트의 기본 정체성입니다. 그것은 시스템 프롬프트에서 슬롯 #1을 점유, 완전히 내장 기본 정체성을 대체. 에이전트가 완전히 사용자 정의하도록 편집하십시오.
- SOUL.md가 누락된 경우, 비어있거나, 로드할 수 없으며, Hermes는 내장 기본 정체성으로 돌아갑니다.
- **Project 컨텍스트 파일 사용 우선 시스템 ** — ONE 타입만 로드됩니다 (첫 번째 일치 승리):
.hermes.md→AGENTS.md→CLAUDE.md→.cursorrules. SOUL.md는 항상 독립적으로 로드됩니다. - ** AGENTS.md**는 계층입니다. 하위디렉토리도 AGENTS.md를 가지고 있다면 모두 결합됩니다.
- 헤르메스는 기본적으로
SOUL.md을 자동으로 종결합니다. - 모든 로드 된 컨텍스트 파일은 스마트 truncation과 20,000 문자로 캡핑됩니다.
참조:
작업 디렉토리
| 설정하기 | 기본 정보 |
|---|---|
**CLI (hermes) ** | 명령을 실행하는 현재 디렉토리 |
| **Messaging Gateway ** | 홈 디렉토리 ~ (MESSAGING_CWD로 업그레이드) |
| Docker / Singularity / 모달 / SSH | 컨테이너 또는 원격 기계 내부의 사용자 홈 디렉토리 |
작업 디렉토리를 삭제:
# In ~/.hermes/.env or ~/.hermes/config.yaml:
MESSAGING_CWD=/home/myuser/projects # Gateway sessions
TERMINAL_CWD=/workspace # All terminal sessions