본문 바로가기

인공지능

AI 코딩 에이전트가 코드만 읽어서는 부족한 이유, CodeAlmanac으로 관리하는 코드베이스 지식

728x90
반응형
728x170

AI 코딩 에이전트가 코드를 작성하고 수정하는 시대가 되면서 개발자가 관리해야 할 지식의 범위도 달라지고 있습니다. AI 에이전트는 코드와 파일 구조를 분석할 수 있지만, 왜 현재의 구조가 만들어졌는지, 과거에 어떤 문제가 있었는지, 특정 로직에서 반드시 지켜야 하는 조건은 무엇인지까지 코드만 보고 정확하게 파악하기는 어렵습니다.

특히 프로젝트가 커질수록 이러한 맥락 정보는 더 중요해집니다. 코드에는 결과가 남아 있지만 그 결과에 도달한 결정 과정이나 서비스 간의 흐름, 개발 과정에서 발견한 함정까지 모두 담기기는 어렵기 때문입니다.

CodeAlmanac은 이 문제에 초점을 맞춘 AI 코딩 에이전트를 위한 코드베이스 Wiki입니다. 코드에 직접 담기 어려운 결정, 흐름, 불변 조건, Gotchas 등을 저장소 내부의 Markdown 기반 Wiki로 관리하고, 이를 AI 에이전트와 개발자가 함께 활용할 수 있도록 구성합니다.

이번 글에서는 CodeAlmanac이 무엇인지부터 시작해 왜 필요한지, 어떤 방식으로 코드베이스의 맥락을 관리하는지, 그리고 Wiki를 지속적으로 유지하기 위한 Lifecycle과 로컬 자동화 기능까지 살펴보겠습니다.

반응형

코드만으로는 코드베이스의 모든 맥락을 설명하기 어렵다

AI 코딩 에이전트가 코드를 읽는 능력은 개발 방식에 큰 변화를 가져왔습니다. 하지만 코드가 존재한다는 것과 코드베이스의 전체 맥락을 이해한다는 것은 다른 문제입니다.

예를 들어 특정 코드가 현재와 같은 형태로 작성되어 있다고 가정해 보겠습니다.

코드를 보면 어떤 동작을 수행하는지는 확인할 수 있습니다. 하지만 다음과 같은 질문에 대한 답은 코드만으로 명확하게 파악하기 어려울 수 있습니다.

  • 왜 이런 구조로 설계했는가?
  • 과거에 어떤 문제가 발생했는가?
  • 특정 로직에서 절대로 변경하면 안 되는 조건은 무엇인가?
  • 특정 서비스와 파일은 어떤 순서로 연결되는가?
  • 과거의 장애나 변경 과정에서 발견된 주의사항은 무엇인가?
  • 현재 구조가 유지되고 있는 배경은 무엇인가?

이러한 정보는 코드의 동작 자체보다는 코드가 만들어진 배경과 운영 과정의 지식에 가깝습니다.

AI 코딩 에이전트에게 이러한 정보가 제공되지 않는다면 에이전트는 코드 자체를 기준으로 합리적인 판단을 내릴 수밖에 없습니다. 하지만 그 판단이 반드시 프로젝트가 의도한 방향과 일치한다고 보기는 어렵습니다.

CodeAlmanac은 바로 이 지점을 다룹니다.

CodeAlmanac이란?

CodeAlmanac은 AI 코딩 에이전트를 위한 코드베이스 Wiki입니다.

핵심은 코드에 담기 어려운 지식을 별도의 Wiki로 관리하는 것입니다.

여기에는 단순한 API 설명이나 파일 목록만 기록하는 것이 아닙니다. 시스템이 현재와 같은 형태를 갖게 된 이유, 과거에 무엇이 깨졌는지, 여러 파일과 서비스 사이에서 어떤 워크플로가 이어지는지, 특정 구현에서 반드시 지켜야 하는 불변 조건과 개발 과정에서 발견된 Gotchas 등을 기록합니다.

즉, CodeAlmanac의 Wiki는 코드의 사용법을 설명하는 문서에만 머무르지 않습니다.

코드베이스의 현재 상태와 그 배경을 함께 설명하는 지식 저장소에 가깝습니다.

또한 Wiki는 저장소 안의 Markdown 파일로 저장됩니다. 따라서 별도의 외부 서비스에 지식을 보관하는 방식이 아니라 코드와 함께 관리할 수 있으며, Git을 통해 변경 사항을 리뷰할 수 있습니다.

이 구조가 중요한 이유는 간단합니다.

AI 에이전트에게 필요한 지식도 코드와 마찬가지로 지속적으로 변경되고 검토되어야 하기 때문입니다.

CodeAlmanac의 핵심은 '코드 밖의 맥락'이다

