본문으로 건너뛰기

Personality와 SOUL.md

Hermes Agent의 성격(personality)은 완전히 사용자 정의할 수 있습니다. SOUL.md는 **기본 정체성(primary identity)**입니다. 시스템 프롬프트의 첫 번째 위치에 들어가며 에이전트가 누구인지 정의합니다.

  • SOUL.md - HERMES_HOME에 있는 지속 페르소나 파일이며 에이전트 정체성으로 사용됩니다(시스템 프롬프트 슬롯 #1).
  • 내장 또는 사용자 정의 /personality 프리셋 - 세션 단위 시스템 프롬프트 오버레이입니다.

Hermes가 어떤 존재로 말하고 행동하는지 바꾸고 싶거나, 완전히 다른 에이전트 페르소나로 교체하고 싶다면 SOUL.md를 수정하세요.

SOUL.md 동작 방식

Hermes는 이제 기본 SOUL.md를 다음 위치에 자동으로 생성합니다.

~/.hermes/SOUL.md

더 정확히는 현재 인스턴스의 HERMES_HOME을 사용합니다. 사용자 정의 홈 디렉터리로 Hermes를 실행하면 다음 파일을 사용합니다.

$HERMES_HOME/SOUL.md

중요한 동작

  • SOUL.md는 에이전트의 기본 정체성입니다. 시스템 프롬프트의 슬롯 #1을 차지하며 하드코딩된 기본 정체성을 대체합니다.
  • SOUL.md가 아직 없으면 Hermes가 시작용 SOUL.md를 자동 생성합니다.
  • 기존 사용자 SOUL.md 파일은 절대 덮어쓰지 않습니다.
  • Hermes는 HERMES_HOME에서만 SOUL.md를 로드합니다.
  • Hermes는 현재 작업 디렉터리에서 SOUL.md를 찾지 않습니다.
  • SOUL.md가 있지만 비어 있거나 로드할 수 없으면 내장 기본 정체성으로 페일오버합니다.
  • SOUL.md에 내용이 있으면 보안 검사와 길이 제한 처리를 거친 뒤 그대로 주입됩니다.
  • SOUL.md는 컨텍스트 파일 섹션에 중복으로 들어가지 않습니다. 정체성으로 한 번만 나타납니다.

이 때문에 SOUL.md는 단순한 추가 계층이 아니라 사용자 또는 인스턴스별 실제 정체성이 됩니다.

왜 이런 설계인가요?

성격을 예측 가능하게 유지하기 위해서입니다.

Hermes가 실행된 디렉터리마다 SOUL.md를 로드한다면 프로젝트가 바뀔 때 성격도 예상치 못하게 바뀔 수 있습니다. HERMES_HOME에서만 로드하면 성격은 Hermes 인스턴스 자체에 속합니다.

사용자에게 설명하기도 쉬워집니다.

  • "Hermes의 기본 성격을 바꾸려면 ~/.hermes/SOUL.md를 수정하세요."

수정할 위치

대부분의 사용자는:

~/.hermes/SOUL.md

사용자 정의 홈을 사용한다면:

$HERMES_HOME/SOUL.md

SOUL.md에는 무엇을 넣어야 하나요?

지속적인 말투와 성격 지침을 넣는 데 사용합니다. 예:

  • 어조
  • 커뮤니케이션 스타일
  • 직접성 수준
  • 기본 상호작용 스타일
  • 스타일상 피해야 할 것
  • Hermes가 불확실성, 이견, 모호함을 다루는 방식

다음 용도로는 덜 적합합니다.

  • 일회성 프로젝트 지침
  • 파일 경로
  • 저장소 규칙
  • 임시 워크플로 세부사항

그런 내용은 SOUL.md가 아니라 AGENTS.md에 들어가야 합니다.

좋은 SOUL.md 내용

좋은 SOUL 파일은:

  • 컨텍스트가 바뀌어도 안정적으로 적용됩니다.
  • 여러 대화에 적용될 만큼 넓습니다.
  • 말투를 실제로 바꿀 만큼 구체적입니다.
  • 작업별 지침이 아니라 커뮤니케이션과 정체성에 집중합니다.

예제

# Personality

You are a pragmatic senior engineer with strong taste.
You optimize for truth, clarity, and usefulness over politeness theater.

## Style
- Be direct without being cold
- Prefer substance over filler
- Push back when something is a bad idea
- Admit uncertainty plainly
- Keep explanations compact unless depth is useful

## What to avoid
- Sycophancy
- Hype language
- Repeating the user's framing if it's wrong
- Overexplaining obvious things

## Technical posture
- Prefer simple systems over clever systems
- Care about operational reality, not idealized architecture
- Treat edge cases as part of the design, not cleanup

Hermes가 프롬프트에 주입하는 것

SOUL.md 내용은 시스템 프롬프트의 슬롯 #1, 즉 에이전트 정체성 위치에 직접 들어갑니다. 그 주변에 감싸는 문구는 추가되지 않습니다.

내용은 다음 과정을 거칩니다.

  • 프롬프트 인젝션 검사
  • 너무 클 경우 길이 제한에 맞게 잘라내기

파일이 비어 있거나 공백만 있거나 읽을 수 없으면 Hermes는 내장 기본 정체성으로 페일오버합니다. ("You are Hermes Agent, an intelligent AI assistant created by Nous Research...") skip_context_files가 설정된 경우에도 이 페일오버가 적용됩니다. 예: 서브에이전트/위임 컨텍스트.

보안 검사

SOUL.md는 포함되기 전에 다른 컨텍스트 파일처럼 프롬프트 인젝션 패턴 검사를 거칩니다.

따라서 이상한 메타 지시를 몰래 넣기보다 페르소나와 말투에 집중하는 편이 좋습니다.

SOUL.md vs AGENTS.md

가장 중요한 구분입니다.

SOUL.md

다음에 사용합니다.

  • 정체성
  • 어조
  • 스타일
  • 기본 커뮤니케이션 방식
  • 성격 수준의 행동 방식

AGENTS.md

다음에 사용합니다.

  • 프로젝트 아키텍처
  • 코딩 규칙
  • 도구 선호도
  • 저장소별 워크플로
  • 명령, 포트, 경로, 배포 메모

유용한 규칙:

  • 어디서든 따라야 한다면 SOUL.md에 넣습니다.
  • 특정 프로젝트에 속한 내용이라면 AGENTS.md에 넣습니다.

SOUL.md vs /personality

SOUL.md는 지속 기본 성격 설정입니다.

/personality는 현재 시스템 프롬프트를 바꾸거나 보완하는 세션 단위 오버레이입니다.

즉:

  • SOUL.md = 기준 말투
  • /personality = 임시 모드 전환

예:

  • 실용적인 기본 SOUL을 유지하다가 튜터링 대화에서는 /personality teacher 사용
  • 간결한 SOUL을 유지하다가 브레인스토밍에는 /personality creative 사용

내장 personality 프리셋

Hermes에는 /personality로 전환할 수 있는 내장 personality 프리셋이 포함되어 있습니다.

이름설명
helpful친근한 범용 어시스턴트
concise짧고 핵심적인 응답
technical자세하고 정확한 기술 전문가
creative혁신적이고 틀 밖에서 생각하는 모드
teacher명확한 예제를 드는 인내심 있는 교육자
kawaii귀여운 표현, 반짝이는 분위기, 열정 ★
catgirl고양이 같은 표현을 쓰는 neko-chan, nya~
pirate기술을 잘 아는 Captain Hermes
shakespeare극적인 문체가 있는 셰익스피어식 산문
surfer완전히 여유로운 브로 감성
noir하드보일드 탐정 내레이션
uwuuwu 말투를 쓰는 극대화된 귀여움
philosopher모든 질의를 깊게 사유하는 모드
hypeMAXIMUM ENERGY AND ENTHUSIASM!!!

명령으로 personality 전환

CLI

/personality
/personality concise
/personality technical

메시징 플랫폼

/personality teacher

이 명령들은 편리한 오버레이입니다. 다만 전역 SOUL.md는 오버레이가 의미 있게 바꾸지 않는 한 Hermes의 지속 기본 성격을 계속 제공합니다.

config의 사용자 정의 personality

~/.hermes/config.yamlagent.personalities 아래에 이름이 있는 사용자 정의 personality 프리셋을 정의할 수도 있습니다.

agent:
personalities:
codereviewer: >
You are a meticulous code reviewer. Identify bugs, security issues,
performance concerns, and unclear design choices. Be precise and constructive.

그런 다음 다음과 같이 전환합니다.

/personality codereviewer

견고한 기본 설정은 다음과 같습니다.

  1. ~/.hermes/SOUL.md에 신중하게 작성한 전역 SOUL.md를 둡니다.
  2. 프로젝트 지침은 AGENTS.md에 넣습니다.
  3. 임시 모드 전환이 필요할 때만 /personality를 사용합니다.

이렇게 하면:

  • 안정적인 말투
  • 올바른 위치에 놓인 프로젝트별 행동 지침
  • 필요할 때만 쓰는 임시 제어

을 함께 얻을 수 있습니다.

personality 설정이 전체 프롬프트와 상호작용하는 방식

큰 틀에서 프롬프트 스택은 다음을 포함합니다.

  1. SOUL.md(에이전트 정체성 - SOUL.md를 사용할 수 없으면 내장값으로 페일오버)
  2. 도구 인식 행동 지침
  3. 메모리/사용자 컨텍스트
  4. 스킬 지침
  5. 컨텍스트 파일(AGENTS.md, .cursorrules)
  6. 타임스탬프
  7. 플랫폼별 포매팅 힌트
  8. /personality 같은 선택 사항인 시스템 프롬프트 오버레이

SOUL.md가 기반이며, 나머지는 그 위에 쌓입니다.

CLI 외형과 대화 성격

대화 성격과 CLI 외형은 별개입니다.

  • SOUL.md, agent.system_prompt, /personality는 Hermes가 말하는 방식에 영향을 줍니다.
  • display.skin/skin은 터미널에서 Hermes가 보이는 방식에 영향을 줍니다.

터미널 외형은 스킨과 테마를 참고하세요.