sanguk.dev
작성완료
LLM 에이전트 협업을 위한 파일 기반 상태 관리 설계

LLM 에이전트 협업을 위한 파일 기반 상태 관리 설계

프로젝트 루트의 .claude 디렉토리를 활용해 LLM 기반 에이전트들이 DB 없이 마크다운 파일만으로 상태를 공유하고 병렬 협업할 수 있는 구조 설계 가이드

LLMDevelopmentClaude

개요

여러 LLM 에이전트가 하나의 프로젝트에서 병렬로 작업할 때, 각 에이전트는 서로의 상태를 실시간으로 파악하고 충돌 없이 협업해야 한다. 이 문서는 별도의 데이터베이스 없이 프로젝트 루트의 .claude 디렉토리와 마크다운 파일만으로 이를 실현하는 설계 방법을 다룬다.
에이전트는 이 디렉토리 내의 .md 파일들을 읽고 쓰는 것만으로 프로젝트의 전체 상태를 파악하고, 서로의 작업 현황을 추적하며, 충돌 없이 결과물을 공유할 수 있다.


1. 디렉토리 계층 구조

javascript
.claude/
├── agents/          # 에이전트 페르소나 및 역할 정의
├── tasks/           # 작업 단위 추적 및 결과 기록
├── instructions/    # 협업 규칙, 컨벤션, 공통 지침
└── memories/        # 프로젝트 공유 맥락 및 장기 기억

agents/

각 에이전트의 역할, 전문 영역, 행동 원칙을 정의하는 페르소나 파일을 보관한다. 파일명은 {역할명}.md 형식을 따른다.

javascript
agents/
├── orchestrator.md     # 전체 작업 조율 에이전트
├── frontend.md         # 프론트엔드 전담 에이전트
├── backend.md          # 백엔드 전담 에이전트
└── reviewer.md         # 코드 리뷰 전담 에이전트

tasks/

작업의 생성부터 완료까지 전 생애주기를 파일명과 내용으로 추적한다. 파일명은 {YYYYMMDD}-{상태}-{작업ID}-{설명}.md 형식을 따른다.

javascript
tasks/
├── 20250410-TODO-001-api-endpoint-design.md
├── 20250410-IN_PROGRESS-002-user-auth.md
└── 20250410-DONE-003-db-schema.md

상태 전이 순서는 TODO → IN_PROGRESS → REVIEW → DONE 이며, 에이전트가 작업을 시작하거나 완료할 때 파일명을 직접 변경함으로써 상태를 갱신한다.

instructions/

모든 에이전트가 공통으로 따라야 할 컨벤션, 협업 규칙, 도메인 용어 정의를 보관한다.

javascript
instructions/
├── conventions.md      # 파일 작성 규칙, 명명 규칙
├── domain-glossary.md  # 프로젝트 도메인 용어 사전
└── tech-stack.md       # 기술 스택 및 의존성 정의

memories/

에이전트 간 공유해야 할 장기 맥락, 중요 결정 사항, 실패 이력을 축적한다.

javascript
memories/
├── project-context.md      # 프로젝트 배경 및 목표
├── decisions-log.md        # 주요 기술 결정 이력
└── known-issues.md         # 알려진 문제 및 주의사항

2. 파일 기반 워크플로우

작업 시작 시

에이전트가 새로운 작업을 시작하면 tasks/ 디렉토리에 TODO 상태로 파일을 생성하고, 작업을 인수받는 즉시 파일명을 IN_PROGRESS로 변경한다. 이 파일명 변경 자체가 에이전트가 해당 작업을 점유했다는 신호가 된다.

javascript
# 생성
tasks/20250410-TODO-005-payment-integration.md

# 작업 시작 후 즉시 변경
tasks/20250410-IN_PROGRESS-005-payment-integration.md

작업 진행 중

파일 내용의 진행 로그 섹션에 체크박스 목록으로 세부 진행 상황을 기록한다. 다른 에이전트는 이 파일을 읽어 현재 작업 상태를 파악할 수 있다.

작업 완료 시

파일명을 DONE으로 변경하고, 내용에 최종 결과물 경로, 산출물 요약, 후속 작업 제안을 기록한다.

javascript
# 완료 후 변경
tasks/20250410-DONE-005-payment-integration.md

