Understand Anything

マルチエージェント解析 + tree-sitter で、コード・ビジネスドメイン・Karpathy 型 wiki・Figma デザインをインタラクティブなナレッジグラフに変換

1 — 概要

Understand Anything(Egonex-AI/Understand-Anything、原作者 Lum1104)は、LLM と web-tree-sitter のハイブリッド解析で、コードベース・ビジネスドメイン・Karpathy 型 LLM wiki・Figma デザインをインタラクティブなナレッジグラフにするプラグイン。構造グラフではファイル・関数・クラス・依存を、ドメインビューでは業務プロセスを横方向に可視化。ダッシュボードはペルソナ(Junior / PM / PowerUser)に合わせた情報密度に調整できる。

分析結果の既定保存先は .ua/knowledge-graph.json。既存プロジェクトに .understand-anything/ があればそのまま継続(マイグレーション不要)。React Flow 製ダッシュボードで閲覧し、Git 差分 + fingerprint によるインクリメンタル更新が既定。初回の全解析はトークン消費が大きいので、大規模リポジトリではサブディレクトリ指定やローカルモデル(Ollama 等)を検討する。

9スキルコマンド
38エッジ型
27ノード型
5アーキレイヤー

対象ユーザー

Junior
新規参加の開発者向け。ガイドツアーでコードベースの全体像を素早く把握できる。
PM / Designer
コードを読まない職種向け。アーキテクチャレイヤーを視覚的に確認できる。
PowerUser
AI 開発者向け。自然言語クエリ・差分分析・影響範囲の即時確認。
2 — アーキテクチャ
Plugin Core
understand-anything-plugin/
エージェント定義(.md)・スキル定義・TypeScript ソース(コンテキスト構築・差分分析)
Shared Engine
packages/core/
型定義・Zod スキーマ・Fuse.js 検索・セマンティック検索・静的解析・Gitスタールネス管理
Dashboard UI
packages/dashboard/
React 19 + Vite + TailwindCSS v4。React Flow + ELK レイアウトで大規模グラフを描画。Zustand で状態管理。構造 / ドメイン / デザイン(Figma)ビュー・テーマ切替・多言語 UI に対応。
Standalone Viewer
packages/viewer/
LLM 不要の read-only ダッシュボード。コミット済み .ua/(またはレガシー .understand-anything/)を Node.js ≥ 18 で npx 起動。
Static Analysis
web-tree-sitter (WASM)
web-tree-sitter(WASM)で多言語コード抽出 + 設定・ドキュメント形式を解析。構造エッジは決定論、サマリー・レイヤー・ツアーは LLM。ネイティブ binding が使えない環境でも動作。

/understand がオーケストレーションするエージェントと、ドメイン・ナレッジ・Figma 専用のエージェント。

エージェント役割
project-scannerファイル探索、言語・フレームワーク検出、importMap 構築
file-analyzer関数・クラス・import 抽出、ノード・エッジ生成(最大 5 並列)
assemble-reviewerバッチマージ後のセマンティック修復 — 落ちたノード・型エイリアス・クロスバッチギャップを補完
architecture-analyzerアーキテクチャレイヤー識別
tour-builder依存順ガイドツアー生成
graph-reviewerグラフの完全性・参照整合性(既定はインライン検証。--review でフル LLM レビュー)
domain-analyzerドメイン・フロー・ステップ抽出(/understand-domain)
article-analyzerwiki 記事からエンティティ・主張・暗黙関係を抽出(/understand-knowledge)
design-analyzerFigma ページ・スクリーン・コンポーネント・トークンを解析(/understand-figma)
knowledge-graph-guideグラフ構造・ダッシュボード利用の案内エージェント
モジュール役割
types.tsコアデータ型 — KnowledgeGraph, GraphNode, GraphEdge など
schema.tsZod スキーマ + validateGraph() バリデーション
search.tsFuse.js によるファジー検索エンジン
embedding-search.tsコサイン類似度によるセマンティック検索
staleness.tsGit コミット差分によるグラフ鮮度チェック + 差分マージ
analyzer/graph-builder.tsノード・エッジの組み立てエンジン
analyzer/llm-analyzer.tsLLM へのプロンプト構築 & レスポンスパース
analyzer/layer-detector.tsアーキレイヤー検出(API / Service / Data / UI / Utility)
analyzer/tour-generator.ts依存順序のガイドツアー生成
analyzer/language-lesson.ts言語コンセプト検出・レッスンプロンプト(12 パターン)
analyzer/normalize-graph.tsバッチ出力の正規化・エッジ検証
plugins/tree-sitter-plugin.tstree-sitter(WASM版)を使った静的構文解析
figma/Figma REST API 取得・パース・デザイングラフ merge(kind:"design")
ignore-filter.ts / ignore-generator.ts.understandignore による解析対象の除外(.gitignore 互換)
fingerprint.tsファイル fingerprint ベースライン — インクリメンタル変更検出
3 — 解析フロー
flowchart TD A["/understand コマンド実行"] --> P0 P0["Phase 0 Pre-flight\nフル/インクリメンタル判定\n$UA_DIR 解決・language/auto-update"] --> B0 B0["Phase 0.5\n.understandignore 生成・確認"] --> B B["Phase 1 SCAN\nproject-scanner\nファイル探索・言語検出・importMap"] --> B15 B15["Phase 1.5 BATCH\nセマンティックバッチ分割"] --> C C["Phase 2 ANALYZE\nfile-analyzer × 最大5並列\ntree-sitter + LLM\n→ merge-batch-graphs.py"] --> C2 C2["Phase 3 ASSEMBLE REVIEW\nassemble-reviewer\nバッチ統合・セマンティック修復"] --> D D["Phase 4 ARCHITECTURE\narchitecture-analyzer\nAPI / Service / Data / UI / Utility"] --> E E["Phase 5 TOUR\ntour-builder\n依存順ガイドツアー"] --> F F["Phase 6 REVIEW\ngraph-reviewer\n既定: インライン / --review: LLM"] --> G G["Phase 7 SAVE\nknowledge-graph.json\nfingerprint baseline・meta.json"] --> H H["ダッシュボード自動起動"] style A fill:#0891b2,color:#fff,stroke:none style H fill:#0891b2,color:#fff,stroke:none style G fill:#0369a1,color:#fff,stroke:none
データディレクトリ: 既定は .ua/。既存の .understand-anything/ があればそちらを継続。

