Anandb71/arbor

GitHub: Anandb71/arbor

一个图原生的代码智能引擎,通过构建语义依赖图替代传统向量检索,为大型代码库提供确定性的影响分析和重构辅助。

Stars: 103 | Forks: 17

Arbor

# Arbor **为代码库量身定制的图原生智能**

CI crates.io Release GHCR Glama MCP Directory Skills Playground MCP badge License

## 状态 (2026年3月) - **最新版本:** `v1.7.0` - **主要开发分支:** `main` - **维护分支:** `release/v1.6` (`v1.6.3`) Arbor `v1.7.0` 是截至 **2026年3月25日** 的活跃版本。 ## 核心亮点 - **精确的 Token 计数** — tiktoken (cl100k_base) 取代了启发式估算,为 LLM 提供精确的上下文预算 - **模糊符号建议** — 通过 Jaro-Winkler 匹配实现容错输入:`arbor refactor autth` → "Did you mean: `auth`?" - **增强的 MCP/AI 集成** — 为 Claude/Cursor 提供包含置信度、角色和边解释的丰富 JSON 输出 - **感知 Git 变更的风险工作流** — `arbor diff`、`arbor check` 和 `arbor open` 助力重构信心 - **增量刷新** — `arbor index --changed-only` 在活跃分支开发期间实现更快的重新索引 - **更佳的 Python 用户体验** — 静默处理空的 `__init__.py` 文件(无误报警告) - **多语言解析器扩展** — 新增对 Kotlin、Swift、Ruby、PHP 和 Shell 系列的后备解析支持

Arbor refactor demo

## 什么是 Arbor? Arbor 是一个针对大型代码库的**本地优先的影响分析引擎**。Arbor 不再将代码视为纯文本,而是将项目解析为**语义依赖图**。这使您能够追踪*真实的执行路径*——调用者、被调用者、导入、继承以及跨文件关系——从而让您充满信心地理解代码变更的后果。 与关键词搜索或基于向量的 RAG 系统不同,Arbor 能够回答如下问题: 并提供**结构上的确定性**,而非概率上的猜测。 ## 示例:爆炸半径检测 在重构 `detect_language` 之前,检查其真实影响: ``` $ arbor refactor detect_language Analyzing detect_language... Confidence: High | Role: Core Logic • 15 callers, 3 dependencies • Well-connected with manageable impact > 18 nodes affected (4 direct, 14 transitive) Immediate Impact: • parse_file (function) • get_parser (function) Recommendation: Proceed with caution. Verify affected callers. ``` 这是**感知执行的分析**,而非简单的文本匹配。 ## 图形界面 Arbor 附带用于交互式影响分析的**原生 GUI**。 ``` arbor gui ``` ![Arbor GUI](https://raw.githubusercontent.com/Anandb71/arbor/main/docs/gui_screenshot.png) ### GUI 功能 * **符号搜索** – 即时定位函数、类和方法 * **影响可视化** – 探索直接和传递依赖 * **隐私安全** – 默认隐藏文件路径,以便进行干净无遮挡的截图 * **导出** – 将结果复制为 Markdown,用于 PR 和设计文档 ## 快速开始 1. **安装 Arbor** (CLI + GUI): cargo install arbor-graph-cli 或者使用包管理器: # Homebrew (macOS/Linux) brew install Anandb71/tap/arbor # Scoop (Windows) scoop bucket add arbor https://github.com/Anandb71/arbor scoop install arbor # npm (任何平台) npx @anandb71/arbor-cli # Docker docker pull ghcr.io/anandb71/arbor:latest ``` Or use one-command installers (no Rust toolchain required): - macOS/Linux: `curl -fsSL https://raw.githubusercontent.com/Anandb71/arbor/main/scripts/install.sh | bash` - Windows (PowerShell): `irm https://raw.githubusercontent.com/Anandb71/arbor/main/scripts/install.ps1 | iex` See [Installation Guide](docs/INSTALL.md) for version pinning and manual assets. 2. **One-shot setup + first index**: ```bash cd your-project arbor setup ``` 3. **运行影响分析**: arbor refactor 对于感知 Git 变更的工作流: ``` arbor diff arbor check --max-blast-radius 30 arbor open ``` 4. **启动 GUI**: arbor gui 📘 查看 [快速入门指南](docs/QUICKSTART.md) 了解高级工作流。 ## 发布渠道与分支 为了保持维护和功能开发的清晰度: - `main` → 持续开发 - `release/v1.7` → 当前发布线 (`v1.7.0`) - `release/v1.6` → 仅限 1.6.x 的维护修复(当前为 `v1.6.3`) - `release/v1.5` → 旧版维护/反向移植分支 这避免了将新功能发布到旧的维护分支中,并保持了向后移植的明确性。 ### 自动化分发(不限于 GitHub) 带有标签的发布版本(`vX.Y.Z`)会自动跨渠道分发: - GitHub Release assets(适用于 Linux、macOS、Windows 的 CLI 二进制文件) - crates.io 软件包 - GHCR 容器镜像 - VS Code Marketplace 扩展 - Open VSX 扩展 - Homebrew formula - Scoop manifest - npm wrapper 包 维护者设置和验证步骤请参见 [docs/RELEASING.md](docs/RELEASING.md)。 ## MCP 目录列表 Arbor 已在 Glama MCP 目录中列出: - **Glama:** https://glama.ai/mcp/servers/@Anandb71/arbor ### MCP 健康徽章 [![arbor MCP server](https://glama.ai/mcp/servers/Anandb71/arbor/badges/score.svg)](https://glama.ai/mcp/servers/Anandb71/arbor)