CodeAlmanac을 이해하기 위해 가장 먼저 봐야 할 부분은 코드에 표현되지 않은 지식을 관리한다는 점입니다.

대표적으로 다음과 같은 정보를 다룹니다.

시스템이 왜 지금의 형태인지 기록

현재 코드 구조가 단순히 개발자의 취향으로 만들어진 것이 아니라 과거의 요구사항이나 문제를 해결하는 과정에서 결정된 것일 수 있습니다.

코드만 보면 현재의 결과는 확인할 수 있지만, 해당 결정을 내린 배경은 사라질 수 있습니다.

CodeAlmanac은 이러한 결정의 배경을 Wiki에 기록할 수 있도록 합니다.

과거에 무엇이 깨졌는지 기록

개발 과정에서 발생했던 문제는 이후의 코드 수정에도 중요한 참고 정보가 될 수 있습니다.

특정 접근 방식이 과거에 문제를 일으켰다면 이후 동일한 실수를 피하기 위해 그 사실을 지식으로 남길 필요가 있습니다.

AI 에이전트가 코드를 수정할 때도 이러한 정보는 중요한 맥락이 될 수 있습니다.

파일과 서비스 사이의 흐름 기록

하나의 기능이 하나의 파일 안에서 끝나는 경우도 있지만, 실제 코드베이스에서는 여러 파일과 서비스가 연결되어 동작하는 경우가 많습니다.

CodeAlmanac은 이러한 워크플로를 Wiki에 기록해 코드 단위로는 파악하기 어려운 전체 흐름을 설명할 수 있도록 합니다.

불변 조건과 Gotchas 기록

특정 로직에서 반드시 유지해야 하는 조건이나 개발자가 쉽게 놓칠 수 있는 주의사항도 코드의 일반적인 설명과는 다른 성격의 정보입니다.

이러한 정보까지 함께 기록하면 단순히 "이 코드는 무엇을 하는가"를 넘어 "이 코드를 변경할 때 무엇을 조심해야 하는가"까지 관리할 수 있습니다.

결국 CodeAlmanac이 다루는 것은 코드 자체보다 코드를 둘러싼 맥락입니다.

사람과 AI 에이전트가 동일한 Wiki를 사용한다

CodeAlmanac의 또 다른 특징은 AI 에이전트와 개발자가 같은 로컬 Wiki를 조회할 수 있다는 점입니다.

제공된 정보에 따르면 주요 읽기 명령은 다음과 같습니다.

  • search
  • show
  • topics
  • health
  • validate

예를 들어 search를 활용하면 Wiki의 지식을 검색할 수 있고, --mentions 옵션을 통해 특정 파일 경로를 기준으로 검색할 수도 있습니다.

다른 Wiki를 조회해야 하는 경우에는 --wiki <name>을 사용할 수 있습니다.

이 방식의 장점은 지식 접근 방법을 사람과 AI 에이전트 사이에서 분리하지 않는다는 것입니다.

개발자가 Wiki를 확인할 때 사용하는 방식과 AI 에이전트가 필요한 맥락을 찾는 방식이 동일한 로컬 명령 체계를 기반으로 구성됩니다.

따라서 Wiki는 단순히 개발자가 읽는 문서가 아니라 코드베이스를 이해하기 위한 공통 지식 계층으로 활용할 수 있습니다.

Wiki를 만드는 것보다 중요한 것은 지속적인 관리다

코드베이스 Wiki를 만든다고 해서 문제가 모두 해결되는 것은 아닙니다.

코드는 계속 변경됩니다. 새로운 기능이 추가되고 기존 구조가 수정되며, 과거에 중요했던 정보가 더 이상 유효하지 않을 수도 있습니다.

결국 Wiki 역시 코드처럼 지속적인 관리가 필요합니다.

CodeAlmanac은 이를 위해 build, ingest, garden이라는 세 가지 Lifecycle 작업을 제공합니다.

build: Wiki 구축

build는 코드베이스 지식을 구축하는 Lifecycle 작업입니다.

CodeAlmanac의 Wiki를 코드베이스의 맥락을 담는 지식 기반으로 활용하기 위한 기본적인 구성 과정이라고 볼 수 있습니다.

ingest: 새로운 정보를 Wiki에 통합

ingest는 다양한 입력 정보를 Wiki로 통합하는 역할을 합니다.

제공된 정보에 따르면 다음과 같은 입력을 통합할 수 있습니다.

  • 파일
  • 디렉터리
  • Git diff
  • 커밋 범위
  • GitHub PR
  • GitHub 이슈
  • URL
  • 로컬 에이전트 트랜스크립트

즉, 특정 Markdown 문서를 직접 작성하는 방식뿐만 아니라 코드 변경이나 개발 과정에서 발생하는 다양한 정보를 Wiki 지식으로 통합할 수 있는 구조입니다.