インクリメンタル更新(既定): git diff <last-commit>..HEAD + fingerprint で変更ファイルを検出 → 該当ノード・エッジのみ再解析。全再解析は --full。file-analyzer はバッチごとに最大 5 並列(バッチあたり約 20〜30 ファイル)。

自動更新: /understand --auto-update で post-commit フックが有効化され、コミットごとにグラフを差分パッチ。--language ja などでノード説明・ダッシュボード UI・ツアーを指定言語で生成(設定は .ua/config.json に保存。初回は会話言語を検出し、英語以外は確認プロンプト)。
4 — コマンド一覧
コマンド機能モデル
/understand コードベース全体を解析してナレッジグラフを生成。フラグ: --full --review --auto-update --no-auto-update --language <lang>(ISO 639-1 または friendly name) Sonnet + Opus
/understand-dashboard ブラウザで React Flow ダッシュボードを起動 —
/understand-chat <質問> コードベースへの自然言語質問(グラフコンテキスト付き) Sonnet
/understand-diff 現在の変更影響範囲をグラフ上で分析 Sonnet
/understand-explain <パス> 特定ファイル・関数の詳細解説を生成 Opus
/understand-onboard 新メンバー向けオンボーディングガイドを生成 Opus
/understand-domain ビジネスドメイン・フロー・プロセスステップを抽出しドメイングラフを生成(既存グラフからの派生や軽量スキャンにも対応) Opus
/understand-knowledge Karpathy 型 LLM wiki(index.md・wikilink 等)を解析し、エンティティ・主張・トピッククラスタのグラフを生成 Sonnet + agents
/understand-figma <url-or-key> Figma REST API でデザインファイルを解析し kind:"design" グラフを生成。FIGMA_TOKEN 必須(オフライン不可)。UNDERSTAND_FIGMA_FORCE=1 で強制再構築 design-analyzer
呼び出しプレフィックス: 多くのプラットフォームは /understand。Codex は $understand($ プレフィックス)。認識されない場合は自然言語で「understand skill を使ってこのプロジェクトを解析して」と依頼する。
5 — コアデータ型
interface KnowledgeGraph {
  version: string;
  kind?: "codebase" | "knowledge" | "design";
  project: ProjectMeta;
  nodes:   GraphNode[];   // 27 種(コード / 非コード / ドメイン / ナレッジ / デザイン)
  edges:   GraphEdge[];   // 38 種類(Design エッジ含む)
  layers:  Layer[];       // アーキレイヤー (API/Service/Data/UI/Utility)
  tour:    TourStep[];    // ガイドツアーステップ
}
区分ノード型
コード(5)file function class module concept
非コード構造(8)config document service table endpoint pipeline schema resource
ドメイン(3)domain flow step
ナレッジ wiki(5)article entity topic claim source
デザイン / Figma(6)page screen component componentSet instance token
カテゴリエッジ型
Structuralimports exports contains inherits implements
Behavioralcalls subscribes publishes middleware
Data flowreads_from writes_to transforms validates
Dependenciesdepends_on tested_by configures
Semanticrelated similar_to
Infrastructure / Schemadeploys serves provisions triggers migrates documents routes defines_schema
Domaincontains_flow flow_step cross_domain
Knowledgecites contradicts builds_on exemplifies categorized_under authored_by
Designinstance_of variant_of uses_token

プラグインの understand-anything-plugin/src/index.ts からエクスポートされるコンテキスト構築関数:

