팁 및 모범 사례
Hermes Agent를 사용하여 즉각적으로 효율성을 높일 수 있는 실용적인 팁 모음입니다. 각 섹션은 서로 다른 측면을 목표로 합니다. 헤더를 스캔하고 관련 내용으로 이동하세요.
최상의 결과 얻기
당신이 원하는 것에 대해 구체적으로 설명하십시오
모호한 프롬프트는 모호한 결과를 낳습니다. "코드를 수정"하는 대신 "47행에서 api/handlers.py의 TypeError를 수정하세요. process_request() 함수는 parse_body()에서 None을 받습니다."라고 말합니다. 더 많은 컨텍스트를 제공할수록 필요한 반복 횟수는 줄어듭니다.
컨텍스트를 미리 제공
파일 경로, 오류 메시지, 예상 동작 등 관련 세부 정보를 요청에 미리 로드하세요. 잘 만들어진 하나의 메시지가 세 번의 설명을 능가합니다. 오류 역추적을 직접 붙여넣으면 에이전트가 이를 구문 분석할 수 있습니다.
반복 지침에 컨텍스트 파일 사용
동일한 지침("공백이 아닌 탭을 사용하세요", "우리는 pytest를 사용합니다", "API는 /api/v2에 있습니다")을 반복하는 경우 해당 지침을 AGENTS.md 파일에 넣으세요. 에이전트는 매 세션마다 자동으로 이를 읽습니다. 설정 후 아무런 노력도 필요하지 않습니다.
에이전트가 도구를 사용하도록 허용
모든 단계를 손으로 잡으려고하지 마십시오. "tests/test_foo.py을 열고 42행을 살펴본 다음..."이라고 말하는 대신 "실패한 테스트를 찾아서 수정하세요"라고 말합니다. 에이전트에는 파일 검색, 터미널 액세스 및 코드 실행 기능이 있습니다. 탐색하고 반복하도록 하세요.
복잡한 워크플로에 기술 사용
어떤 작업을 수행하는 방법을 설명하는 긴 프롬프트를 작성하기 전에 이미 해당 기술이 있는지 확인하세요. /skills을 입력하여 사용 가능한 기술을 찾아보거나 /axolotl 또는 /github-pr-workflow과 같은 기술을 직접 호출하세요.
CLI 고급 사용자 팁
다중 라인 입력
전송하지 않고 줄바꿈을 삽입하려면 Alt+Enter, Ctrl+J 또는 Shift+Enter를 누르세요. Shift+Enter은 터미널이 이를 고유한 키 입력(기본적으로 Kitty/foot/WezTerm/Ghostty, Kitty 키보드 프로토콜이 활성화되면 iTerm2/Alacritty/VS Code 터미널)으로 전송할 때만 작동합니다. 나머지 두 개는 모든 터미널에서 작동합니다.
페이스트 감지
CLI는 여러 줄 붙여넣기를 자동 감지합니다. 코드 블록이나 오류 역추적을 직접 붙여넣기만 하면 됩니다. 각 줄을 별도의 메시지로 보내지 않습니다. 붙여넣기는 버퍼링되어 하나의 메시지로 전송됩니다.
인터럽트 및 리디렉션
상담원의 응답을 중단하려면 Ctrl+C를 한 번 누르세요. 그런 다음 새 메시지를 입력하여 리디렉션할 수 있습니다. 강제 종료하려면 2초 이내에 Ctrl+C를 두 번 누르세요. 이는 에이전트가 잘못된 경로로 이동하기 시작할 때 매우 중요합니다.
-c을(를) 사용하여 세션 재개
지난 세션에서 잊어버린 내용이 있나요? hermes -c을 실행하면 중단한 부분부터 정확히 다시 시작하고 전체 대화 기록이 복원됩니다. hermes -r "my research project" 제목으로 재개할 수도 있습니다.
클립보드 이미지 붙여넣기
클립보드의 이미지를 채팅에 직접 붙여넣으려면 Ctrl+V를 누르세요. 에이전트는 비전을 사용하여 스크린샷, 다이어그램, 오류 팝업 또는 UI 모형을 분석하므로 먼저 파일에 저장할 필요가 없습니다.
슬래시 명령 자동 완성
/을 입력하고 Tab을 눌러 사용 가능한 모든 명령을 확인하세요. 여기에는 내장 명령(/compress, /model, /title)과 설치된 모든 스킬이 포함됩니다. 아무것도 외울 필요가 없습니다. 탭 완성 기능이 포함되어 있습니다.
/verbose을 사용하여 도구 출력 표시 모드(off → new → all → verbose)를 순환합니다. "all" 모드는 에이전트가 수행하는 작업을 관찰하는 데 적합합니다. 간단한 Q&A에서는 "off"가 가장 깔끔합니다.
컨텍스트 파일
AGENTS.md: 프로젝트의 두뇌
아키텍처 결정, 코딩 규칙 및 프로젝트별 지침을 사용하여 프로젝트 루트에 AGENTS.md을 만듭니다. 이는 모든 세션에 자동으로 주입되므로 에이전트는 항상 프로젝트의 규칙을 알고 있습니다.
# Project Context
- This is a FastAPI backend with SQLAlchemy ORM
- Always use async/await for database operations
- Tests go in tests/ and use pytest-asyncio
- Never commit.env files
SOUL.md: 개성을 사용자 정의하세요
헤르메스가 안정적인 기본 음성을 갖기를 원하시나요? ~/.hermes/SOUL.md(또는 맞춤형 Hermes 홈을 사용하는 경우 $HERMES_HOME/SOUL.md)을 편집합니다. Hermes는 이제 스타터 SOUL을 자동으로 시드하고 해당 글로벌 파일을 인스턴스 전체 성격 소스로 사용합니다.
전체 연습을 보려면 Hermes와 함께 SOUL.md 사용을 참조하세요.
# Soul
You are a senior backend engineer. Be terse and direct.
Skip explanations unless asked. Prefer one-liners over verbose solutions.
Always consider error handling and edge cases.
내구성 있는 성격을 위해서는 SOUL.md을 사용하세요. 프로젝트별 지침에는 AGENTS.md을 사용하세요.
###.cursorrules 호환성 {#cursorrules-compatibility}
이미 .cursorrules 또는 .cursor/rules/*.mdc 파일이 있습니까? 헤르메스도 그걸 읽습니다. 코딩 규칙을 복제할 필요가 없습니다. 작업 디렉터리에서 자동으로 로드됩니다.
발견
Hermes는 세션 시작 시 현재 작업 디렉터리에서 최상위 AGENTS.md을 로드합니다. 하위 디렉터리 AGENTS.md 파일은 도구 호출 중에(subdirectory_hints.py을 통해) 늦게 발견되어 도구 결과에 삽입됩니다. 이 파일은 시스템 프롬프트에 미리 로드되지 않습니다.
컨텍스트 파일을 집중적이고 간결하게 유지하세요. 모든 문자는 모든 단일 메시지에 삽입되므로 토큰 예산에 포함됩니다.
기억력과 기술
기억력 대 기술: 무엇이 어디로 가는가
기억은 귀하의 환경, 선호도, 프로젝트 위치, 상담원이 귀하에 대해 알게 된 사실 등을 위한 것입니다. 기술은 다단계 작업 흐름, 도구별 지침, 재사용 가능한 레시피 등의 절차를 위한 것입니다. '무엇'에는 기억을 사용하고, '어떻게'에는 기술을 사용하세요.
기술을 만들어야 할 때
5단계 이상 필요한 작업을 찾아서 다시 수행할 경우 상담원에게 해당 작업에 대한 스킬을 생성하도록 요청하세요. "방금 수행한 작업을 deploy-staging이라는 스킬로 저장하세요."라고 말합니다. 다음번에는 /deploy-staging을 입력하면 에이전트가 전체 절차를 로드합니다.
메모리 용량 관리
메모리는 의도적으로 제한되어 있습니다(MEMORY.md의 경우 ~2,200자, USER.md의 경우 ~1,375자). 가득 차면 에이전트는 항목을 통합합니다. "메모리 정리" 또는 "이전 Python 3.9 노트 교체 - 현재 3.12 버전입니다."라고 말하여 도움을 줄 수 있습니다.
상담원이 기억하도록 하세요
생산적인 세션이 끝난 후 "다음번에 이것을 기억해 주세요"라고 말하면 상담원이 핵심 내용을 저장합니다. 구체적으로 지정할 수도 있습니다. "우리 CI가 deploy.yml 워크플로와 함께 GitHub Actions를 사용하는 메모리에 저장합니다."
메모리는 고정된 스냅샷입니다. 세션 중에 변경된 내용은 다음 세션이 시작될 때까지 시스템 프롬프트에 표시되지 않습니다. 에이전트는 즉시 디스크에 쓰지만 프롬프트 캐시는 세션 중에 무효화되지 않습니다.
성능 및 비용
프롬프트 캐시를 중단하지 마십시오
대부분의 LLM 제공업체는 시스템 프롬프트 접두어를 캐시합니다. 시스템 프롬프트를 안정적으로 유지하는 경우(동일한 컨텍스트 파일, 동일한 메모리) 세션의 후속 메시지는 훨씬 더 저렴한 캐시 적중을 얻습니다. 세션 중에 모델이나 시스템 프롬프트를 변경하지 마십시오.
한계에 도달하기 전에 /compress를 사용하세요
긴 세션은 토큰을 축적합니다. 응답이 느려지거나 잘리는 것을 발견하면 /compress을 실행하세요. 이는 대화 기록을 요약하여 주요 컨텍스트를 유지하면서 토큰 수를 대폭 줄입니다. /usage을 사용하여 현재 위치를 확인하세요.
병렬 작업 위임
세 가지 주제를 동시에 조사해야 합니까? 에이전트에게 병렬 하위 작업과 함께 delegate_task을 사용하도록 요청하세요. 각 하위 에이전트는 자체 컨텍스트에 따라 독립적으로 실행되며 최종 요약만 반환되므로 기본 대화의 토큰 사용량이 크게 줄어듭니다.
일괄 작업에 Execute_code 사용
터미널 명령을 한 번에 하나씩 실행하는 대신 모든 작업을 한 번에 수행하는 스크립트를 작성하도록 에이전트에 요청하세요. "Python 스크립트를 작성하여 모든 .jpeg 파일 이름을 .jpg로 바꾸고 실행"하는 것이 파일 이름을 개별적으로 바꾸는 것보다 저렴하고 빠릅니다.
올바른 모델을 선택하세요
세션 중에 모델을 전환하려면 /model을 사용하세요. 복잡한 추론 및 아키텍처 결정을 위해 프론티어 모델(Claude Sonnet/Opus, GPT-4o)을 사용합니다. 서식 지정, 이름 바꾸기, 상용구 생성과 같은 간단한 작업을 위해 더 빠른 모델로 전환하세요.
/usage을 주기적으로 실행하여 토큰 소비를 확인하세요. 지난 30일 동안의 사용 패턴을 더 폭넓게 보려면 /insights을 실행하세요.
메시징 팁
홈 채널 설정
선호하는 Telegram 또는 Discord 채팅에서 /sethome을(를) 사용하여 홈 채널로 지정하세요. Cron 작업 결과와 예약된 작업 출력이 여기로 전달됩니다. 이것이 없으면 에이전트는 사전 대응 메시지를 보낼 곳이 없습니다.
/title을 사용하여 세션 구성
/title auth-refactor 또는 /title research-llm-quantization을 사용하여 세션 이름을 지정하세요. 명명된 세션은 hermes sessions list로 쉽게 찾을 수 있으며 hermes -r "auth-refactor"으로 재개됩니다. 이름이 없는 세션이 쌓여 구별이 불가능해집니다.
팀 액세스를 위한 DM 페어링
허용 목록에 대한 사용자 ID를 수동으로 수집하는 대신 DM 페어링을 활성화하세요. 팀원이 봇에게 DM을 보내면 일회성 페어링 코드를 받게 됩니다. hermes pairing approve telegram XKGH5N7P으로 승인하면 간단하고 안전합니다.
도구 진행 표시 모드
/verbose을 사용하여 표시되는 도구 활동의 양을 제어하세요. 메시징 플랫폼에서는 일반적으로 적을수록 더 많습니다. 새로운 도구 호출만 보려면 "새"로 유지하세요. CLI에서 "all"은 에이전트가 수행하는 모든 작업에 대한 만족스러운 실시간 보기를 제공합니다.
메시징 플랫폼에서 세션은 유휴 시간(기본값: 24시간) 이후 또는 매일 오전 4시에 자동 재설정됩니다. 더 긴 세션이 필요한 경우 ~/.hermes/config.yaml에서 플랫폼별로 조정하세요.
보안
신뢰할 수 없는 코드에 Docker 사용
신뢰할 수 없는 저장소로 작업하거나 익숙하지 않은 코드를 실행할 때 Docker 또는 Daytona를 터미널 백엔드로 사용하세요. .env에 TERMINAL_BACKEND=docker을 설정합니다. 컨테이너 내부의 파괴적인 명령은 호스트 시스템에 해를 끼칠 수 없습니다.
# In your.env:
TERMINAL_BACKEND=docker
TERMINAL_DOCKER_IMAGE=hermes-sandbox:latest
Windows 인코딩 함정 방지
Windows에서는 일부 기본 인코딩(예: cp125x)이 모든 유니코드 문자를 나타낼 수 없으므로 테스트나 스크립트에서 파일을 작성할 때 UnicodeEncodeError이 발생할 수 있습니다.
- 명시적인 UTF-8 인코딩으로 파일을 여는 것을 선호합니다.
with open("results.txt", "w", encoding="utf-8") as f:
f.write("✓ All good\n")
- PowerShell에서는 콘솔 및 기본 명령 출력을 위해 현재 세션을 UTF-8로 전환할 수도 있습니다.
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)
이렇게 하면 PowerShell 및 하위 프로세스가 UTF-8로 유지되고 Windows에서만 발생하는 오류를 방지하는 데 도움이 됩니다.
"항상"을 선택하기 전에 검토하세요.
에이전트가 위험한 명령 승인(rm -rf, DROP TABLE 등)을 트리거하면 한 번, 세션, 항상, 거부의 네 가지 옵션이 제공됩니다. "항상"을 선택하기 전에 신중하게 생각하십시오. 해당 패턴을 영구적으로 허용 목록에 추가합니다. 익숙해질 때까지 "세션"부터 시작하세요.
명령 승인은 안전망입니다
Hermes는 실행 전에 선별된 위험한 패턴 목록과 비교하여 모든 명령을 확인합니다. 여기에는 재귀적 삭제, SQL 삭제, 셸로 컬링 파이핑 등이 포함됩니다. 프로덕션 환경에서는 이를 비활성화하지 마십시오. 그럴 만한 이유가 있습니다.
컨테이너 백엔드(Docker, Singularity, Modal, Daytona)에서 실행할 때 컨테이너가 보안 경계이기 때문에 위험한 명령 검사는 건너뛰기됩니다. 컨테이너 이미지가 제대로 잠겨 있는지 확인하세요.
메시징 봇에 허용 목록 사용
터미널 액세스 권한이 있는 봇에는 GATEWAY_ALLOW_ALL_USERS=true을 설정하지 마세요. 항상 플랫폼별 허용 목록(TELEGRAM_ALLOWED_USERS, DISCORD_ALLOWED_USERS) 또는 DM 페어링을 사용하여 에이전트와 상호 작용할 수 있는 사람을 제어하세요.
# Recommended: explicit allowlists per platform
TELEGRAM_ALLOWED_USERS=123456789,987654321
DISCORD_ALLOWED_USERS=123456789012345678
# Or use cross-platform allowlist
GATEWAY_ALLOWED_USERS=123456789,987654321
이 페이지에 있어야 할 팁이 있습니까? 이슈를 열거나 PR하세요. 커뮤니티 참여를 환영합니다.