
Codemesh
io.github.pyalwin由 GitHub 账号 pyalwin 发布v0.1.2更新于 Oct 24, 2026
Intelligent code knowledge graph for AI coding agents — 71% cheaper, 72% faster
概览
Codemesh 为项目构建本地代码知识图谱,让 AI 编程助手直接回答问题、追踪调用链并复用笔记,而不必反复搜索和读取文件。
- 可以做什么
- 一次调用回答代码库问题,返回相关文件、调用链、热点和建议阅读位置(codemesh_answer)。
- 适用场景
- 适用于较大或不熟悉的代码库,助手原本需要多轮搜索和读取文件;也适合希望跨会话保留已学知识的场景。
- 运行要求
- 以本地 stdio 进程运行 npm 包 @pyalwin/codemesh,需要 Node.js;环境变量 CODEMESH_PROJECT_ROOT 必须指向待索引代码库的绝对路径。需先执行 codemesh index 建立索引,可选启用嵌入,会下载约 80MB 的本地模型。未声明任何身份验证。
安装
在 SourceWeft 中
- 打开 控制台中的 Codemesh,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Codemesh
Intelligent code knowledge graph for AI coding agents
71% cheaper, 72% faster, 82% fewer tool calls vs baseline Grep+Read
on 6 real-world repos (Sonnet 4.6) — from a single codemesh index.
[npm] [Tests] [License] [TypeScript] [MCP]
Benchmarks · Quick Start · Integrations · Write-Back · How It Works · API Reference · Full Results
The Problem
AI coding agents waste 40-80% of their tokens on discovery — grepping through files, reading irrelevant code, and rebuilding context they've already seen in previous sessions.
On a 600-file codebase, a typical exploration task involves 10+ file reads before the agent even knows what's relevant.
Codemesh is an MCP server that gives agents a persistent, queryable knowledge graph. The graph gets smarter over time: agents write back what they learn, so the next session starts informed.
Benchmarks
Benchmarked on 6 real-world codebases (Alamofire, Excalidraw, VS Code, Swift Compiler, pydantic-validators, pydantic-basemodel) with Claude Sonnet 4.6, compared alongside baseline and graph-based approaches for context.
Full methodology, per-repo breakdowns, and pairwise comparisons: docs/benchmark-results.md | Early pydantic evals
These historical runs used the earlier answer-first workflow. The map-first navigation workflow described below is evaluated in an exploratory Pydantic pilot; the figures in this section should not be read as its measured performance.
Cost
Time
Tool calls (agent turns)
Quality (1–10, LLM-as-judge)
Cost savings: Codemesh MCP vs Baseline
[!NOTE] Codemesh MCP achieves the lowest cost and fastest time of any mode tested — 71% cheaper and 72% faster than baseline on average across 6 repos, using 82% fewer tool calls (8 vs 45). Quality is comparable to baseline (7.9 vs 7.0); Codegraph edges Codemesh on quality (8.4) but at roughly double the cost ($0.45 vs $0.22). Every repo shows cost and time savings — including the comprehension-heavy queries (Excalidraw, pydantic-basemodel) that regressed in prior builds of codemesh.
Quick Start
1. Install
Or run directly without installing:
Build from source
Verify the install:
codemesh --versionshould print the package version.
2. Index your project
The default index and retrieval path uses one SQLite database in .codemesh/.
It does not generate embeddings or require a vector database. Existing vector
artifacts from older runs are left untouched but are not used by this path.
3. Choose your mode
Codemesh offers two ways to integrate with AI agents:
Option A: MCP Server (structured tool calls)
Add to your Claude Code MCP config (~/.claude/mcp-servers.json or project .mcp.json):
The agent gets native MCP tools:
codemesh_map— browse one level of the indexed repository or follow a linkcodemesh_source— read a revision-checked source view by symbol ID;ifHashavoids repeat deliverycodemesh_inspect— inspect an exact symbol and its direct calls with bounded, exact source blockscodemesh_hydrate— verify saved symbol references and reopen exact source after a handoffcodemesh_answer— optional ranked context assemblycodemesh_explore— search, context (multi-target), impactcodemesh_trace— follow call chainscodemesh_enrich/codemesh_workflow— write backcodemesh_recall— retrieve notes and workflows with freshness statuscodemesh_status— health check
Best for: Opus, structured workflows, enrichment/write-back
Option B: CLI Mode (via Bash — zero MCP overhead)
No MCP config needed. The agent calls codemesh directly via Bash:
Exploration and write commands return JSON to stdout. No MCP server process is required.
Best for: Sonnet/Haiku, speed-sensitive workflows, simpler setup
Which mode should I use?
4. Use it
The agent can choose a path through the persistent graph before reading code:
Client Integrations
Codemesh speaks the Model Context Protocol, so any MCP-compatible client can use it. Paste one of the snippets below, restart the client, and the codemesh_* tools show up in the agent's toolbox.
Claude Code (CLI)
Add to ~/.claude/mcp-servers.json (user-wide) or .mcp.json (project-local):
Claude Desktop (macOS / Windows app)
Edit claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Restart Claude Desktop. Codemesh's tools will appear in the tool picker (hammer icon).
Cursor — stop the agent from wandering your codebase
Cursor reads .cursor/mcp.json per project (or ~/.cursor/mcp.json for all projects):
Open Settings → MCP, confirm codemesh is green, then mention it in a prompt (@codemesh how does auth work?) to nudge the agent toward graph queries instead of recursive Grep.
Windsurf / VS Code (Continue)
Add to ~/.continue/config.json under experimental.modelContextProtocolServers:
Agent Write-Back: the graph that gets smarter
Every other code-intelligence tool indexes your repo once and hands the agent a read-only view. Codemesh lets the agent teach the graph as it works — summaries, workflows, and cross-concept links persist across sessions and survive re-indexing.
The graph now knows things no static analyzer could infer: why a file matters, which files move together, what a maintainer called a concept. Re-indexing rebuilds the structural layer (files, symbols, imports, calls) but preserves every enrichment — entries only go stale when their referenced files change.
See codemesh_enrich and codemesh_workflow under MCP Tools.
How It Works
Structural layer (automatic) — Tree-sitter parses your code into files, symbols (functions, classes, methods), and relationships (imports, calls, extends). Rebuilt on each index.
Semantic layer (agent-built) — As agents work with your code, they write back summaries and workflow paths. These survive re-indexing and accumulate across sessions. Invalidated when referenced files change.
MCP Tools
CLI
--compact is available for map, search, source, recall, inspect, and hydrate. It removes
repeated metadata from CLI JSON; source still includes the exact requested code
and a content hash. Navigation maps, search, inspect, and hydrate emit bounded JSON without
pretty printing; their compact form preserves exact source and freshness hashes.
hydrate also accepts --references-file PATH for a JSON array saved on disk.
Bounded responses omit the extra project-root wrapper so the final JSON stays
within the requested budget. Other commands retain their existing response format.
For handoffs, save a symbol's exact ID and bodyHash from a fresh source result.
codemesh_hydrate checks that hash against live source before returning full code.
If a saved hash came from fold or preview, include its mode; that hash
checks only the rendered view, so include bodyHash to verify the whole symbol.
Inspect and hydrate report omitted blocks explicitly when a budget is reached.
Both default to four source blocks and a 24 KiB JSON response budget. inspect
follows at most one hop of conservatively resolved local Python functions and
imports. Use --direction incoming or both to inspect candidate callers too;
--max-candidates bounds caller verification (default 32, maximum 128). Indexed
edges are hints: each delivered caller is checked against its current Python
binding. Incoming discovery is explicitly incomplete when edges are missing;
an empty result never proves that a symbol has no callers. Dynamic receivers,
ambiguous names, and uncertain bindings remain
explicitly unresolved; other languages expose unverified graph candidates.
These are static bindings, not guarantees about runtime behavior. Hydration
returns live-checked code; clients decide when to invoke it after a handoff and
which evidence to retain in their model context.
--mode auto is an explicit navigation view: symbols up to 120 lines and 12KiB
are returned in full; larger symbols return a bounded preview with omitted ranges
and a hint to map their members. Explicit --mode full always returns exact source.
Search ranks exact identifiers and exact qualified/leaf names first, then query
term coverage and lexical relevance, with popularity used only to break ties.
For an opt-in structural hint, --exact-tie-break path-depth prefers shallower
paths before popularity on equally ranked exact-name/leaf matches. MCP exposes
the same exactTieBreak option on codemesh_explore. Explicit IDs and path
filters still select deeper implementations; depth does not establish which
implementation is canonical. The default remains pagerank.
--path restricts candidates to a file or directory before SQLite result caps;
src does not match src-other. Compact search includes signatures and spans.
Search and navigation default to an 8192-byte JSON budget; --max-bytes accepts
512..65536. Omitted results are explicit. Navigation's cursor always points at
the first unreturned entry; if that entry alone exceeds the budget, increase
--max-bytes and reuse the cursor. Source code remains behind source/inspect.
The deterministic Graphify follow-up documents the single-agent design and focused context policy. Context replacement belongs to the harness: MCP/CLI tools cannot remove earlier client messages. The controlled next iteration documents lean eval instructions, optional search ranking, and two multi-file handoff fixtures.
Source retrieval also accepts a unique symbol name, such as MyType.myMethod.
An ambiguous name returns exact candidate IDs and spans; it never guesses an
overload from its size. Exact IDs remain the preferred reference across sessions.
adapt reads a native tool observation from stdin. Search folding preserves every
match and falls back for unsupported formats. Read outlining requires a complete
byte-exact match with a fresh indexed file and explicit navigation intent; edit
reads and partial reads pass through unchanged. --json reports the route and
reason instead of emitting only the adapted observation.
Optional: Hooks & Skills
Skill — teaches agents the graph-first workflow
Copy skills/codemesh.md to ~/.claude/skills/ or your project's .claude/skills/.
The skill instructs agents to query the graph before using Grep/Read, and to write back via codemesh_enrich after reading code.
Hooks — automatic pre-read context injection
Add to .claude/settings.json:
- Pre-read — Adds a cached summary marked non-stale alongside the pending Read result
- Post-read — Nudges the agent to enrich after reading unfamiliar files
Supported Languages
Any language with a tree-sitter grammar can be added.
Graph Data Model
Nodes
Edges
Architecture
Storage is backend-agnostic. The StorageBackend interface abstracts all persistence. v1 uses SQLite with FTS5 for zero-dependency local operation. The interface supports swapping to Memgraph, Neo4j, or other graph databases.
Eval Framework
Reproducible evaluation harness with LLM-as-judge scoring:
See docs/benchmark-results.md for full methodology and results. Early pydantic evals are archived in docs/experiments/.
The SQLite-only CLI has a separate vNext contract and agent workflow eval on a pinned Pydantic checkout. Its correctness checks and model cost/quality comparison are reported separately from the historical benchmarks. The vNext Pydantic results record the first full paired run.
vs. Existing Tools
Development
Contributing
Contributions welcome. Areas for improvement:
- More languages — Add tree-sitter grammars and language-specific extractors
- AST-diff invalidation — Function-level instead of file-level staleness detection
- Graph backends — Memgraph/Neo4j adapters for
StorageBackend - Semantic search — Embedding columns alongside FTS5
- Agent adoption — Better patterns for agents to prefer graph tools naturally
License
MIT
Footnotes
-
Swift Compiler's codemesh index failed to complete (indexer regression on 30k+ file codebases — see known issues). The codemesh numbers above reflect agent behavior with an empty retrieval graph, falling back to Read + LSP — still ahead of baseline, but unrepresentative of codemesh's capability on a properly-indexed Swift repo. ↩ ↩2 ↩3 ↩4
-
Baseline for Alamofire hit a judge error (score recorded as 0 but not meaningful); excluded from the Baseline average. ↩
来源:README.md,提交 11c7776
工具
0版本历史
1- v0.1.2最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分