
토큰을 90% 절감하는 TypeScript 전용 CodeGraph 제작 (기존의 다른 도구들은 토큰을 더 많이 소모하여 Claude Code를
요약
TypeScript 컴파일러를 기반으로 제작된 새로운 CodeGraph MCP 도구인 @ttsc/graph를 소개합니다. 기존 도구들과 달리 실제 컴파일러 정보를 활용하여 토큰 소모량을 90% 절감하고 코딩 에이전트의 성능을 극대화합니다.
핵심 포인트
- TypeScript 컴파일러 기반의 정확한 인덱스 정보 제공
- 기존 MCP 도구 대비 토큰 소모량 90% 절감
- 에이전트의 행동을 방해하지 않는 단순하고 효율적인 도구 구조
- 아키텍처, 런타임 흐름, 타입 관계 등 검증된 데이터 반환
TypeScript 전용 컴파일러 기반 코드 그래프(code graph)입니다. 기존의 코드 그래프 MCP 도구들은 가짜입니다. GitHub 저장소: https://github.com/samchon/ttsc/tree/master/packages/graph 벤치마크 결과: https://ttsc.dev/docs/benchmark/graph/ CodeGraph와 Serena를 사용할 때, 코딩 에이전트(coding agent)를 멍청하게 만들면서 이전보다 더 많은 토큰을 소모하는 것처럼 느껴졌습니다. 이러한 의구심이 들어 일반적인 시나리오로 성능을 측정해 보았고, 토큰 소모량과 인덱싱 시간(indexing time)을 확인한 결과, 그것들이 코딩 에이전트를 돕는 것이 아니라 방해하고 있다는 것을 이해했습니다. 그래서 소스 코드를 분석해 보았고, 그들의 방법론으로는 결코 목표를 달성할 수 없다는 것을 깨달았습니다. 진정한 CodeGraph를 구현하려면 실제 컴파일러(compiler)가 준비되어야 하며, 정확한 인덱스 정보(index information)를 전달해야 합니다. 하지만 다른 그래프 MCP 도구들은 실제 컴파일러에서 시작되지 않았기 때문에, 코딩 에이전트를 망가뜨리는 미친 짓들을 하고 있습니다.
- 초장문 MCP 인스트럭션 (8k 자 이상)
- 극도로 거대한 인덱스
- 53개의 MCP 도구
- 130개의 금지 목록
- 에이전트의 행동을 방해하고 무력화함
그래서 저는 저의 컴파일러 기술을 사용하여 TypeScript 전용 CodeGraph인 @ttsc/graph를 만들었습니다. 위의 벤치마크 결과에서 볼 수 있듯이, 온보딩(on-boarding)과 같은 일반적인 사용 사례를 포함하여 모든 영역에서 압승합니다. 이 도구는 단 하나의 도구만을 가지고 있으며, 코딩 에이전트 자체의 어떤 행동도 금지하지 않습니다. @ttsc/graph가 제공하는 유일한 도구는 다음과 같습니다. 보시다시피 도구는 단순하며, 반환되는 정보는 인덱스 같은 데이터만 포함하고 있어 코딩 에이전트를 해치지 않고 협력합니다. 저는 제 MCP 도구를 많이 테스트해 보았으며, 아직까지 코딩 에이전트에게 해를 끼치는 예상치 못한 동작은 발견하지 못했습니다. 앞으로 약 2주 동안 @ttsc/graph를 더 실험해 보고, 다른 언어 지원과 함께 돌아오겠습니다. 각 언어에 대해 컴파일러 레벨의 MCP 도구를 만들어, 코딩 에이전트를 망가뜨리는 가짜 CodeGraph들을 몰아내기를 희망합니다.
* @param props Reasoning plus one graph request * @returns Matching result` union member */ inspect_typescript_graph( props: ITtscGraphApplication.IProps, ): Promise<ITtscGraphApplication.IOutput>; } export namespace ITtscGraphApplication { /** Draft, review, then submit exactly one graph request or escape. / export interface IProps { / * * 사용자 자신의 말로 작성된 코드 질문. * * 긴 메시지를 요청 사항을 명시하는 문장들로 줄이되, 그들의 용어는 유지합니다: 그래프가 이 단어들과 비교되기 때문에 재작성은 다른 답변을 순위화할 수 있습니다. */ question: string; /** 답할 수 있는 가장 작은 요청과 그 이유. */ draft: IDraft; /** * 초안 수정. 만약 그래프가 이미 답변했거나, 다음 증거가 그래프 밖에 있다면 회피합니다. */ review: string; /** 검토 후 선택된 최종 그래프 요청 또는 아무 작업도 하지 않는 회피(no-op escape). */ request: | ITtscGraphEntrypoints.IRequest | ITtscGraphLookup.IRequest | ITtscGraphTrace.IRequest | ITtscGraphDetails.IRequest | ITtscGraphOverview.IRequest | ITtscGraphTour.IRequest | ITtscGraphEscape.IRequest; } /** 첫 번째 계획; 이유가 타입보다 먼저 오므로 먼저 작성됩니다. / export interface IDraft { / * 이것이 가장 작고 유용한 다음 단계인 이유. */ reason: string; /** 고려 중인 요청 유형. */ type: IProps[
상세 정보의 경우, 해결된 심볼 (resolved symbol)의 두 부분을 보고합니다: 전체로서 반환되는 심볼 자체의 형태 (shape)와, 나머지에 대한 추적(trace)이 포함된 슬라이스(slice) 형태로 반환되는 팬아웃 (fan-out). 순위가 매겨진 작업들 (lookup, entrypoints, tour)에 대해서는, 선택 과정이 휴리스틱 (heuristic) — 즉 질문에 맞춰 매칭(matched), 점수 산정(scored), 순위 지정(ranked) 및 제한(limited)됨 — 이라는 점을 추가합니다. 따라서 사실 관계는 검증되었으나, 최종 후보 목록(shortlist)의 커버리지(coverage)에 대한 판단은 호출자(caller)의 몫입니다. */ audit: string; /** `result`를 어떻게 처리할 것인가: 답변(answer), 지정된 요청 하나를 조사(inspect), 또는 탈출(escape). */ next: ITtscGraphNext; /** 제출된 `request.type`과 일치하는 결과 분기(Result branch). */ result: | ITtscGraphEntrypoints | ITtscGraphLookup | ITtscGraphTrace | ITtscGraphDetails | ITtscGraphOverview | ITtscGraphTour | ITtscGraphEscape; } } ``` https://github.com/samchon/ttsc/blob/master/packages/graph/src/structures/ITtscGraphApplication.ts /u/jhnam88 님이 제출함 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기