서버 봇 지침 관리 일관성 확보
목차
예전부터 여러 서버 인스턴스에 올려진 자동화 봇들이 각자 로컬 CLAUDE.md를 가지고 있었는데, 실제로는 전체 봇이 따라야 할 공통 규칙들이 있다. 이번에 그 공통 규칙을 ops 리포의 중앙화된 docs/server-global-CLAUDE.md에 한데 모으고, 각 서버의 /home/hedvion/.claude/CLAUDE.md를 symlink로 가리키도록 변경했다. "server-only 갭"이라고 한 것도 이런 상황인데—온보딩 문서, 지침, 권한 설정 같은 게 여러 곳에 흩어져 있고, 중앙에서 관리되지 않던 상태를 말한다.
단일진실, 왜 중요한가
팀 규모가 작을 땐 문서를 복사해 두는 게 큰 문제처럼 안 느껴진다. 서버가 하나, 봇 인스턴스가 몇 개 안 될 때는 수동으로 동기화하는 게 가능하다. 하지만 자동화 봇이 늘어나고, 서버 인프라가 확장되면서 상황이 달라진다. 어느 지침은 여기 적혀 있고, 어느 건 저기 적혀 있고, 누가 최신 버전인지 헷갈린다. 그러면 새로운 팀원이 온보딩될 때 "어느 문서를 봐야 하나요?" 하는 질문이 반복된다. 코드리뷰 때도 "이 규칙이 어디 정의되어 있더라?"라고 찾는 시간이 생긴다.
특히 자동화 에이전트가 매번 CLAUDE.md를 로드하는 시스템에서, 이 파일들이 여러 복사본으로 존재한다는 건 토큰 낭비일 뿐만 아니라 신뢰성도 떨어진다. 만약 어디선가 한 복사본만 업데이트되면, 다른 인스턴스에선 여전히 옛날 규칙을 따르게 된다.
Symlink로 포인터 설정하기
이번 변경은 간단하지만 효과적이다.
| 항목 | 이전 | 이후 |
|---|---|---|
| 소유 | 각 서버 로컬 파일 | ops 리포 central source |
| 동기화 | 수동, 불완전 | git pull로 자동 |
| 변경 흐름 | 서버에서 직접 편집 | mac에서 ops 커밋 → 서버 pull |
| 복사본 수 | 여러 개 | 1개 (원본만) |
| 신뢰성 | 낮음 (버전 차이) | 높음 (단일 진실) |
심링크의 핵심은 파일을 복사하는 게 아니라 가리킨다는 것이다:
# 이전: /home/hedvion/.claude/CLAUDE.md 는 독립적인 파일
cat /home/hedvion/.claude/CLAUDE.md
# (로컬 사본, 언제 수정됐는지 불명확)
# 이후: /home/hedvion/.claude/CLAUDE.md → /opt/ops/docs/server-global-CLAUDE.md
ln -s /opt/ops/docs/server-global-CLAUDE.md /home/hedvion/.claude/CLAUDE.md
실제로 봇이 이 파일을 읽을 때는 symlink를 따라가서 ops 리포의 원본을 읽는다. 업데이트도 한 곳에서만 일어난다.
관리 프로세스의 명확화
변경 후 흐름이 명확해졌다:
- 규칙 수정이 필요할 때: mac에서 ops 리포의
docs/server-global-CLAUDE.md를 편집 → 커밋 → push - 서버에 적용:
cd /opt/ops && git pull - 금지 사항: 서버에서 직접
/home/hedvion/.claude/CLAUDE.md를 편집하는 것 (심링크이므로 실제로도 작동 안 함)
이렇게 하면 누가 뭘 바꿀 수 있는지, 언제 적용되는지 일관되게 추적할 수 있다. 또한 git 히스토리로 지침 변화의 배경도 남는다. "왜 이 규칙을 넣었는가"를 나중에 찾아볼 수 있다.
팀 온보딩과 신뢰도 개선
실제 효과를 생각해보면:
- 온보딩 명료화: 새로운 팀원에게 "봇이 따를 규칙은 여기 한 문서야"라고 딱 하나만 보여줄 수 있다
- 코드리뷰 일관성: 지침 위반 여부를 판단할 때 모두가 같은 문서를 기준으로 삼는다
- 토큰 비용 의식: 중앙 문서에 "전 봇 공통 룰만 두겠다"는 주석을 추가해서, 프로젝트별 세부 규칙은 각 리포의 CLAUDE.md에만 두도록 유도했다. 이렇게 하면 모든 봇 호출마다 로드되는 토큰 오버헤드를 줄일 수 있다
- 분산 관리 제거: 여러 문서를 꺼내 와서 비교하는 수고가 사라진다
회고: 작은 변경, 큰 임팩트
이건 코드 라인 수로 보면 정말 작은 변경이다. 파일 몇 개 추가하고, symlink만 만든 거다. 하지만 팀 규모가 커질수록 이런 "정보의 진실 포인트"를 어디에 둘 지 결정하는 게 점점 중요해진다.
특히 자동화, AI, 에이전트를 많이 쓰는 팀이라면 "이 규칙은 누가 언제 정의했고, 어디서 관리되고, 언제 바뀌는가"를 명확히 해야 한다. 그렇지 않으면 다음 분기 온보딩 때, 혹은 규칙 수정 후 한두 달 뒤에 "어? 지침이 이미 바뀌어 있네?" 같은 놀라움이 반복된다.
Symlink는 기술 자체로는 단순하지만, 그 뒤에 "한 번의 진실(single source of truth)" 원칙을 실행한다는 뜻이다. 팀 리딩 관점에서 보면, 이런 작은 결정들이 모여서 팀의 신뢰도와 생산성을 올린다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.