|
|
před 5 měsíci | |
|---|---|---|
| __tests__ | před 5 měsíci | |
| src | před 5 měsíci | |
| .gitignore | před 5 měsíci | |
| CLAUDE.md | před 5 měsíci | |
| IMPLEMENTATION_PLAN.md | před 5 měsíci | |
| README.md | před 5 měsíci | |
| package-lock.json | před 5 měsíci | |
| package.json | před 5 měsíci | |
| tsconfig.json | před 5 měsíci | |
| vitest.config.ts | před 5 měsíci |
When you ask Claude Code to work on a complex task, it spawns Explore agents that scan your codebase using grep, glob, and file reads. These agents consume tokens with every tool call.
CodeGraph gives those agents a semantic knowledge graph — pre-indexed symbol relationships, call graphs, and code structure. Instead of scanning files, agents query the graph instantly.
We ran the same complex task 3 times with and without CodeGraph:
| Metric | Without CodeGraph | With CodeGraph | Improvement |
|---|---|---|---|
| Explore tokens | 157.8k | 111.7k | 29% fewer |
| Per-agent tokens | 74.0k | 46.4k | 37% fewer |
| Tool calls | 60 | 45 | 25% fewer |
| Main context usage | 28.7% | 24.0% | 4.7% less |
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code │
│ │
│ "Implement user authentication" │
│ │ │
│ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Explore Agent │ ──── │ Explore Agent │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
└───────────┼────────────────────────┼─────────────────────────────┘
│ │
▼ ▼
┌───────────────────────────────────────────────────────────────────┐
│ CodeGraph MCP Server │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Search │ │ Callers │ │ Context │ │
│ │ "auth" │ │ "login()" │ │ for task │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ ▼ │
│ ┌───────────────────────┐ │
│ │ SQLite Graph DB │ │
│ │ • 387 symbols │ │
│ │ • 1,204 edges │ │
│ │ • Instant lookups │ │
│ └───────────────────────┘ │
└───────────────────────────────────────────────────────────────────┘
Without CodeGraph: Explore agents use grep, glob, and Read to scan files → many API calls, high token usage
With CodeGraph: Explore agents query the graph via MCP tools → instant results, local processing, fewer tokens
| ### 🧠 Smart Context Building One tool call returns everything Claude needs—entry points, related symbols, and code snippets. No more expensive exploration agents. | ### 🔍 Semantic Search Find code by meaning, not just text. Search for "authentication" and find `login`, `validateToken`, `AuthService`—even with different naming conventions. | ### 📈 Impact Analysis Know exactly what breaks before you change it. Trace callers, callees, and the full impact radius of any symbol. |
| ### 🌍 15+ Languages TypeScript, JavaScript, Python, Go, Rust, Java, C#, PHP, Ruby, C, C++, Swift, Kotlin—all with the same API. | ### 🔒 100% Local No data leaves your machine. No API keys. No external services. Everything runs on your local SQLite database. | ### ⚡ Always Fresh Git hooks automatically sync the index on every commit. Your code intelligence is always up to date. |
npx @colbymchenry/codegraph
The interactive installer will:
~/.claude.jsonRestart Claude Code for the MCP server to load.
For each project you want to use CodeGraph with:
cd your-project
codegraph init -i
That's it! Claude Code will now use CodeGraph tools automatically when a .codegraph/ directory exists.
codegraph # Run interactive installer
codegraph install # Run interactive installer (explicit)
codegraph init [path] # Initialize in a project
codegraph index [path] # Full index
codegraph sync [path] # Incremental update
codegraph status [path] # Show statistics
codegraph query <search> # Search symbols
codegraph context <task> # Build context for AI
codegraph hooks install # Install git auto-sync hook
codegraph serve --mcp # Start MCP server
codegraph / codegraph installRun the interactive installer for Claude Code integration. Configures MCP server and permissions automatically.
codegraph # Run installer (when no args)
codegraph install # Run installer (explicit)
npx @colbymchenry/codegraph # Run via npx (no global install needed)
The installer will:
~/.claude or local ./.claude)claude.jsoncodegraph init [path]Initialize CodeGraph in a project directory. Creates a .codegraph/ directory with the database and configuration.
codegraph init # Initialize in current directory
codegraph init /path/to/project # Initialize in specific directory
codegraph init --index # Initialize and immediately index
codegraph init --no-hooks # Skip git hook installation
codegraph index [path]Index all files in the project. Extracts functions, classes, methods, and their relationships.
codegraph index # Index current directory
codegraph index --force # Force full re-index
codegraph index --quiet # Suppress progress output
codegraph sync [path]Incrementally sync changes since the last index. Only processes added, modified, or removed files.
codegraph sync # Sync current directory
codegraph sync --quiet # Suppress output
codegraph status [path]Show index status and statistics.
codegraph status
Output includes:
codegraph query <search>Search for symbols in the codebase by name.
codegraph query "authenticate" # Search for symbols
codegraph query "User" --kind class # Filter by kind
codegraph query "process" --limit 20 # Limit results
codegraph query "validate" --json # Output as JSON
codegraph context <task>Build relevant code context for a task. Uses semantic search to find entry points, then expands through the graph to find related code.
codegraph context "fix checkout bug"
codegraph context "add user authentication" --format json
codegraph context "refactor payment service" --max-nodes 30
codegraph hooksManage git hooks for automatic syncing.
codegraph hooks install # Install post-commit hook
codegraph hooks remove # Remove hook
codegraph hooks status # Check if hook is installed
codegraph serveStart CodeGraph as an MCP server for AI assistants.
codegraph serve # Show MCP configuration help
codegraph serve --mcp # Start MCP server (stdio)
codegraph serve --mcp --path /project # Specify project path
When running as an MCP server, CodeGraph exposes these tools to AI assistants:
codegraph_explore ⭐ Recommended for complex tasksDeep exploration that returns a condensed brief. Use this for features, refactoring, or multi-file changes to keep your main context clean.
codegraph_explore(task: "implement user authentication", keywords: "auth,login,user")
Returns: Key files, entry points, types, functions, data flow, and suggested next steps.
codegraph_contextBuild context for a specific task. Good for focused queries.
codegraph_context(task: "fix checkout validation bug", maxNodes: 20)
codegraph_searchQuick symbol search by name. Returns locations only.
codegraph_search(query: "UserService", kind: "class", limit: 10)
codegraph_callers / codegraph_calleesFind what calls a function, or what a function calls.
codegraph_callers(symbol: "validatePayment", limit: 20)
codegraph_callees(symbol: "processOrder", limit: 20)
codegraph_impactAnalyze what code would be affected by changing a symbol.
codegraph_impact(symbol: "UserService", depth: 2)
codegraph_nodeGet details about a specific symbol. Use includeCode: true only when needed.
codegraph_node(symbol: "authenticate", includeCode: true)
codegraph_statusCheck index health and statistics.
| Approach | Context Impact | When to Use |
|---|---|---|
codegraph_explore |
Low - condensed summary | Complex features, refactoring |
| Multiple tool calls | High - each result accumulates | Avoid for complex tasks |
codegraph_context |
Medium | Focused, single-area queries |
CodeGraph can also be used as a library in your Node.js applications:
import CodeGraph from '@colbymchenry/codegraph';
// Initialize a new project
const cg = await CodeGraph.init('/path/to/project');
// Or open an existing one
const cg = await CodeGraph.open('/path/to/project');
// Index with progress callback
await cg.indexAll({
onProgress: (progress) => {
console.log(`${progress.phase}: ${progress.current}/${progress.total}`);
}
});
// Search for symbols
const results = cg.searchNodes('UserService');
// Get callers of a function
const node = results[0].node;
const callers = cg.getCallers(node.id);
// Build context for a task
const context = await cg.buildContext('fix login bug', {
maxNodes: 20,
includeCode: true,
format: 'markdown'
});
// Get impact radius
const impact = cg.getImpactRadius(node.id, 2);
// Sync changes
const syncResult = await cg.sync();
// Clean up
cg.close();
CodeGraph uses tree-sitter to parse source code into ASTs. Language-specific queries (.scm files) extract:
Each node gets a unique ID based on its kind, file path, name, and line number.
All data is stored in a local SQLite database (.codegraph/codegraph.db):
After extraction, CodeGraph resolves references:
CodeGraph uses local embeddings (via @xenova/transformers) to enable semantic search:
The graph structure enables powerful queries:
When you request context for a task:
The .codegraph/config.json file controls indexing behavior:
{
"version": 1,
"projectName": "my-project",
"languages": ["typescript", "javascript"],
"exclude": [
"node_modules/**",
"dist/**",
"build/**",
"*.min.js"
],
"frameworks": ["express", "react"],
"maxFileSize": 1048576,
"gitHooksEnabled": true
}
| Option | Description | Default |
|---|---|---|
languages |
Languages to index (auto-detected if empty) | [] |
exclude |
Glob patterns to ignore | ["node_modules/**", ...] |
frameworks |
Framework hints for better resolution | [] |
maxFileSize |
Skip files larger than this (bytes) | 1048576 (1MB) |
gitHooksEnabled |
Enable git hook installation | true |
| Language | Extension | Status |
|---|---|---|
| TypeScript | .ts, .tsx |
Full support |
| JavaScript | .js, .jsx, .mjs |
Full support |
| Python | .py |
Full support |
| Go | .go |
Full support |
| Rust | .rs |
Full support |
| Java | .java |
Full support |
| C# | .cs |
Full support |
| PHP | .php |
Full support |
| Ruby | .rb |
Full support |
| C | .c, .h |
Full support |
| C++ | .cpp, .hpp, .cc |
Full support |
| Swift | .swift |
Basic support |
| Kotlin | .kt |
Basic support |
Run codegraph init in your project directory first.
node_modules or other large directories are excluded--quiet flag to reduce console output overheadmaxFileSize if you have large files to skipcodegraph serve --mcp works from the command linecodegraph sync to pick up recent changesMIT