Lum1104 05fd42343c fix(merge): recover imports edges file-analyzer batches drop
A controlled-experiment audit on a 1240-file Python project (opensre)
showed that 27.2% of resolved-internal imports never made it from
project-scanner's `importMap` into the final knowledge graph. Of the
404 source files with internal imports, 91 ended up with ZERO imports
edges in the graph despite their `file:` node being present (consistent
with main-session orchestrator dropping the entry from `batchImportData`
during batch construction), and 104 had partial coverage (consistent
with file-analyzer agent dropping rows during edge enumeration).
GitHub issue #128 reported the same failure mode at 16-21% on a Go
monorepo.

The fix has two layers:

1. `merge-batch-graphs.py` now runs a deterministic recovery pass
   after merge: for every `(source, target)` in scan-result.json's
   `importMap` whose source `file:` node exists in the assembled graph
   and whose target `file:` node also exists, emit an `imports` edge
   if the batches didn't already. Recovered edges are tagged
   `recoveredFromImportMap: true` so downstream consumers can audit
   which edges came from the deterministic source vs. agent emission.
   The merge report logs the recovered count plus how many importMap
   entries were skipped because their source/target had no graph node.

2. `file-analyzer.md` rewrites the imports edge rule to demand 1:1
   emission with a self-check: "the number of `imports` edges in your
   output MUST equal `sum(batchImportData[file].length)` across the
   batch's code files". This drives the agent to enumerate every row
   instead of summarizing — recovery should report 0 when this works.

Tests: +6 cases covering the recovery path — drops, no-double-emit,
missing source/target nodes, missing scan-result.json (incremental
update), and self-import suppression. 770 passing (was 764).

Bumps version to 2.6.3 across the five tracked manifests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
05fd42343c · 2026-05-08 19:35:34 +08:00
460 Commits
2026-04-25 20:49:48 +08:00
2026-03-17 14:54:57 +08:00

Understand Anything

Turn any codebase, knowledge base, or docs into an interactive knowledge graph you can explore, search, and ask questions about.
Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español | Türkçe

Star History Rank

Quick Start License: MIT Claude Code Codex Copilot Copilot CLI Gemini CLI OpenCode Homepage Live Demo

Understand Anything — Turn any codebase into an interactive knowledge graph

💬 Join the Discord community →
Ask questions, share what you've built, get help from the community.


Tip

A huge thank you to the community! The support for Understand-Anything has been incredible. If this tool saves you a few minutes of digging through complexity, that's all I wanted. 🚀

You just joined a new team. The codebase is 200,000 lines of code. Where do you even start?

Understand Anything is a Claude Code Plugin that analyzes your project with a multi-agent pipeline, builds a knowledge graph of every file, function, class, and dependency, then gives you an interactive dashboard to explore it all visually. Stop reading code blind. Start seeing the big picture.

Graphs that teach > graphs that impress.


Features

Note

Want to skip the reading? Try the live demo in our homepage — a fully interactive dashboard you can pan, zoom, search, and explore right in your browser.

Explore the structural graph

Navigate your codebase as an interactive knowledge graph — every file, function, and class is a node you can click, search, and explore. Select any node to see plain-English summaries, relationships, and guided tours.

Structural graph — explore files, functions, classes and their relationships

Understand business logic

Switch to the domain view and see how your code maps to real business processes — domains, flows, and steps laid out as a horizontal graph.

Domain graph — business domains, flows, and process steps

Analyze knowledge bases

Point /understand-knowledge at a Karpathy-pattern LLM wiki and get a force-directed knowledge graph with community clustering. The deterministic parser extracts wikilinks and categories from index.md, then LLM agents discover implicit relationships, extract entities, and surface claims — turning your wiki into a navigable graph of interconnected ideas.

🧭 Guided Tours

Auto-generated walkthroughs of the architecture, ordered by dependency. Learn the codebase in the right order.

Find anything by name or by meaning. Search "which parts handle auth?" and get relevant results across the graph.

📊 Diff Impact Analysis

See which parts of the system your changes affect before you commit. Understand ripple effects across the codebase.

🎭 Persona-Adaptive UI

The dashboard adjusts its detail level based on who you are — junior dev, PM, or power user.

🏗️ Layer Visualization

Automatic grouping by architectural layer — API, Service, Data, UI, Utility — with color-coded legend.

📚 Language Concepts

12 programming patterns (generics, closures, decorators, etc.) explained in context wherever they appear.


🚀 Quick Start

1. Install the plugin

/plugin marketplace add Lum1104/Understand-Anything
/plugin install understand-anything

2. Analyze your codebase

/understand

