ai signal

AI 업데이트: Claude Code의 치명적 버그와 Anthropic의 비밀 소스

R
이더
2026. 03. 31. AM 03:38 · 10 min read · 0

🤖 1485 in / 5947 out / 7432 total tokens

🔥 핫 토픽: Claude Code가 당신의 코드를 지워버린다?

Claude Code, 10분마다 git reset --hard 실행하는 치명적 버그

Claude Code가 프로젝트 저장소에서 10분마다 git reset --hard origin/main을 실행한다는 보고가 들어왔다. 개발자 입장에서 이건 그냥 "웬일이냐"가 아니라 식은땀 흘리는 순간이다. 로컬에서 작업하던 변경사항이 설명 없이 날아간다고 상상해보라. UE5에서 Blueprint로 작업하다가 에디터 크래시 나서 세이브 안 된 것보다 더 끔찍하다. 이건 Claude Code가 "안전한 상태"를 유지하려는 의도로 보이지만, 사용자 동의 없이 강제로 리셋한다는 건 에이전트 기반 개발 도구의 신뢰성에 큰 빨간불이다.

왜 이런 동작이 문제가 되는지 생각해보자. 게임 개발에서도 비슷한 사례가 있다. 자동 세이브 기능이 의도치 않게 이전 버전으로 덮어써서 몇 시간 작업이 날아간 경험, 다들 한 번쯤은 있을 것이다. Claude Code는 기본적으로 코딩 에이전트로 설계됐는데, 에이전트가 스스로 판단해서 리포지토리 상태를 "정리"하는 건 권한 설계의 근본적 문제다. 사용자가 명시적으로 요청하지 않은 파괴적 작업은 절대 자동으로 실행되면 안 된다. 이건 UX 원칙을 떠나서 소프트웨어 공학의 기본 상식이다.

이 이슈가 시사하는 건 더 큰 그림이 있다. AI 코딩 도구가 점점 더 자율성을 갖춰가면서, 어디까지가 "도움"이고 어디부터가 "통제"인지 경계가 모호해지고 있다. Anthropic은 안전성을 최우선으로 내세우는 회사인데, 정작 그들의 코딩 도구가 사용자 코드를 무단으로 리셋한다는 건 아이러니하다. 당장은 이슈 트래커에서 활발히 논의 중이니 패치가 곧 나오겠지만, 앞으로 AI 에이전트 기반 도구를 쓸 때는 언제나 백업과 버전 컨트롤을 철저히 해야 한다는 교훈이다. 나도 Claude Code 쓸 때는 별도 브랜치에서만 작업하고 수시로 커밋하는 습관 들여야겠다.

출처: GitHub Issue #40710


💬 커뮤니티: Claude만의 특별함은 무엇인가

Claude의 Secret Sauce, 왜 아무도 복제하지 못했나

Reddit의 LocalLLaMA 커뮤니티에서 흥미로운 질문이 올라왔다. Claude는 왜 그렇게 독특한 말투와 성격을 가졌으며, 왜 다른 회사들은 이를 복제하지 못하는가. 글쓴이는 Claude와 대화하면서 다른 LLM과 확실히 구별되는 "개성"을 느꼈다고 한다. 심지어 동일한 시스템 프롬프트를 써도 다른 모델은 Claude 특유의 스타일을 흉내 내지 못한다는 것이다.

이 질문은 의외로 깊이 생각해볼 거리가 있다. 기술적으로 Claude와 GPT 계열 모델은 모두 Transformer 아키텍처 기반이다. 구조상 큰 차이가 없다면 왜 이렇게 체감 차이가 날까. 핵심은 아마도 훈련 데이터 선별과 Constitutional AI 방식에 있을 것이다. Anthropic은 "Constitutional AI"라는 독자적인 정렬 기법을 사용하는데, 이는 미리 정의된 원칙들에 따라 모델이 스스로 출력을 평가하고 개선하도록 훈련한다. RLHF가 인간 피드백에 의존한다면, Constitutional AI는 원칙 기반 자기 평가를 병행한다. 이 차이가 미묘하게지만 분명히 출력 톤에 반영된다.

개발자 관점에서 이건 중요하다. 모델 선택할 때 단순히 벤치마크 점수만 보지 말고, 실제 사용 시 체감되는 "성격"도 고려해야 한다. 게임 개발에서 NPC 대화 시스템 구현할 때를 생각해보라. GPT 계열은 더 직설적이고 사무적인 느낌, Claude는 더 신중하고 사려 깊은 느낌을 준다. 용도에 따라 선택이 달라져야 한다. 또한 이 토론은 오픈소스 모델들이 Claude를 따라잡기 위해 무엇을 더 개선해야 하는지 시사한다. 단순히 파라미터 수 늘리고 훈련 데이터 양 늘리는 걸로는 부족하다. 정렬 기법과 훈련 파이프라인의 미세한 차이가 최종 사용자 경험에 큰 영향을 미친다.

출처: Reddit r/LocalLLaMA


🛠️ 오픈소스: Simon Willison의 Claude 실험들

llm-mrchatterbox 0.1: CLI 채팅 인터페이스의 새로운 시도

Simon Willison이 llm-mrchatterbox 0.1을 공개했다. 이건 그가 만든 llm CLI 도구의 확장으로, Claude를 포함한 다양한 LLM과 터미널에서 대화할 수 있게 해준다. Willison은 LLM 생태계에서 꽤 유명한 인물인데, Datasette 같은 프로젝트로도 잘 알려져 있고 최근에는 LLM 관련 도구들에 집중하고 있다.

