codenexus 0.4.0-rc.1

A queryable code knowledge graph tool built on LadybugDB and tree-sitter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
<div align="center">

<img src="docs/assets/CodeNexus.png" alt="CodeNexus Logo" width="200">

[![Build](https://github.com/Kirky-X/codenexus/actions/workflows/ci.yml/badge.svg)](https://github.com/Kirky-X/codenexus/actions/workflows/ci.yml) [![Crates.io](https://img.shields.io/crates/v/codenexus.svg)](https://crates.io/crates/codenexus) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Rust Version](https://img.shields.io/badge/rust-1.95%2B-orange.svg)](https://www.rust-lang.org)

**中文** | [English](README_EN.md)

**基于 LadybugDB 与 tree-sitter 的多语言代码知识图谱工具**

[✨ 功能特性](#-功能特性) • [🚀 快速开始](#-快速开始) • [📚 文档](#-文档) • [💻 示例](#-示例) • [🤝 参与贡献](#-参与贡献)

</div>

---

<div align="center">

### 🎯 索引一次,问遍全仓

跑一遍 `codenexus index`,符号关系即入图,剩下的追问交给图完成:

<table style="width:100%; border-collapse: collapse">
<tr>
<td align="center" width="25%">⚡<br><b>增量管线</b><br><span style="color:#64748B">哈希比对 · 只解析变更</span></td>
<td align="center" width="25%">🕸️<br><b>属性图模型</b><br><span style="color:#64748B">44类节点 · 30类边 · Cypher</span></td>
<td align="center" width="25%">🧭<br><b>多跳追踪</b><br><span style="color:#64748B">调用链 · 数据流 · 污点路径</span></td>
<td align="center" width="25%">🔌<br><b>双入口</b><br><span style="color:#64748B">37 命令 + mcp · 10 工具 · 同语义</span></td>
</tr>
</table>

</div>

---

## 📋 目录

- [✨ 功能特性](#-功能特性)
- [🚀 快速开始](#-快速开始)
- [🛠️ CLI 命令](#️-cli-命令)
- [🔌 MCP 集成](#-mcp-集成)
- [📚 文档](#-文档)
- [💻 示例](#-示例)
- [🏗️ 架构](#️-架构)
- [🧪 测试](#-测试)
- [📊 性能](#-性能)
- [🔒 安全](#-安全)
- [🗺️ 开发路线图](#️-开发路线图)
- [🤝 参与贡献](#-参与贡献)
- [📋 更新日志](#-更新日志)
- [📄 许可证](#-许可证)
- [🙏 致谢](#-致谢)
- [📞 联系与支持](#-联系与支持)
- [⭐ Star 历史](#-star-历史)

---

## ✨ 功能特性

<table style="width:100%; border-collapse: collapse">
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🌐 <b>多语言解析</b><br><span style="color:#64748B">默认 <code>full</code> 预设支持 21 种语言(C、Rust、Fortran、Python、TypeScript、Go、Java、C++、JavaScript、Ruby、Haskell、OCaml、Scala、PHP、C#、Bash、HTML、CSS、JSON、Regex、Verilog),可用 <code>lang-*</code> feature 按需裁剪</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">🕸️ <b>图数据库</b><br><span style="color:#64748B">LadybugDB 图存储,44 种节点类型 + 30 种边类型,Cypher 子集查询</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🔄 <b>增量索引</b><br><span style="color:#64748B">SHA-256 文件哈希比对,仅重新解析变更文件;Rayon 并行 + 线程局部 parser 池</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">💾 <b>RAM 优先索引</b><br><span style="color:#64748B">LZ4 压缩源码到内存,单次 <code>COPY FROM</code> 批量入库(<code>--ram_first</code>)</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🔍 <b>符号追踪</b><br><span style="color:#64748B">调用链(Calls)与数据流(DataFlows)双向追踪;跨语言多跳污点路径追踪(<code>TaintPathTracer</code>)</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">🎯 <b>影响分析</b><br><span style="color:#64748B">变更影响半径分析,按深度分层,多维边类型 + 风险评估</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🧩 <b>歧义消解与置信度分层</b><br><span style="color:#64748B">多匹配符号按置信度排序消解;每条边携带分层(SameFile / ImportScoped / Global)+ 0.0-1.0 分数</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">📐 <b>架构图导出</b><br><span style="color:#64748B"><code>diagram</code> 将架构编译为自包含交互式 HTML(确定性布局 / 正交路由 / 暗亮主题 / 源码证据徽标)</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🆚 <b>架构语义 Delta</b><br><span style="color:#64748B"><code>arch_diff</code> 对比两个已索引项目,输出 Before/Delta/After HTML + 机器回执(added/removed/changed + JSON Pointer 字段)</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">🧾 <b>诊断回执</b><br><span style="color:#64748B">错误与告警输出结构化回执(稳定规则码 + 证据 + 可执行修复话术),符号歧义 / 索引过期 / 结果截断均附带修复建议</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🔗 <b>跨语言 FFI</b><br><span style="color:#64748B">C-Fortran bind(C)、Rust extern 等跨语言调用解析</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">📦 <b>团队制品</b><br><span style="color:#64748B"><code>export</code> / <code>import</code> 压缩 <code>.graph.zst</code> 制品,共享索引</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🤖 <b>多智能体 MCP</b><br><span style="color:#64748B"><code>setup</code> 自动检测 Claude Code / Cursor / Codex;<code>skill</code> 一键同步技能文档到各 Agent 全局技能目录;<code>hook</code> 输出 PreToolUse/PostToolUse JSON;<code>mcp</code> stdio 服务暴露 10 个工具(参数语义写入工具描述);<code>ask</code> 自然语言入口路由既有命令</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">👁️ <b>文件监视</b><br><span style="color:#64748B">守护进程模式,自动增量索引(<code>daemon</code> feature,SIGTERM/SIGINT 优雅退出;<code>--notify-impact</code> 变更影响告警)</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🚦 <b>CI 与架构门禁</b><br><span style="color:#64748B"><code>ci</code> 风险门禁(<code>--fail_on</code> 退出码 + PR Markdown,附官方 GitHub Action);<code>lint</code> 自定义 Cypher 规则包(<code>.codenexus/rules.json</code>)</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">🛡️ <b>安全与供应链</b><br><span style="color:#64748B"><code>taint</code> 内置五语言 source/sink 规则库自动审计;<code>supply</code> 外部依赖入图(ExternalPackage/DEPENDS_ON)供应链视图</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">📈 <b>架构演化</b><br><span style="color:#64748B"><code>evolve</code> 回放最近 N 个提交:worktree 快照逐个索引,产出指标时间线 JSON + 内联 SVG sparkline HTML</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">📦 <b>制品生态</b><br><span style="color:#64748B"><code>hub</code> push/pull/list(协议 v1,token 或 <code>CODENEXUS_HUB_TOKEN</code>);<code>skill</code> 一键同步技能文档到 Agent 全局目录;<code>ask</code> 自然语言入口</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🧮 <b>分析工具包</b><br><span style="color:#64748B">死代码检测(worklist 可达性 + 置信度)、架构概览、复杂度分析(8 项指标)、社区检测(Leiden)、跨服务调用链</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">🧠 <b>向量嵌入</b><br><span style="color:#64748B">默认启用的语义搜索(<code>embeddings</code> feature,本地 ONNX 推理 + BM25 全文)</span></td>
</tr>
<tr>
<td width="50%" style="vertical-align:top; padding: 12px">🌍 <b>国际化</b><br><span style="color:#64748B">Unicode case folding + NFC 规范化(ICU4X,<code>i18n</code> feature,含于 <code>full</code> 预设)</span></td>
<td width="50%" style="vertical-align:top; padding: 12px">🧰 <b>LSP 增强</b><br><span style="color:#64748B">7 个 LSP 客户端(rust-analyzer、pyright、clangd、gopls、ts-lang-server、fortls、jdtls)提供超越 tree-sitter 的类型精确解析(<code>lsp</code> feature)</span></td>
</tr>
</table>

除上述核心能力外,CodeNexus 还提供 `context` 上下文组装(`--budget` token 预算器)、`detect_changes` 变更检测、`rename` 重命名影响预检、`ask` 自然语言入口、`ci`/`lint` 架构门禁、`taint` 污点审计、`supply` 供应链视图、`evolve` 演化回放、`hub` 制品客户端、`skill` 技能同步、基于 oxcache 的查询结果缓存与 inklog 结构化日志等能力;全部 37 个子命令(外加 `mcp` 服务模式)的分组清单见 [🛠️ CLI 命令](#️-cli-命令) 一节,逐命令参数语义与可运行示例见 [📖 用户指南 · 命令详解](docs/USER_GUIDE.md#️-命令详解)。

---

## 🚀 快速开始

### 📦 安装

```bash
# 从 crates.io 安装(默认 full 预设,含全部 21 语言 + 所有功能)
cargo install codenexus

# 从源码构建
git clone https://github.com/Kirky-X/codenexus.git
cd codenexus
cargo install --path .

# 或直接编译
cargo build --release
```

> **链接失败排查(openEuler / CentOS 等 GCC ≤ 12 系统)**:默认安装会下载预编译的 LadybugDB 二进制,它依赖较新的 `libstdc++`。若链接报 `undefined symbol: std::to_chars(..., _Float128, ...)`,用环境变量强制从源码编译即可(需安装 `cmake`):
>
> ```bash
> LBUG_BUILD_FROM_SOURCE=1 cargo install codenexus
> ```

要求 Rust 1.97.1 及以上(MSRV,`Cargo.toml` `rust-version` 与 `clippy.toml` `msrv` 一致;CI 工具链当前锁定 1.95,见 `.github/workflows/ci.yml`)。

#### 🔧 构建预设与 Feature 开关

**预设**:`default = ["full"]`

| Feature           | 默认 | 说明 |
| ----------------- | ---- | ---- |
| `minimal`         | —    | 最小预设:仅 `lang-rust` |
| `core`            | —    | 核心预设:`lang-c` + `lang-rust` + `lang-python` |
| `full`            | 启用 | 完整预设:`core` + Fortran/TypeScript/Go/Java/C++/JavaScript/Ruby/Haskell/OCaml/Scala/PHP/C#/Bash/HTML/CSS/JSON/Regex/Verilog + daemon/analysis/complexity/api-review/community/cross-service/diagram/lsp/cli/mcp/cache/embeddings/i18n |
| `lang-c`          | —    | C 语言解析器(tree-sitter-c) |
| `lang-rust`       | 启用 | Rust 语言解析器(tree-sitter-rust) |
| `lang-fortran`    | —    | Fortran 语言解析器(tree-sitter-fortran) |
| `lang-python`     | —    | Python 语言解析器(tree-sitter-python) |
| `lang-typescript` | —    | TypeScript 语言解析器(tree-sitter-typescript) |
| `lang-go`         | —    | Go 语言解析器(tree-sitter-go) |
| `lang-java`       | —    | Java 语言解析器(tree-sitter-java) |
| `lang-cpp`        | —    | C++ 语言解析器(tree-sitter-cpp) |
| `lang-javascript` | —    | JavaScript 语言解析器(tree-sitter-javascript) |
| `lang-ruby`       | —    | Ruby 语言解析器(tree-sitter-ruby) |
| `lang-haskell`    | —    | Haskell 语言解析器(tree-sitter-haskell) |
| `lang-ocaml`      | —    | OCaml 语言解析器(tree-sitter-ocaml) |
| `lang-scala`      | —    | Scala 语言解析器(tree-sitter-scala) |
| `lang-php`        | —    | PHP 语言解析器(tree-sitter-php) |
| `lang-csharp`     | —    | C# 语言解析器(tree-sitter-c-sharp) |
| `lang-bash`       | —    | Bash 语言解析器(tree-sitter-bash) |
| `lang-html`       | —    | HTML 语言解析器(tree-sitter-html) |
| `lang-css`        | —    | CSS 语言解析器(tree-sitter-css) |
| `lang-json`       | —    | JSON 语言解析器(tree-sitter-json) |
| `lang-regex`      | —    | 正则语言解析器(tree-sitter-regex) |
| `lang-verilog`    | —    | Verilog 语言解析器(tree-sitter-verilog) |
| `daemon`          | 启用 | 文件监视守护进程(notify + notify-debouncer-full) |
| `embeddings`      | 启用 | 向量嵌入语义搜索(reqwest HTTP + 本地 ONNX 推理) |
| `lsp`             | 启用 | LSP 增强解析(7 个 LSP 客户端) |
| `analysis`        | 启用 | 死代码检测 + 架构概览(纯 Cypher 聚合) |
| `complexity`      | 启用 | AST 复杂度分析(8 项指标,依赖 `analysis`) |
| `api-review`      | 启用 | API 审查工具包(route_map/shape_check/api_impact/tool_map) |
| `community`       | 启用 | 社区检测(Leiden 模块度优化,依赖 petgraph) |
| `cross-service`   | 启用 | 跨服务调用链检测(HTTP 路由模式匹配) |
| `diagram`         | 启用 | 架构图管线:`diagram`/`arch_diff` 命令(依赖 `analysis`) |
| `mcp`             | 启用 | MCP 服务器(sdforge `mcp` stdio 传输) |
| `cli`             | 启用 | CLI 二进制(sdforge `cli` 传输,二进制必需) |
| `cache`           | 启用 | 查询结果缓存(oxcache) |
| `i18n`            | 启用 | Unicode case folding + NFC 规范化(ICU4X) |

> **日志系统**:inklog 是唯一日志后端(console + file rotation + daily 滚动 + LZ4 压缩),不再提供 tracing-subscriber 可选后端。

```bash
# 最小构建(仅 Rust,不含 daemon/analysis)
cargo build --release --no-default-features --features minimal

# 核心构建(C + Rust + Python)
cargo build --release --no-default-features --features core

# 单语言精简构建(例如仅 C)
cargo build --release --no-default-features --features lang-c

# 完整构建(默认,含所有语言 + 全部功能)
cargo build --release

# 含向量嵌入的构建
cargo build --release --features embeddings
```

### 💡 最小示例

以下命令改编自 [`examples/src/bin/basic_indexing.rs`](examples/src/bin/basic_indexing.rs) 等示例与 [📖 用户指南](docs/USER_GUIDE.md),均可直接运行:

```bash
# 1. 索引一个代码仓库(数据库默认写入 .codenexus/<项目名>.lbug)
codenexus index --path /path/to/project --name myproject

# 1b. RAM 优先索引(LZ4 内存压缩,适合中小仓库,更快)
codenexus index --path /path/to/project --name myproject --ram_first true

# 2. 查询函数(Cypher 子集)
codenexus query --cypher "MATCH (f:Function) RETURN f.name LIMIT 10"

# 3. 追踪调用链(可选参数已有内置默认值:depth=5、无路径过滤)
codenexus trace --symbol main --trace_type calls

# 4. 搜索符号(exact / regex / fuzzy + BM25 全文;limit 默认 50)
codenexus search --text "parse" --mode exact
codenexus search --text "authentication logic" --fulltext true
```

> 💡 **建议**:把 `.codenexus/` 加入项目的 `.gitignore`(索引库与日志都在这个目录里,不应入库)。也可以创建 `.codenexus/config.json` 固化每项目的常用参数(如 `ram_first`、复杂度阈值),详见 [📖 用户指南 · 配置文件](docs/USER_GUIDE.md#️-配置文件)。

### 🧭 核心概念

- **知识图谱模型**:源码被解析为 44 种节点与 30 种边构成的属性图,存入 LadybugDB,可用 Cypher 子集查询。
- **严格 flag 风格 CLI**:无位置参数,参数为 snake_case 长选项(如 `--symbol`、`--trace_type`),布尔选项显式传值(`true`/`false`)。可选参数自带内置默认值(如 `trace --depth 5`、`search --limit 50`,完整清单见各命令 `--help`),并可用 `.codenexus/config.json` 按项目固化。
- **全局 `--db` 选项**:数据库路径默认 `.codenexus/<项目名称>.lbug`,需置于子命令之前;仅有一个索引时可自动发现。
- **退出码契约**:0 成功、1 内部错误、2 无效输入 / 项目不存在 / 查询错误、4 NotFound / 数据库损坏(见 `src/service/error.rs`)。

> 增量索引、置信度分层等完整核心约定见 [📖 用户指南 · 核心约定](docs/USER_GUIDE.md#-核心约定)。

---

## 🛠️ CLI 命令

CodeNexus 提供 **37 个子命令**(外加 `codenexus mcp` 服务模式),按功能分组:

- **索引与项目管理**:`index` / `daemon` / `status` / `list` / `clean` / `export` / `import`
- **查询与搜索**:`query` / `search` / `context`
- **追踪与影响分析**:`trace` / `impact` / `detect_changes` / `rename`
- **分析工具包**:`dead_code` / `architecture` / `complexity` / `community` / `cross_service`
- **API 审查与架构图**:`route_map` / `shape_check` / `api_impact` / `tool_map` / `diagram` / `arch_diff`
- **多智能体与 LSP**:`setup` / `hook` / `mcp` / `lsp_goto_def` / `lsp_hover`

每个命令的全部参数语义与可运行示例见 [📖 用户指南 · 命令详解](docs/USER_GUIDE.md#️-命令详解);复杂度指标与阈值表见 [📖 用户指南 · 复杂度分析](docs/USER_GUIDE.md#-复杂度分析),死代码检测配置见 [📖 用户指南 · 死代码检测](docs/USER_GUIDE.md#-死代码检测)。

---

## 🔌 MCP 集成

CodeNexus 使用 [sdforge](https://crates.io/crates/sdforge) 提供 MCP(Model Context Protocol)服务器,经 sdforge `mcp` stdio 传输暴露 **10 个工具**(`query` / `trace` / `impact` / `search` / `context` / `architecture` / `diagram` / `arch_diff` / `dead_code` / `detect_changes`),与同名 CLI 命令共用同一套 `#[forge]` 定义;每个工具的描述包含参数语义与默认值,服务器以只读方式打开数据库,可与写入进程并存。

```bash
# 启动 MCP 服务(stdio)
codenexus mcp [--db <DB_PATH>]

# 自动检测已安装的 Claude Code / Cursor / Codex 并写入 MCP 配置(--force 跳过确认)
codenexus setup

# 输出 PreToolUse/PostToolUse JSON(exit 0,永不阻塞,适合作为智能体钩子)
codenexus hook
```

各工具的能力说明见 [📖 用户指南 · 多智能体集成](docs/USER_GUIDE.md#-多智能体集成)。

---

## 📚 文档

| 文档 | 说明 |
|------|------|
| [📖 用户指南](docs/USER_GUIDE.md) | 从安装到进阶的完整使用教程(含复杂度分析与死代码检测详解) |
| [📘 API 参考](docs/API_REFERENCE.md) | 库 crate 公开 API、Facade 接口与 CLI/MCP 对外接口 |
| [🏗️ 架构文档](docs/ARCHITECTURE.md) | 分层结构、索引管线、图模型与架构图命令语义 |
| [⚡ 性能指南](docs/PERFORMANCE.md) | 基准套件、实测基线、SLO 与内存优化(L1–L7 防线) |
| [🔒 安全文档](docs/SECURITY.md) | 安全策略、漏洞报告流程与最佳实践 |
| [❓ FAQ](docs/FAQ.md) | 常见问题解答 |
| [🧪 测试场景矩阵](docs/TEST_SCENARIOS.md) | 基于真实测试套件的场景穷举矩阵 |
| [📋 更新日志](docs/CHANGELOG.md) | 每个版本的变更记录(Keep a Changelog 格式) |
| [🤝 贡献指南](docs/CONTRIBUTING.md) | 如何参与项目开发 |
| [📜 行为准则](docs/CODE_OF_CONDUCT.md) | 社区行为准则 |
| [📐 架构设计文档(ADD)](docs/ADD.md) | 架构决策与设计细节 |
| [🎯 产品需求文档(PRD)](docs/PRD.md) | 产品需求与 SLO 指标 |
| [🧾 技术需求文档(TRD)](docs/TRD.md) | 技术需求分解 |
| [🗄️ 数据库设计文档(DDD)](docs/DDD.md) | 图存储 Schema 设计 |
| [🗜️ 数据库压缩实测](docs/database-compression.md) | gzip / zstd / lz4 压缩率与耗时实测 |
| [🔬 研究笔记](docs/research/) | TaintRadar、级联漏洞链等论文笔记 |
| [🛡️ 安全审计](docs/security/) | Strix 审计 triage 与 ReDoS 误报复核实证 |
| [🤖 CLI 技能](skill/SKILL.md) | 面向 AI 智能体的 CLI 用法知识包(针对 v0.3.12 校验) |
| [📈 基准测试说明](benches/README.md) | Criterion 基准套件与 SLO 阈值表 |
| [📦 crates.io](https://crates.io/crates/codenexus) | 发布页面 |

---

## 💻 示例

全部 14 个可运行示例位于 [`examples/`](examples/) 目录,每个示例对应一个 `cargo run --bin` 目标(经 `examples/Cargo.toml` 注册):

| 示例 | 文件 | 描述 |
|------|------|------|
| basic_indexing | `examples/src/bin/basic_indexing.rs` | 索引 Rust 源码到知识图谱,Cypher 查询函数列表 |
| cypher_query | `examples/src/bin/cypher_query.rs` | 对图谱执行多种 Cypher 查询(按类型、按名称) |
| symbol_search | `examples/src/bin/symbol_search.rs` | 按名称、类型搜索符号,处理空结果 |
| call_tracing | `examples/src/bin/call_tracing.rs` | 正向追踪函数调用路径,构建调用图 |
| impact_analysis | `examples/src/bin/impact_analysis.rs` | 分析修改某符号的影响半径(反向 BFS) |
| symbol_context | `examples/src/bin/symbol_context.rs` | 符号 360° 视图:调用方 / 被调方 / 执行流,以及子图加载与符号消歧 |
| export_import | `examples/src/bin/export_import.rs` | 图谱数据库的导出与导入验证 |
| project_lifecycle | `examples/src/bin/project_lifecycle.rs` | 项目生命周期:索引多个项目 → 列出 → 按名解析 → 删除 |
| code_analysis | `examples/src/bin/code_analysis.rs` | 代码质量分析三件套:复杂度 / 死代码 / 社区检测 |
| api_surface | `examples/src/bin/api_surface.rs` | API/Web 服务面分析:路由表 / schema 校验 / API 影响 / 跨服务调用 / MCP 工具表 |
| architecture_diagram | `examples/src/bin/architecture_diagram.rs` | 架构总览 + 自包含交互式架构图 HTML + 双项目架构 diff |
| daemon_watch | `examples/src/bin/daemon_watch.rs` | 文件监视守护:`notify` 防抖 → 增量索引(Observer 模式)→ 优雅停止 |
| git_integration | `examples/src/bin/git_integration.rs` | Git 集成:把 `git diff` 的变更行映射到受影响符号并做风险分级 |
| setup_mcp | `examples/src/bin/setup_mcp.rs` | MCP 接入配置:自动探测已安装的 AI coding agent 并写入 MCP server 配置 |

```bash
# 运行单个示例
cargo run --manifest-path examples/Cargo.toml --bin basic_indexing

# 运行所有示例
for bin in basic_indexing cypher_query symbol_search call_tracing impact_analysis symbol_context export_import project_lifecycle code_analysis api_surface architecture_diagram daemon_watch git_integration setup_mcp; do
  cargo run --manifest-path examples/Cargo.toml --bin $bin
done
```

示例通过 `IndexFacade` 索引源码、`QueryFacade` 执行查询、`TraceFacade` 追踪调用,退出时临时目录自动清理。库 API 的完整说明见 [📘 API 参考](docs/API_REFERENCE.md)。

---

## 🏗️ 架构

CodeNexus 采用「库 + 二进制」双目标 crate:`src/lib.rs` 暴露公共 API(模型 / 解析 / 存储 / 索引 / 查询 / 追踪 / service 模块),`src/main.rs` 是 sdforge 驱动的 CLI 二进制;v0.3.2 起 CLI 与 MCP 接口经 sdforge `#[forge]` 宏统一封装在 `src/service/`,每个命令定义 core 函数 + CLI wrapper + MCP wrapper。索引方向为「文件发现 → 增量哈希 → 并行解析 → 符号解析 → 批量入库」。

三层源码结构、索引管线流程图、图模型(44 种节点 / 30 种边与置信度分层)、核心语言提取表与 `architecture` / `diagram` / `arch_diff` 命令输出语义,详见 [🏗️ 架构文档](docs/ARCHITECTURE.md)。

---

## 🧪 测试

### 🎯 测试策略

分层测试策略:`src/` 内联 `#[cfg(test)]` 单元测试 → `tests/` 集成测试(CLI 子进程 E2E、全功能套件、MCP/图集成、非 ASCII 路径)→ `tests/acceptance/` 8 语言真实开源项目验收(与 gitnexus 交叉验证)→ `benches/` 7 组 Criterion 基准回归。测试分层总览与逐条场景矩阵见 [🧪 测试场景矩阵](docs/TEST_SCENARIOS.md)。

### ▶️ 运行命令(与 CI 一致)

```bash
# 格式检查(nightly rustfmt,rustfmt.toml 使用 nightly-only 选项)
cargo +nightly fmt --all -- --check

# Clippy 门禁(CI 按 full 与 minimal 双档执行,警告即错误)
cargo +1.95 clippy -- -D warnings
cargo +1.95 clippy --lib --no-default-features --features minimal -- -D warnings

# 测试(CI 矩阵按 minimal / core / full / core,daemon,analysis,complexity / core,lsp,cache / full,embeddings 六档运行)
cargo test --lib --verbose
cargo test --lib --no-default-features --features "core" --verbose

# 覆盖率门禁:行覆盖率不低于 95%(CI coverage job 与 pre-push 钩子执行)
cargo llvm-cov --lib --fail-under-lines 95 --lcov --output-path lcov.info

# 基准测试(--quick 达到统计显著性即停止)
cargo bench -- --quick
cargo bench --bench daemon_bench --features daemon -- --quick

# 安全审计(CI security job:RustSec 公告 + 许可证/禁用依赖)
cargo audit
cargo deny check
```

> CI 还会在每次 push/PR 上运行 CodeQL 静态分析(`.github/workflows/codeql.yml`),并在 `v*` tag 推送时触发 Release 工作流(GitHub Release + crates.io 发布)。

### 📊 测试规模

截至 v0.3.12(`#[test]` / `#[tokio::test]` 函数 grep 统计):约 4600+ 条单元测试(147 个源文件含 `#[cfg(test)]`)+ 118 条集成测试(8 个文件)+ 8 个验收项目 + 7 组 Criterion 基准;覆盖率门禁为行覆盖 ≥ 95%(CI coverage job 与 pre-push 钩子双重执行)。逐文件分解与完整统计见 [🧪 测试场景矩阵 · 统计汇总](docs/TEST_SCENARIOS.md#-统计汇总)。

---

## 📊 性能

基准套件为 `benches/` 下 7 组 Criterion 基准(SLO 阈值来自 `docs/PRD.md` §5.1):实测 1000 文件冷启动索引约 3929 files/s(SLO ≥ 100)、单文件增量约 4987 files/s(SLO ≥ 500)、daemon 去抖响应约 2.76 s(SLO ≤ 3 s);`incremental_500_of_1000` 为已知未达标项。v0.3.10–v0.3.12 落地的 L1–L7 内存防线(`MemoryBudget` 三级内存压力、流式 CSV、管线流式化、buffer_pool 封顶等)将 70 GB 主机上的索引峰值内存从约 60 GB 降至约 4 GB。完整实测基线、SLO 表与调优方法见 [⚡ 性能指南](docs/PERFORMANCE.md),SLO 阈值表见 [`benches/README.md`](benches/README.md)。

---

## 🔒 安全

### 🛡️ 安全设计

攻击面集中在索引文件(LadybugDB 数据库、`.graph.zst` 导入制品、tree-sitter 解析输入)与进入 Cypher 子集查询的 `query` / `trace` / `impact` / `search` 用户输入;代码层面配套 Cypher / 标识符转义、图编辑 dry-run 默认与诊断回执的失败显性化。设计细节与范围界定见 [🔒 安全文档](docs/SECURITY.md)。

### ⛓️ 供应链与门禁

CI 内置四道门禁:`cargo-audit`(RustSec 公告扫描)、`cargo-deny`(许可证 / 禁用依赖校验)、CodeQL 静态分析与 pre-commit 密钥扫描。完整清单与忽略项说明见 [🔒 安全文档](docs/SECURITY.md#️-supply-chain-and-gates)。

### 🚨 报告安全漏洞

请勿通过公开 issue 报告安全漏洞。请发送邮件至 **security@kirky-x.dev**,附漏洞描述与影响、复现步骤(最小代码库或 `codenexus` 命令序列)、版本信息(`codenexus --version`、Rust 工具链、操作系统)与已知缓解措施。项目承诺 48 小时内确认、5 个工作日内给出初步评估。完整政策(支持版本、披露流程、范围界定)见 [🔒 安全文档](docs/SECURITY.md)。

---

## 🗺️ 开发路线图

<table style="width:100%; border-collapse: collapse">
<tr><th style="text-align:center">状态</th><th style="text-align:left">方向</th><th style="text-align:left">条目</th></tr>
<tr><td align="center">✅</td><td>核心索引与图模型</td><td>v0.1.0 — 多语言索引(C/Rust/Fortran/Python/TypeScript)、图模式(44 种节点类型 + 30 种边类型)、<code>query</code>/<code>trace</code>/<code>impact</code>/<code>context</code>/<code>search</code>、增量索引、RAM 优先模式、MCP 服务、团队 <code>export</code>/<code>import</code>、守护进程模式、置信度分层、歧义消解</td></tr>
<tr><td align="center">✅</td><td>稳定性与性能加固</td><td>v0.1.x — 增量重索引覆盖、大仓库内存调优、更多语言专属边提取</td></tr>
<tr><td align="center">✅</td><td>LSP 增强</td><td>v0.2.0 — <code>lsp</code> feature:LSP 增强提取,超越 tree-sitter 的类型精确解析(rust-analyzer 集成)</td></tr>
<tr><td align="center">✅</td><td>语言覆盖扩展</td><td>v0.2.0 — 扩展语言覆盖(Go、Java、C++,以及 JavaScript/Ruby/Haskell/OCaml/Scala/PHP/C#/Bash/HTML/CSS/JSON/Regex/Verilog),由新的 <code>lang-*</code> feature 控制</td></tr>
<tr><td align="center">✅</td><td>分析工具包</td><td>v0.2.0 — 死代码检测、架构概览、API 审查(route_map/shape_check/api_impact/tool_map)、社区检测、跨服务链接检测</td></tr>
<tr><td align="center">✅</td><td>复杂度分析</td><td>v0.2.1 — AST 复杂度分析:圈/认知复杂度、嵌套深度、函数长度,绿/黄/红/致命四级告警</td></tr>
<tr><td align="center">✅</td><td>MCP 服务器</td><td>v0.3.0 — sdforge-based MCP 服务器:<code>#[forge]</code> 宏 + sdforge <code>mcp</code> stdio 传输,替代手写 JSON-RPC;6 个工具(query/trace/impact/search/context/architecture)</td></tr>
<tr><td align="center">✅</td><td>跨语言污点追踪</td><td>v0.3.2 — 跨语言数据流端到端追踪:<code>TaintPathTracer</code> BFS 遍历 DataFlows/Reads/Writes/FfiCalls 边</td></tr>
<tr><td align="center">✅</td><td>语义搜索</td><td>v0.3.2 — 向量嵌入默认开启语义搜索(<code>embeddings</code> feature 已包含在 <code>full</code> 预设中)</td></tr>
<tr><td align="center">✅</td><td>国际化</td><td>v0.3.3 — 国际化模块(<code>i18n</code> feature):ICU4X Unicode case folding + NFC 规范化 + CJK 边界检测</td></tr>
<tr><td align="center">✅</td><td>Harness 现代化</td><td>v0.3.3 — CI 升级 Rust 1.91 + 6 特性矩阵 + dependabot + codeql + crates.io 发布</td></tr>
<tr><td align="center">✅</td><td>大仓库内存防线</td><td>v0.3.11 — 大型仓库索引 OOM 修复(L1–L7 七层防线):<code>MemoryBudget</code> 三级内存压力 + <code>Graph::nodes_view/edges_view</code> 迭代器 + 流式 CSV + mpsc channel 并行解析 + L5 自适应降级 + L6 管线流式化(<code>ctx.remove</code> 取代 <code>Graph::clone</code>)+ L7 LadybugDB buffer_pool 封顶(4 GB)+ LSP 按需启动 + RAM-first 8× 放大因子预算。70 GB 主机峰值内存从 60 GB 降至 ~4 GB</td></tr>
<tr><td align="center">🚧</td><td>基础库升级</td><td>自研基础库升级至 RC(trait-kit / sdforge / oxcache 0.5.0-rc.2、inklog 0.3.0-rc.2);MSRV 1.95 → 1.97.1</td></tr>
<tr><td align="center">✅</td><td>功能拓展波次(feature-expansion-wave)</td><td>2026-09 — RICE 排序的 12 项能力:<code>context --budget</code> token 预算器、<code>ci</code> 架构门禁(含官方 GitHub Action)、<code>lint</code> 自定义架构规则包、<code>skill</code> 技能同步、<code>ask</code> 自然语言入口、graph-viewer 快照合流(<code>diagram</code>/<code>arch_diff</code> <code>--viewer_url</code>)、daemon <code>--notify-impact</code> 影响告警、Kotlin/Swift/Solidity 语言支持、<code>taint</code> 安全审计(内置 source/sink 规则库)、<code>supply</code> 供应链视图(ExternalPackage/DEPENDS_ON)、<code>evolve</code> 架构演化回放、<code>hub</code> 制品客户端(协议 v1)</td></tr>
<tr><td align="center">📋</td><td>Web UI 与图可视化</td><td>基于查询门面的 Web UI / 图可视化(<code>diagram</code>/<code>arch_diff</code> 已交付架构图 HTML 与语义 Delta 及 graph-viewer 快照合流;3D graph-viewer 深度集成仍在规划中)</td></tr>
</table>

---

## 🤝 参与贡献

详细的贡献流程与代码规范请参阅 [🤝 贡献指南](docs/CONTRIBUTING.md)。

### 🛠️ 开发环境

工具链为 Rust stable 1.95+(CI 锁定 1.95;`Cargo.toml` MSRV 1.97.1)+ nightly(`cargo fmt` 使用 nightly-only 选项),系统依赖包括 C/C++ 编译器(tree-sitter grammar 构建)、`libssl-dev`、`pkg-config` 与 `protobuf-compiler`;提交前运行 `cargo +nightly fmt --all -- --check` 与 `cargo clippy -- -D warnings`;[pre-commit](https://pre-commit.com/) Git 钩子在 pre-commit 执行文件检查、私钥/密钥扫描、fmt 与 clippy,pre-push 执行 `cargo test --lib`、覆盖率门禁(≥95%)、`cargo audit` 与 `cargo deny check`;提交信息遵循 Conventional Commits(`feat`、`fix`、`perf`、`refactor`、`docs`、`test`、`chore`、`revert`)。完整环境搭建步骤见 [🤝 贡献指南 · 开发环境](docs/CONTRIBUTING.md#-development-environment)。

### 💖 贡献方式

<table style="width:100%; border-collapse: collapse">
<tr>
<td width="33%" align="center" style="padding: 16px">

### 🐛 报告 Bug

发现问题?<br>
<a href="https://github.com/Kirky-X/codenexus/issues/new">创建 Issue</a>

</td>
<td width="33%" align="center" style="padding: 16px">

### 💡 功能建议

有好想法?<br>
<a href="https://github.com/Kirky-X/codenexus/issues">提交功能建议</a>

</td>
<td width="33%" align="center" style="padding: 16px">

### 🔧 提交 PR

想贡献代码?<br>
<a href="https://github.com/Kirky-X/codenexus/pulls">Fork 并提交 PR</a>

</td>
</tr>
</table>

报告 Issue 时请附上:CodeNexus 版本(`codenexus --version`)、Rust 版本、操作系统、完整命令与错误输出、最小复现。安全漏洞请勿公开提交,见 [🔒 安全文档](docs/SECURITY.md)。

---

## 📋 更新日志

完整版本历史见 [📋 更新日志](docs/CHANGELOG.md)(遵循 [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) 格式,语义化版本)。

| 版本 | 日期 | 要点 |
|------|------|------|
| Unreleased | — | 自研基础库升级至 RC(trait-kit / sdforge / oxcache 0.5.0-rc.2、inklog 0.3.0-rc.2);MSRV 1.95 → 1.97.1 |
| 0.3.12 | 2026-07-30 | 动态 `max_db_size` + `--fresh` 标志解决 DB 膨胀;read-only 连接 4 TiB cap 修复 >16 GiB 数据库查询崩溃;LSP hover 批量 UNWIND 更新等 P 系列修复 |
| 0.3.11 | 2026-07-26 | L6+L7 内存优化:管线流式化 + 迭代器 API + buffer_pool 封顶,70 GB 主机峰值内存 60 GB → ~4 GB |
| 0.3.10 | 2026-07-25 | 大仓库索引 OOM 的 L1–L5 五层防线:内存预算、图视图迭代器、流式 CSV、mpsc 并发上限、自适应降级 |

---

## 📄 许可证

本项目采用 [MIT](LICENSE) 许可证。

---

## 🙏 致谢

### 🌟 核心依赖

CodeNexus 站在以下优秀开源项目的肩膀上:

| 依赖 | 用途 |
|------|------|
| [lbug](https://github.com/ladybugdb/ladybugdb)(LadybugDB) | 图数据库存储 |
| [tree-sitter](https://tree-sitter.github.io/) + 21 个语言 grammar crate | 多语言 AST 解析 |
| [rayon](https://github.com/rayon-rs/rayon) | 数据并行 |
| [notify](https://github.com/notify-rs/notify) / notify-debouncer-full | 文件监听与去抖 |
| [sdforge](https://crates.io/crates/sdforge) | CLI + MCP 双传输框架(`#[forge]` 宏) |
| [trait-kit](https://crates.io/crates/trait-kit) | 能力注册表 |
| [oxcache](https://crates.io/crates/oxcache) | 查询结果缓存 |
| [inklog](https://crates.io/crates/inklog) | 日志后端(console + 轮转 + LZ4 压缩) |
| [ort](https://github.com/pykeio/ort) / tokenizers | 本地 ONNX 向量嵌入推理 |
| [ICU4X](https://github.com/unicode-org/icu4x)(icu_normalizer / icu_casemap) | Unicode 规范化与大小写折叠 |
| [petgraph](https://github.com/petgraph/petgraph) | 社区检测图算法 |
| [criterion](https://github.com/bheisler/criterion.rs) | 基准测试 |

### 💝 特别感谢

感谢 Rust 社区与所有[贡献者](https://github.com/Kirky-X/codenexus/graphs/contributors)。

---

## 📞 联系与支持

<table style="width:100%; max-width: 600px">
<tr>
<td align="center" width="33%">
<a href="https://github.com/Kirky-X/codenexus/issues"><b style="color:#991B1B">Issues</b></a><br>
<span style="color:#64748B">报告问题和 Bug</span>
</td>
<td align="center" width="33%">
<a href="docs/FAQ.md"><b style="color:#1E40AF">文档 / FAQ</b></a><br>
<span style="color:#64748B">提问前请先查阅</span>
</td>
<td align="center" width="33%">
<a href="https://github.com/Kirky-X/codenexus"><b style="color:#1E293B">GitHub</b></a><br>
<span style="color:#64748B">查看源代码</span>
</td>
</tr>
</table>

---

## ⭐ Star 历史

[![Star History Chart](https://api.star-history.com/svg?repos=Kirky-X/codenexus&type=Date)](https://star-history.com/#Kirky-X/codenexus&Date)

如果这个项目对您有帮助,请考虑给它一个 ⭐️!

**由 Kirky.X 构建**

---

<sub>© 2026 Kirky.X. 保留所有权利。</sub>