内容
# 菌丝
> 为 Claude Code 提供代码智能 —— 您的代码库作为一个自我学习的知识图谱。
菌丝索引您的仓库,并将三个工具直接连接到 Claude Code 的上下文中:语义符号搜索、深度结构上下文和重构的爆炸半径分析。该图谱通过您的使用方式学习,随时间提高置信度得分。
**语言:** TypeScript · JavaScript · Python · Go · Rust
---
## 为什么是“菌丝”?
在自然界中,菌丝是形成真菌菌根的线状丝——一个巨大的、看不见的网络,它通过土壤传播,连接树木和植物,在整个生态系统中传递营养物质和信号。菌根不仅连接事物;它还会学习哪些路径很重要,并随着时间的推移加强它们。
这个项目的工作方式相同。它在您的代码库中传播,映射每个符号和关系到一个活跃的知识图谱中,并在您需要时悄悄地将该上下文传递给 Claude。您使用得越多,它就越学习——加强通往真正答案的路径,并逐渐消除噪音。
就像菌根一样:看不见的基础设施,在表面下工作,让整个生态系统变得更智能。
---
## 安装
```bash
npm install -g hyphae-intel
hyphae setup ~/projects # 注册 MCP + 索引 ~/projects 下的每个 git 仓库
```
重启 Claude Code。就这样 —— 菌丝在每个会话中都处于活跃状态。
---
## 安装后您可以向 Claude 询问的内容
菌丝在 Claude 的上下文中添加了三个工具。您不需要直接调用它们 —— Claude 在回答问题时会根据需要自动使用它们。
### 查找任何内容
> *"身份验证在哪里处理?"*
> *"找到速率限制器"*
> *"显示与支付处理相关的所有内容"*
**查询** 工具通过含义搜索,而不是仅仅通过名称。它嵌入您的查询,并使用余弦相似度与图谱中的每个符号进行匹配,在需要时回退到基于名称的搜索。
### 完全理解一个符号
> *"UserService 如何工作?它调用什么,调用它的是什么,它继承什么?"*
> *"显示 Indexer 类的完整上下文"*
**上下文** 工具返回一个符号的所有传入和传出边 —— 调用者、被调用者、导入、继承、接口实现 —— 按关系类型分组。
```
UserService
← IMPORTS : AuthProvider, DatabasePool
← CALLS : UserService (from AuthMiddleware, UserController ×3)
→ CALLS : DatabasePool.query, Logger.info, CacheService.get
→ EXTENDS : BaseService
→ IMPLEMENTS: IUserService
```
### 在您触摸之前了解会发生什么
> *"如果我更改 parseConfig 的签名,其他什么会中断?"*
> *"重命名 DatabasePool 的爆炸半径是什么?"*
> *"显示支付 webhook 处理程序上游的所有内容"*
**影响** 工具遍历图谱以查找所有传递依赖项,按深度分组。置信度阈值过滤掉弱或推测性边,这样您只会看到真正的风险。
```
DatabasePool → 下游影响(深度 3)
深度 1:UserService, AuthService, CacheService
深度 2:UserController, AuthMiddleware, SessionHandler
深度 3:ApiRouter, WebhookHandler
风险:高(23 个下游符号)
```
---
## 多仓库支持
索引所有您的仓库,Claude 可以同时推理它们。每个工具上的 `repo` 参数允许您按名称定位特定的仓库:
```
hyphae index --all ~/projects # 索引 ~/projects 下的所有内容
hyphae index --cross-repo . # 解析引用其他仓库的边
```
Claude 在未指定 `repo` 参数时自动使用最近索引的仓库。当您有多个仓库时,它可以比较它们之间的模式。
---
## 仪表盘
```bash
hyphae ui
```
在 `http://localhost:4242` 打开一个本地仪表盘,包含:
- **知识图谱** —— 交互式力导向视图,您的代码库,节点按类型着色(类、函数、接口……),边按置信度加权
- **工具调用活动** —— 最近 14 天的 Claude 查询条形图
- **结果分布** —— 工具调用解决成功与未知的情况
- **节点类型分解** —— 符号组成的水平条形图
- **仓库概览** —— 每个仓库的节点/边计数和最后索引时间
仪表盘直接从本地索引中读取 —— 没有数据离开您的机器。
---
## 保持索引新鲜
**手动** —— 在重大更改后运行:
```bash
hyphae index # 增量(仅更改的文件)
hyphae index --force # 完全重新索引
```
**自动** —— 安装后提交钩子:
```bash
hyphae setup --git-hook
```
增量索引器使用内容哈希(不是时间戳)来检测更改,因此它只重新解析实际更改的文件。
---
## 置信模型
图谱中的每条边都带有多维置信度得分:
| 维度 | 来源 | 权重 |
|-----------|--------|--------|
| `static` | 类型感知解析(ts-morph,tree-sitter) | 1.0 |
| `heuristic` | 框架约定、装饰器模式、跨文件分析 | 0.8 |
| `learned` | 观察到的工具使用情况 ≥50 次事件 | 1.0 |
| `runtime` | 导入的执行跟踪 | 1.2 |
| `aggregate` | 加权组合 | — |
`null` 表示尚未有证据 —— 不会受到惩罚。随着您使用 Claude 探索代码库,`learned` 维度根据实际查询后哪些符号被操作而更新。
---
## CLI 参考
```
hyphae setup [dir] 注册 MCP + 索引目录中的所有 git 仓库
hyphae setup --mcp-only 仅注册 MCP,跳过索引
hyphae setup --git-hook 在当前仓库中安装后提交重新索引钩子
hyphae index [path] 增量索引(默认:当前目录)
hyphae index --force [path] 完全重新索引,忽略内容哈希
hyphae index --all <dir> 索引目录下的所有 git 仓库
hyphae index --cross-repo [path] 解析跨仓库边后索引
hyphae index --watch [path] 监视文件更改并自动重新索引
hyphae status [path] 显示节点/边计数和最后索引时间
hyphae query <text> 从终端搜索图谱
hyphae context <symbol> 显示符号的结构上下文
hyphae impact <symbol> 显示爆炸半径(默认上游)
hyphae impact -d both <symbol> 上游 + 下游
hyphae impact --depth 5 <symbol> 更深层次的遍历
hyphae ui 打开本地仪表盘(图谱 + 学习图表)
hyphae ui 8080 使用自定义端口(默认:4242)
hyphae doctor 检查 MCP 注册、索引健康、模型缓存
hyphae log 显示最近的工具调用和索引事件
hyphae trace 导入运行时跟踪数据以更新置信度
hyphae clean 删除当前仓库的索引
hyphae clean --all --force 删除所有索引
hyphae serve 启动 MCP 服务器(Claude Code 自动运行)
```
---
## 配置
菌丝默认无需配置即可工作。要自定义,请在仓库根目录添加 `.hyphae.json`:
```json
{
"ignore": ["node_modules", "dist", "build", ".next", "vendor"],
"embeddings": {
"enabled": true,
"model": "Xenova/all-MiniLM-L6-v2"
}
}
```
在大型仓库中禁用嵌入以加快初始索引速度 —— 您可以重新启用并使用 `--force` 重新索引。
---
## 工作原理
```
hyphae index
│
├─ walk 发现文件,计算内容哈希
├─ parse tree-sitter 结构提取(节点 + DEFINES 边)
├─ resolve ts-morph 类型感知传递(CALLS, IMPORTS, EXTENDS, IMPLEMENTS)
├─ score 启发式规则,跨文件分析,学习置信度
└─ embed 每个节点使用 all-MiniLM-L6-v2 嵌入
│
.hyphae/graph.db (SQLite,WAL 模式)
│
Claude Code ◄── MCP stdio ◄── 查询 / 上下文 / 影响
```
索引存储在每个仓库中的 `.hyphae/graph.db`(gitignored)。`~/.hyphae/registry.json` 处的全局注册表跟踪所有索引的仓库 —— `hyphae serve` 在启动时加载它们,以便 Claude 可以访问所有内容。
---
## 从源代码
```bash
git clone https://github.com/dgtise25/hyphae
cd hyphae && npm install && npm run build && npm link
hyphae setup ~/projects
```
---
## 许可证
MIT