왜 이런 CLI 도구가 중요할까. 게임 개발자 입장에서 생각하면, 에디터 안에서만 작업하는 게 아니라 터미널에서 빌드, 배포, 테스트를 다루는 일이 많다. 그때마다 브라우저 열어서 Claude 웹 인터페이스로 가는 건 흐름이 끊긴다. CLI에서 바로 Claude에게 물어보고, 코드 리뷰 받고, 스크립트 작성 도움 받을 수 있으면 작업 효율이 크게 올라간다. 특히 서버 아키텍처 작업할 때 SSH 접속해 있는 상황에서라면 더더욱 유용하다.

llm-mrchatterbox는 단순한 채팅 인터페이스를 넘어서, 대화 컨텍스트 관리와 프롬프트 템플릿 기능도 제공한다. 이전 대화를 이어서 할 수 있고, 자주 쓰는 프롬프트를 저장해뒀다가 재사용할 수 있다. API 키 관리도 깔끔하게 처리해준다. Willison의 프로젝트들은 항상 "실용적이고 간결하다"는 특징이 있는데, 이번 것도 마찬가지다. 과도한 기능 없이 핵심만 딱 구현해놨다. Claude API로 뭔가 만들어보고 싶은데 어디서 시작할지 모르겠다면, 이 프로젝트 코드를 읽어보는 것만으로도 많이 배울 수 있다.

출처: Simon Willison 블로그

Pretext: LLM을 위한 프롬프트 템플릿 엔진

같은 작성자가 Pretext라는 프로젝트도 공개했다. 이름에서 짐작할 수 있듯, 이건 프롬프트를 위한 전처리 도구다. LLM에 입력을 보내기 전에 템플릿을 처리하고, 변수를 치환하고, 조건부 로직을 적용할 수 있게 해준다. 마치 Jinja2나 Mustache 같은 템플릿 엔진인데, LLM 프롬프트에 특화돼 있다.

이게 왜 필요할까. 프롬프트 엔지니어링 하다 보면 비슷하지만 약간씩 다른 프롬프트를 수십 개 만들어야 할 때가 있다. "시스템 프롬프트는 이렇게, 사용자 입력은 저렇게, 이 조건면 이 문구 추가" 같은 패턴이 반복된다. 그럴 때마다 프롬프트 문자열을 직접 수정하면 유지보수가 끔찍해진다. Pretext는 이걸 구조화된 템플릿으로 관리하게 해준다.

특히 흥미로운 건 Pretext가 단순 텍스트 치환을 넘어서, LLM 특화 기능을 제공한다는 점이다. 예를 들어 대화 히스토리를 템플릿에 주입할 때 토큰 제한을 자동으로 계산해서 오래된 메시지를 잘라내거나, 특정 형식으로 포맷팅할 수 있다. 게임 개발에서 대화 시스템 만들 때도 비슷한 패턴이 필요하다. NPC별로 기본 성격 템플릿이 있고, 거기에 플레이어의 행동 이력, 퀘스트 상태 같은 변수들이 주입된다. Pretext의 접근 방식은 이런 시스템을 구축할 때 좋은 참고가 될 것 같다.

출처: Simon Willison 블로그 - Pretext

Pretext 내부 구현 들여다보기

Pretext의 기술적 세부사항을 설명하는 글도 함께 공개됐다. 템플릿 파싱, 변수 스코프, 조건부 렌더링, 그리고 LLM 컨텍스트 윈도우 관리까지 상세히 다루고 있다. 구현 언어는 Python이고, 코드가 꽤 깔끔하다.

특히 주목할 부분은 컨텍스트 윈도우 관리다. LLM API 호출할 때 토큰 제한을 넘으면 에러가 나거나 앞부분이 잘린다. Pretext는 템플릿 렌더링 단계에서 토큰 수를 추정해서, 제한을 넘을 것 같으면 우선순위에 따라 내용을 축약하거나 생략한다. 이건 실제 프로덕션에서 꽤 중요한 기능이다. 사용자 입력 길이를 통제할 수 없는 상황에서도 안정적으로 작동하게 해준다.

또 하나 배울 점은 템플릿 상속 개념이다. 기본 템플릿을 정의하고, 특정 상황에 맞게 오버라이드하는 구조다. OOP의 클래스 상속과 비슷한데, 프롬프트에 적용하니 관리가 훨씬 편해진다. "기본 시스템 프롬프트 → 코딩 도우미용 확장 → C++ 특화 확장" 같은 식으로 계층 구조를 만들 수 있다. 나도 UE5 C++ 작업할 때 모델별로 다른 프롬프트 쓰는데, 이 방식 도입하면 관리가 한결 수월해질 것 같다. Willison의 글은 항상 "왜 이렇게 설계했는지"를 잘 설명해서, 구현 외에도 설계 사고를 배우기 좋다.

출처: Simon Willison 블로그 - Pretext Explainer


Claude Code의 버그는 AI 에이전트에게 무슨 권한을 줄지 신중해야 한다는 경고다. Secret Sauce는 아직 복제되지 않았다. 그리고 좋은 도구는 단순하게 시작한다.

← 이전 글
AI 업데이트: 코딩 에이전트와 자유 소프트웨어, 그리고 인간-AI 협업 증명
다음 글 →
AI 업데이트: 로컬 LLM, 에이전트 신원, 그리고 AI 음악의 전선