TRENDSHIFT · 2026.06.15

Understand Anything 딥다이브
— 코드베이스를 클릭 가능한 "지식 그래프"로 바꾸는 멀티에이전트 플러그인

Understand Anything(Egonex-AI)는 200,000줄짜리 낯선 코드베이스를 만났을 때 "어디서부터 봐야 하나"를 풀어 주는 도구다. /understand 한 줄이면 멀티에이전트 파이프라인이 프로젝트를 훑어 모든 파일·함수·클래스·의존성을 추출하고, 이를 노드와 엣지로 이루어진 지식 그래프(JSON)로 만든 뒤, 팬·줌·검색·클릭이 되는 인터랙티브 대시보드로 보여 준다. 핵심은 tree-sitter(결정적 구문 분석) + LLM(의미 분석)을 섞은 하이브리드라는 점 — 구조는 매번 똑같이 재현되고, "이 파일이 무엇을 위한 것인가"라는 의도는 LLM이 채운다. (저장소: Egonex-AI/Understand-Anything · TypeScript · MIT · Claude Code/Cursor/Copilot/Codex/Gemini 등 멀티플랫폼 플러그인)

이름 충돌 주의: 이 레포는 Lum1104/Understand-Anything(원작)을 이어받아 Egonex가 발전시킨 별개 프로젝트다. 원작이 단일 도구였다면, 이쪽은 pnpm 모노레포 · 9종 에이전트 · 17개 플랫폼 설치기 · React 대시보드 · 도메인/지식베이스 분석까지 갖춘 본격 제품 형태다.
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 / 환경 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 레포가 무엇을 하는 물건인가.

핵심 메시지

"코드를 한 줄씩 눈으로 따라가던 일을,
파일·함수·의존성의 '지도'를 자동으로 그려 한눈에 보게 만든 것."

새 팀에 합류해 20만 줄짜리 코드베이스를 받았다고 하자. 보통은 main부터 무작정 읽어 내려가며 머릿속에 구조도를 그린다. Understand Anything은 그 "머릿속 구조도"를 실제 데이터(지식 그래프)로 외부화하고, 색으로 계층을 구분한 인터랙티브 그래프로 띄운다.

각 노드를 클릭하면 평이한 영어(또는 한국어) 요약·관계·가이드 투어가 뜬다. "인증을 담당하는 부분이 어디냐?"를 의미로 검색하고, 내 변경이 어디까지 파급되는지(diff 영향)를 커밋 전에 본다. 그래프는 그냥 JSON이라 커밋해서 팀과 공유하면 동료는 분석 파이프라인을 다시 돌릴 필요가 없다.

Understand Anything코드 이해(code comprehension) 계열의 개발자 도구다. Claude Code 플러그인으로 시작했지만 지금은 Cursor · VS Code Copilot · Codex · Gemini CLI · OpenCode 등 17개 플랫폼에서 동작한다. /understand로 그래프를 만들고, /understand-dashboard로 시각화하며, /understand-chat·/understand-diff·/understand-explain·/understand-onboard·/understand-domain·/understand-knowledge 같은 명령으로 질의·영향분석·온보딩 문서까지 뽑는다.

용어
지식 그래프 (Knowledge Graph)
정보를 노드(개체)와 엣지(관계)로 표현한 데이터 구조. 여기서는 파일·함수·클래스가 노드, "import한다 / 호출한다 / 상속한다" 같은 관계가 엣지다. 코드를 "텍스트"가 아니라 "연결된 그물망"으로 보게 만들어, 부분이 전체에 어떻게 맞물리는지 드러낸다.
용어
멀티에이전트 파이프라인 (Multi-Agent Pipeline)
하나의 큰 작업을 역할이 다른 여러 LLM 에이전트가 단계별로 분담해 처리하는 방식. Understand Anything은 파일 스캐너 · 파일 분석가 · 아키텍처 분석가 · 투어 작성가 · 그래프 검수가 등 9종 에이전트가 릴레이로 그래프를 완성한다.

