EVERYDAY · HOME · IT

중간삶의 잡소리 -ㅅ-a

생활의 작은 발견과 집 안의 기술을 차분하게 기록합니다.

최근 기록 보기
퇴사일기/실험기

AI 비서랑 코딩하다 프로젝트 다 꼬여버린 썰 (폴더 셋팅과 백업)

Cover Image

AI 비서랑 코딩하다 프로젝트 다 꼬여버린 썰 (폴더 셋팅과 백업)

요즘 개발자들 사이에서 AI 코딩 비서 안 쓰면 바보 소리 듣는 세상이다. 나 역시 요새 핫하다는 Cursor니, Claude니 하는 녀석들을 데리고 신나게 프로젝트를 시작했다. "이것 좀 짜줘", "여기에 로그인 기능 붙여줘" 한마디만 툭 던지면 코드를 아주 기가 막히게 척척 뱉어내는 게 신기해서 시간 가는 줄 모르고 작업하고 있었다.

그런데... 어라?

대화가 조금 길어지고 프로젝트 볼륨이 커지기 시작하더니 AI 녀석이 갑자기 이상 행동을 보였다. 예전에 이 악물고 짜둔 멀쩡한 핵심 설계 문서를 지 마음대로 덮어쓰거나, 엉뚱한 폴더에 파일을 생성하고, 경로를 꼬아놓아서 아예 프로젝트 빌드조차 안 되는 낭패를 만드는 게 아닌가... 말 그대로 AI가 컨텍스트 한계를 만나 뇌절을 겪으며 멀쩡히 돌아가던 전체 소스코드를 엉망진창으로 덮어써 버린 심각한 꼬임 순간이었다. ㅠㅠ 식은땀이 쭉 흐르면서 정신이 번뜩 들었다.

'아, 이 녀석들에게 명확한 행동 규칙을 정해주지 않으면 조만간 내 개발 환경 전체를 마비시키겠구나...'

그래서 이대로는 도저히 안 되겠다 싶어, AI 비서와 안전하고 평화롭게 공존하기 위한 나만의 실전 안전망 폴더 세팅과 백업 시스템을 설계했다. 그리고 이 규칙들을 단순한 요령으로만 남겨두는 게 아니라, 프로젝트의 최고 의사결정 문서인 '마스터 골든룰(Golden Rule) 설계서'에 공식 조항으로 명문화(적치)하여 에이전트를 시스템적으로 제어하고 있다. 혹시나 AI랑 Pair programming 하다가 코드가 꼬여 멘탈 털려본 분들이 있다면 꼭 참고해 보시길! ㅋ


1. 서재와 작업장의 철저한 격리 (Sanctuary & Workshop)

가장 먼저 한 일은 AI가 건드릴 수 없는 '안전지대(Sanctuary)'와 신나게 삽질을 해도 되는 '일터(Workshop)'를 물리적으로 완전히 쪼개버린 것이다. 이 격리 원칙은 마스터 골든룰에 아래와 같이 명확하게 박혀 있다.

[Golden Rule - 1-1. 디렉토리 매핑 및 접근 규약]

  • 마스터 설정 폴더 (Read-Only): ~/Documents/Obsidian Vault/
    • 골든 룰, 마스터 PRD 등 전역 기획 문서가 위치하는 안전 영역. AI는 이 디렉토리 내의 파일들을 절대 직접 수정하거나 덮어쓸 수 없다.
  • 실제 작업 폴더 (Read & Write): ~/Documents/connective/auto-video-tools/
    • AI 에이전트가 코드를 작성하고 테스트할 수 있는 실무 공간.

관리 편의를 위해 기획과 규칙 설계는 옵시디언 볼트에서 오직 '인간인 나'의 제어 하에 이루어지며, 작업장으로의 동기화는 철저히 단방향 흐름으로만 제어한다. AI가 아무리 뇌절을 겪어도 최고 헌법만큼은 훼손할 수 없게 물리적으로 바리케이드를 친 셈이다. 흠흠.. ㅋ


2. 사람이 직접 검수하는 2종 장부: TODO.md & HISTORY.md

AI 비서에게 일을 맡겨본 사람들은 공감할 것이다. 대충 에러가 났거나 코드 테스트도 안 해놓고 "요청하신 기능 구현 완료했습니다! ^^" 하고 우기는 뻔뻔함을 말이다.

