AUTOMATION844.3k01
返回作品库
CodeGraph — 给 AI 编程代理装上代码语义导航
TYPESCRIPT, NODE.JS, SQLITE, WEBASSEMBLY (TREE-SITTER) · 做自动化工具
预索引的本地代码知识图谱,为 Claude Code 等 AI 代理削减八成工具调用。
预索引的本地代码知识图谱,为 Claude Code 等 AI 代理削减八成工具调用。
代码知识图谱AI编程效率静态分析Claude Code令牌节省本地优先
0
复制 copy
0
分享 share
0
点赞 like
可复现三件套
PROMPT · CODE · LIVE DEMO
APROMPT / 提示词
使用 Cursor 或 Claude Code 从零复现一个本地代码知识图谱工具:基于 TypeScript 编写 CLI,用 tree-sitter WASM 解析多语言源码,构建 SQLite 符号关系索引,并实现 MCP 服务器以无缝集成到多个 AI 编程代理中,最终达到减少 58% 工具调用和降低 16% 成本的目标。
BSOURCE / 源码
// 入口片段 src/index.ts —— 完整源码见仓库 /** * CodeGraph * * A local-first code intelligence system that builds a semantic * knowledge graph from any codebase. */ import * as path from 'path'; import { Node, Edge, FileRecord, ExtractionResult, Subgraph, TraversalOptions, SearchOptions, SearchResult, Context, GraphStats, TaskInput, TaskContext, BuildContextOptions, FindRelevantContextOptions, } from './types'; import { DatabaseConnection, getDatabasePath } from './db'; import { QueryBuilder } from './db/queries'; import { isInitialized, createDirectory, removeDirectory, validateDirectory, } from './directory'; import { ExtractionOrchestrator, IndexProgress, IndexResult, SyncResult, extractFromSource, initGrammars, } from './extraction'; import { ReferenceResolver, createResolver, ResolutionResult, } from './resolution'; import { GraphTraverser, GraphQueryManager } from './graph'; import { ContextBuilder, createContextBuilder } from './context'; import { Mutex, FileLock } from './utils'; import { FileWatcher, WatchOptions, PendingFile, LockUnavailableError } from './sync'; import { EXTRACTION_VERSION } from './extraction/extraction-version'; import { CodeGraphPackageVersion } from './mcp/version'; // Re-export types for consumers export * from './types'; // Storage building blocks for embedded/SDK consumers that drive the graph // directly (open a DB, run prepared queries) rather than through the CodeGraph // facade. Exposed from the package entry so they no longer require deep imports // into dist/ (issue #354). export { getDatabasePath, DatabaseConnection } from './db'; export { QueryBuilder } from './db/queries'; export { getCodeGraphDir, isInitialized, findNearestCodeGraphRoot, CODEGRAPH_DIR, } from './directory'; export { IndexProgress, IndexResult, SyncResult } from './extraction'; export { detectLanguage, isLanguageSupported, isGrammarLoaded, getSupportedLanguages, initGrammars, loadGrammarsForLanguages, loadAllGrammars } from './extraction'; export { ResolutionResult } from './resolution'; export { CodeGraphError, FileError, ParseError, DatabaseError, SearchError, VectorError, ConfigError, Logger, setLogger, getLogger, silentLogger, defaultLogger, } from './errors'; export { Mutex, FileLock, processInBatches, debounce, throttle, MemoryMonitor } from './utils'; export { FileWatcher, WatchOptions, PendingFile, LockUnavailableError } from './sync'; export { MCPServer } from './mcp'; /** * Options for initializing a new CodeGraph project */ export interface InitOptions { /** Whether to run initial indexing after init */ index?: boolean; /** Progress callback for indexing */ onProgress?: (progress: IndexProgress) => void; } /** * Options for opening an existing CodeGraph project */ export interface OpenOptions { /** Whether to run sync if files have changed */ sync?: boolean; /** Whether to run in read-only mode */ readOnly?: boolean; } /** * Options for indexing */ export interface IndexOptions { /** Progress callback */ onProgress?: (progress: IndexProgress) => void; /** Abort signal for cancellation */ signal?: AbortSignal; /** Enable verbose logging (worker lifecycle, memory, timeouts) */ verbose?: boolean; } /** * Main CodeGraph class * * Provides the primary interface for interacting with the code knowledge graph. */ export class CodeGraph { private db: DatabaseConnection; private queries: QueryBuilder; private projectRoot: string; private orchestrator: ExtractionOrchestrator; private resolver: ReferenceResolver; private graphManager: GraphQueryManager; private traverser: GraphTraverser; private contextBuilder: ContextBuilder; // Mutex for preventing concurrent indexing operations (in-process) private indexMutex = new Mutex(); // File lock for preventing concurrent writes across processes (CLI, MCP, git hooks) private fileLock: FileLock; // File watcher for auto-sync on file changes private wa
HOW IT'S MADE / 拆解
01
通过 curl 或 npm 全局安装 CodeGraph CLI,无需单独安装 Node.js。
02
执行 `codegraph install` 自动检测并配置你正在使用的 AI 编程代理(如 Claude Code、Cursor)。
03
在项目根目录执行 `codegraph init -i` 初始化并构建本地代码图谱索引。
Dr.Sharp 点评
Dr. Sharp:精准打击 AI 编程的‘盲目探索’之痛,用本地图谱换智能,令牌成本直降,算得上 Vibe Coding 时代的静态分析奇兵。
CodeGraph — 给 AI 编程代理装上代码语义导航 · vbai.studio/works/codegraph
复制 prompt 或源码即可在本地复现 · 喜欢就生成带示例图的分享海报