Graphify가 AI 코딩 어시스턴트의 컨텍스트 문제를 해결하는 방법
요약
AI 코딩 어시스턴트가 대규모 코드베이스에서 겪는 관계적 컨텍스트 문제를 해결하기 위해 지식 그래프를 활용하는 Graphify를 소개합니다. AST 파싱을 통해 코드 간의 의존성과 호출 관계를 구조화하여 AI가 시스템 전체의 맥락을 정확히 이해하도록 돕습니다.
핵심 포인트
- 기존 AI 어시스턴트는 코드를 순차적 텍스트로 읽어 구조적 맥락 파악에 한계가 있음
- Graphify는 지식 그래프를 통해 코드 간의 의존성 및 관계적 컨텍스트를 제공
- tree-sitter AST 파싱을 사용하여 결정론적이고 로컬에서 동작하는 그래프 생성
- Claude Code, Cursor 등 주요 AI 도구 내에서 명령어로 즉시 사용 가능
AI 코딩 어시스턴트에서 아무도 말하지 않는 숨겨진 한계
Claude Code, Cursor, Codex, 그리고 Gemini CLI는 모두 동일한 구조적 사각지대를 공유하고 있습니다. 이들은 인간이 책을 읽는 방식과 동일하게 코드를 읽습니다. 즉, 순차적으로, 파일 단위로 읽기 때문에 문서가 컨텍스트 윈도우 (Context Window)를 벗어나는 순간 구조적 의미를 잃어버립니다. 이들은 본질적으로 매우 정교한 텍스트 프로세서 (Text Processor)입니다. 이는 고립된 함수나 단일 파일 편집에는 놀라울 정도로 잘 작동하지만, 실제 프로젝트에서는 빠르게 무너집니다.
대규모 코드베이스에서의 실제 병목 현상은 코드 생성 (Code Generation)이 아닙니다. 유능한 언어 모델 (Language Model)이라면 어떤 것이든 함수를 작성할 수 있습니다. 진짜 어려운 문제는 컨텍스트 (Context), 구체적으로는 관계적 컨텍스트 (Relational Context)입니다. 어떤 API 엔드포인트가 어떤 데이터베이스 테이블에 쓰기를 수행하는가? 인증 서비스는 어떤 Terraform 모듈에 의존하는가? SQL 스키마 (Schema)에서 필드 이름을 변경하면 어떤 애플리케이션 레이어 (Application Layer)가 깨지는가? 이것들은 그래프 문제 (Graph Problems)입니다. 파일의 평면적인 목록은 아무리 영리하게 임베딩 (Embedding)되거나 컨텍스트 윈도우가 크더라도, 이러한 질문에 신뢰성 있게 답할 수 없습니다.
이것이 제품 랜딩 페이지에서는 아무도 광고하지 않는 한계입니다. 더 긴 컨텍스트 윈도우가 해결책으로 마케팅되지만, 200,000 토큰 (Tokens)의 소스 코드를 프롬프트 (Prompt)에 밀어 넣는다고 해서 AI 어시스턴트에게 시스템의 지도가 주어지는 것은 아닙니다. 그것은 인덱스 (Index)도 없고 목차도 없는 매우 긴 책을 주는 것과 같습니다.
Graphify의 설립 전제는 이 문제를 정면으로 겨냥합니다. 코드는 단순한 텍스트 파일의 집합이 아닙니다. 그것은 의존성 (dependencies), 호출 관계 (call relationships), 스키마 바인딩 (schema bindings), 그리고 설정 참조 (configuration references)의 네트워크입니다. 이러한 네트워크를 표현하기에 적합한 데이터 구조는 의미론적 유사성 검색 (semantic similarity search)에 최적화된 임베딩 인덱스 (embedding index)나 가공되지 않은 컨텍스트 덤프 (raw context dump)가 아니라, 바로 지식 그래프 (knowledge graph)입니다. Graphify가 코드베이스를 파싱할 때, 엔티티 (entities)와 그들 사이의 관계를 추출하기 위해 tree-sitter 추상 구문 트리 (abstract syntax tree, AST) 파싱을 사용합니다. 이는 결정론적 (deterministic)이며, 로컬에서 수행되고, 모델 호출이 필요하지 않습니다. 그 결과, AI 코딩 어시스턴트가 단 한 번의 탐색 (traversal)만으로 한 컴포넌트의 변경 사항이 서비스, 스키마, 그리고 인프라 설정 전반에 어떻게 전파되는지 추적할 수 있는 쿼리 가능한 그래프 (queryable graph)가 생성됩니다.
이러한 구조적 인식 (structural awareness)이야말로 코드 이해 (code understanding)와 코드 읽기 (code reading)를 구분 짓는 요소입니다.
Graphify가 실제로 하는 일: 하나의 명령, 하나의 그래프
지원되는 AI 코딩 어시스턴트 — Claude Code, Codex, OpenCode, Cursor 또는 Gemini CLI — 내부에서 /graphify를 입력하면 대상 폴더에 대한 즉각적인 스캔이 트리거됩니다. 별도의 도구 설치도, 외부 파이프라인도, 컨텍스트 스위칭 (context switching)도 필요하지 않습니다. 이 명령은 어시스턴트 내부의 네이티브 스킬 (native skill)로 실행되며, 실행이 완료되면 프로젝트 전체가 쿼리 가능한 지식 그래프로 존재하게 됩니다.
데이터 수집 범위 (ingestion scope)는 Graphify를 기존의 코드 인덱싱과 차별화합니다. 단 한 번의 실행으로 애플리케이션 소스 코드, SQL 스키마, R 스크립트, 셸 스크립트, Markdown 문서, 연구 논문, 이미지, 그리고 비디오 파일을 하나의 통합된 그래프로 흡수할 수 있습니다. 코드 파싱은 tree-sitter 추상 구문 트리 (abstract syntax tree) 분석을 사용하여 로컬에서 무료로 수행됩니다. 이는 결정론적이며, LLM의 개입이 없고, 기기 외부로 아무것도 전송되지 않습니다. 문서, PDF, 이미지 및 비디오는 해석을 위해 어시스턴트 자체의 모델에 의존하지만, 코드 레이어 자체는 개발자의 환경을 절대 벗어나지 않습니다.
이러한 통합된 그래프(unified graph)가 가져오는 아키텍처적 결과는 매우 중요합니다. 전통적인 AI 코딩 어시스턴트(AI coding assistants)는 파일 단위로 작동합니다. 이들은 파일을 읽고, 요약하고, 다음 파일로 넘어갑니다. Python 서비스, 해당 서비스가 기록하는 Postgres 스키마(schema), 그리고 데이터베이스를 프로비저닝(provisioning)하는 Terraform 설정 사이의 관계는 오직 개발자의 머릿속에만 존재합니다. Graphify는 이러한 계층 간 관계(cross-layer relationships)를 그래프 에지(graph edges)로 인코딩합니다. 이는 AI 어시스턴트가 별도의 파일 읽기를 통해 정보를 조각조각 모으는 대신, 쿼리(query) 과정에서 이를 직접 탐색(traverse)할 수 있음을 의미합니다.
이러한 변화는 단일 질문이 수행할 수 있는 작업의 범위를 바꿉니다. 특정 API 엔드포인트가 하위 데이터베이스 테이블 및 이를 호스팅하는 인프라와 어떻게 연결되는지 묻는 작업은 이전에는 여러 번의 쿼리, 수동 교차 참조, 또는 이미 코드베이스를 알고 있는 개발자가 필요했습니다. 프로젝트가 단일 지식 그래프(knowledge graph)로 매핑되면, 어시스턴트는 단 한 번의 응답으로 이 세 가지 계층을 동시에 해결합니다. 그래프는 컨텍스트(context)가 초기화될 때마다 어시스턴트가 매번 다시 읽어야 하는 평면적인 파일 모음이 아니라, 구조화되고 탐색 가능하며 세션 전반에 걸쳐 지속되는 프로젝트의 메모리(memory)가 됩니다.
왜 멀티 포맷(Multi-Format)에 대한 야망이 핵심인가
대부분의 AI 코딩 어시스턴트는 개발자가 개발자를 위해 만들며, 그 특징이 그대로 드러납니다. GitHub Copilot이나 Cursor와 같은 도구들은 Python, TypeScript, Go를 일급 시민(first-class citizens)으로 취급합니다. 그 외의 모든 것들 — SQL 스키마, R 스크립트, 쉘 스크립트, PDF, 연구 논문 등 — 은 처리된다 하더라도 가공되지 않은 원시 텍스트(raw text)로 입력됩니다. Graphify는 다른 아키텍처적 도박을 겁니다. 실제 엔지니어링 프로젝트의 모든 아티팩트(artifact) 유형은 지식 그래프 내에서 구조화된 표현을 가질 자격이 있다는 것입니다.
Graphify의 저장소에 있는 파일 지원 목록은 단순히 마케팅을 위한 체크박스가 아닙니다. 이는 실제로 소프트웨어를 배포하는 사람들이 누구인지에 대한 선언입니다. 머신러닝 파이프라인(machine learning pipeline)을 작업하는 데이터 과학 팀은 .py 파일만으로 존재하지 않습니다. 그들은 통계 분석을 위한 R 노트북, 데이터 모델을 정의하는 SQL 스키마(schema), ETL 작업을 자동화하는 bash 스크립트, 그리고 모델의 기반이 되는 알고리즘을 문서화한 PDF 논문들을 관리합니다. Graphify는 애플리케이션 코드, 데이터베이스 스키마, 인프라를 파편화된 상태가 아닌 통합된 상태로 단일 쿼리 가능한 그래프(queryable graph)로 흡수합니다.
이러한 점은 단순히 측면에 문서 검색 기능을 추가하는 코드 인텔리전스(code intelligence) 도구들과 Graphify를 다른 범주에 놓이게 합니다. PostgreSQL 스키마를 관리하는 DBA(데이터베이스 관리자)에게 테이블 관계와 저장 프로시저(stored procedures)는 애플리케이션 함수와 동일한 쿼리 접근 권한을 가진 그래프 노드(graph nodes)가 됩니다. DevOps 엔지니어에게는 배포 단계를 연결하는 셸 스크립트가 자신이 오케스트레이션(orchestrate)하는 서비스와 동일한 지식 구조 내에서 탐색 가능한 엣지(edges)가 됩니다.
이미지와 비디오의 포함은 Graphify의 장기적인 방향성이 드러나는 지점입니다. 아키텍처 다이어그램(architecture diagrams), 녹화된 데모 워크스루(demo walkthroughs), 주석이 달린 스크린샷은 현재 모든 AI 어시스턴트의 추론 범위 밖에 존재하는 진정한 프로젝트 지식을 담고 있습니다. 이러한 요소들을 단순한 첨부 파일이 아닌 인덱싱 가능한 자산(indexable assets)으로 취급함으로써, Graphify는 멀티모달 지식 그래프(multimodal knowledge graphs)를 지향합니다. 이를 통해 시스템 아키텍처에 대한 쿼리를 던지면 관련 소스 파일뿐만 아니라, 왜 해당 파일들이 그런 구조로 설계되었는지를 설명하는 화이트보드 다이어그램까지 함께 나타날 수 있습니다.
근본적인 통찰은 명확합니다. 실제 프로젝트는 단일 언어로 이루어져 있지 않습니다. 소스 코드를 추론할 가치가 있는 유일한 아티팩트(artifact)로 취급하는 것은 AI 어시스턴트가 시스템에 대해 불완전한 모델을 갖게 된다는 것을 의미합니다. Graphify의 멀티 포맷(multi-format) 접근 방식은 이를 단순한 기능 추가가 아닌, 아키텍처 수준에서 교정합니다.
생태계 전략: 독립형 앱이 아닌 기술(Skill)
Graphify는 독립형 앱(standalone app)이 아닌 하나의 기술(skill)로서 구축되었습니다. 그리고 이 차이점이 바로 전략의 핵심입니다. 개발자들에게 Claude Code, OpenAI Codex, OpenCode, Cursor 또는 Gemini CLI를 포기하라고 요구하는 대신, Graphify는 팀이 이미 사용 중인 어떤 AI 코딩 어시스턴트(AI coding assistant)에도 직접 연결됩니다. 이 제품은 화면 공간이나 워크플로우의 충성도를 두고 경쟁하지 않습니다. 대신 이미 존재하는 기능을 확장합니다.
이러한 멀티 플랫폼(multi-platform)에 대한 약속은 특정한 베팅을 반영합니다. 즉, AI 코딩 어시스턴트가 폐쇄적인 도구가 아닌 확장 가능한 플랫폼(extensible platforms)이 되고 있다는 점에 베팅하는 것입니다. Anthropic, OpenAI, Google은 각각 서드파티(third-party) 기능이 핵심 모델 위에 레이어 형태로 쌓이는 개발자 생태계를 구축하고 있습니다. Graphify는 해당 레이어를 위한 인프라(infrastructure)로서 스스로를 포지셔닝합니다. 즉, 기반이 되는 모델이나 인터페이스에 관계없이 어떤 어시스턴트라도 호출할 수 있는 지식 그래프(knowledge graph) 엔진 역할을 합니다.
활성화 메커니즘 또한 이러한 접근 방식을 강화합니다. 지원되는 모든 어시스턴트에서 /graphify를 입력하면 도구가 실행되며, 이는 개발자들이 Slack, GitHub 및 기타 협업 플랫폼에서 이미 익숙한 슬래시 커맨드(slash-command) 패턴을 사용합니다. 새로 배워야 할 CLI도 없고, 별도로 열어야 하는 대시보드도 없으며, 컨텍스트 스위칭(context-switching)도 발생하지 않습니다. 진입점은 개발자가 떠나지 않은 환경 내부의 단일 명령입니다.
다섯 개의 주요 플랫폼을 동시에 지원하는 것은 단일 통합 도구들이 겪는 통합 리스크(consolidation risk)에 대한 헤지(hedge) 역할도 합니다. 만약 팀이 Cursor에서 Claude Code로, 또는 Codex에서 Gemini CLI로 전환하더라도 지식 그래프 기능은 그들과 함께 이동합니다. 코드베이스 인텔리전스(codebase intelligence) — 즉 함수, 스키마, 인프라 설정 및 문서 간의 매핑된 관계 — 는 누군가가 선호하는 AI 페어 프로그래머(AI pair programmer)를 바꿀 때마다 처음부터 다시 구축될 필요가 없습니다.
이러한 특성 덕분에 Graphify는 AI 어시스턴트 시장 아래에 위치한 일종의 중립적인 컨텍스트 계층 (context layer)으로 자리매김합니다. 개별 도구들은 모델 품질, 지연 시간 (latency), 그리고 IDE 통합 (IDE integration) 측면에서 계속 경쟁할 것입니다. Graphify는 다른 축, 즉 프로젝트 이해 (project understanding)의 깊이와 이식성 (portability)을 바탕으로 경쟁합니다. AI 보조 개발 (AI-assisted development)이 성숙해짐에 따라, 단순히 파일 내용을 검색하는 것을 넘어 전체 코드베이스 (codebase) 전반의 관계를 추론할 수 있는 능력은 slash-command의 단순함이 조용히 전달하는 차별화 요소가 됩니다.
기존 보도들이 놓치고 있는 점: 이것은 단순한 개발자 경험 (Developer Experience) 업그레이드가 아니다
Graphify에 대한 대부분의 보도는 이를 더 똑똑한 자동 완성 (autocomplete) — 즉, 개발자가 grep을 덜 하고 더 빠르게 배포할 수 있는 방법 — 으로 프레임화합니다. 이러한 프레임은 실제로 구축되고 있는 것이 무엇인지를 놓치고 있습니다.
생산성 향상보다 아키텍처의 변화가 더 중요합니다. AI 코딩 어시스턴트가 파일을 순차적으로 읽을 때는 "이 함수가 무엇을 하는가"에 답할 수 있습니다. 하지만 애플리케이션 코드, SQL 스키마 (SQL schemas), 그리고 인프라 정의 (infrastructure definitions)를 단일 쿼리 가능한 구조로 연결하는 지식 그래프 (knowledge graph)를 통해 추론할 때는 "이 데이터베이스 컬럼의 이름을 바꾸면 3개의 서비스 중 어디가 망가지는가"에 답할 수 있습니다. 이것은 범주적으로 완전히 다른 능력이며, 아무리 큰 컨텍스트 윈도우 (context windows)라도 그 격차를 스스로 메울 수는 없습니다.
Graphify-Labs는 30개 이상의 프로그래밍 언어와 인간 언어를 동시에 지원하며 출시하고, 첫날부터 전체 코드베이스를 오픈 소스 (open source)로 공개하는 구체적인 전략적 선택을 했습니다. 이는 제품의 행보가 아닌 인프라의 행보입니다. 표준의 채택을 원하는 기업들은 표준에 비용을 부과하지 않습니다. 대신 표준을 무료이자 보편적으로 만듦으로써 전환 비용 (switching costs)을 무의미하게 만듭니다. Graphify의 코드 매핑의 기반이 되는 tree-sitter AST 파싱 (AST parsing)은 외부 모델로 아무것도 보내지 않고 완전히 로컬에서 결정론적 (deterministically)으로 실행됩니다. 이러한 아키텍처 결정은 기업의 채택을 더 쉽게 만들고, 경쟁적인 포크 (forking)가 차별화되는 것을 더 어렵게 만듭니다.
이러한 경쟁적 압박은 예상치 못한 곳에서 나타납니다. Anthropic, OpenAI, Google DeepMind 전반에 걸친 지배적인 가정은 더 나은 AI 코드 이해를 위해 더 큰 컨텍스트 윈도우 (context windows) — 즉, 더 많은 토큰, 더 많은 동시 파일 콘텐츠, 더 많은 원시 용량 — 가 필요하다는 것입니다. 수십억 달러의 인프라 투자가 그 가정을 따르고 있습니다. 관계 그래프 (relationship-graph) 컨텍스트 레이어는 이 가정을 구조적으로 반박합니다. 만약 AI 어시스턴트가 지식 그래프 (knowledge graph)를 탐색하여 정확히 관련 있는 의존성 체인 (dependency chain)을 검색할 수 있다면, 전체 코드베이스를 200,000-토큰 윈도우에 억지로 밀어 넣어야 하는 압박은 줄어듭니다. 그래프는 컨텍스트 길이가 무차별 대입 방식 (brute-force)으로 해결하려 했던 검색 (retrieval) 문제를 해결합니다.
Graphify를 개발자 경험 (developer experience)의 업그레이드라고 부르는 것은, TCP/IP를 파일 공유의 개선이라고 부르는 것이 정확했던 것과 같은 방식으로 정확합니다. 기술적으로는 맞지만, 전략적으로는 틀렸습니다.
지금 당장 주목해야 할 대상
Graphify가 가능하게 하는 것들로부터 가장 큰 이득을 얻을 세 그룹이 있으며, 이들 중 어느 누구도 AI 코딩 도구 보도가 일반적으로 집착하는 대상은 아닙니다.
레거시 코드베이스 (legacy codebases)를 유지 관리하는 엔지니어링 팀이 가장 명확하고 즉각적인 수혜자입니다. 현재의 문서화 관행이 생기기 이전의 코드베이스에서는, 실제 아키텍처가 문서화되지 않은 관계 속에 존재합니다. 예를 들어, 데이터베이스 트리거 (database trigger)에 조용히 의존하는 서비스나, 아무도 매핑하지 않은 17곳에서 호출되는 유틸리티 함수 같은 것들입니다. Graphify는 결정론적(deterministic)이고 완전히 로컬(local) 방식으로 tree-sitter AST 분석을 사용하여 코드를 파싱하며, 이러한 숨겨진 의존성을 명시적으로 만드는 쿼리 가능한 지식 그래프를 구축합니다. 시니어 엔지니어가 퇴사할 때 조직의 지식이 함께 사라지는 팀에게, 이 그래프는 시스템이 어떻게 작동해야 하는지가 아니라 실제로 어떻게 작동하는지에 대한 지속 가능한 기록이 됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기