ColinVaughn/Synaptic
GitHub: ColinVaughn/Synaptic
Synaptic 将代码仓库转化为可查询的知识图谱,为 AI 编码助手提供低 Token 消耗的依赖追踪、变更影响预测和重构验证能力。
Stars: 20 | Forks: 0
# Synaptic
将任何代码文件夹转化为持久化、可查询的**知识图谱**,然后在此基础上进行操作,
而不是重新阅读代码库。Synaptic 使用 [tree-sitter](https://tree-sitter.github.io/) 提取 30 多种语言的符号和关系,将它们聚类成社区,并找出结构上重要的部分。
在此图谱的基础上,它可以回答结构和架构查询,追踪反向影响
(“这个更改会破坏什么?”),在你做出更改之前预测并推测性地运行更改,
规划安全的重构,对比 git 历史中的架构差异,并审计 SQL 的
性能和安全性。它是一个单一的静态 Rust 二进制文件 (`synaptic`),没有运行时,
也没有解释器,它既能生成机器可读的图谱,也能生成人类可读的报告以及 2D/3D/SVG
可视化,并自带 MCP server,以便 AI 编码助手可以在搜索或阅读文件之前执行所有这些操作。
## 为什么选择它
- **结构清晰。** 为你计算 God nodes、令人惊讶的跨模块连接、导入循环以及
社区结构。
- **影响与预见性。** 反向影响、更改预测和推测性测试运行
在你接触代码之前回答“什么依赖于这个?”和“这个更改会破坏什么?”。
- **Token 经济。** 查询紧凑的图谱所消耗的 Token 成本仅相当于将原始文件提供给
LLM 的一小部分,因此助手无需加载仓库即可回答这些问题。
- **可审计的置信度。** 每个推断出的关系都会被标记为 `EXTRACTED`、
`INFERRED` 或 `AMBIGUOUS`。
- **超越单一仓库的扩展性。** 工作区可以通过真正的跨仓库边缘
解析(导出表面加上 import / tsconfig / module-federation 别名)联合多个仓库。
- **默认离线。** 仅包含代码的语料库从不进行网络调用。针对文档和论文的可选
语义分析是唯一需要 API key 的功能。
## 亮点
- 通过 tree-sitter 支持 **30 多种语言**,每种语言都在 CI 中独立构建和测试,另外
针对少数格式提供基于正则的提取器,以及针对 Vue/Svelte/Astro 和
Razor/Blazor 的脚本提取。请参阅[语言](https://github.com/ColinVaughn/Synaptic/wiki/Languages)。
- **一个命令生成完整图谱**,外加 2D、3D 和 SVG 可视化、Markdown 报告,
以及 GraphML / Cypher / DOT / Obsidian / wiki 导出。请参阅[输出格式](https://github.com/ColinVaughn/Synaptic/wiki/Output-Formats)。
- **图谱查询**:相关子图搜索、最短路径、节点解释,以及
反向影响(“什么依赖于这个”)。请参阅[查询](https://github.com/ColinVaughn/Synaptic/wiki/Querying)。
- **时光旅行 diff**:`synaptic diff [rev2]`(或 `--since `)报告
在两个 git 修订版之间图谱的变化、添加/删除的依赖项、删除的 API、
架构漂移、新增的循环和热点,并附带 Markdown 或自包含的 HTML 报告。
- **架构搜索 (SYNQL)**:`synaptic search` 在图上运行一种受 Cypher 启发的小型查询
语言,匹配结构(类型、可见性、LOC、扇入/扇出,
可变长度路径),支持 `count(...)` 聚合、`--explain`、保存的查询,以及
一个命名模式库(singleton、factory、observer、service-locator、god-class)。不是
文本搜索。
- **安全重构**:`synaptic refactor rename` / `move` / `extract` 生成带有置信度评分的
执行计划(`plan.json` + `plan.md`)供 AI agent 应用,然后 `refactor verify`
重新构建并检查图是否保持一致(定义已移动/重命名,没有丢失引用,没有
新增循环)。Synaptic 从不自行编辑源码。
- **更改预测和推测性执行**:`synaptic predict` 在你编辑之前预测更改的
影响范围、处于风险中的公共 API、受影响的测试、新增循环、风险评分,以及一个验证
清单(`--edit ":"` 在编写任何
代码之前预测描述的编辑);`synaptic speculate` 然后在一个一次性的 git worktree 中应用更改
并实际运行受影响的测试以及构建/类型检查,报告真实的通过/失败情况——
预测的基准事实部分;并且 `synaptic eval replay` 重放历史以根据
git 基准事实(共同编辑的测试、删除的 API)对预测质量进行评分,将预测准确性转化为
可作 CI 门禁的指标。请参阅
[命令](https://github.com/ColinVaughn/Synaptic/wiki/Commands)。
- **SQL 性能与安全审计**:`synaptic sql audit` 标记行级安全漏洞、
过于宽泛的授权、可能的 SQL 注入、过滤/外键列上缺失的索引、
`SELECT *`、不可 sargable 的谓词、N+1 模式,以及主键缺失,所有这些都在 SQL 感知的
图上进行(提取现在会对列、索引、RLS 策略和授权进行建模,并将应用程序
查询链接到它们触及的表)。`synaptic sql advise --query ""` 在你编写候选
查询之前对其进行评估,并与图中的表/索引/RLS 进行交叉引用。请参阅
[SQL 审计](https://github.com/ColinVaughn/Synaptic/wiki/SQL-Auditing)。
- **MCP server**(协议 2025-11-25)通过 stdio 或 HTTP 暴露 26 个只读工具:
子图搜索、源码阅读、反向影响、PR/工作树影响范围、更改
预测、预测性测试选择、编辑影响预测、结构搜索、时光旅行
diff、仅计划重命名,以及 SQL 审计/建议,外加提示词、补全、资源订阅
和结构化的工具输出。请参阅
[MCP Server](https://github.com/ColinVaughn/Synaptic/wiki/MCP-Server)。
- **增量重建**、文件监控和 git hooks 保持图谱最新。请参阅
[增量更新](https://github.com/ColinVaughn/Synaptic/wiki/Incremental-Updates)。
- **具备图感知能力的 PR 仪表板**,带有影响范围和合并顺序冲突检测。请参阅
[PR 仪表板](https://github.com/ColinVaughn/Synaptic/wiki/PR-Dashboard)。
## Token 经济
查询紧凑图谱的一个核心回报是**阅读一个简短的答案,而不是整个
代码库**。在 Synaptic 自身的源码(199 个 Rust 文件,56,408 行,**510,966**
`cl100k` token)上测量,一个针对结构性问题的 `query_graph` 答案是 **~1,950 token**
(受其 token 预算限制),而阅读答案实际触及的源文件需要:
在跨越不同子系统的六个问题中,查询图使用的 token 比阅读答案引用的文件**少 27-38 倍**
(总体约 **31 倍**):
| 问题 | 查询响应 | 阅读文件 | 节省的 Token |
|---|--:|--:|--:|
| HTTP 请求处理 | 1,804 | 48,803 | 27x |
| 会话创建 / 清理 | 1,974 | 65,578 | 33x |
| query_graph 子图 | 2,011 | 53,759 | 27x |
| 提取遍历器 | 1,977 | 70,443 | 36x |
| PR 获取 / 排名 | 1,926 | 73,231 | 38x |
| 增量合并 | 2,010 | 53,440 | 27x |
无论仓库变得多大,查询响应始终保持很小(它受 token
预算限制),因此这个比例会随着代码库的增长而增加。请注意,`graph.json` 索引本身很大,
因为它编码了每一个符号和边缘;你永远不会将其加载到上下文中,你只需查询它并
取回上面的那部分切片。
**可重现。** Token 是通过
`cargo run -p synaptic-server --example tokcount` 获得的精确 `cl100k_base` 计数。基准是结果节点所在的唯一源文件
(整个文件,即保守的 grep-then-read 情况;它不
计算在没有图谱的情况下你可能打开的死胡同文件)。在任何
仓库上运行 `synaptic extract .` 并亲自进行比较。
## 高级工具性能
分析工具之所以能在毫秒内给出答案,是因为它们是在内存中的图上运行的,而不是
在源码上。Criterion 微基准测试(开发机器;运行 `cargo bench -p synaptic-synql -p synaptic-refactor`):
| 操作 | 负载 | 时间 |
|---|---|--:|
| SYNQL 属性查询 (`search`) | 在包含 2,000 个节点的图上执行 `WHERE`/`loc`/`fan_out` | **~0.47 ms** |
| SYNQL 关系模式连接 (`search`) | 在包含 2,000 个节点的图上进行一跳连接 | **~0.97 ms** |
| 安全重构重命名计划 (`refactor rename`) | 热门符号,跨 40 个文件的 ~120 个调用点,包括文本扫描 | **~4.9 ms** |
时光旅行 `diff` 受限于构建而不是查询:图增量本身是
近乎瞬时的,成本在于在一次性 git worktree 中构建每个修订版。构建的
图会按 commit SHA 缓存在 `synaptic-out/history/` 下,因此对相同的
提交进行重复的 diff 会立即返回,只有工作树侧会被重新构建。
## 准确率
上面的 Token 研究是对一个仓库进行的冒烟测试。Synaptic 提取的关系已
单独进行了验证,对比的是一个**手工标注的语料库**,其中包含微型仓库的
真实调用边缘、测试链接、影响范围(包括*不应*被标记的干扰节点),以及
跨语言耦合(包括*不应*连接的相似项),这些都由
手工记录在一个 `ground_truth.toml` 文件中。如果任何被标记的符号未能解析,预检会使运行失败,
因此丢弃的节点会成为显眼的失败,而不是悄悄减小分母。下面的每个数字
都是与这些标签的精确集合比较,可通过 `synaptic eval corpus` 复现:
| 固件 | 家族 | 调用 P/R/F1 | 受影响测试召回率 | 影响范围 召回率 / 排除率 / 大小 | 跨语言 P/R/F1 |
|---|---|---|---|---|---|
| systems-rust | systems-rust | 100/50/66 | — | 100% / 100% / 1.0 | — |
| scripting-python | scripting-python | 100/100/100 | 100% | 100% / 100% / 2.0 | — |
| web-ts | web-ts | 100/100/100 | — | 100% / 100% / 1.0 | — |
| oo-java | oo-java | 100/100/100 | — | 100% / 100% / 1.0 | — |
| systems-go | systems-go | 100/100/100 | — | 100% / 100% / 1.0 | — |
| deep-python (多跳) | scripting-python | 100/100/100 | 100% | 100% / 100% / 3.0 | — |
| cross-lang-ts-rust | cross-lang | — | — | — | 100/100/100 |
在 7 个固件 / 6 个语言家族 / 26 个标记符号(全部已解析)中:合并后的调用边缘
在 15 个标记边缘上**精确率 100% / 召回率 93% / F1 分数 96%**;影响范围**召回率 100%,
0 个干扰项泄露**;受影响测试在标记链接上的**召回率
100%**,并且唯一一个标记为*不相关*的测试被正确地**没有**
选中;跨语言**精确率 100% / 召回率
100%**,2 个干扰耦合被正确地**没有**连接。客观解读这些数字:
- 在这个 15 边缘的语料库中**没有观察到错误的调用边缘**(精确率 100%);这是针对该语料库的
结果,而不是大规模应用下的保证。
- 对于能够解析跨文件调用的 Python/TypeScript/Java/Go,**召回率是 100%**。Rust 上的
**50%** 是真实且符合预期的:Rust 调用解析是在文件内部的,因此模块限定的
跨文件调用属于真正的漏报。跨文件的*可达性*仍然通过 `imports`
边缘得到保留,这就是为什么影响范围的召回率保持在 100% 的原因。
- **影响范围是根据噪声而不是仅仅根据漏报来评分的:** 每个种子都标记了必须排除在外的干扰节点,
并且没有任何泄露(100% 排除率);报告的平均影响集大小等于
实际受影响的集合大小,因此遍历范围并没有过广。
- **受影响测试的选择是多跳:** `deep-python` 固件更改了一个位于其测试下方三个调用
跳数的叶子节点,并且仍然选中了该测试,同时一个故意不相关的测试被排除在外
(因此召回率不是以牺牲精确率为代价换来的)。
- **跨语言的精确率是实至名归的:** 一个 TypeScript 的 `fetch("/session")` 会连接到为其提供服务的 Rust
axum 处理程序,而 `/sessions`(看起来相似的路径)和一个不相关的处理程序则
被正确地保持未连接状态。
该语料库故意做得小巧且经过手工验证;它验证的是在
代表性形态下的提取*正确性*,而不是互联网规模的覆盖率。[规模](#scale)部分测量的是真实的
代码库。方法学和基准事实格式请参阅 [BENCHMARKS.md](BENCHMARKS.md)。
### 预测校准
更改预测层为每个预测的共同更改附加了一个置信度。`synaptic eval
calibrate` 用于衡量该置信度是否有意义:它会遍历最近的历史记录,并且对于每个
提交,将每个更改过的文件用作种子,询问预测器(仅在先前的提交上训练过)
哪些文件应该共同更改,然后根据实际
更改的内容对每个预测的置信度进行评分。它会报告一张**可靠性表**(每个置信度
区间内的预测命中率与实际观察到的命中率)、**Brier 分数**、针对总是猜测基准率
的基准的 **Brier 技巧分数**(这样 Brier 数值才具有可解释性),以及**预期校准误差**。
这是一个特定于具体仓库的属性:置信度反映了每个仓库的提交习惯,因此请在你自己的仓库上运行它。
在这个仓库自身的(重度压缩的、合成的)历史上,技巧分数是**负的**——这里的共同更改
预测比*猜测基准率更糟*,因为压缩的提交会同时触及许多
文件并夸大了表面上的共同更改。这说明该指标发挥了作用:它拒绝粉饰
在这个历史上校准不良的预测器。方法学详见 [BENCHMARKS.md](BENCHMARKS.md)。
## 规模
提取吞吐量跨越了真实的 OSS 代码库,涵盖不同规模层级和语言家族,
每个都在固定的 SHA 下克隆(`synaptic eval scale`;网络 + git,选择性开启)。每次计时都是
3 次重复实验的中位数。**冷启动**首先清除了 AST 缓存(真正的冷状态);**热启动**是缓存已预热状态;
**增量**指重新提取单个文件。在 Windows / x86_64 / 16 逻辑 CPU 上测量:
| 仓库 | 家族 | 层级 | 文件数 | 代码行数 | 节点 | 边缘 | 冷启动 (秒) | 热启动 (秒) | 增量 (秒) | 文件/秒 |
|---|---|---|--:|--:|--:|--:|--:|--:|--:|--:|
| memchr | systems-rust | 小型 | 75 | 70,044 | 3,849 | 13,592 | 12.5 | 7.5 | 4.3 | 10 |
| click | scripting-python | 中型 | 112 | 35,063 | 2,189 | 3,475 | 2.4 | 1.7 | 0.8 | 66 |
| p-map | web-ts | 小型 | 10 | 1,501 | 85 | 83 | 0.07 | 0.04 | 0.04 | 269 |
| cobra | go | 中型 | 55 | 19,514 | 846 | 2,362 | 1.1 | 0.7 | 0.4 | 82 |
| axum | systems-rust | 大型 | 348 | 52,969 | 3,656 | 9,510 | 4.7 | 3.6 | 3.5 | 97 |
绝对时间取决于机器配置;可复现的信号是**冷启动→热启动比率**
(~1.4-2 倍;Rust AST 缓存在重建时移除了重新解析的步骤),并且吞吐量随
仓库内容扩展,而不是在大型层级上崩溃。请注意 `memchr` 的按文件计算速度较慢:它是
重度宏且边缘密集的(75 个文件中有 1.36 万条边缘),基准测试展现了这一情况而不是
将其隐藏。`incr` 仅重新提取一个文件,但仍然会重新运行图组装,
因此它并不是零成本的。固定的 SHA 使得运行结果可重现;请审慎更新它们。完整的方法学和清单
详见 [BENCHMARKS.md](BENCHMARKS.md)。
## 安装
Synaptic 使用稳定的 Rust 工具链构建(通过
[rust-toolchain.toml](rust-toolchain.toml) 固定在 1.95 版本)。
```
# 从 clone 出的仓库中,将 `synaptic` 二进制文件安装到你的 PATH:
cargo install --path bin/synaptic
# ...或在 in-tree 中构建它:
cargo build --release # -> target/release/synaptic
```
针对 Linux/macOS/Windows 的预编译二进制文件附在每个标记的
[GitHub Release](../../releases) 中(参见 `release` 工作流)。可选的集成位于
功能标志(默认关闭)之后:`pg`(Postgres 内省)、`push`(实时
Neo4j/FalkorDB 导出),以及 `office` / `gws` / `media`(电子表格 / Google-Workspace /
音视频摄取),例如 `cargo install --path bin/synaptic --features pg,push`。请参阅
[安装](https://github.com/ColinVaughn/Synaptic/wiki/Installation)和[配置](https://github.com/ColinVaughn/Synaptic/wiki/Configuration)。
## 快速开始
```
# 1. 为当前目录构建 graph -> synaptic-out/
synaptic extract .
# 2. 向 graph 提问(返回相关的 subgraph)
synaptic query "authentication flow"
# 3. 更改一个 symbol 会破坏什么?(reverse impact)
synaptic affected parse_config
# 4. 通过 MCP 将 graph 提供给 AI 助手
synaptic serve
```
`extract` 会遵循 `.synapticignore` / `.gitignore` 并跳过敏感文件(`.env`、密钥)。
仅包含代码的语料库可完全离线运行;针对文档和论文的可选
LLM 语义分析(`extract --semantic`)需要 API key(例如 `OPENAI_API_KEY`)。请参阅
[快速开始](https://github.com/ColinVaughn/Synaptic/wiki/Quickstart)。
## 输出产物 (`synaptic-out/`)
| 产物 | 它是什么 |
|---|---|
| `graph.json` | 完整图谱(节点-链接 JSON),无需重新阅读文件即可查询 |
| `GRAPH_REPORT.md` | God nodes、令人惊讶的连接、建议的问题、导入循环 |
| `graph.html` | 交互式 2D 浏览器(搜索 + 社区着色) |
| `graph-3d.html` | 交互式 3D 力导向图(搜索、关系切换、联邦颜色) |
| `graph.svg` | 静态布局(Barnes-Hut,组件压缩,资产形状化) |
| `graph.graphml` / `graph.cypher` / `graph.dot` | 导入到 Gephi / Neo4j / Graphviz |
| `callflow.html` / `tree.html` | Mermaid 调用流程 + D3 文件树 |
| `obsidian/`, `wiki/` | Obsidian 知识库 / Markdown wiki(使用 `--obsidian` / `--wiki`) |
## 命令
| 命令 | 它的作用 |
|---|---|
| `extract [path]` | 构建图谱并写入 `synaptic-out/`。标志:`--directed`、`--obsidian`、`--wiki`、`--semantic` |
| `export ` | 从现有的 `graph.json` 重新输出一种格式(无需重建),或实时推送到 Neo4j/FalkorDB |
| `query ` | 返回按相关性排序的子图(每个节点均已评分)。标志:`--max-nodes`、`--repo`、`--dfs`、`--since `(提升分支上更改的代码的权重)、`--seed-changed` |
| `path ` | 两个节点之间的最短路径 |
| `explain ` | 显示一个节点及其邻居 |
| `affected ` | (传递性地)依赖于某个节点的节点。标志:`--depth`、`--relation` |
| `search [synql]` | 通过 SYNQL 或命名 `--pattern` 进行结构搜索。标志:`--explain`、`--save`/`--saved`、`--json` |
| `diff [rev2]` | 两个 git 修订版之间的时光旅行图差异。标志:`--since`、`--report`、`--html`、`--scope` |
| `refactor ` | 为 agent 规划安全的 `rename`/`move`/`extract`,然后 `verify` 图谱(从不编辑源码) |
| `predict [paths...]` | 在应用更改之前进行预测:影响范围、受影响的测试、风险、删除的 API、循环。标志:`--base`、`--edit ":"`、`--gate` |
| `speculate [paths...]` | 在一次性 worktree 中真实运行更改:受影响的测试 + 构建/类型检查,并报告通过/失败情况。标志:`--patch`、`--test-cmd`、`--check-cmd` |
| `sql ` | 在 SQL 感知图上 `audit` SQL 的性能 + 安全性,或在编写候选查询之前 `advise --query ""`。标志:`--severity`、`--explain --db-url`(实时 EXPLAIN,需要 `--features live-explain`) |
| `eval replay [from]` | 重放历史记录以根据 git 基准事实(可用作 CI 门禁)对预测质量进行评分。标志:`--min-test-recall` |
| `update [paths...]` | 文件更改后增量重建(使用 `--full` 进行完全重建) |
| `watch` | 随着文件更改自动重建 |
| `serve` | 运行 MCP server(stdio,或 `--http --api-key `) |
| `prs [number]` | 具备图感知能力的 PR 仪表板 / 详情。标志:`--triage`、`--conflicts`、`--base`、`--repo` |
| `workspace ` | 多仓库 / monorepo 联邦化(`init`/`add`/`discover`/`build`/`federate`/`sync`/`status`/`list`) |
| `global ` | 跨仓库的全局图存储(`~/.synaptic`) |
| `merge-graphs ` | 将多个 `graph.json` 文件组合成一个命名空间化的图 |
| `ingest ` | 摄取外部源(cargo / mcp / scip / pg / url;在功能标志后的 `office` / `gws` / `media`) |
| `hook ` | 管理 git hooks + `graph.json` 合并驱动程序 |
| `install` / `uninstall [platform]` | 为主机助手安装 Synaptic 技能 |
| `cache ` | 维护磁盘上的提取缓存 |
包含所有标志的完整参考在[命令](https://github.com/ColinVaughn/Synaptic/wiki/Commands)中。在终端中运行
`synaptic --help` 获取标志列表。
## 从 AI 助手中使用它 (MCP)
```
synaptic serve # stdio MCP server
synaptic serve --http 127.0.0.1:8765 --api-key "$SYNAPTIC_API_KEY" # HTTP server
```
服务器公开了 26 个只读工具:图导航(`query_graph`、`get_node`、
`get_source`、`get_neighbors`、`get_community`、`god_nodes`、`graph_stats`、`shortest_path`)、
影响分析(`affected`、`find_callers`、`find_callees`、`predict_impact`、`affected_tests`、
`predict_edit`)、联邦(`list_repos`、`repo_stats`)、更改/PR 审查(`working_changes_impact`、
`list_prs`、`get_pr_impact`、`triage_prs`)、高级三件套(`structural_search`、
`time_travel_diff`、仅限计划的 `plan_rename`),以及 SQL 审计(`audit_sql`、`advise_sql`)。
它还提供 MCP 提示词、参数补全、资源模板和
订阅,以及一个面向非 MCP 客户端的小型 REST 接口表面(`/api/stats`、`/api/query`、...)。`synaptic install` 将图连接到主机助手(Claude 的 `PreToolUse` hook;Codex 的原生 MCP server,对于 Codex 桌面应用使用 `synaptic install codex --global`)。请参阅 [MCP Server](https://github.com/ColinVaughn/Synaptic/wiki/MCP-Server) 和
[助手集成](https://github.com/ColinVaughn/Synaptic/wiki/Assistant-Integration)。
## 语言
通过 tree-sitter 支持 30 多种语言,每种语言都在 CI 中独立构建和测试:Python、
JavaScript/TypeScript(+ JSX/TSX、Vue/Svelte/Astro)、Go、Rust、Java、C#、Kotlin、Swift、C、
C++、Objective-C、Ruby、PHP、Scala、Groovy、Lua、Dart、Elixir、Julia、ig、Bash、PowerShell、
Verilog、Fortran,以及用于 Classic ASP、Salesforce Apex、
Pascal/Delphi 和 Razor/Blazor 的正则/委托提取器。加上数据和项目格式:SQL、JSON、YAML、
HCL/Terraform、.NET 项目文件(`.csproj`/`.sln`/`.slnx`)以及 Markdown 结构。
针对 PHP/Laravel 和 Dart/Flutter 的框架感知边缘。完整细分详见
[语言](https://github.com/ColinVaughn/Synaptic/wiki/Languages)。
## 文档
完整文档位于[项目 wiki](https://github.com/ColinVaughn/Synaptic/wiki) 中:
- **入门:**[主页](https://github.com/ColinVaughn/Synaptic/wiki/Home) - [安装](https://github.com/ColinVaughn/Synaptic/wiki/Installation) - [快速开始](https://github.com/ColinVaughn/Synaptic/wiki/Quickstart)
- **概念:**[架构](https://github.com/ColinVaughn/Synaptic/wiki/Architecture) - [语言](https://github.com/ColinVaughn/Synaptic/wiki/Languages)
- **使用:**[命令](https://github.com/ColinVaughn/Synaptic/wiki/Commands) - [提取](https://github.com/ColinVaughn/Synaptic/wiki/Extraction) - [查询](https://github.com/ColinVaughn/Synaptic/wiki/Querying) - [分析和报告](https://github.com/ColinVaughn/Synaptic/wiki/Analysis-and-Reports) - [输出格式](https://github.com/ColinVaughn/Synaptic/wiki/Output-Formats) - [可视化](https://github.com/ColinVaughn/Synaptic/wiki/Visualizations)
- **集成:**[MCP Server](https://github.com/ColinVaughn/Synaptic/wiki/MCP-Server) - [助手集成](https://github.com/ColinVaughn/Synaptic/wiki/Assistant-Integration) - [摄取](https://github.com/ColinVaughn/Synaptic/wiki/Ingestion) - [语义分析](https://github.com/ColinVaughn/Synaptic/wiki/Semantic-Analysis)
- **扩展:**[工作区和联邦化](https://github.com/ColinVaughn/Synaptic/wiki/Workspaces-and-Federation) - [增量更新](https://github.com/ColinVaughn/Synaptic/wiki/Incremental-Updates) - [PR 仪表板](https://github.com/ColinVaughn/Synaptic/wiki/PR-Dashboard)
- **参考:**[配置](https://github.com/ColinVaughn/Synaptic/wiki/Configuration) - [开发](https://github.com/ColinVaughn/Synaptic/wiki/Development)
## 开发
```
cargo test --workspace --all-features # all tests
cargo fmt --all --check # formatting (enforced in CI)
cargo clippy --workspace --all-targets --all-features -- -D warnings
```
代码库包含 22 个库 crate(`crates/*`)以及 `synaptic` 二进制文件(`bin/`)。CI
隔离构建每种语言的语法,因此语法更新若悄悄丢弃节点/边缘
将在自身测试中失败。请参阅[开发](https://github.com/ColinVaughn/Synaptic/wiki/Development)和[架构](https://github.com/ColinVaughn/Synaptic/wiki/Architecture)。
## 许可证
GNU Affero General Public License v3.0 或更高版本(`AGPL-3.0-or-later`),请参阅
[LICENSE](LICENSE)。如果你将修改后的 Synaptic 版本作为网络服务运行(例如
HTTP MCP server),AGPL 要求你向其用户提供你修改后的源码。
标签:AI智能体, MCP, Rust, WebSocket, 代码知识图谱, 代码重构, 依赖分析, 可视化界面, 网络流量审计, 通知系统, 错误基检测, 静态代码分析