2왜 주목받는가

트렌딩 이유 · 단순 "AI에게 물어보기"와의 차이.

요즘은 코드를 모르면 그냥 AI에게 물어보면 된다고들 한다. 그런데 LLM에게 "이 코드베이스 설명해줘"라고 하면 매번 답이 다르고, 큰 레포는 컨텍스트에 다 안 들어가며, 환각으로 없는 함수를 지어낸다. Understand Anything이 주목받는 이유는 이 세 약점을 정면으로 푼다는 데 있다 — ① tree-sitter로 구조를 결정적으로 추출(같은 코드 → 같은 그래프), ② 한 번 만든 그래프를 JSON으로 커밋·공유(매번 재분석 불필요), ③ 증분 분석(바뀐 파일만 다시 본다).

비교 항목그냥 LLM에게 질문Understand Anything
재현성매번 답이 달라짐구조 부분은 결정적(tree-sitter, 같은 입력=같은 엣지)
큰 코드베이스컨텍스트 한도 초과파일별 분해 + 병렬 분석(배치당 20~30파일, 동시 5개)
환각없는 함수·관계를 지어냄구문 트리에 근거(grounded)를 둔 노드/엣지
재사용대화 끝나면 사라짐그래프 = JSON, git에 커밋해 팀과 공유
탐색 UX텍스트 답변뿐팬·줌·검색·클릭 가능한 시각 대시보드
변경 영향일일이 물어봐야/understand-diff파급 범위 시각화
플랫폼도구마다 따로17개 AI 코딩 플랫폼 공통 지원
기존 방식의 한계
"LLM에게 통째로 던지기"의 함정 — 비결정성과 컨텍스트 한계

거대한 코드베이스를 LLM 컨텍스트에 한 번에 넣을 수는 없다. 잘라 넣으면 전체 구조가 깨지고, 같은 질문에도 매번 다른 답이 나오며, 모델은 "있을 법한" 함수를 그럴싸하게 지어낸다(환각). 결정적으로, 이렇게 얻은 이해는 대화가 끝나면 증발해 팀과 공유할 수도, 다음에 재사용할 수도 없다.

Understand Anything의 해결
"결정적 구조 + 의미적 설명"의 분업, 그리고 영속화

구조적 사실(imports·calls·inherits)은 tree-sitter가 결정적으로 뽑고, 그 위에 LLM이 요약·태그·계층·도메인 같은 '의도'만 얹는다. 두 결과를 합쳐 하나의 knowledge-graph.json으로 디스크에 영속화하고, 바뀐 파일만 골라 다시 분석하는 핑거프린트 기반 증분 갱신으로 비용을 줄인다. "변하지 않는 사실은 파서가, 변하는 해석은 LLM이"라는 분업이 설계 철학이다.

3기술 스택 전체 지도

분석 엔진(코어)·대시보드(프론트)·플러그인/인프라 각각.

① 분석 엔진 (코어) — @understand-anything/core

전부 TypeScript(strict 모드) + ESM으로 짜였고, Node.js 22+에서 돈다. 코어는 브라우저(대시보드)에서도 일부 모듈을 재사용하기 위해 ./search·./types·./schema 같은 서브패스 export로 잘게 나뉘어, Node 전용 모듈이 브라우저 번들에 딸려 들어가지 않게 막는다.

요소역할
TypeScript 5.7+전체 언어. strict 모드, ESM("type":"module").
web-tree-sitter (WASM)결정적 구문 분석. 네이티브 바인딩이 darwin/arm64+Node24에서 깨져 WASM판을 채택.
tree-sitter 문법 13종TS·JS·Python·Go·Rust·Java·Ruby·PHP·C·C++·C#·Dart·Kotlin 등의 WASM 문법.
fuse.js퍼지 검색 엔진(이름·태그·요약 가중치 검색). 오타에도 관대.
임베딩 검색embedding-search.ts — 코사인 유사도 기반 의미 검색.
vitest전 패키지 단위 테스트 러너.

