1편에서 조직도를 그렸고, 2편에서 에이전트를 처음 만들어 SOUL·IDENTITY·USER를 주입했습니다. 이번 편은 한 단계 더 깊이 들어갑니다. 차은별 봇이 실제로 사용하는 여섯 개 MD 파일의 역할, 작성 원칙, 그리고 왜 이 구조가 필요한지를 강의 자료처럼 정리합니다.
에이전트는 코드가 아니라 문서로 움직인다. MD 파일이 에이전트의 뇌다.
왜 MD 파일인가
LLM 기반 에이전트는 "지금 대화에 있는 텍스트"만 본다. 이것이 핵심 제약입니다. 따라서 에이전트가 일관되게 행동하게 하려면 매 실행마다 컨텍스트에 주입할 수 있는 정보가 필요합니다.
데이터베이스에 넣을 수도 있고, JSON에 넣을 수도 있습니다. 하지만 MD 파일을 쓰는 이유는 세 가지입니다.
인간 가독성
에이전트를 설계하는 사람도 읽고 수정할 수 있어야 합니다. JSON이나 DB 스키마는 진입 장벽이 높습니다. MD는 텍스트 에디터 하나로 충분합니다.
LLM 친화성
LLM은 자연어로 학습되어 있습니다. 구조화된 마크다운 문서는 LLM이 가장 잘 이해하는 형식입니다. 테이블, 헤더, 코드블록 모두 LLM이 잘 파싱합니다.
버전 관리 가능
Git으로 히스토리를 추적할 수 있습니다. 에이전트의 성격이 언제 바뀌었는지, 어떤 스킬이 추가되었는지 diff로 확인할 수 있습니다.
여섯 개 파일의 전체 지도
차은별 봇의 워크스페이스는 다음 구조입니다.
/workspace/chaeunbyul/
├── SOUL.md ← 존재 이유, 가치관, 금지 행동
├── IDENTITY.md ← 이름, 직함, 말투, 외형 설정
├── USER.md ← 운영자(나)에 대한 정보
├── MEMORY.md ← 학습한 사실, 업데이트되는 기억
├── TOOLS.md ← 사용 가능한 외부 도구 목록
└── SKILLS.md ← 반복 작업의 절차 정의
각 파일은 독립적이지만 서로를 참조합니다. SOUL이 방향을 정하고, IDENTITY가 표현 방식을 정하고, USER가 대화 상대를 정의하고, MEMORY가 누적 학습을 담고, TOOLS와 SKILLS가 행동 능력을 정의합니다.
SOUL.md — 존재 이유와 가치관
SOUL은 에이전트의 가장 깊은 레이어입니다. 이 파일이 없으면 에이전트는 매 실행마다 다른 성격으로 동작할 수 있습니다.
SOUL.md가 담아야 하는 것:
- 이 에이전트는 왜 존재하는가 (존재 목적)
- 어떤 원칙으로 판단하는가 (가치관)
- 절대 하지 말아야 할 것은 무엇인가 (금지 행동)
- 어떤 상황에서도 유지해야 할 것은 무엇인가 (불변 규칙)
차은별의 SOUL.md는 이렇게 시작합니다.
# SOUL — 차은별의 존재 이유
## 핵심 목적
나는 SNS에서 일상의 아름다움을 발견하고 공유하는 콘텐츠 큐레이터다.
인위적이지 않고, 과장되지 않고, 진심에서 우러나는 글을 쓴다.
## 가치관
- 진정성: 트렌드보다 진심을 우선한다
- 절제: 하루에 정해진 횟수만 올린다
- 일관성: 어떤 날이든 같은 목소리로 말한다
## 금지 행동
- 광고성 문구 사용 금지
- 다른 계정 언급 또는 태그 금지
- 부정적이거나 분쟁을 유발하는 콘텐츠 금지
왜 이 구조인가? LLM은 "좋은 게 뭔지 알아서 해줘"가 아니라 "이것은 하고 저것은 하지 말아라"는 명시적 규칙에 더 잘 반응합니다. 추상적인 철학보다 구체적인 금지 항목이 실제 동작에 더 직접적인 영향을 줍니다.
IDENTITY.md — 이름, 직함, 말투
SOUL이 내면이라면 IDENTITY는 외면입니다. 같은 정보를 어떤 말투로, 어떤 어조로 전달하느냐를 정의합니다.
# IDENTITY — 차은별
## 기본 정보
- 이름: 차은별 (Chaeunbyul)
- 직함: SNS 콘텐츠 큐레이터
- 소속: 오픈클로 스튜디오
## 말투 원칙
- 한국어, 존댓말 없음 (친구처럼)
- 짧고 리드미컬한 문장
- 이모지는 최대 2개 / 포스트
- 해시태그는 3개 이하
## 성격 키워드
감성적, 관찰력 있음, 따뜻함, 유머 약간
IDENTITY에서 중요한 것은 말투 원칙입니다. "친근하게 써줘"라는 지시는 모호합니다. "존댓말 없음, 짧은 문장, 이모지 최대 2개"는 명확합니다. LLM에게 줄 때는 항상 측정 가능한 기준이 필요합니다.
USER.md — 운영자 컨텍스트
에이전트가 "나"에 대해 알아야 하는 정보입니다. 차은별 봇은 내가 만들고 운영하는 봇입니다. 내 성향, 내 취향, 내가 싫어하는 것을 알아야 내 대신 일을 잘 할 수 있습니다.
# USER — 운영자 정보
## 운영자 기본 정보
- 이름: DM (디엠)
- 역할: 스튜디오 대표 / 자동화 엔지니어
- 주요 관심사: AI 자동화, 시각 콘텐츠, 일상 기록
## 운영 스타일
- 매일 아침 9시에 자동 포스팅 선호
- 저녁 게시물은 감성적인 톤으로
- 주말에는 포스팅 빈도 낮춤
## 피드백 히스토리
- "너무 긴 글은 별로야, 2-3문장으로 줄여줘"
- "이미지 설명보다 감정 표현에 집중해줘"
USER.md는 운영하면서 계속 업데이트합니다. 처음에는 비어 있어도 됩니다. 봇을 쓰면서 "이건 별로야", "이렇게 해줘"라는 피드백이 쌓이면 이 파일에 기록합니다.
MEMORY.md — 누적되는 기억
MEMORY는 가장 역동적인 파일입니다. 에이전트가 학습한 사실, 운영 중에 발생한 중요한 사건, 기억해야 할 패턴이 축적됩니다.
기억해야 할 사실
- 3월 15일 벚꽃 포스트가 가장 높은 반응
- 밤 10시 이후 게시물은 조회수 낮음
- 음식 사진 + 감성 문구 조합이 효과적
- 짧은 문장(2줄 이하) 저장율 높음
운영 이력
- 2026-03-01: 첫 자동 포스팅 시작
- 2026-03-10: 이미지 생성 파이프라인 연동
- 2026-03-15: ComfyUI 워크플로우 업그레이드
- 2026-03-20: 다중 환경 파이프라인 완성
MEMORY.md의 핵심은 에이전트가 직접 업데이트하지 않는다는 점입니다. 운영자(나)가 주기적으로 결과를 분석하고 수동으로 기록합니다. 자동 업데이트를 구현할 수도 있지만, 검증되지 않은 정보가 뇌에 쌓이는 것을 막기 위해 현재는 수동 관리를 선택했습니다.
TOOLS.md — 사용 가능한 도구 목록
TOOLS는 에이전트가 "어떤 외부 API와 도구를 쓸 수 있는지" 정의합니다. LLM 자체는 텍스트 생성만 합니다. 실제로 이미지를 만들고, 게시물을 올리고, 파일을 읽는 것은 외부 도구를 통해서만 가능합니다.
# TOOLS — 차은별이 사용하는 도구
## 이미지 생성
- 도구: ComfyUI API
- 엔드포인트: http://[windows-server]:8188/api
- 사용 시점: 포스팅용 이미지 생성 요청 시
## SNS 게시
- 도구: Threads API (Meta)
- 엔드포인트: https://graph.threads.net/v1.0/
- 사용 시점: 완성된 텍스트 + 이미지 게시 시
## 이미지 호스팅
- 도구: 호스팅어 파일 서버 (SFTP)
- 사용 시점: 생성된 이미지를 공개 URL로 변환 시
## 스케줄러
- 도구: Python APScheduler (Linux 서버)
- 사용 시점: 정해진 시간에 자동 실행 시
TOOLS.md를 별도로 분리하는 이유는 도구는 자주 바뀌기 때문입니다. API 엔드포인트가 바뀌거나, 새 도구가 추가되거나, 기존 도구가 제거될 때 TOOLS.md만 수정하면 됩니다. SOUL이나 IDENTITY를 건드리지 않아도 됩니다.
SKILLS.md — 반복 작업의 절차 정의
SKILLS는 가장 실용적인 파일입니다. 에이전트가 자주 수행하는 반복 작업을 절차(SOP, Standard Operating Procedure)로 정의합니다.
# SKILLS — 차은별의 작업 절차
## SKILL: 일일 포스팅 생성
1. MEMORY.md에서 오늘 날씨/계절 정보 확인
2. USER.md에서 운영자의 최근 피드백 확인
3. SOUL.md 원칙에 따라 텍스트 초안 작성
4. IDENTITY.md 말투로 최종 문체 조정
5. ComfyUI API로 이미지 생성 (프롬프트: 텍스트 기반)
6. 이미지 호스팅어 업로드 → 공개 URL 획득
7. Threads API로 텍스트 + 이미지 게시
## SKILL: 이미지 프롬프트 작성
1. 포스팅 텍스트의 핵심 감정/장면 추출
2. ComfyUI 형식 프롬프트로 변환
3. 네거티브 프롬프트 추가 (블러, 저해상도 등 제외)
4. 해상도: 1080×1080 (정사각형 SNS 기준)
SKILLS.md가 없으면 어떻게 되나?
매번 "이미지 만들어서 올려줘"라고 지시할 때마다 에이전트는 절차를 새로 추론합니다. 실행할 때마다 순서가 달라질 수 있고, 빠뜨리는 단계가 생깁니다. SKILLS.md는 이 절차를 한 번 정의해두고 매번 재사용하는 메커니즘입니다.
여섯 파일의 업데이트 주기
거의 변하지 않는 파일
SOUL.md — 에이전트의 본질이 바뀌지 않는 한 수정하지 않습니다. 보통 최초 설계 시 한 번 작성하고 끝.
IDENTITY.md — 말투나 외형을 바꿀 때만 수정. 분기에 한 번 리뷰.
자주 업데이트하는 파일
USER.md — 피드백이 생길 때마다 추가. 주 1회 리뷰.
MEMORY.md — 중요한 운영 결과가 생길 때 추가. 월 1회 정리.
TOOLS.md — 새 도구 연동 또는 API 변경 시 수정.
SKILLS.md — 새 반복 작업이 생기거나 절차가 개선될 때 수정.
실전: 파일을 작성하는 순서
처음 에이전트를 만들 때 어떤 순서로 파일을 작성해야 할까요?
1단계 — SOUL 먼저: 이 에이전트가 왜 존재하는지부터 정합니다. 목적이 불명확하면 나머지 파일을 써봤자 방향이 없습니다.
2단계 — IDENTITY 작성: SOUL의 방향이 정해지면 어떤 표현 방식으로 전달할지 정합니다. 말투, 어조, 길이 제한.
3단계 — USER 작성: 운영자인 내 성향과 운영 스타일을 정리합니다. 처음에는 3~5줄로 시작해도 됩니다.
4단계 — TOOLS 작성: 실제로 사용할 도구와 API 목록. 이 시점에서 실제 연동 테스트도 함께 진행합니다.
5단계 — SKILLS 작성: 처음에는 1개 스킬부터. 운영하면서 추가합니다.
6단계 — MEMORY는 나중에: 처음에는 비어 있어도 됩니다. 운영 데이터가 쌓이면 채워집니다.
이 구조에서 배운 것
6개 파일로 에이전트를 설계하면서 가장 크게 배운 것은 명확성의 힘입니다.
"좋은 글 써줘"보다 "2문장 이내, 감성적 어조, 이모지 최대 2개"가 훨씬 좋은 결과를 냅니다. LLM은 판단력이 아니라 지시를 따르는 시스템입니다. 모호한 지시는 모호한 결과를 낳습니다.
두 번째로 배운 것은 분리의 가치입니다. SOUL에 TOOLS를 합치고 싶을 때가 있습니다. 하지만 분리해두면 나중에 API가 바뀌었을 때 TOOLS만 수정하면 됩니다. SOUL을 건드릴 필요가 없습니다. 관심사의 분리(Separation of Concerns)는 소프트웨어뿐 아니라 에이전트 설계에도 그대로 적용됩니다.
다음 편에서는 이 여섯 개 파일을 가진 차은별 봇이 실제로 어떻게 이미지를 생성하고 SNS에 올리는지, 다중 환경 자동화 파이프라인을 다룹니다. Linux 봇 서버에서 출발해 Windows ComfyUI를 거쳐 호스팅어 이미지 서버를 통과하고 Threads API로 끝나는 4단계 파이프라인을 해부합니다.

