# 시스템 프롬프트와 리비전

> 에이전트가 모든 대화 전에 읽는 상시 지침을 쓰고, 모든 판을 보관하고, 나빠졌을 때 되돌립니다.

**시스템 프롬프트**는 에이전트가 모든 대화 전에 읽는 상시 지침입니다. 무엇을 하는지, 어떻게 판단해야 하는지, 무엇을 절대 하면 안 되는지를 담습니다. 저장하는 모든 판이 보관되므로 변경은 되돌릴 수 있습니다.

## 언제 쓰는가

에이전트의 *행동*이 잘못됐을 때 프롬프트를 손봅니다 — 엉뚱한 일을 하거나, 형식이 틀렸거나, 이미 알아야 할 것을 묻는 경우입니다. *능력*이 없는 것이라면 [커넥터](/ko/docs/connect/overview/)나 [스킬](/ko/docs/capabilities/skills/)을 손봐야 합니다. 프롬프트로 접근 권한을 대신할 수는 없습니다.

## 프롬프트 쓰기

<Steps>

1. **[에이전트 빌더](/ko/docs/build/agent-builder/)에서 프롬프트 섹션을 엽니다.**

   현재 본문과 지난 리비전 기록이 보입니다.

2. **하는 일을 한 문단으로 밝힙니다.**

   누구를 위해 일하는지, 무엇을 책임지는지, 무엇이 그 밖인지. 경계를 아는 에이전트는 쓸데없는 질문을 덜 합니다.

3. **좋은 결과가 어떤 모습인지 씁니다.**

   대부분의 프롬프트가 건너뛰는 부분이자 결과를 가장 크게 바꾸는 부분입니다. 단계는 에이전트가 알아서 고릅니다. 알아서 맞힐 수 없는 것은 "다 됐다" 에 대한 사용자의 기준입니다.

   *"안 읽은 메일 요약해줘"* 는 전부를 운에 맡깁니다. *"안 읽은 메일을 보낸 사람별로 묶어 요약하되, 나에게 직접 질문한 것은 원문 그대로 인용해서 메일을 열지 않고도 답할 수 있게 해줘"* 는 그렇지 않습니다.

4. **지켜야 할 규칙을 적습니다.**

   항상 해야 하거나 절대 하면 안 되는 것들 — 회사 밖으로는 메일을 보내지 않는다, 출처 문서를 항상 밝힌다, 숫자는 추측하지 않는다 같은 것입니다.

5. **새 리비전으로 저장합니다.**

   이전 본문은 덮어써지지 않고, 돌아갈 수 있는 리비전이 됩니다.

</Steps>

<Screenshot
  name="studio-prompt"
  alt="프롬프트 섹션 — 에이전트 지침을 담은 Markdown 편집기와 글자 수, 그 아래 저장된 리비전 목록."
/>

## 리비전과 되돌리기

저장할 때마다 리비전이 하나 만들어집니다. 기록에는 각 시점의 프롬프트가 남고, 이전 것으로 복원할 수 있습니다.

이것이 프롬프트를 다듬는 일을 도박이 아니라 안전한 작업으로 만듭니다. 무언가를 바꾸고 하루 써보다가 더 나빠졌으면 잘 되던 리비전으로 돌아가면 됩니다. 옛 본문이 뭐였는지 외우고 있을 필요가 없습니다.

<Aside type="note" title="실행은 시작할 때의 리비전을 씁니다">
  리비전 복원은 에이전트의 다음 실행부터 반영됩니다. 이미 돌고 있는 실행은 시작할 때의
  프롬프트로 끝납니다. 방금 고친 내용을 에이전트가 무시하는 것처럼 보이는 이유입니다.
</Aside>

## 무엇을 어디에 둘 것인가

| 두는 곳 | 언제 |
| --- | --- |
| **시스템 프롬프트** | 모든 대화에 적용될 때 — 내 역할, 상시 규칙, 출력 형식 |
| **메시지** | 이번 작업에만 적용될 때 |
| **[성격](/ko/docs/build/identity/)** | 일이 아니라 말투에 관한 것일 때 |
| **[메모리](/ko/docs/capabilities/memory/)** | 한 번 배워서 계속 쓸 사실일 때 — 선호, 이름, 습관 |
| **[스킬](/ko/docs/capabilities/skills/)** | 상시 지침이 아니라 단계가 있는 반복 절차일 때 |

서로 무관한 일 네 가지를 담느라 길어진 프롬프트는 프롬프트를 더 늘리라는 신호가 아니라 두 번째 에이전트가 필요하다는 신호입니다.

## 한계

- 프롬프트는 접근 권한을 주지 못합니다. 캘린더가 필요하면 바인딩된 연결이 있어야 합니다. "너는 내 캘린더에 접근할 수 있다" 라고 써도 아무것도 달라지지 않습니다.
- 리비전 복원은 프롬프트 전체를 교체합니다. 리비전끼리 병합하는 기능은 없습니다.
- 프롬프트는 에이전트별입니다. 두 에이전트가 같은 상시 규칙을 써야 한다면 양쪽에 본문이 있어야 합니다.

## 관련 문서

<CardGrid>
  <LinkCard
    title="시험하고 다듬기"
    href="/ko/docs/build/iterating/"
    description="프롬프트 변경이 실제로 도움이 됐는지 확인하는 방법."
  />
  <LinkCard
    title="메모리"
    href="/ko/docs/capabilities/memory/"
    description="매번 말해주는 대신 한 번 배우게 하는 사실들."
  />
  <LinkCard
    title="스킬"
    href="/ko/docs/capabilities/skills/"
    description="프롬프트에 들어갈 것이 아닌 반복 절차."
  />
</CardGrid>