A multi-agent pipeline scans your project, extracts every file, function, class, and dependency, then builds a knowledge graph saved to .understand-anything/knowledge-graph.json.

3. Explore the dashboard

/understand-dashboard

An interactive web dashboard opens with your codebase visualized as a graph — color-coded by architectural layer, searchable, and clickable. Select any node to see its code, relationships, and a plain-English explanation.

4. Keep learning

# Ask anything about the codebase
/understand-chat How does the payment flow work?

# Analyze impact of your current changes
/understand-diff

# Deep-dive into a specific file or function
/understand-explain src/auth/login.ts

# Generate an onboarding guide for new team members
/understand-onboard

# Extract business domain knowledge (domains, flows, steps)
/understand-domain

# Analyze a Karpathy-pattern LLM wiki knowledge base
/understand-knowledge ~/path/to/wiki

🌐 Multi-Platform Installation

Understand-Anything works across multiple AI coding platforms.

Claude Code (Native)

/plugin marketplace add Lum1104/Understand-Anything
/plugin install understand-anything

One-line install (Codex / OpenCode / OpenClaw / Antigravity / Gemini CLI / Pi Agent / VS Code Copilot)

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.sh | bash
# or skip the prompt by passing the platform:
curl -fsSL https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.sh | bash -s codex

Windows (PowerShell):

iwr -useb https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.ps1 | iex

The installer clones the repo to ~/.understand-anything/repo and creates the right symlinks for the chosen platform. Restart your CLI/IDE afterwards.

  • Supported <platform> values: gemini, codex, opencode, pi, openclaw, antigravity, vscode
  • Update later: ./install.sh --update
  • Uninstall: ./install.sh --uninstall <platform>

Cursor

Cursor auto-discovers the plugin via .cursor-plugin/plugin.json when this repo is cloned. No manual installation needed — just clone and open in Cursor.

VS Code + GitHub Copilot

VS Code with GitHub Copilot (v1.108+) auto-discovers the plugin via .copilot-plugin/plugin.json when this repo is cloned. No manual installation needed — just clone and open in VS Code.

For personal skills (available across all projects), run the install.sh above with the vscode platform.

Copilot CLI

copilot plugin install Lum1104/Understand-Anything:understand-anything-plugin

Platform Compatibility

Platform Status Install Method
Claude Code Native Plugin marketplace
Cursor Supported Auto-discovery
VS Code + GitHub Copilot Supported Auto-discovery
Copilot CLI Supported Plugin install
Codex Supported install.sh codex
OpenCode Supported install.sh opencode
OpenClaw Supported install.sh openclaw
Antigravity Supported install.sh antigravity
Gemini CLI Supported install.sh gemini
Pi Agent Supported install.sh pi

📦 Share the Graph with Your Team

The graph is just JSON — commit it once, and teammates skip the pipeline. Good for onboarding, PR reviews, and docs-as-code.

Example: GoogleCloudPlatform/microservices-demo (fork) — Go / Java / Python / Node reference with a committed graph.

What to commit: everything in .understand-anything/ except intermediate/ and diff-overlay.json (those are local scratch).

.understand-anything/intermediate/
.understand-anything/diff-overlay.json

Keep it fresh: enable /understand --auto-update — a post-commit hook incrementally patches the graph so each commit lands with a matching graph. Or re-run /understand manually before releases.

Large graphs (10 MB+): track with git-lfs.

git lfs install
git lfs track ".understand-anything/*.json"
git add .gitattributes .understand-anything/

🔧 Under the Hood

Multi-Agent Pipeline

The /understand command orchestrates 5 specialized agents, and /understand-domain adds a 6th:

Agent Role
project-scanner Discover files, detect languages and frameworks
file-analyzer Extract functions, classes, imports; produce graph nodes and edges
architecture-analyzer Identify architectural layers
tour-builder Generate guided learning tours
graph-reviewer Validate graph completeness and referential integrity (runs inline by default; use --review for full LLM review)
domain-analyzer Extract business domains, flows, and process steps (used by /understand-domain)
article-analyzer Extract entities, claims, and implicit relationships from wiki articles (used by /understand-knowledge)

File analyzers run in parallel (up to 5 concurrent, 20-30 files per batch). Supports incremental updates — only re-analyzes files that changed since the last run.


🤝 Contributing

Contributions are welcome! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Run the tests (pnpm --filter @understand-anything/core test)
  4. Commit your changes and open a pull request

Please open an issue first for major changes so we can discuss the approach.


Stop reading code blind. Start understanding everything.

Star History

Star History Chart

MIT License © Lum1104

Languages
TypeScript 71.1%
JavaScript 15.8%
Python 9.2%
Astro 2.2%
PowerShell 0.6%
Other 1%