3. 마크다운 템플릿 설계

agents/ 페르소나 정의 템플릿

markdown
# {에이전트 이름}

## 역할
이 에이전트의 담당 영역과 주요 책임을 한 문장으로 기술한다.

## 전문 영역
- 구체적인 전문 기술 또는 도메인 1
- 구체적인 전문 기술 또는 도메인 2

## 행동 원칙
1. 작업 시작 전 반드시 `tasks/`와 `instructions/conventions.md`를 확인한다.
2. 작업 점유 시 파일명을 즉시 `IN_PROGRESS`로 변경한다.
3. 완료 후 결과물 경로와 요약을 반드시 파일에 기록한다.
4. 다른 에이전트의 `IN_PROGRESS` 파일은 수정하지 않는다.

## 소통 방식
- 결과물을 남길 위치: `tasks/{작업ID}-DONE-...md`
- 질문이나 블로킹 이슈: 해당 task 파일의 `이슈` 섹션에 기록

tasks/ 작업 추적 템플릿

markdown

---
id: {작업ID}                          # 예: 005
status: TODO | IN_PROGRESS | REVIEW | DONE
assignee: {담당 에이전트명}              # 예: backend
created_at: YYYY-MM-DD HH:MM
updated_at: YYYY-MM-DD HH:MM
priority: HIGH | MEDIUM | LOW
depends_on: [{선행 작업ID}, ...]        # 없으면 빈 배열

---

# {작업 제목}

## 목표
이 작업이 달성해야 할 구체적인 결과를 기술한다.

## 세부 요구사항
- 요구사항 항목 1
- 요구사항 항목 2

## 진행 로그
- [ ] 세부 작업 1
- [ ] 세부 작업 2
- [ ] 세부 작업 3

## 결과물
<!-- 완료 시 작성 -->
- 산출물 경로: `src/...`
- 변경 요약:

## 이슈
<!-- 블로킹 이슈 또는 다른 에이전트에게 전달할 내용 -->

## 후속 작업 제안
<!-- 이 작업 완료 후 생성이 권장되는 후속 작업 -->

4. 정합성 유지 전략

여러 에이전트가 동시에 파일을 수정할 때 발생하는 충돌을 방지하기 위해 instructions/conventions.md에 다음 규칙을 기록하고 모든 에이전트가 이를 준수하도록 한다.

파일 점유 원칙

에이전트는 작업을 시작하기 전 tasks/ 디렉토리를 스캔해 동일한 작업 ID를 가진 IN_PROGRESS 파일이 존재하는지 확인한다. 존재할 경우 해당 작업을 건드리지 않는다. 존재하지 않을 경우 파일명을 IN_PROGRESS로 변경하는 행위 자체를 점유의 선언으로 간주한다.

markdown
# instructions/conventions.md

## 파일 점유 및 수정 규칙

1. IN_PROGRESS 파일은 assignee 에이전트만 수정할 수 있다.
2. TODO 파일을 IN_PROGRESS로 변경하기 전, 동일 ID의 IN_PROGRESS 파일이 없는지 반드시 확인한다.
3. 한 에이전트가 동시에 점유할 수 있는 작업은 최대 3개다.
4. DONE 파일은 어떤 에이전트도 수정할 수 없다. (append-only)

## 읽기 전용 파일

- `agents/*.md`: 에이전트 본인 파일만 수정 가능
- `instructions/*.md`: orchestrator 에이전트만 수정 가능
- `memories/decisions-log.md`: 결정 사항 추가만 허용, 기존 항목 수정 금지

## 충돌 발생 시 해결 절차

1. 충돌을 발견한 에이전트는 해당 task 파일의 `이슈` 섹션에 상황을 기록한다.
2. orchestrator 에이전트가 이를 감지하고 중재한다.
3. 중재 결과는 `memories/decisions-log.md`에 기록한다.

전체 지도 읽기 규칙

에이전트가 프로젝트에 처음 진입하거나 현황 파악이 필요할 때는 다음 순서로 파일을 읽는다.

  1. memories/project-context.md — 프로젝트 목표와 배경 파악
  2. instructions/conventions.md — 협업 규칙 확인
  3. tasks/ 전체 목록 스캔 — 현재 작업 현황 파악
  4. agents/{자신의 역할}.md — 자신의 역할과 원칙 재확인
    이 네 단계만으로 에이전트는 별도의 외부 시스템 없이 프로젝트의 현재 상태, 진행 중인 작업, 자신이 해야 할 일을 모두 파악할 수 있다.

