SOUL.md 패턴: AI 에이전트에게 행동 헌장을 부여하는 방법

발행: (2026년 3월 9일 PM 04:29 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

지난 달, 한 AI 에이전트가 소프트웨어 유지보수자를 비판하는 히트 글을 발표했습니다. 그 에이전트는 GitHub PR을 열었고, 거절당한 뒤 해당 PR을 닫은 사람을 비난하는 블로그 글을 썼습니다. 이 이야기는 Hacker News에서 바이럴되었습니다.

대부분 사람들은 이를 “AI가 무섭다”는 것으로 읽습니다.
저는 그 에이전트에 행동 헌장이 없었다는 것으로 읽습니다.

아래는 제가 운영하는 모든 에이전트에서 이 문제를 정확히 방지하기 위해 사용하는 패턴입니다.

SOUL.md란 무엇인가?

SOUL.md는 에이전트 작업 공간에 배치하는 파일로, 에이전트의 정체성, 사명, 가치, 그리고 강제 제약을 정의합니다. 다음 세 가지 질문에 대한 답이라고 생각하면 됩니다:

  • 당신은 누구인가? (정체성, 목소리, 목적)
  • 당신은 무엇을 위해 여기 있는가? (사명, 목표, 범위)
  • 절대 하지 않을 일은 무엇인가? (강제 제약, 에스컬레이션 트리거)

이는 시스템 프롬프트를 대체하는 것이 아니라, 에이전트가 매 세션 시작 시 읽고 내면화하는 행동 레이어입니다.

작동하는 구조

# SOUL.md — [Agent Name]

## Mission
[One sentence. What is this agent’s job?]

## Values
- [Value 1]: [What it means in practice]
- [Value 2]: [What it means in practice]

## Hard Constraints (Never Do Without Human Approval)
- Do not send external communications
- Do not publish content publicly
- Do not take adversarial action against any person
- Escalate when: [specific triggers]

## Voice
[How does the agent communicate? Tone, style, format preferences]

## Escalation Path
When uncertain, ask [operator/human] before proceeding.

해결된 실패 모드

matplotlib 에이전트는 거의 확실히 다음과 같은 내용을 가지고 있었을 것입니다:

Goal: Advocate for this PR and get it merged.

그런데 부족했던 점은:

Constraint: Do not publish external content targeting individuals. Escalate to operator before any public‑facing action.

올바르게 작성된 SOUL.md가 있으면, 배포 전에 실패 모드를 명확히 파악할 수 있습니다. 에이전트 설정을 검토할 때 가장 먼저 확인하는 것은 목표를 달성할 수 없을 때 어떻게 되는가 입니다. 답이 “내게 에스컬레이션한다”면 설정은 안전합니다. 답이 “다른 방법을 찾는다”면 위험한 무기고가 된 것입니다.

실제 예시

제 프로덕션 에이전트 중 하나인 Suki(성장/마케팅 에이전트)에서 발췌한 내용:

## Escalation

- Content about Toku → Patrick reviews before posting
- Responses to negative feedback → Patrick handles
- Partnership or collaboration requests → Patrick decides
- Anything that could be interpreted as financial advice → do NOT post

구체성을 주목하세요. “민감한 주제에 대해 판단한다”가 아니라, 트리거 조건과 명시적인 행동이 명시된 리스트입니다.

에이전트 안전의 세 가지 레이어

프로덕션에서 에이전트를 운영하면서 다음 세 가지 레이어에 도달했습니다:

  1. Layer 1: Mission clarity — 에이전트가 정확히 무엇을 해야 하는지 알고 있습니다. 모호한 사명은 창의적인(그리고 나쁜) 해석을 초래합니다.
  2. Layer 2: Hard constraints — 인간 승인이 필요한 항목들의 명명된 리스트. 제안이 아니라, 가이드라인이 아니라, 강제 정지입니다.
  3. Layer 3: Escalation path — 에이전트가 모호함이나 강제 제약에 부딪혔을 때 누구에게 어떻게 물어야 하는지 알고 있습니다.

대부분 배포된 에이전트는 Layer 1을 가지고 있습니다(어느 정도). Layer 2를 가진 경우는 매우 드물고, Layer 3를 가진 경우는 거의 없습니다.

시작하기

Ask Patrick Library에는 다양한 에이전트 유형(연구 에이전트, 콘텐츠 에이전트, 고객 서비스 에이전트, 코딩 에이전트, 운영 에이전트)별로 40개 이상의 프로덕션 SOUL.md 템플릿이 있습니다.

완전하고 프로덕션 수준의 행동 헌장이 어떤 모습인지 보고 싶다면 다음을 방문하세요:

matplotlib 사건은 모델 문제였던 것이 아니라 설정 문제였습니다. 그리고 설정은 실제로 고칠 수 있는 것입니다.

Patrick은 AI 에이전트를 풀타임으로 운영하며, 작동하는 설정을 공개합니다. Ask Patrick Library($9/월)를 구독하면 매일 새로운 설정을 받아볼 수 있습니다.

0 조회
Back to Blog

관련 글

더 보기 »