### Claude Code MCP 快速安装 ``` claude mcp add --transport stdio --scope project arbor -- arbor bridge ``` 然后使用以下命令验证: ``` claude mcp list ``` ### 通用 MCP 集成套件 Arbor 提供了可直接复制使用的 MCP 模板和引导脚本,用于多客户端接入: - 模板:`templates/mcp/` - macOS/Linux 引导脚本:`scripts/setup-mcp.sh` - Windows 引导脚本:`scripts/setup-mcp.ps1` ``` # 为 Claude Code + Cursor + VS Code 生成项目范围的配置 ./scripts/setup-mcp.sh --client all --target-dir . ``` ``` # Windows 等效方案 ./scripts/setup-mcp.ps1 -Client all -TargetDir . ``` 这将创建: - `.mcp.json` (Claude Code 项目作用域) - `.cursor/mcp.json` - `.vscode/mcp.json` 对于企业托管环境,请参阅 `docs/MCP_INTEGRATION.md`(包含策略和托管注册说明)。 ## GitHub Marketplace Action Arbor 现在在仓库根目录(`action.yml`)包含一个可复用的 GitHub Action,以便团队直接在 CI 中运行影响分析。 ### 快速使用 ``` name: Arbor Check on: [pull_request] jobs: arbor: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: Anandb71/arbor@release/v1.7 with: command: check . --max-blast-radius 30 ``` 输入参数: - `command`(默认值:`status .`)— Arbor 子命令及参数(不包含前导的 `arbor`) - `arbor-version`(默认值:`latest`)— 从 crates.io 安装指定版本 - `install-from-source`(默认值:`false`)— 从此仓库源码构建 ## 文档中心 - **快速入门:** [docs/QUICKSTART.md](docs/QUICKSTART.md) - **安装指南:** [docs/INSTALL.md](docs/INSTALL.md) - **架构设计:** [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) - **MCP 集成:** [docs/MCP_INTEGRATION.md](docs/MCP_INTEGRATION.md) - **协议规范:** [docs/PROTOCOL.md](docs/PROTOCOL.md) - **发展路线图:** [docs/ROADMAP.md](docs/ROADMAP.md) - **发布手册(所有渠道):** [docs/RELEASING.md](docs/RELEASING.md) - **发布说明 (v1.6):** [docs/RELEASE_NOTES_v1.6.0.md](docs/RELEASE_NOTES_v1.6.0.md) - **发布说明 (v1.6.1.1):** [docs/RELEASE_NOTES_v1.6.1.1.md](docs/RELEASE_NOTES_v1.6.1.1.md) - **发布说明 (v1.6.2):** [docs/RELEASE_NOTES_v1.6.2.md](docs/RELEASE_NOTES_v1.6.2.md) - **发布说明 (v1.7.0):** [docs/RELEASE_NOTES_v1.7.0.md](docs/RELEASE_NOTES_v1.7.0.md) ## 为什么选择 Arbor? 大多数 AI 编码工具将代码视为**非结构化文本**,依赖于向量相似度。这种方法速度很快——但不够精确。 **Arbor 构建的是图。** 每个函数、类和模块都是一个节点。每次调用、导入和引用都是一条边。当您提出问题时,Arbor 会沿着图寻找答案——*与您的程序执行方式完全相同*。 ``` Traditional RAG: Arbor Graph Analysis: "auth" → 47 results AuthController (keyword similarity) ├── calls → TokenMiddleware ├── queries → UserRepository └── emits → AuthEvent ``` 结果就是:**确定性的、可解释的答案**。 ## 核心功能 ### 符号解析 Arbor 通过完全限定名来跨文件解析符号: * 导入与重新导出 * 继承与接口 * 重载与命名空间 `auth.ts` 中的 `User` 绝不会与 `types.ts` 中的 `User` 混淆。 ## 支持的语言 | 语言 | 状态 | 解析器覆盖率 | | -------------- | ------ | ----------------------------------------- | | **Rust** | ✅ | 函数、结构体、特征、实现、宏 | | **TypeScript** | ✅ | 类、接口、类型、导入、JSX | | **JavaScript** | ✅ | 函数、类、变量、导入 | | **Python** | ✅ | 类、函数、导入、装饰器 | | **Go** | ✅ | 结构体、接口、函数、方法 | | **Java** | ✅ | 类、接口、方法、字段 | | **C** | ✅ | 结构体、函数、枚举、类型定义 | | **C++** | ✅ | 类、命名空间、模板 | | **C#** | ✅ | 类、方法、属性、接口 | | **Dart** | ✅ | 类、混入、部件 | | **Kotlin** | ✅ | 函数、类、接口 (后备解析器) | | **Swift** | ✅ | 函数、类型、协议 (后备解析器) | | **Ruby** | ✅ | 方法、类、模块 (后备解析器) | | **PHP** | ✅ | 函数、类、特征 (后备解析器) | | **Shell** | ✅ | 函数定义 (后备解析器) | ## 从源码构建 ``` git clone https://github.com/Anandb71/arbor.git cd arbor cargo build --release cargo test ``` ### 轻松设置说明 - **无需外部图数据库。** Arbor 是本地优先的,并使用嵌入式存储。 - 从全新的克隆开始,贡献者只需运行: - `cargo build` - `cargo test` 如果您倾向于容器化设置,请运行: ``` docker compose up --build arbor-dev ``` ### Linux GUI 依赖 ``` sudo apt-get install -y pkg-config libx11-dev libxcb-shape0-dev libxcb-xfixes0-dev \ libxkbcommon-dev libgtk-3-dev libfontconfig1-dev libasound2-dev libssl-dev cmake ``` ## 故障排除 ### 找不到符号? * **.gitignore** – Arbor 会遵守此规则(`arbor status --files`) * **文件类型** – 确保文件扩展名受支持 * **空文件** – 会被跳过(`__init__.py` 除外) * **动态调用** – `eval` 或运行时反射可能无法解析 * **大小写敏感** – 使用 `arbor query ` 进行搜索 ### 图为空? 运行 `arbor status` 以验证文件检测和解析器健康状况。 ### 需要环境诊断? 运行 `arbor doctor`(或 `arbor check-health`)以验证端口、项目结构和集成就绪状态。 ### 代码库突然变得巨大(多 GB)? Rust 和 Flutter 构建产物在迭代测试期间可能会迅速膨胀。 - Windows PowerShell:`./scripts/clean.ps1` - macOS/Linux:`./scripts/clean.sh` - 更深度的清理(同时移除本地 Arbor/Flutter 缓存产物): - PowerShell:`./scripts/clean.ps1 -Deep` - Bash:`./scripts/clean.sh --deep` 这对源代码是安全的;它只会移除可以重新构建的生成产物。 ## 安全模型 Arbor **在设计上就是本地优先的**: * 无数据外泄 * 完全离线 * 无需 API 密钥 * 完全开源 您的代码永远不会离开您的机器。 ## 许可证 MIT 许可证。详见 [LICENSE](LICENSE)。

⭐ 在 GitHub 上为 Arbor 点亮 Star

## 贡献者

Anandb71 holg cabinlab Karthiksenthilkumar1 sanjayy-j sathguru07

6 contributors | View all

标签:AI辅助编程, DLL 劫持, Git集成, IDE插件, LLM集成, MCP, odt, RAG替代方案, Rust, SOC Prime, Token计数, 上下文管理, 代码分析, 代码搜索, 代码智能, 代码检索, 凭证管理, 可视化界面, 大语言模型, 开发工具, 抽象语法树, 确定性分析, 程序理解, 网络流量审计, 请求拦截, 通知系统, 重构工具, 错误基检测, 静态代码分析