関数用途
buildChatContext()/understand-chat 用 — グラフを自然言語QA向けに要約
buildDiffContext()/understand-diff 用 — 変更差分の影響ノードを列挙
buildExplainContext()/understand-explain 用 — 対象の周辺グラフを抽出
buildOnboardingGuide()/understand-onboard 用 — ツアーステップをガイド形式に整形
6 — 対応プラットフォーム
プラットフォーム状態インストール方法
Claude Codeネイティブ/plugin marketplace add Egonex-AI/Understand-Anything
Cursor対応リポジトリをクローンして開くと .cursor-plugin/plugin.json を自動検出。手動: Settings → Plugins に GitHub URL
VS Code + GitHub Copilot対応v1.108+。クローンで .copilot-plugin/plugin.json を自動検出。全プロジェクト向けは install.sh vscode
Copilot CLI対応copilot plugin install Egonex-AI/Understand-Anything:understand-anything-plugin
Codex対応install.sh codex(呼び出しは $understand)
OpenCode対応install.sh opencode
OpenClaw対応install.sh openclaw
Antigravity対応install.sh antigravity
Gemini CLI対応install.sh gemini
Pi Agent対応install.sh pi
Vibe CLI対応install.sh vibe
Hermes対応install.sh hermes
Cline対応install.sh cline
KIMI CLI対応install.sh kimi
Trae対応install.sh trae
Nanobot対応install.sh nanobot
Kiro CLI / IDE対応install.sh kiro
ワンラインインストール: リポジトリを ~/.understand-anything/repo にクローンし、選択したプラットフォーム向けにスキル symlink を作成する。install.sh --update で更新、install.sh --uninstall <platform> で削除。Windows は install.ps1。
7 — セットアップ
/plugin marketplace add Egonex-AI/Understand-Anything
/plugin install understand-anything
/understand   # 解析開始(既定はインクリメンタル)

公式 README のとおり、本リポジトリをクローンして Cursor で開けば .cursor-plugin/plugin.json が自動検出され、追加インストールなしでスキルが有効になる。拾われない場合は Cursor Settings → Plugins に https://github.com/Egonex-AI/Understand-Anything を貼る。

別リポジトリだけを開いている場合

解析対象のプロジェクトだけをワークスペースにしているときは、File › Add Folder to Workspace… でクローンした Understand-Anything/ を追加し、./understand-anything-plugin/skills/ などの相対パスが解決できるようにする。

git clone https://github.com/Egonex-AI/Understand-Anything ~/tools/understand-anything
# Cursor で上記フォルダを開く、または既存ワークスペースに追加してから:
/understand
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/Egonex-AI/Understand-Anything/main/install.sh | bash
# プラットフォーム指定(例: codex)
curl -fsSL https://raw.githubusercontent.com/Egonex-AI/Understand-Anything/main/install.sh | bash -s codex

# Windows (PowerShell)
# iwr -useb https://raw.githubusercontent.com/Egonex-AI/Understand-Anything/main/install.ps1 | iex

インストール後は CLI / IDE を再起動。Codex は $understand、それ以外は多くが /understand。

前提: Node.js ≥ 22(開発は v24 系で確認)、pnpm ≥ 10(ルート package.json の packageManager に準拠)

# 依存インストール
pnpm install

# core パッケージをビルド(ダッシュボードが依存)
pnpm --filter @understand-anything/core build

# ダッシュボード開発サーバー
pnpm dev:dashboard

# テスト
pnpm --filter @understand-anything/core test
pnpm --filter @understand-anything/skill test

# Lint
pnpm lint
tree-sitter に注意: 環境によってはネイティブ tree-sitter がビルドできないため、web-tree-sitter(WASM 版)を採用。ネイティブバイナリ前提の変更は動作しない。
8 — チームでグラフを共有

オンボーディング・PR レビュー・docs-as-code に向く。例: GoogleCloudPlatform/microservices-demo(Go / Java / Python / Node の参照グラフ付き)。

コミット対象

既定の .ua/ 配下のうち、intermediate/ と diff-overlay.json は除外(ローカル作業用)。レガシープロジェクトは .understand-anything/ に読み替える。

# .gitignore に追加する例
.ua/intermediate/
.ua/diff-overlay.json

鮮度を保つ

  • /understand --auto-update — post-commit フックでグラフを差分更新
  • リリース前に /understand を手動再実行
  • 10 MB 超の JSON は git-lfs で追跡

LLM なしでダッシュボードを開く

コミット済みグラフがあれば、Claude Code や API キーなしで viewer を起動できる(Node.js ≥ 18)。

npx https://github.com/Egonex-AI/Understand-Anything/releases/latest/download/understand-anything-viewer.tgz /path/to/analyzed/project

プロジェクト直下に .ua/(またはレガシー .understand-anything/)が必要。トークン付きローカル URL が開き、データはマシン外に出ない。