이 거짓말(?)을 원천 차단하기 위해 작업장의 루트 디렉토리에 장부 두 개를 항시 꺼내두기로 했고, 이 역시 골든룰에 '장부 기반 핑퐁 프로토콜'로 엄격하게 적치했다.

  1. TODO.md: 오늘 당장 해결해야 할 할 일 목록만 적어두는 데일리 장부다.
  2. HISTORY.md: 빌드 성공 여부, 발생했던 에러 내역, 롤백했던 내역들을 쌓아두는 타임라인 로그 장부다.

여기서 가장 중요한 핵심 규칙이 있다.

"AI는 절대로 장부에 완료 표시([x])를 스스로 적을 수 없다."

AI가 어떤 작업을 마치면, 반드시 본인이 수행한 검증 과정과 테스트 결과를 터미널 로그로 나에게 보고해야 한다. 내가 그걸 눈으로 직접 확인하고 빌드 테스트가 성공한 것을 본 뒤에야 비로소 내가 직접 TODO.md[x] 마킹을 해준다. 안 그러면 AI 녀석들이 완료 체크를 자기 마음대로 다 지워버리거나, 버그투성이 코드를 던져두고 퇴근(?)해 버리는 문제가 반복되기 때문이다. ㅠㅠ


3. 최종 방어선, 자동 백업 시스템 (docs/AG)

하지만 인간도 사람인지라 검수를 대충 하거나, AI가 몰래 다른 파일을 건드려 망쳐놓는 것까지 100% 잡아내기는 어렵다. 그래서 마지막으로 도입한 시스템이 바로 '쓰기 직전 자동 백업 메커니즘'이다.

AI가 replace_file_contentwrite_to_file 같은 쓰기 도구를 실행하기 직전에, 무조건 수정될 대상 파일의 원본을 타임스탬프와 함께 백업 폴더인 docs/AG/에 복사해 두도록 마스터 플랜에 명문화했다.

[CRITICAL RULE: WRITE BACKUP] Before executing any tool that modifies, overwrites, or deletes files (e.g., write_to_file, replace_file_content): 1. Copy the target file to 'docs/AG/backup_YYYYMMDD_HHMMSS_<filename>' 2. Proceed with the write/replace operation only after the backup copy is successfully created.

만약 이 작업을 자동화하는 쉘 스크립트를 구현해서 활용하고 싶다면, 아래와 같은 가벼운 Bash 스크립트를 빌드 툴체인이나 pre-commit 훅 등에 응용해 볼 수도 있다.

# !/bin/bash # AI 쓰기 도구 래퍼용 원본 백업 스크립트 예제 TARGET_FILE=$1 BACKUP_DIR="./docs/AG" if [ -f "$TARGET_FILE" ]; then # 백업 폴더가 없으면 생성 mkdir -p "$BACKUP_DIR" # YYYYMMDD_HHMMSS 포맷의 타임스탬프 생성 TIMESTAMP=$(date +"%Y%m%d_%H%M%S") FILENAME=$(basename "$TARGET_FILE") # 백업 수행 cp "$TARGET_FILE" "$BACKUP_DIR/backup_${TIMESTAMP}_${FILENAME}" echo "[Backup] Original file backup completed: $BACKUP_DIR/backup_${TIMESTAMP}_${FILENAME}" else echo "[Backup] Target file does not exist. Skipping backup." fi

이렇게 세팅해 두면 AI가 코드를 아무리 꼬아놓더라도 전혀 쫄 필요가 없다. 그냥 docs/AG 폴더로 들어가서 가장 최근 백업 파일을 원본 파일명으로 복사-붙여넣기만 해주면 1초 만에 완벽하게 롤백이 되기 때문이다!


요약하자면...

  • 서재(Obsidian Vault)작업장(connective/auto-video-tools)을 격리해서 핵심 기획안과 규칙을 보호하자.
  • TODO.md / HISTORY.md 완료 체크는 절대 AI에게 주지 말고 사람이 필터링하자.
  • docs/AG 폴더에 쓰기 전 무조건 원본 백업을 남기게 룰을 세우자.

이 세 가지만 제대로 마스터 플랜에 적치해 두고 관리해도 AI 비서가 뇌절해서 개발 환경 전체를 엉망으로 만드는 문제는 거의 다 막을 수 있다. 이제야 마음 놓고 커피 한잔 마시면서 AI한테 일 던져주고 편하게 잘 만하다. ㅋ 다들 츄라이 츄라이!