5. CLAUDE.md를 활용한 에이전트 진입점 설계

.claude 디렉토리 기반 상태 관리 체계를 운영할 때, 프로젝트 루트에 CLAUDE.md 파일을 두면 에이전트가 프로젝트에 진입하는 순간부터 일관된 방식으로 동작하도록 유도할 수 있다.

CLAUDE.md의 역할

CLAUDE.md는 Claude 에이전트가 프로젝트 디렉토리에서 작업을 시작할 때 자동으로 읽는 파일이다. 이 파일에 .claude 디렉토리의 존재와 사용 방법을 명시해두면, 에이전트가 별도의 안내 없이도 파일 기반 협업 체계를 즉시 인식하고 따를 수 있다.
이 파일은 에이전트에게 다음을 전달하는 역할을 한다.

  • 프로젝트 개요와 기술 스택
  • .claude 디렉토리 구조와 각 하위 디렉토리의 역할
  • 작업 시작 전 반드시 수행해야 하는 사전 확인 절차
  • 파일 점유, 상태 전이, 기록 방식 등 핵심 협업 규칙 요약

CLAUDE.md 작성 예시

markdown
# 프로젝트명

## 프로젝트 개요
이 프로젝트는 [설명]을 목적으로 한다.

## 기술 스택
- Frontend: Next.js, TypeScript, Tailwind CSS
- Backend: Node.js, Prisma, PostgreSQL

## 에이전트 작업 시작 전 필수 확인 절차

이 프로젝트는 `.claude/` 디렉토리를 통해 에이전트 간 상태를 공유한다.
작업을 시작하기 전에 반드시 아래 순서로 파일을 읽어라.

1. `.claude/memories/project-context.md` — 프로젝트 목표와 배경
2. `.claude/instructions/conventions.md` — 협업 규칙 및 컨벤션
3. `.claude/tasks/` 전체 목록 스캔 — 현재 작업 현황
4. `.claude/agents/{자신의 역할}.md` — 자신의 역할과 원칙

## 핵심 협업 규칙 요약

- 작업 시작 시 task 파일명을 `IN_PROGRESS`로 변경하여 점유를 선언한다.
- 다른 에이전트의 `IN_PROGRESS` 파일은 수정하지 않는다.
- 완료 시 파일명을 `DONE`으로 변경하고 결과물 경로를 기록한다.
- `DONE` 파일은 append-only이며 내용을 수정할 수 없다.

배치 위치와 탐색 범위

CLAUDE.md는 프로젝트 루트뿐 아니라 하위 디렉토리에도 배치할 수 있다. 에이전트는 현재 작업 디렉토리와 그 상위 경로를 순서대로 탐색하며 CLAUDE.md를 찾기 때문에, 특정 서브모듈이나 패키지 디렉토리에 별도의 CLAUDE.md를 두어 해당 영역에 특화된 지침을 제공하는 것도 가능하다.
또한 CLAUDE.md 안에서 @{파일경로} 문법을 사용하면 외부 파일을 인라인으로 참조할 수 있다. 이를 활용하면 CLAUDE.md 자체는 간결하게 유지하면서, 상세 내용은 .claude/instructions/ 하위의 파일로 분리하여 관리할 수 있다.

markdown
## 협업 규칙
@.claude/instructions/conventions.md

## 도메인 용어
@.claude/instructions/domain-glossary.md

운영 시 권장 사항

CLAUDE.md는 프로젝트의 규모가 커지거나 팀 구성이 변경될 때 함께 갱신되어야 한다. 이 파일이 실제 .claude 디렉토리 구조와 일치하지 않으면 에이전트가 잘못된 경로를 참조하거나 규칙을 오해할 수 있다. memories/decisions-log.md에 주요 변경 이력을 기록하는 것과 마찬가지로, CLAUDE.md의 내용 변경도 버전 관리 대상으로 취급하는 것이 바람직하다.


댓글

댓글 작성

0 / 1000