[GeekNews 요약] TS 컴파일러 기반 @ttsc/graph, 코드 그래프 활용 AI 에이전트 토큰 사용량 10배 절감
1
설명
대규모 언어 모델(LLM) 기반 AI 에이전트가 코드베이스를 분석할 때 발생하는 막대한 토큰 비용은 개발자들에게 큰 부담입니다. 기존 코드 그래프 도구들이 이 문제를 해결하지 못하는 상황에서, 개발자 Jeongho Nam은 TypeScript 컴파일러를 활용한 새로운 접근 방식인 @ttsc/graph를 개발했습니다. 이 도구는 AI 에이전트가 코드 그래프를 더 효율적으로 활용하도록 하여 토큰 사용량을 획기적으로 줄였습니다.
### 배경 설명
AI 에이전트가 코드베이스를 이해하고 분석하는 능력은 소프트웨어 개발의 생산성을 크게 향상시킬 잠재력을 가지고 있습니다. 특히 복잡한 코드베이스를 탐색하고 질문에 답하는 데 있어 LLM의 역할은 점점 더 중요해지고 있습니다. 그러나 LLM은 입력 토큰 수에 비례하여 비용이 증가하기 때문에, 방대한 코드베이스를 처리할 때 발생하는 토큰 비용은 심각한 제약이 됩니다. 이러한 문제를 해결하기 위해 codegraph, codebase-memory-mcp, serena와 같은 도구들이 코드 그래프를 생성하여 에이전트에게 제공하는 방식을 시도했습니다. 이 도구들은 코드의 구조와 관계를 나타내는 그래프를 통해 에이전트가 파일 시스템을 직접 탐색하는 대신 효율적으로 정보를 얻도록 설계되었습니다. 하지만 실제 사용 환경에서는 이러한 도구들이 오히려 토큰 사용량을 증가시키거나, 에이전트가 그래프를 제대로 활용하지 못하는 문제가 발생했습니다. 특히, 그래프 자체의 정보뿐만 아니라 소스 코드 본문까지 함께 제공하는 방식은 토큰 비용을 폭발적으로 증가시키는 주요 원인이었습니다. 또한, 에이전트가 도구를 효과적으로 사용하도록 유도하는 프롬프트 엔지니어링의 어려움도 있었습니다. 이러한 배경 속에서 @ttsc/graph는 TypeScript 컴파일러의 강력한 분석 능력을 활용하고, 그래프 데이터를 효율적으로 제공하는 새로운 방법을 제시하며 주목받고 있습니다.
### 1. @ttsc/graph 소개
@ttsc/graph는 AI 에이전트가 코드베이스를 탐색할 때 발생하는 토큰 비용을 획기적으로 절감하기 위해 개발된 도구입니다. 기존의 에이전트들은 코드베이스를 이해하기 위해 수많은 파일을 열고 읽는 과정을 반복하며 막대한 토큰을 소모했습니다. @ttsc/graph는 이러한 비효율적인 탐색 과정을 중단시키고, TypeScript 컴파일러가 생성한 코드 그래프를 에이전트에게 직접 제공합니다. 이 그래프는 함수, 클래스, 파일 간의 호출 및 의존 관계를 노드와 엣지로 표현하며, 에이전트는 이 그래프를 통해 코드의 구조를 빠르고 정확하게 파악할 수 있습니다. 예를 들어, 새로운 TypeScript 프로젝트에 대한 질문을 에이전트에게 할 때, 기존 방식으로는 수십 개의 파일을 탐색해야 했지만, @ttsc/graph를 사용하면 단일 그래프를 통해 핵심 정보를 얻을 수 있습니다. 이는 에이전트가 파일 단위의 탐색 대신 그래프 쿼리를 통해 직접적인 답변을 얻게 함으로써, 토큰 사용량을 크게 줄이는 결과를 가져왔습니다. 실제 벤치마크 결과, @ttsc/graph는 기존 도구들과 달리 저장소 크기에 상관없이 토큰 사용량을 일정하게 유지하며, 이는 10배 이상의 토큰 절감 효과로 이어졌습니다.
### 2. 코드 그래프란 무엇인가
코드 그래프는 도시의 지하철 노선도와 유사한 개념으로, 복잡한 코드베이스의 구조와 관계를 시각적으로 표현한 것입니다. 도시의 지하철 노선도가 모든 건물이나 도로의 상세 정보를 생략하고 역 간의 연결 관계에 집중하여 사용자가 효율적으로 이동 경로를 파악할 수 있도록 돕는 것처럼, 코드 그래프 역시 함수, 클래스, 파일 등의 코드 요소(노드)와 이들 간의 호출, 상속, 의존 관계(엣지)를 중심으로 구성됩니다. 이를 통해 개발자나 AI 에이전트는 코드베이스 전체의 흐름을 빠르게 이해하고 특정 기능이나 데이터의 흐름을 추적할 수 있습니다. @ttsc/graph는 이러한 코드 그래프를 생성하는 데 있어 TypeScript 컴파일러 자체를 활용합니다. 이는 단순히 텍스트를 파싱하는 것 이상의 정확성을 보장하며, 별도의 인덱싱 과정 없이 컴파일 과정에서 자연스럽게 그래프 정보를 얻을 수 있다는 장점이 있습니다. 결과적으로, 코드 그래프는 에이전트가 방대한 코드 속에서 길을 잃지 않고 필요한 정보에 효율적으로 접근할 수 있도록 하는 핵심적인 역할을 수행합니다.
### 3. @ttsc/graph의 핵심 전략: 인덱스 및 CoT 준수
@ttsc/graph는 두 가지 핵심 전략을 통해 기존 코드 그래프 도구들의 한계를 극복합니다. 첫째, '인덱스 전략'입니다. @ttsc/graph는 그래프 정보를 제공할 때 소스 코드 본문 전체를 포함하는 대신, 노드, 엣지, 시그니처, 스팬(코드 위치 정보)과 같은 메타데이터만을 제공합니다. 이는 마치 지하철 노선도가 실제 건물 정보를 담지 않고 연결 정보만 제공하는 것과 같습니다. 이러한 접근 방식 덕분에 그래프의 크기가 저장소의 코드 양에 비례하여 폭발적으로 증가하지 않고 일정하게 유지되어 토큰 사용량을 절감할 수 있습니다. 둘째, 'CoT(Chain-of-Thought) 준수 전략'입니다. @ttsc/graph는 AI 에이전트가 도구를 사용하도록 강제하기 위해 엄격한 타입 스키마를 적용합니다. 에이전트는 질문을 명확히 하고, 계획을 세우며, 검토하는 단계를 거쳐야만 최종적으로 그래프를 요청할 수 있습니다. 이 과정에서 각 단계는 타입으로 정의되어 있어 에이전트가 임의로 건너뛰거나 무시할 수 없습니다. 이러한 구조는 에이전트가 불필요한 그래프 요청을 줄이고, 필요한 정보만을 정확하게 요청하도록 유도합니다. 결과적으로, @ttsc/graph는 불필요한 정보 제공을 최소화하고 에이전트의 합리적인 도구 사용을 강제함으로써, 기존 도구들이 직면했던 토큰 낭비 및 비효율성 문제를 해결합니다.
### 4. 기존 도구들의 문제점 분석
이전의 코드 그래프 도구들, 즉 codegraph, codebase-memory-mcp, serena는 AI 에이전트의 토큰 비용 절감이라는 목표를 달성하는 데 실패했습니다. codegraph는 그래프 정보와 함께 소스 코드 본문 전체를 제공했는데, 이는 코드베이스가 커질수록 토큰 비용을 기하급수적으로 증가시키는 원인이 되었습니다. codebase-memory-mcp는 강력한 그래프 분석 기능을 갖추고 있었지만, 14개의 세분화된 도구와 복잡한 쿼리 언어로 인해 에이전트가 실제 그래프 데이터에 접근하는 것을 어렵게 만들었습니다. 결과적으로 에이전트는 그래프를 활용하지 못하고 기존의 비효율적인 검색 방식으로 회귀하는 경우가 많았습니다. serena는 언어 서버를 기반으로 했지만, 소스 코드 본문을 제공하고 에이전트의 기본 도구를 대체하려는 시도가 오히려 에이전트의 유연성을 저해하고 예상치 못한 동작을 유발했습니다. 또한, 이러한 도구들은 에이전트에게 도구 사용을 강제하기 위해 복잡하고 긴 프롬프트를 사용했지만, 에이전트는 이를 무시하거나 잘못 해석하는 경우가 많았습니다. 결국, 이러한 도구들은 에이전트의 토큰 사용량을 줄이는 데 실패했을 뿐만 아니라, 때로는 더 많은 토큰을 소비하게 만들고 답변의 정확성까지 떨어뜨리는 결과를 초래했습니다.
### 가치와 인사이트
Jeongho Nam이 개발한 @ttsc/graph는 AI 에이전트가 코드베이스를 분석할 때 발생하는 토큰 비용 문제를 해결하는 데 있어 중요한 시사점을 제공합니다. 기존 도구들이 그래프 정보와 함께 소스 코드 본문을 제공하거나 복잡한 인터페이스를 통해 에이전트의 사용을 유도하려 했던 것과 달리, @ttsc/graph는 TypeScript 컴파일러가 생성한 '순수한 그래프 인덱스'만을 제공함으로써 토큰 사용량을 획기적으로 줄였습니다. 이는 AI 에이전트가 불필요한 정보 탐색에 리소스를 낭비하지 않고, 코드의 구조적 관계에 집중하여 효율적으로 답변을 생성하도록 합니다. 또한, 엄격한 타입 스키마를 기반으로 한 CoT(Chain-of-Thought) 준수 전략은 에이전트가 도구를 사용하는 과정을 체계화하고, 불필요한 도구 호출을 방지합니다. 이러한 접근 방식은 개발자가 AI 에이전트를 활용하여 코드베이스를 분석하고 이해하는 데 드는 비용과 시간을 크게 절감시켜 줄 뿐만 아니라, 더 정확하고 신뢰할 수 있는 답변을 얻을 수 있게 합니다. 이는 특히 대규모 코드베이스를 다루는 기업이나 복잡한 프로젝트를 진행하는 개발팀에게 실질적인 가치를 제공할 수 있습니다.
### 기술·메타
- **라이선스**: MIT
- **설치**: `npm install -D ttsc @ttsc/graph typescript@rc`
- **저장소**: [https://github.com/samchon/ttsc](https://github.com/samchon/ttsc)
- **벤치마크**: [https://ttsc.dev/docs/benchmark/graph](https://ttsc.dev/docs/benchmark/graph)
- **의존성**: TypeScript v7 RC (typescript@rc)
- **지원 언어**: TypeScript (향후 확장 가능성 있음)
### 향후 전망
TypeScript 컴파일러 기반의 @ttsc/graph는 AI 에이전트의 코드 분석 효율성을 높이는 데 있어 중요한 발판을 마련했습니다. 향후 이 기술은 다양한 언어로 확장될 가능성이 있습니다. 각 언어의 컴파일러나 언어 서버 프로토콜(LSP)을 활용하여 해당 언어에 최적화된 코드 그래프를 생성한다면, TypeScript뿐만 아니라 Go, Rust, Python, Java, C# 등 다른 프로그래밍 언어에서도 유사한 토큰 절감 효과를 기대할 수 있습니다. 이는 AI 기반 개발 도구의 범용성을 크게 확장시킬 것입니다.
경쟁 구도 측면에서는, 기존의 codegraph, codebase-memory-mcp, serena와 같은 도구들이 @ttsc/graph의 성공 사례를 바탕으로 자신들의 접근 방식을 개선하거나, @ttsc/graph와 같은 효율적인 그래프 제공 방식을 통합하려는 시도가 있을 수 있습니다. 또한, LLM 자체의 발전과 함께 프롬프트 엔지니어링 기술이 더욱 정교해진다면, @ttsc/graph의 CoT 준수 전략과 같은 구조적인 접근 방식의 중요성이 더욱 부각될 것입니다.
리스크 요인으로는, @ttsc/graph가 현재 TypeScript v7 RC 버전에 의존하고 있다는 점이 있습니다. TypeScript v7이 정식 출시되고 안정화되면 이 문제는 해결되겠지만, 그 이전까지는 설치 및 사용에 제약이 있을 수 있습니다. 또한, @ttsc/graph의 10배 토큰 절감 효과는 특정 시나리오에서의 측정값이며, 실제 사용 환경이나 다른 코드베이스에서는 그 효과가 달라질 수 있습니다. 개발자는 이러한 잠재적 변수들을 고려하여 @ttsc/graph를 도입하고, 실제 사용 경험을 공유하며 개선에 기여하는 것이 중요합니다.
📝 원문 및 참고
- 원문: [링크 열기](https://dev.to/samchon/i-made-ts-compiler-graph-mcp-10x-fewer-tokens-in-claude-code-1aea)
- GeekNews 토픽: [보기](https://news.hada.io/topic?id=31006)
---
출처: GeekNews ([원문 링크](https://dev.to/samchon/i-made-ts-compiler-graph-mcp-10x-fewer-tokens-in-claude-code-1aea))
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠

댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.