内容
<h1 align="center">MU</h1>
<p align="center">
<strong>你的代码库,被理解。</strong>
</p>
<p align="center">
<em>MCP服务器,为AI助手提供深层次的代码库理解。<br/>
语义图,BM25搜索,影响分析,代码审查 - 所有这些都通过工具调用。</em>
</p>
MU 将你的代码库解析成存储在DuckDB中的语义图,然后通过13个MCP工具公开它。你的AI助手可以搜索,导航,审查和理解你的代码,而不必将整个仓库塞进上下文窗口。
[](https://www.rust-lang.org/)
[](https://opensource.org/licenses/Apache-2.0)
## 为什么
LLMs 在大型代码库中窒息。上下文窗口非常宝贵。90%的代码是样板代码。当你需要语义时,你却在喂养语法。
MU 通过构建语义图来解决这个问题 - 节点(文件,类,函数),边(导入,调用,继承),重要性得分,摘要 - 并让你的AI提取它需要的内容。
```
输入: 66,493 行 Python 代码
输出: 2,173 个令牌(mu压缩)
结果: LLM 正确回答架构问题
```
## 快速开始
从 [Releases](https://github.com/0ximu/mu/releases) 获取预构建的二进制文件,或从源代码构建:
```bash
git clone https://github.com/0ximu/mu.git
cd mu && cargo build --release
# 将 mu 放在你的 PATH 上(对于下面的 MCP 配置是必需的)
cp target/release/mu ~/.local/bin/ # 或 /usr/local/bin
```
然后索引你的项目并将其连接到 Claude Code:
```bash
cd /path/to/your/project
mu bootstrap
# 将 MCP 服务器注册到 Claude Code
claude mcp add mu -- mu mcp
```
或者,要与你的团队共享服务器配置,请在项目根目录中创建 `.mcp.json`:
```json
{
"mcpServers": {
"mu": {
"command": "mu",
"args": ["mcp"]
}
}
}
```
就这样。你的AI助手现在对代码库有全面的了解。(其他MCP客户端也适用 - MU通过stdio使用MCP。)
## MCP 工具
以下是你的AI助手可以调用的工具:
| 工具 | 功能 |
|------|-------------|
| `mu_grok` | 搜索 + 代码片段。BM25全文搜索按重要性排名 |
| `mu_find` | 按名称查找确切符号 |
| `mu_expand` | 图遍历 - 从种子节点向外探索依赖关系 |
| `mu_read` | 批量源代码检索特定节点 |
| `mu_impact` | 下游影响 - 如果此符号更改,什么会中断,传递性 |
| `mu_diff` | git引用(分支,提交)之间的语义差异 |
| `mu_review` | 完整的PR审查:差异 + 影响 + 审计 + 风险评分 |
| `mu_audit` | 代码质量规则 - 复杂度,硬编码秘密,代码气味 |
| `mu_sus` | 查找可疑代码 - 高复杂度,安全敏感,未测试 |
| `mu_enrich` | 丰富飞轮 - LLM编写更好的摘要,提高未来搜索 |
| `mu_compress` | 具有符号表示法的令牌高效代码库概述 |
| `mu_bootstrap` | 在会话中构建或重建索引 |
| `mu_configure` | 自动检测项目模式,完善配置,驱动丰富 |
### 丰富飞轮
`mu_enrich` 是独一无二的:它返回需要更好摘要的节点,LLM编写它们,并将它们存储回去。每个丰富周期都改善了未来的搜索结果。图变得越智能,你使用它就越多。
## CLI 命令
CLI 很精简 - 引导,压缩和分析:
```bash
mu bootstrap # 构建语义图(首先运行这个)
mu compress # 为LLM消费压缩代码库
mu compress -o context.mu # 写入文件
mu status # 项目状态和统计
mu deps <node> # 显示依赖关系
mu impact <node> # 下游影响分析
mu diff main HEAD # git引用之间的语义差异
mu review # 审查未提交的更改
mu review main..feature # 审查分支差异
mu audit # 代码质量审计
mu doctor # 健康检查
```
### 压缩(杀手锏)
在几秒钟内将整个代码库提供给LLM。MU将你的代码压缩成具有符号表示法的分层星级格式,以保留语义结构。
```
# 42 个模块,15 个类,128 个函数,245 条边
## 领域概述
### 核心实体
$ AuthService [★★★]
@attrs [user_repo, token_manager]
→ Database (uses), UserRepo (calls)
← LoginHandler, ApiMiddleware
## 热点路径(复杂度 > 20 或调用 > 5)
# process_request c=35 calls=12 ★★
| src/handlers/api.rs
```
符号表示法:`!` 模块,`$` 类,`#` 函数。复杂度得分,调用计数,重要性星级 - 均以最小令牌。
## 引导程序构建的内容
`mu bootstrap` 解析你的代码库并生成:
1. **语义图** - 节点(文件,类,函数)和边(导入,调用,继承,使用)
2. **PageRank重要性得分** - 哪些符号最有连接/重要性
3. **启发式摘要** - 每个节点的自动生成描述(在图完成后生成 - 摘要包括调用者/被调用者信息来自边)
4. **BM25全文索引** - 快速搜索摘要,名称和代码
5. **DuckDB数据库** - 所有内容存储在 `.mu/mubase`
引导程序速度很快:一个400k行的TypeScript项目大约需要60秒。
## 支持的语言
| 语言 | 扩展名 |
|----------|-----------|
| Python | `.py` |
| TypeScript | `.ts`, `.tsx` |
| JavaScript | `.js`, `.jsx` |
| Go | `.go` |
| Rust | `.rs` |
| Java | `.java` |
| C# | `.cs` |
## 工作原理
```
源代码 → 扫描器 → 解析器 → 图构建器 → DuckDB
│ │ │ │
清单 AST 节点和 PageRank,
数据 边 摘要,
全文索引
│
MCP 服务器
│
AI 助手
```
1. **扫描器**遍历文件系统,检测语言,过滤噪音
2. **解析器**使用tree-sitter提取AST(类,函数,导入)
3. **图构建器**为代码关系创建节点和边
4. **后处理**计算PageRank,生成摘要,构建BM25索引
5. **MCP服务器**公开13种工具供AI助手查询图
## 配置
在你的项目中创建 `.murc.toml`:
```toml
[mu]
exclude = ["vendor/", "node_modules/", ".git/", "__pycache__/"]
```
## 节点标识符
| 前缀 | 类型 | 示例 |
|--------|------|---------|
| `mod:` | 模块/文件 | `mod:src/lib/utils.ts` |
| `cls:` | 类 | `cls:src/models/User.ts:User` |
| `fn:` | 函数 | `fn:src/api/auth.ts:login` |
| `ext:` | 外部依赖 | `ext:react` |
## 已知限制
- **单写入DuckDB**:无法在MCP服务器运行时引导。停止服务器,引导,重启。
- **测试覆盖率检测**:`mu_sus`通过在扫描树中查找测试文件来查找测试。如果测试位于 sibling 目录中,则不会被找到。
- **.NET项目**:对于具有 `src/` 目录中的代码的解决方案,请从 `src/` 目录运行 `mu bootstrap`。
## 开发
```bash
cargo build --release
cargo test
cargo fmt && cargo clippy # 零警告策略
```
## 贡献
欢迎贡献。
```bash
cargo fmt && cargo clippy && cargo test
```
详见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
## License
Apache License 2.0 - 见 [LICENSE](./LICENSE)。
---
<p align="center">
<strong>MU:因为生命太短暂,不适合grep 500k行代码。</strong>
</p>