최근 AI 에이전트가 코드를 작성하는 시대가 도래하면서, 코드의 '왜'라는 중요한 맥락이 사라지는 문제가 발생하고 있습니다. 사람이 작성한 코드는 커밋 메시지, PR 설명, 인라인 주석 등을 통해 의도를 남기지만, AI 에이전트는 결정을 내린 순간의 프롬프트(prompt)와 함께 그 맥락이 휘발되어 버립니다. 이러한 문제를 해결하기 위해 AI 에이전트가 코드를 변경하는 순간 그 이유를 실시간으로 기록하는 도구 '셀비지(Selvedge)'가 등장했습니다.
셀비지는 로컬 MCP(Multi-Context Programming) 서버 형태로 작동하며, 클로드 코드(Claude Code), 커서(Cursor), 코파일럿(Copilot)과 같은 AI 코딩 에이전트가 작업할 때 구조화된 변경 이벤트와 그 추론(reasoning)을 기록하도록 설계되었습니다. 모든 데이터는 코드 옆 `.selvedge/` 폴더 내 SQLite 파일에 로컬로 저장되며, 필요에 따라 팀 서버로 확장할 수도 있습니다. 예를 들어, 6개월 전 AI 에이전트가 `user_tier_v2` 컬럼을 추가했지만, `git blame`으로 확인해도 '스키마 업데이트'라는 모호한 메시지만 남을 때, `selvedge blame user_tier_v2` 명령어를 통해 "가격 정책 변경 중 레거시 무료 사용자들을 위한 플래그 추가 요청. 청구 내역을 건드리지 않고 할인을 소급 적용하기 위해 원래 티어를 저장함"과 같은 구체적인 이유를 확인할 수 있습니다. 이는 AI 에이전트가 변경을 생성하는 동일한 컨텍스트에서 실시간으로 기록된 정보로, 사후에 다른 LLM이 추론하거나 수동으로 입력한 커밋 메시지와는 차별화됩니다.
셀비지는 크게 두 가지 사용자층을 대상으로 합니다. 첫째는 장기적으로 AI가 작성한 코드베이스를 운영하는 개발팀입니다. 프로젝트 규모가 커져 6개월, 1년, 3년 뒤에도 코드를 다시 만져야 할 때, AI 에이전트의 컨텍스트가 사라진 상황에서 `git blame`이 알려주지 못하는 '왜'를 셀비지가 제공합니다. 이는 프로덕션 코드베이스의 스키마 결정, 마이그레이션, 의존성 변경 등 감사 추적(audit trail)이 필요한 경우에 특히 유용합니다. 둘째는 클로드 코드(Claude Code)를 사용하는 1인 개발자입니다. 사이드 프로젝트나 주말 프로젝트처럼 작은 규모의 작업에서도 어제, 지난주, 지난 스프린트에 AI 에이전트가 왜 특정 작업을 했는지 기억해야 할 때 셀비지가 과거의 자신(LLM)과 대화하는 수단이 됩니다. `selvedge init` 명령 후 CLAUDE.md 파일에 네 줄만 추가하면, `selvedge blame`이 자연스러운 습관처럼 자리 잡을 수 있습니다.
최신 버전 v0.3.10에서는 에이전트에게 메모리를 전달하고 저장소 설정을 세밀하게 조정하는 기능이 추가되었습니다. 특히 '세션 시작(SessionStart)'과 '사전 압축(PreCompact)'이라는 두 가지 새로운 훅(hook)을 통해 에이전트가 세션을 시작할 때 이전에 시도했지만 되돌려진 엔티티나 최근 변경 사항에 대한 요약 정보를 주입하고, 컨텍스트 압축 전에 현재 세션의 추론을 기록할 수 있게 되었습니다. 이는 과거 연구에서 풀(pull) 방식의 메모리 도구가 잘 활용되지 않았던 점을 개선하기 위한 것으로, 에이전트가 능동적으로 '잊지 말아야 할 것'을 전달받도록 합니다. 또한 `selvedge export --format markdown` 명령을 통해 저장된 의도를 마크다운 형식으로 내보내어 풀 리퀘스트(pull request)에 포함시킬 수 있어, AI가 만든 코드의 의도가 코드와 함께 명확하게 문서화될 수 있도록 돕습니다.