
Spine
io.github.SylphxAI由 GitHub 账号 SylphxAI 发布v0.4.5更新于 Oct 24, 2026
Spine — repository architecture with file-level proof: graph, paths, traces, and impact.
概览
Spine(repomap)在本地为代码仓库建立代码图,让助手能搜索符号、追踪调用路径并评估改动影响,结果带 file:line 引用。
- 可以做什么
- 梳理仓库结构:模块、核心文件、关键符号与入口点,可聚焦某个目录
- 按符号名、关键词和语义搜索代码,返回排序后的 file:line 范围及匹配行
- 查看符号详情:代码、调用方及调用位置、被调用方、子类型、成员、导入与相关测试
- 追踪两个符号之间的最短调用路径,或某符号上下的调用树
- 评估改动影响:风险等级、按深度排列的调用方、导入文件、涉及模块与需运行的测试,支持基于 git diff
- 梳理数据库结构:从迁移或 ORM 读取,或以只读方式连接在线数据库,并把表关联到查询它的代码
- 适用场景
- 适合助手在大型或不熟悉的代码库中工作时使用,避免把上下文耗在 grep、ls 和整文件阅读上。适用于定位定义、弄清两个函数如何相连,或在提交前判断改动会破坏什么。
- 运行要求
- 以 npm 包形式通过 stdio 在本机运行,需要 Node 18+,并提供 macOS、Linux、Windows 的预编译二进制。无需 API key 或账号。首次搜索会从 Hugging Face 下载约 33 MB 的嵌入模型,除非设置 REPOMAP_EMBED=0。服务器索引客户端工作区根目录、当前工作目录或 REPOMAP_ROOT。
安装
在 SourceWeft 中
- 打开 控制台中的 Spine,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
repomap
A map of your codebase for AI agents: code graph, search, call paths and change impact. No API key.Code graph · hybrid search · call paths · change impact · an interactive graph UI.
One Rust binary. Local. No API key. MIT.
[npm] [npm downloads] [CI] [MCP Registry] [License: MIT] [agent-ready 93/100]
Live demo · Docs · Quickstart · Tools · Graph UI · Benchmarks · Compare
[repomap demo: the map of excalidraw, searching restoreElements, its code and callers, then the impact of changing it]The real UI on excalidraw (687 files, indexed in under half a second): search, a symbol's code and callers, then the blast radius of a change. Try it in your browser, no install needed.
See it work
Run it on any repository. This is the real output on repomap's own source (v1.5.0, trimmed): ask what breaks if pagerank changes.
One local call, no API key, and an answer your agent can cite as file:line.
Quickstart
Prefer to wire one client by hand? claude mcp add repomap -- npx -y @sylphx/repomap mcp for Claude Code; the Cursor, VS Code, Codex and Docker snippets follow.
That's it. Add --claude-hooks to also enrich Claude Code's Grep and Glob. setup detects the clients you have, writes their MCP config, and prints every change it made. Run it again and nothing changes. Then ask your agent: "Use repomap to map this repo."
Cursor and VS Code, one click
[Add to Cursor] · Install in VS Code
Requires Node 18+. Confirm the install in your editor, open your project, and enable the server. Both links run npx -y @sylphx/repomap mcp locally; no API key is needed.
For VS Code from a terminal:
Or add the server to .cursor/mcp.json:
For .vscode/mcp.json, use the VS Code servers format:
Manual MCP config
Claude Code: claude mcp add repomap -- npx -y @sylphx/repomap mcp
Claude Desktop, one click: download repomap-<version>.mcpb from the latest release, open it, and pick your project folder.
Claude Code plugin: /plugin marketplace add SylphxAI/repomap, then /plugin install repomap@repomap
Codex (~/.codex/config.toml):
Docker (stdio, amd64/arm64):
The server indexes the client's workspace root (or its working directory, or REPOMAP_ROOT). Every tool also takes root.
Proof: file localization on SWE-bench Verified
One issue-text search finds every fix file in the top 10 for 83.0% of SWE-bench Verified issues (semble: 71.0%). File retrieval, not issue resolution.
[SWE-bench Verified: repomap finds every fix file in the top 10 for 83.0% of 500 issues; semble 71.0%, BM25 55.8%. Full Acc@1, 5 and 10 values follow in the table.]Chart values and evaluation protocol
Defaults selected on 300 disjoint SWE-bench test instances, excluding every Verified ID, then frozen before one evaluation on all 500 Verified instances. One search per issue, at its base commit; gold files are used only for scoring. All three methods scored 500/500, with zero errors.
Split definitions, pinned revisions and full results · Committed chart data
Trade-off: on semble's public code-search set, NDCG@10 is 0.845 versus semble's 0.851; semble wins there. This is not a claim of better search on every task. Measured search quality and limitations.
Why
Agents burn most of their context on grep, ls and reading whole files just to work out where things are. repomap gives them the map up front:
- Where is it? Hybrid search that matches symbol names, the words inside functions and what the code means, with the lines that matched. Ask "where are failed requests retried" or
parseConfig. - What is this? One call returns a symbol's code, callers with call-site lines, callees, subtypes and the tests that reach it.
- How does A reach B? The shortest call path, each hop cited
file:line. - What breaks if I change this? Direct and indirect callers, importing files, modules touched, tests to run, and a risk level. Point it at your
git diffbefore you commit. - What does this repo look like? Modules found from real dependencies (not just folders), the most central files, the most used symbols, and entry points.
All of it comes from a local index: tree-sitter parsing, a resolved import and call graph, PageRank, Louvain communities, BM25 over AST chunks, and a small static code embedding model (33 MB, downloaded once from Hugging Face, then offline). Nothing leaves your machine, and no API is called; the model download is the only network request (set REPOMAP_EMBED=0 to skip it).
What your agent gets
Six tools, each with an obvious job:
Answers are compact text that cites file:line, so they cost few tokens. Pass format: "json" for structured output.
The same commands work in your terminal: repomap map, repomap search "…", repomap context X, repomap trace A B, repomap impact --changed, repomap db.
The graph UI
- WebGL rendering (Sigma.js) that stays smooth with tens of thousands of files and edges
- Modules coloured and clustered by their real dependencies, file size by PageRank; tests, examples and docs are muted and one click away
- / searches files, symbols and code; d shows dependencies; f fits the view
- Click a module to focus it, Shift-click to hide it; toggle tests, edges and labels
exportwrites one HTML file with deep links (#path/to/file) and GitHub links pinned to your commit. It's a good fit for a README, a wiki or a design review.
Database map
repomap reads your schema from the repository: SQL migrations (applied in order, with down migrations skipped), schema.prisma, Drizzle pgTable/mysqlTable/sqliteTable, SQLAlchemy and Flask-SQLAlchemy models, Diesel table!, and Django models.py (fields, ForeignKey/ManyToManyField, Meta, implicit join tables). It can also introspect a live database. Each table is linked to the code that queries it: raw SQL (FROM users), Prisma (prisma.user.findMany), Diesel (users::table), Django (Post.objects…), and ORM models or tables used by files that import them.
Live connections are strictly read-only:
- Postgres runs in a
READ ONLYtransaction that the server must confirm. - MySQL runs in a
START TRANSACTION READ ONLYtransaction. - SQLite is opened read-only with
query_only.
Only catalog metadata is read, never table rows. The connection string comes from an argument or an environment variable, and it is never stored or printed. Agents get the same data through the db MCP tool; pass url_env rather than the URL itself.
Agent-readiness score
The score rates how well an AI agent can work in the repository, from 0 to 100. It covers eight checks:
- agent instructions (AGENTS.md / CLAUDE.md and how useful they are)
- discoverable build and test commands
- test coverage
- CI
- module boundaries
- file sizes
- docs
- types
Each check that falls short comes with a concrete fix, and the score ends with a badge line for your README. For CI, use --min 70; --update-readme README.md refreshes the badge.
Keep the badge fresh with the GitHub Action:
Claude Code hook
This is opt-in and safe to run again; setup --remove takes it out. It installs a PreToolUse hook: whenever Claude Code runs Grep or Glob, repomap adds where the symbol is defined, who calls it and which module it belongs to. It answers in tens of milliseconds and never blocks the search.
Languages
Parsed with tree-sitter for symbols, calls, imports and inheritance: TypeScript, TSX, JavaScript, Python, Go, Rust, Java, Kotlin, Swift, C, C++, C#, Ruby, PHP. Search also covers Markdown, YAML, TOML, JSON, SQL, shell, Protobuf, GraphQL, HTML/CSS, Vue, Svelte, Scala and more.
Modules are found among your core code only. Tests, examples, docs and benchmarks are grouped separately, so they never name or blur a module.
Import resolution understands relative paths, @/ aliases, npm workspace packages, Python packages and relative imports, Go modules, Rust mod/use/workspace crates, Java/PHP namespaces, C/C++ includes and Ruby require. .gitignore is respected, and so is .repomapignore.
Search that understands the question
On semble's public code-search benchmark (63 repositories, 19 languages, 1,251 questions), repomap's search scores NDCG@10 0.845, versus semble 0.851 on the same runner. The previous repomap score was 0.851: stronger issue localization trades about 0.006 here. On our 60 large-repository questions, repomap scores 0.846 versus semble 0.799, but semble still wins on VS Code. The 137M-parameter CodeRankEmbed model's published score is 0.839 and plain BM25's 0.673 (cited, not re-run).
On file localization (500 SWE-bench Verified issues, one search call with the issue text), repomap finds every fix file in the top 10 for 83.0% of issues (Acc@10; 74.8% at 5, 48.8% at 1), versus semble's 71.0% / 61.6% / 34.0%. Before this change, repomap scored 62.2% / 51.8% / 23.6%. Plain BM25 scores 55.8% at 10, and repomap with embeddings off 77.6%. Same-run median index/query costs are 1.682 s / 54.4 ms, versus the old binary's 1.686 s / 59.8 ms and semble's 12.813 s / 354.4 ms. Defaults were selected only on a disjoint 300-instance tuning split, then frozen before one Verified measurement. Agent systems such as LocAgent report higher numbers on a different subset with a language model in the loop; those are cited, not re-run.
This needs no GPU, no vector database and no API key. A 33 MB static code model runs on the CPU, next to BM25 and symbol names.
Fast
The index is built in parallel and cached per file, so after the first run only changed files are parsed again. The MCP server keeps the graph in memory and refreshes it when files change.
Measured on a 4 vCPU GitHub-hosted runner (method and full table):
How it compares
Pick Serena if you want LSP-precise refactoring edits. repomap is for understanding and navigating a codebase with zero setup, including semantic search without a vector database or an API key, and a licence you can use at work. Search quality is measured on public benchmarks in Benchmarks.
Free
Everything repomap does is free under MIT, including the multi-repository workspace (--workspace) and impact in your own CI. There is no licence key and no paid tier.
CLI
Binaries for macOS (arm64, x64), Linux glibc (x64, arm64) and Windows x64 ship as npm optional dependencies. They're also attached to each GitHub release. From source: cargo install --git https://github.com/SylphxAI/repomap sylphx-repomap.
Migrating from Spine, Locus or CodeRAG
@sylphx/spine, @sylphx/locus and @sylphx/coderag are thin aliases of @sylphx/repomap, and their old tool names still work. See the migration guide for the name mapping and how to switch.
Contributing
Issues and PRs are welcome, and new language support is especially useful: add a grammar and a query in crates/repomap-core/src/lang.rs.
Also from Sylphx
- anymd: Any file (PDF, Word, PowerPoint, Excel, EPUB, HTML, images) to clean Markdown for AI agents.
- lockdocs: Exact-version library docs from your lockfile. Local, offline, no rate limits.
- skills: Battle-tested agent skills for Claude Code and Codex, installed in one command.
- readme-mark: Beautiful README images from one URL: banners, badges, icons and stats cards.
More from Sylphx: https://sylphx.com/open-source
Star history
Privacy
repomap runs on your machine. Indexing, search and every query read your code
locally and send nothing anywhere. The one network request repomap makes is a
single download of the embedding model from Hugging Face the first time you
search; it sends no code. Set REPOMAP_EMBED=0 to skip it and use keyword
search only. repomap export files hold paths, symbol names and line numbers,
never source. See SECURITY.md for the full boundary.
Support
Questions, a bug, or a team rollout? Email [email protected] or open an issue.
MIT licence. © Sylphx Limited, registered in England and Wales, company no. 16438428. Registered office: 128 City Road, London EC1V 2NX, United Kingdom. Email [email protected]. Privacy · Terms · sylphx.com
来源:README.md,提交 b5c353e
工具
0版本历史
4- v0.4.5最新Sep 23, 2026
- v0.4.4Sep 23, 2026
- v0.4.3Sep 23, 2026
- v0.4.2Sep 23, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分