② 대시보드 (프론트엔드) — @understand-anything/dashboard

요소역할
React 19 + Vite 6SPA 대시보드. 빠른 dev 서버·HMR.
@xyflow/react (React Flow)노드·엣지 그래프 렌더링·팬·줌·드래그의 핵심.
zustand전역 상태(선택 노드·필터·페르소나) 관리.
TailwindCSS v4다크 럭셔리 테마(딥 블랙 #0a0a0a + 골드 #d4a574).
elkjs · @dagrejs/dagre · d3-force3종 그래프 레이아웃 엔진(계층·DAG·force-directed).
graphology + Louvain커뮤니티 클러스터링(연관 노드 자동 군집화).
prism-react-renderer노드 클릭 시 슬라이드업 소스 뷰어(문법 하이라이팅).
react-markdown요약·투어 설명의 마크다운 렌더.

③ 플러그인 · 멀티플랫폼 · 인프라

요소역할
pnpm 모노레포pnpm-workspace.yaml — core·dashboard·plugin·homepage 워크스페이스.
플러그인 매니페스트.claude-plugin·.cursor-plugin·.copilot-plugin 자동 디스커버리.
install.sh / install.ps1원라인 설치기. 17개 플랫폼에 맞는 심볼릭 링크 생성.
Skills + Agents마크다운 프론트매터로 정의된 8개 스킬·9개 에이전트.
post-commit 훅--auto-update — 매 커밋마다 그래프 증분 패치.
git-lfs / committed graph큰 그래프(10MB+)는 LFS로, 그래프 JSON을 레포에 커밋해 공유.
다국어 출력--language ko/zh/ja/... — 요약·UI·투어를 지정 언어로 생성.
용어
tree-sitter
소스 코드를 구체 구문 트리(CST)로 파싱하는 증분 파서 라이브러리. 언어마다 문법(grammar)이 있고, "이건 함수 정의, 저건 import문"을 결정적으로 식별한다. 정규식과 달리 언어 구조를 진짜 이해하므로, 같은 코드는 언제나 같은 트리를 낸다 — 그래프의 재현성이 여기서 나온다. 이 프로젝트는 네이티브 빌드 문제를 피하려 WASM판(web-tree-sitter)을 쓴다.

4아키텍처 심화 분석

코드 → 7단계 멀티에이전트 파이프라인 → 지식 그래프 JSON → 대시보드.

전체 흐름 한눈에

입력은 코드베이스(디렉토리). /understand가 7단계 파이프라인을 오케스트레이션한다. 먼저 스캐너가 파일·언어·프레임워크를 찾고, 파일 분석가가 배치 단위(20~30개)로 병렬 실행되며 각 파일에서 tree-sitter로 구조를 뽑고 LLM으로 요약·태그를 붙인다. 이어 아키텍처 분석가가 계층을 식별하고, 투어 작성가가 의존성 순서대로 학습 투어를 만들며, 검수가가 그래프 무결성을 검증한 뒤, 모든 조각을 합쳐 knowledge-graph.json으로 영속화한다. 마지막에 자동으로 /understand-dashboard가 떠 그래프를 시각화한다.

코드베이스 디렉토리 (예: 20만 줄짜리 모노레포) │ ┌───────────────▼────────────────┐ │ [Phase 1] project-scanner │ │ 파일 발견 · 언어/프레임워크 감지 │ │ .gitignore 존중 · 무시 규칙 생성 │ └───────────────┬────────────────┘ │ 파일 목록 + importMap 사전해석 ═════════ [Phase 2] file-analyzer (병렬, 동시 5 / 배치 20~30) ═════════ ┌───────────────┴───────────────┐ ▼ (2단계 분석을 파일마다 수행) ▼ [1] tree-sitter 구조 추출(결정적) [2] LLM 의미 분석 함수·클래스·import·export 요약·태그·복잡도 call site·상속·구현 languageNotes(언어개념) └───────────────┬───────────────┘ 노드(GraphNode) + 엣지(GraphEdge) 생성 ═════════════════════════╤═══════════════════════════════════ │ 중간 결과 → .understand-anything/intermediate/ ┌───────────────▼────────────────┐ │ [Phase 3] architecture-analyzer │ │ 계층 식별: API/Service/Data/UI… │ │ [Phase 4] tour-builder │ │ 의존성 순서 가이드 투어 생성 │ │ [Phase 5] graph-reviewer │ │ 무결성·참조정합성 검증(inline) │ └───────────────┬────────────────┘ │ 조립 + 중간파일 정리 ┌───────────────▼────────────────┐ │ [Phase 6] 그래프 영속화 │ │ .understand-anything/ │ │ knowledge-graph.json (단일 진실원) │ │ 핑거프린트 저장 → 증분 갱신용 │ └───────────────┬────────────────┘ │ /understand 가 자동 트리거 ┌───────────────▼────────────────┐ │ [Phase 7] /understand-dashboard │ │ React Flow 그래프 + 우측 사이드바│ │ 계층 색상·검색·소스 뷰어·페르소나│ └─────────────────────────────────┘ 추가 명령: /understand-chat(질의) · /understand-diff(영향) · /understand-domain(도메인) · /understand-knowledge(위키)

21종 노드 · 35종 엣지 — 풍부한 그래프 스키마

이 도구의 표현력은 노드 타입 21종, 엣지 타입 35종이라는 풍부한 스키마에서 나온다(core/src/types.ts). 코드뿐 아니라 설정·문서·서비스·테이블·엔드포인트, 나아가 비즈니스 도메인과 위키 지식까지 같은 그래프 안에 표현한다.

노드 카테고리타입 (일부)
코드 (5)file · function · class · module · concept
비코드 (8)config · document · service · table · endpoint · pipeline · schema · resource
도메인 (3)domain · flow · step — 비즈니스 프로세스 매핑
지식 (5)article · entity · topic · claim · source — 위키/지식베이스
엣지 카테고리타입 (일부)
구조 (Structural)imports · exports · contains · inherits · implements
행위 (Behavioral)calls · subscribes · publishes · middleware
데이터 흐름reads_from · writes_to · transforms · validates
의미/의존depends_on · tested_by · related · similar_to
지식cites · contradicts · builds_on · exemplifies
GraphNode 스키마 (types.ts 발췌)
export interface GraphNode {
  id: string;
  type: NodeType;          // 21종 중 하나
  name: string;
  filePath?: string;
  lineRange?: [number, number];
  summary: string;         // ← LLM이 채우는 "평이한 설명"
  tags: string[];          // ← LLM 태그
  complexity: "simple" | "moderate" | "complex";
  languageNotes?: string;  // ← 이 노드에 쓰인 언어 개념(제네릭·클로저 등)
  domainMeta?: DomainMeta;
  knowledgeMeta?: KnowledgeMeta;
}

구조 필드(id·type·filePath·lineRange·관계)는 tree-sitter가, 의미 필드(summary·tags·complexity·languageNotes)는 LLM이 채운다. 이 한 인터페이스에 "결정적 + 의미적" 하이브리드가 그대로 새겨져 있다.

핵심 설계 패턴

패턴이 레포에서의 구현
하이브리드 분석tree-sitter(결정적 구조) + LLM(의미). 같은 코드 → 같은 엣지, 의도는 LLM이.
플러그인 아키텍처AnalyzerPlugin 인터페이스 + 레지스트리. 언어 추가 = 추출기 플러그인 등록.
중간 결과 디스크 격리에이전트는 결과를 intermediate/에 쓰고 컨텍스트로 안 돌려줌(토큰 절약).
핑거프린트 증분fingerprint.ts — 파일 해시로 변경 감지, 바뀐 것만 재분석.
서브패스 export 격리core를 ./search·./types 등으로 쪼개 Node 모듈이 브라우저로 안 새게.
스키마 검증그래프 로드 시 스키마 검증, 실패 시 대시보드 경고 배너.
모델 비명시 프론트매터에이전트에 model 필드를 비워 플랫폼 기본 모델로 폴백(opencode 호환).
페르소나 적응 UI주니어/PM/파워유저에 따라 대시보드 상세도 자동 조절.
비유 — 하이브리드 분석

코드 분석을 "건축물 실측 + 도슨트 해설"로 생각하자. 측량사(tree-sitter)는 줄자로 벽·문·기둥의 위치를 한 치 오차 없이 똑같이 잰다 — 누가 재든 같은 도면이 나온다. 하지만 "이 방이 왜 여기 있고 무슨 용도인지"는 측량사가 모른다. 그래서 도슨트(LLM)가 그 도면 위에 "여긴 인증을 처리하는 거실", "이 복도는 결제 흐름"이라고 의미를 입힌다. Understand Anything은 이 둘을 한 그래프로 합쳐, 정확한 구조와 살아 있는 의미를 동시에 준다.

5디렉토리 구조 해부

pnpm 모노레포 — 플러그인 안에 core·dashboard·skills·agents가 모두 있다.

Understand-Anything/ ├── understand-anything-plugin/ ★ 플러그인 본체 (모든 소스가 여기) │ ├── packages/ │ │ ├── core/ ★ 분석 엔진 (@understand-anything/core) │ │ │ └── src/ │ │ │ ├── types.ts ★ 21노드·35엣지 그래프 스키마 │ │ │ ├── schema.ts 그래프 검증 │ │ │ ├── search.ts fuse.js 퍼지 검색 │ │ │ ├── embedding-search.ts 코사인 유사도 의미 검색 │ │ │ ├── fingerprint.ts 핑거프린트(증분 갱신) │ │ │ ├── change-classifier.ts diff 변경 분류 │ │ │ ├── analyzer/ │ │ │ │ ├── graph-builder.ts ★ 구조→그래프 조립 │ │ │ │ ├── llm-analyzer.ts LLM 의미 분석 │ │ │ │ ├── layer-detector.ts 계층 식별(API/Service/…) │ │ │ │ └── tour-generator.ts 가이드 투어 생성 │ │ │ ├── plugins/ │ │ │ │ ├── tree-sitter-plugin.ts ★ WASM 구문 분석 │ │ │ │ ├── registry.ts / discovery.ts 플러그인 등록·탐색 │ │ │ │ └── extractors/ 언어별 추출기(TS·Py·Go·Rust…) │ │ │ ├── languages/ 언어·프레임워크 레지스트리 │ │ │ └── persistence/ 그래프 디스크 저장/로드 │ │ └── dashboard/ ★ React 19 + Vite 대시보드 │ │ └── src/ │ │ ├── components/ GraphView·NodeInfo·CodeViewer· │ │ │ LayerLegend·PersonaSelector 등 30+ │ │ ├── store.ts zustand 전역 상태 │ │ └── utils/ layout·elk-layout·edgeAggregation │ ├── skills/ ★ 8개 슬래시 명령 정의 │ │ ├── understand/ /understand (+ languages·frameworks) │ │ ├── understand-dashboard/ /understand-dashboard │ │ ├── understand-chat/ understand-diff/explain/onboard/ │ │ └── understand-domain/ understand-knowledge/ │ ├── agents/ ★ 9개 에이전트 (md 프론트매터) │ │ ├── project-scanner.md 파일·언어 발견 │ │ ├── file-analyzer.md ★ 2단계(구조+의미) 분석 │ │ ├── architecture-analyzer.md 계층 식별 │ │ ├── tour-builder.md 학습 투어 │ │ ├── graph-reviewer.md 그래프 검수 │ │ ├── domain-analyzer.md 비즈니스 도메인 추출 │ │ └── article-analyzer.md 위키 지식 추출 │ ├── src/ 스킬 TS 소스(chat·diff·explain·onboard) │ └── hooks/ post-commit 자동 갱신 훅 ├── .claude-plugin/ .cursor-plugin/ .copilot-plugin/ 매니페스트(자동 디스커버리) ├── install.sh / install.ps1 17개 플랫폼 원라인 설치기 ├── homepage/ 랜딩 페이지 + 라이브 데모 ├── scripts/generate-large-graph.mjs 성능 테스트용 가짜 그래프 생성 ├── tests/skill/ 스킬 단위 테스트(vitest) ├── pnpm-workspace.yaml 모노레포 워크스페이스 정의 └── README.md / CLAUDE.md (8개 언어 README는 READMEs/ 에)
읽는 순서 추천

core/src/types.ts의 노드/엣지 스키마로 "무엇을 그래프로 만드나" 파악 → ② plugins/tree-sitter-plugin.ts로 구조 추출 방식 → ③ analyzer/graph-builder.ts로 구조→그래프 조립 → ④ agents/file-analyzer.md로 LLM이 의미를 얹는 2단계 프롬프트 → ⑤ dashboard/src/components/GraphView.tsx로 시각화. 결정적 추출부터 의미적 해석, 시각화까지의 전 여정이 이 다섯 곳에 압축돼 있다.

6학습 포인트 (기술별)

개발자 도구·LLM 오케스트레이션·그래프 시각화에서 무엇을 배우나.

A. tree-sitter + LLM 하이브리드 — "결정적 + 의미적"의 분업

가장 큰 배울 점은 "무엇을 코드(결정적)로 두고, 무엇을 LLM(확률적)에 맡길지"의 경계 설계다. 구조적 사실은 매번 같아야 하므로 tree-sitter로, "이게 무슨 의도냐"는 본질적으로 해석이라 LLM으로 나눴다. 이 분업 덕에 그래프가 재현 가능하면서도 풍부하다. 이는 RAG·코드 인덱싱·문서 처리 등 "정확성과 유연성을 동시에 원하는 모든 LLM 시스템"에 옮겨 쓸 수 있는 원칙이다.

실습: 작은 TS 파일 하나를 web-tree-sitter로 파싱해 함수·import만 추출하는 30줄 스크립트를 짜 보라. 그다음 같은 파일을 LLM에 "구조를 JSON으로" 요청해, 둘의 재현성 차이를 비교.

B. 멀티에이전트 오케스트레이션 — 역할 분담과 중간 결과 격리

9종 에이전트가 릴레이로 일하되, 중간 결과를 컨텍스트로 되돌리지 않고 intermediate/ 디스크에 쓴다는 점이 핵심이다. 큰 코드베이스를 한 컨텍스트에 다 넣을 수 없으니, 파일을 배치(20~30개)로 쪼개 동시 5개 병렬 처리하고 결과만 모은다. "에이전트 = 컨텍스트 윈도우의 분할 정복"이라는 패턴을 실물로 보여 준다.

실습: agents/file-analyzer.md의 2단계(구조 추출 스크립트 → LLM 분석) 프롬프트 구조를 읽고, "왜 구조를 먼저 결정적으로 뽑은 뒤 LLM에 넘기는가(=환각 억제)"를 한 문단으로 정리하라.

C. 모노레포 + 브라우저/Node 경계 관리

같은 core 코드를 Node(CLI 분석기)와 브라우저(대시보드)가 함께 쓰는데, Node 전용 모듈(fs 등)이 브라우저 번들에 새면 빌드가 깨진다. 해법은 ./search·./types·./schema 같은 서브패스 export로 브라우저-안전 표면만 노출하는 것. pnpm 워크스페이스에서 패키지 경계를 어떻게 설계하는지 배울 수 있다.

실습: 작은 pnpm 모노레포(core + web)를 만들어, core의 package.json exports 필드로 "브라우저용 서브패스"와 "Node 전용 메인 엔트리"를 분리해 보라.

D. 그래프 시각화 — React Flow + 레이아웃·클러스터링

수천 노드를 그냥 뿌리면 "털뭉치(hairball)"가 된다. 이 레포는 elkjs·dagre·d3-force 3종 레이아웃graphologyLouvain 커뮤니티 검출로 연관 노드를 군집화하고, 계층별 색상·엣지 집계(aggregation)로 시각 복잡도를 낮춘다. "대규모 그래프를 사람이 읽게 만드는" 정보 시각화의 정석이다.

실습: React Flow로 20개 노드 그래프를 띄우고, dagre 레이아웃과 d3-force 레이아웃을 토글하는 버튼을 붙여 같은 데이터가 어떻게 다르게 배치되는지 관찰하라.

7시스템 / 환경 요구사항

설치는 가볍지만, "LLM 코딩 에이전트"가 전제다.

항목요구사항
런타임Node.js 22 이상(v24에서 개발). pnpm 10 이상(packageManager로 고정).
호스트 도구AI 코딩 에이전트 필수 — Claude Code(네이티브) 또는 Cursor·VS Code Copilot·Codex·Gemini CLI 등 17종 중 하나.
설치(Claude Code)/plugin marketplace add Egonex-AI/Understand-Anything/plugin install understand-anything
설치(기타 플랫폼)curl -fsSL …/install.sh | bash -s codex 식 원라인. ~/.understand-anything/repo에 클론 후 심링크.
그래프 산출물분석 대상 프로젝트의 .understand-anything/knowledge-graph.json(커밋 권장).
큰 그래프10MB+ 그래프는 git-lfs로 추적.
LLM 비용분석은 LLM 호출이라 토큰 비용 발생. 증분 갱신으로 재분석 최소화.
지원 언어(구조분석)tree-sitter 추출기 있는 13종: TS/JS·Python·Go·Rust·Java·Ruby·PHP·C/C++·C#·Dart·Kotlin(그 외는 LLM이 처리).
실무 팁
그래프를 커밋해 "온보딩 비용"을 0으로

.understand-anything/에서 intermediate/diff-overlay.json.gitignore하고 나머지(그래프 JSON)는 커밋하면, 새 팀원은 파이프라인을 돌리지 않고도 바로 대시보드를 연다. --auto-update post-commit 훅을 켜면 매 커밋마다 그래프가 코드와 동기화된 채로 유지된다.

8직접 해볼 수 있는 실습 과제

난이도별 5단계 — 사용부터 내부 엔진 모방까지.

과제 1 난이도 ★☆☆☆☆

내 프로젝트를 그래프로 띄워 보기

plugin을 설치하고 본인의 기존 프로젝트에서 /understand/understand-dashboard를 실행한다. 계층 색상·검색·노드 클릭 요약을 둘러보고, 한국어로 받고 싶으면 /understand --language ko로 다시 생성해 차이를 본다.

과제 2 난이도 ★★☆☆☆

스키마로 그래프 직접 읽기

생성된 .understand-anything/knowledge-graph.json을 열어 nodes/edges 배열을 살펴본다. types.ts의 21노드·35엣지 정의와 대조하며, 본인 코드의 어떤 함수가 어떤 calls/imports 엣지로 연결됐는지 손으로 짚어 본다.

과제 3 난이도 ★★★☆☆

diff 영향 분석 + 온보딩 문서

코드를 조금 수정한 뒤 /understand-diff로 "내 변경이 어디까지 파급되나"를 시각화하고, /understand-onboard로 신규 입사자용 온보딩 가이드를 자동 생성한다. 생성물이 실제 구조와 맞는지 검증해 본다.

과제 4 난이도 ★★★★☆

미니 코드 그래프 추출기 만들기

web-tree-sitter로 작은 TS/JS 디렉토리를 파싱해 파일·함수 노드 + imports 엣지만 뽑아 JSON으로 떨구는 80~120줄짜리 미니 추출기를 만든다. Understand Anything의 GraphNode/GraphEdge 형태를 그대로 흉내 내, 결정적 구조 추출의 핵심을 체득한다.

과제 5 난이도 ★★★★★

LLM 의미 레이어 얹기 + React Flow 시각화

과제 4의 JSON에 LLM 요약·태그(summary·tags)를 배치로 붙여 "하이브리드 그래프"를 완성하고, React Flow + dagre로 띄운다. 노드 클릭 시 요약을 보여 주는 사이드바까지 붙이면, 사실상 Understand Anything의 축소판을 직접 만든 셈이다.

9관련 기술 심화 학습 로드맵

6주 코스 — 구문 분석부터 멀티에이전트·그래프 시각화까지.

주차주제실습 · 참고
1주차tree-sitter 기초 — CST·문법·쿼리·WASM 로딩tree-sitter 공식 문서 · tree-sitter-plugin.ts 정독
2주차코드 그래프 모델링 — 노드/엣지 스키마 설계types.ts(21노드·35엣지) · graph-builder.ts
3주차멀티에이전트 오케스트레이션 — 역할분담·중간결과 격리agents/*.md 9종 · 배치 병렬·핑거프린트 증분
4주차검색 — 퍼지(fuse.js) vs 임베딩 의미 검색search.ts·embedding-search.ts 비교 구현
5주차그래프 시각화 — React Flow·레이아웃·클러스터링dashboard/components/GraphView · elkjs/dagre/d3-force
6주차플러그인/모노레포 배포 — 멀티플랫폼·서브패스 exportinstall.sh·매니페스트·pnpm workspace 경계 설계

10핵심 키워드 사전

본문·소스에 나온 용어 빠른 참조.

용어의미
지식 그래프노드(파일·함수·클래스)와 엣지(관계)로 코드를 표현한 데이터 구조.
tree-sitter소스를 구체 구문 트리(CST)로 파싱하는 결정적 증분 파서. WASM판 사용.
하이브리드 분석구조=tree-sitter(결정적), 의미=LLM(요약·태그)으로 나눈 분업.
멀티에이전트 파이프라인스캐너·분석가·검수가 등 9종 에이전트가 릴레이로 그래프를 완성.
GraphNode / GraphEdge그래프의 기본 단위. 21종 노드 타입, 35종 엣지 타입.
증분 갱신 (incremental)핑거프린트(파일 해시)로 변경 파일만 골라 재분석해 비용 절감.
계층 (Layer)API·Service·Data·UI·Middleware 등 아키텍처 그룹. 색상으로 구분.
가이드 투어 (Tour)의존성 순서대로 코드베이스를 학습하게 하는 자동 생성 워크스루.
도메인 분석/understand-domain — 코드를 비즈니스 도메인·플로우·스텝으로 매핑.
지식베이스 분석/understand-knowledge — Karpathy 패턴 LLM 위키를 그래프화.
서브패스 exportcore를 ./search 등으로 쪼개 브라우저-안전 표면만 노출.
커뮤니티 클러스터링graphology Louvain으로 연관 노드를 자동 군집화(시각 복잡도↓).
페르소나 적응 UI주니어/PM/파워유저에 맞춰 대시보드 상세도를 조절.
diff 영향 분석/understand-diff — 변경이 그래프에서 어디까지 파급되는지 시각화.
pnpm 모노레포core·dashboard·plugin·homepage를 한 저장소 워크스페이스로 관리.

11참고 링크