
Throughline
io.github.devznsh由 GitHub 账号 devznsh 发布v1.0.1更新于 Oct 24, 2026
Give Claude complete understanding of your software project.
概览
一个本地 Claude Desktop 扩展,为代码仓库建立索引,让助手能基于真实文件路径和行号回答符号、调用方、依赖与架构问题。
- 可以做什么
- 为已授权的仓库建立索引:读取每个文件,用 tree-sitter 提取符号,解析导入形成调用图,并读取 git 历史;之后可刷新索引或列出已授权的工作区。按概念或名称检索代码库,返回带真实文件路径、行号和排序理由的结果。追踪调用方与调用路径,例如某函数的全部调用点或某接口从路由到核心逻辑的流程,启发式匹配会被标注。快速了解仓库:技术栈、入口点、分层结构、热点、现有文档和依赖图,每项结论都有引用。找出疑似死代码,以及既频繁改动又复杂的文件,并说明静态分析的局限。
- 适用场景
- 当你希望助手针对某个本地仓库给出带文件路径和行号的答案而非猜测时使用,例如定位某功能在哪里实现、评估改动会影响什么,或起草架构与上手文档。
- 运行要求
- macOS 或 Windows 上的 Claude Desktop;Node 随 Claude Desktop 提供,安装打包扩展无需其他依赖。可从发布页安装 .mcpb,或用 npm 从源码构建。安装时需选择允许读取的目录。项目根目录可选放置 connector.config.json 调整排除项和限制。
安装
在 SourceWeft 中
- 打开 控制台中的 Throughline,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Point it at a repository on your machine. It reads every file, extracts symbols with tree-sitter, resolves imports into a call graph, ingests git history, and exposes the whole thing to Claude as precise retrieval tools.
Then you can ask the questions you actually have — "where is rate limiting handled?", "what breaks if I change this?" — and get real file paths and line numbers instead of plausible-sounding guesses.
Everything runs locally. This extension makes no network requests of any kind.
What it looks like
You: where does indexing decide a file has changed?
That why: line is the point. Results are ranked by how structurally central
they are — inbound references, export status, architectural role — not by how
many times a word appears. A file that mentions caching loses to the one that
implements it.
What you can ask
Eighteen tools in total — see docs/TOOLS.md.
Supported languages
Full symbol extraction — TypeScript · TSX · JavaScript · JSX · Python · Go · Java · Kotlin · C# · Rust · C · C++ · YAML · JSON
Text-searchable only — SQL · Markdown · Dockerfile · Terraform (grammars not yet vendored; files are indexed and searchable, but no symbols are extracted)
Anything else is still catalogued and searchable as text.
Install
From a release — download throughline.mcpb, then in Claude
Desktop go to Settings → Extensions → Advanced settings → Install Extension.
You'll be asked which directories the connector may read.
From source — see docs/INSTALL.md:
Requires Claude Desktop on macOS or Windows. Node ships with Claude Desktop, so there's nothing else to install.
First run
- "List my workspaces" — confirms the directory was granted.
- "Index this project" — a 5,000-file repository takes 20–60 seconds.
- Ask anything. Later, "refresh the index" picks up your edits in about a second.
Example prompts
- "Index this repo, then explain how authentication works. Cite files."
- "I want to rename
getUserById. Show me every caller and flag the risky ones." - "What are the entry points in this service?"
- "Draw me the dependency graph for
src/billing." - "Which files change most often and are the most complex?"
- "Draft an architecture overview — don't write it to disk yet."
How it works
A two-pass pipeline. Pass 1 parses every file with tree-sitter in parallel, with no shared state. Pass 2 has the global view and resolves names into a symbol table, import graph and call graph.
Search fuses a BM25 lexical ranker with a symbol-name ranker using reciprocal rank fusion, then re-ranks by graph centrality. RRF uses rank position only, so rankers with incomparable score scales compose without calibration — and the graph re-rank is what makes a conceptual query find the implementation rather than the twelve files that merely mention it.
The design rationale, including eleven decisions and what each traded away, is in docs/ARCHITECTURE.md.
Privacy Policy
Effective date: 2026-01-01 · Last updated: 2026-01-01
Throughline is a local desktop extension. It runs entirely on your computer as a child process of Claude Desktop.
What the connector accesses
- Files inside the directories you explicitly grant during installation. Nothing outside those directories is read. Symlinks resolving outside a granted directory are refused.
- Git metadata in those directories: commit subjects, author names and emails, timestamps, and which files each commit touched. Commit message bodies are not stored.
- Nothing else. No environment variables beyond its own configuration, no browser data, no files elsewhere on your system, no other applications.
What the connector stores, and where
An index is written to .throughline/index.db inside each project
directory you granted. It contains file paths, symbol names and signatures,
documentation comments, import relationships, call edges, git metadata, and
excerpts of your source code used for search.
The index never leaves your machine. Deleting the .throughline directory
deletes it completely. Uninstalling the extension leaves it in place; remove the
directory yourself if you want it gone.
What the connector transmits
The extension makes no network requests of any kind. No telemetry, no analytics, no crash reporting, no update check, no remote API. This is structural rather than a promise: it opens no sockets, and git operations read the local object database directly rather than contacting a remote.
The boundary is worth stating plainly. When Claude calls a tool, the tool's response — code snippets, file paths, symbol names from your project — is returned to Claude and therefore processed by Anthropic under Anthropic's Privacy Policy, exactly as if you had pasted that code into a conversation yourself. The connector controls what leaves your machine only insofar as it controls what it returns; it returns scoped, bounded excerpts rather than whole repositories, and redacts secrets first. If you don't want a directory's contents reaching Claude, don't grant that directory.
Secret redaction
Before any content is stored or returned, it is scanned for credential patterns —
API keys, tokens, private keys, connection strings, passwords in assignments —
and matches are replaced with [REDACTED:kind]. Redaction happens at write time,
so secrets are never persisted in the index either.
This is a safety net, not a guarantee. Pattern matching cannot catch every
secret. Don't grant access to directories containing credentials you wouldn't
want in a conversation, and use security.denyGlobs to exclude sensitive paths.
Writing to your files
Read-only by default. The single tool that can write — write_documentation —
requires both that you enable writes in settings and that you confirm the
specific write after seeing a preview of the exact content. It writes only inside
granted directories, only to a path you name.
Data sharing, retention, and contact
No data is shared with anyone. There is no server, no account, no third party. Retention is entirely under your control: the index lives in your project directory and is deleted when you delete it. This is a developer tool not directed at children and collects no personal information from anyone.
Questions or concerns: open an issue.
The full policy, including the exact redaction patterns and the data model, is in docs/PRIVACY.md.
Security
- Read-only by default; writes are double-gated and preview-first.
- No shell execution, ever. Git is read in-process rather than by invoking
git. - Path containment is enforced against resolved real paths, so symlinks cannot escape a granted directory.
stdoutcarries only JSON-RPC; all diagnostics go tostderr.- A config file inside a repository cannot widen the connector's access — granted directories come from the install dialog and nothing else can add to them.
Threat model: docs/SECURITY.md.
Configuration
Optional. Drop a connector.config.json in your project root to tune excludes,
limits and search behaviour — see
connector.config.example.json and
docs/CONFIGURATION.md.
Limitations
Worth knowing before you rely on it:
- References resolve by name, not by types. No type checker is involved. Edges
are labelled
exactorheuristic; heuristic ones can be wrong. - Dynamic dispatch is invisible. Reflection, dependency injection, string-keyed routing and event buses produce no edges. "Dead code" findings are candidates, not verdicts.
- Blame is approximate. Line attribution is reconstructed by walking history
and doesn't track code movement the way
git blame -Mdoes. - Four languages parse as text only — SQL, Markdown, Dockerfile, Terraform.
- Large repositories are bounded, not unbounded. The default file limit is 50,000; hitting it produces a warning, not a silent truncation.
Contributing
docs/CONTRIBUTING.md. Adding a language is usually a
grammar, a .scm query file and a registry row — the pipeline shouldn't need to
change.
License
MIT — see LICENSE.
来源:README.md,提交 af9f6c2
工具
0版本历史
1- v1.0.1最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分