garden: 오래된 지식과 중복 정보 정리

Wiki가 계속 커지면 새로운 문제가 발생합니다.

오래된 페이지가 남거나 비슷한 내용이 여러 페이지에 중복될 수 있고, 페이지 간 연결이 약해질 수도 있습니다.

garden은 이러한 지식의 품질을 관리하기 위한 Lifecycle 작업입니다.

제공된 정보에서는 다음과 같은 항목을 검토할 수 있도록 구성되어 있습니다.

  • 오래된 페이지
  • 약한 링크
  • 토픽
  • 중복 페이지

따라서 CodeAlmanac의 Wiki는 한 번 작성하고 끝나는 정적인 문서가 아니라 계속 생성되고 통합되고 정리되는 지식 기반을 지향합니다.

유지보수 명령을 기억하지 않아도 되는 로컬 백그라운드 작업

Lifecycle 작업을 지속적으로 수행하려면 개발자가 매번 명령을 실행해야 한다는 부담이 생길 수 있습니다.

CodeAlmanac은 macOS launchd 기반의 로컬 백그라운드 작업 3종을 제공합니다.

Sync

Sync는 5시간마다 최근 Codex와 Claude 대화를 스캔하고 관련 Wiki에 ingest 작업으로 큐잉합니다.

개발 과정에서 AI 코딩 에이전트와 주고받은 내용도 코드베이스의 맥락을 구성하는 정보가 될 수 있다는 점을 활용한 방식입니다.

Garden

Garden은 24시간마다 등록된 모든 Wiki의 지식 상태를 검토합니다.

오래된 지식이나 중복, 연결이 부족한 지식을 지속적으로 점검하는 역할입니다.

Update

Update는 24시간마다 안전한 시점에 CLI 자동 업데이트를 수행합니다.

단, Lifecycle 작업이 진행 중인 경우에는 업데이트를 건너뛰도록 구성되어 있습니다.

이처럼 CodeAlmanac은 Wiki를 직접 관리하는 기능뿐 아니라 지식을 지속적으로 유지하기 위한 운영 과정까지 로컬에서 자동화할 수 있도록 구성되어 있습니다.

실행 이력도 로컬에서 확인할 수 있다

백그라운드 작업을 자동화하면 실행 결과를 어떻게 확인할 것인지도 중요합니다.

CodeAlmanac은 실행 이력을 로컬 Job 레코드로 남기므로 터미널을 닫은 이후에도 작업 상태를 조회할 수 있습니다.

관련 명령은 다음과 같습니다.

jobs
jobs show
jobs logs
jobs attach
jobs cancel

또한 --json을 통해 스크립트와 연동할 수 있습니다.

즉, 단순히 백그라운드에서 작업을 실행하는 것에 그치지 않고 작업의 실행 이력과 로그를 확인하고 필요한 경우 제어할 수 있는 구조를 제공합니다.

CodeAlmanac은 완전 로컬로 실행된다

CodeAlmanac의 중요한 특징 중 하나는 호스팅 서비스나 클라우드 동기화를 사용하는 방식이 아니라 완전 로컬 실행을 기반으로 한다는 점입니다.

로그 역시 로컬의 다음 경로에 저장됩니다.

~/.codealmanac/logs/

이러한 구조는 코드베이스의 맥락을 관리하는 Wiki를 외부 서비스에 별도로 저장하지 않고 저장소와 로컬 환경을 중심으로 관리하려는 접근과 연결됩니다.

또한 Provider는 almanac-yoke를 단일 창구로 사용합니다.

제공된 정보에 따르면 Codex는 app-server를 사용하고, Claude는 Python Agent SDK를 사용합니다. 기존 Codex 및 Claude Code OAuth 세션도 재사용할 수 있습니다.

로컬 뷰어로 Wiki를 확인하는 방법

CodeAlmanac은 serve 명령을 통해 로컬 뷰어도 제공합니다.

이 뷰어는 읽기 전용으로 동작하며 다음과 같은 정보를 확인할 수 있습니다.

  • Wiki 페이지
  • 검색
  • 토픽
  • 백링크
  • 파일 참조 내비게이션

따라서 CLI 명령으로 정보를 검색하는 것뿐 아니라 로컬 뷰어를 통해 Wiki와 코드베이스의 연결 관계를 탐색할 수 있습니다.

특히 백링크와 파일 참조 내비게이션은 하나의 지식 페이지에서 관련된 다른 지식이나 실제 코드 파일로 이동하면서 맥락을 확인하는 데 활용할 수 있는 구조입니다.

사용 시 주의해야 할 권한 문제

CodeAlmanac을 사용할 때는 권한 범위도 확인할 필요가 있습니다.

제공된 정보에 따르면 Lifecycle 에이전트는 광범위한 비대화형 파일시스템 권한으로 동작합니다.

특히 almanac/ 폴더는 OS 샌드박스가 아니라 지침과 커밋 정책을 기반으로 하는 영역입니다.

따라서 신뢰할 수 있는 저장소에서만 실행해야 합니다.

이는 AI 에이전트가 코드베이스의 다양한 파일과 정보를 다루는 환경에서 중요한 부분입니다.

자동화 수준이 높아질수록 편의성뿐 아니라 어떤 저장소에서 어떤 권한으로 실행하는지도 함께 확인해야 하기 때문입니다.

텔레메트리는 선택 사항으로 제공된다

CodeAlmanac은 텔레메트리 사용 여부를 선택할 수 있도록 구성되어 있습니다.

제공된 정보에 따르면 코드, 경로, 프롬프트, 트랜스크립트, 자격 증명은 전송하지 않으며 GeoIP도 비활성화되어 있습니다.

또한 다음 환경 변수를 통해 텔레메트리를 차단할 수 있습니다.

DO_NOT_TRACK=1

따라서 로컬 중심의 실행 구조와 함께 텔레메트리 관련 설정도 확인할 수 있습니다.

CodeAlmanac을 통해 달라지는 코드베이스 지식 관리

AI 코딩 에이전트가 코드를 작성하는 방식이 발전할수록 개발자가 AI에게 제공해야 하는 정보도 단순한 소스 코드에 머무르지 않을 가능성이 높습니다.

코드에는 시스템의 현재 상태가 담겨 있습니다.

반면 프로젝트를 실제로 유지하고 발전시키기 위해서는 다음과 같은 정보도 필요합니다.

현재 코드가 왜 이렇게 만들어졌는가?

과거에는 어떤 문제가 있었는가?

어떤 조건은 반드시 지켜야 하는가?

여러 파일과 서비스는 어떤 흐름으로 연결되는가?

변경할 때 주의해야 하는 부분은 무엇인가?

CodeAlmanac은 이러한 정보를 코드베이스와 함께 관리할 수 있도록 Wiki라는 형태로 분리합니다.

그리고 이 Wiki를 Markdown과 Git 기반으로 관리하면서 개발자와 AI 코딩 에이전트가 동일한 지식을 활용하도록 구성합니다.

여기에 build, ingest, garden을 통한 Lifecycle 관리와 Sync, Garden, Update 백그라운드 작업을 결합해 지식이 계속 변화하는 코드베이스를 따라갈 수 있도록 합니다.

728x90

AI 시대에는 코드뿐 아니라 맥락도 관리해야 한다

AI 코딩 에이전트의 활용에서 중요한 것은 단순히 코드를 얼마나 빠르게 생성할 수 있는지가 아닙니다.

기존 코드베이스를 수정하거나 새로운 기능을 추가할 때는 현재 코드가 어떤 맥락에서 만들어졌는지 이해하는 것도 중요합니다.

코드에는 구현 결과가 남지만 모든 결정의 배경과 과거의 문제, 불변 조건, 서비스 간 흐름, 개발 과정에서 발견된 Gotchas까지 항상 표현되지는 않습니다.

CodeAlmanac은 이러한 코드 외부의 지식을 코드베이스 Wiki로 관리하고 AI 에이전트가 활용할 수 있도록 하는 접근을 제시합니다.

특히 Markdown 기반의 로컬 Wiki, Git을 통한 리뷰, search와 show 등의 공통 조회 명령, build·ingest·garden Lifecycle, 로컬 백그라운드 자동화 등을 통해 코드베이스의 지식을 지속적으로 관리하는 구조를 갖추고 있습니다.

결국 CodeAlmanac의 핵심은 단순한 문서 관리가 아닙니다.

AI 코딩 에이전트가 코드를 보는 데서 그치지 않고, 코드가 만들어진 맥락까지 함께 이해할 수 있도록 지식의 형태를 확장하는 것입니다.

AI 코딩 에이전트가 개발 과정에서 차지하는 비중이 커질수록 코드 자체뿐 아니라 그 코드를 둘러싼 지식 역시 중요한 개발 자산이 될 수 있습니다.

CodeAlmanac은 바로 이 지점을 코드베이스 Wiki라는 방식으로 접근하고 있습니다.

300x250

https://github.com/AlmanacCode/codealmanac/

 

GitHub - AlmanacCode/codealmanac: A codebase wiki for AI coding agents. Captures what the code can't say: decisions, flows, inva

A codebase wiki for AI coding agents. Captures what the code can't say: decisions, flows, invariants, gotchas. - AlmanacCode/codealmanac

github.com

728x90
반응형
그리드형