代码上下文组装工具

Arachne是一款本地MCP服务器,能够智能分析代码库并提取相关代码片段,为AI提供精确的上下文环境,适用于大型软件开发项目。

  • by choihyunsus
  • TypeScript
  • 本地部署
  • 54 星标
  • 更新于
在 GitHub 查看 choihyunsus/n2-arachne

使用说明

️ 阿拉克涅(n2阿拉克涅)

韩语 |英语| 日本语


ARACHNE V4.0.0钛版

在0.54秒内搜索1GB(1000000000字节)的代码库。 由零编组架构提供支持。0字节JS堆块。没有OOM崩溃。


将您的代码库编织到AI的完美环境中

v4.0(钛版)的新增功能

Arachne已经从JS完全重写为strict TypeScript,其中大量的计算路径被本机重写 C++SIMD(sqlite-vec) 和 铁锈(napi rs).

  • TypeScript (Strict):100%类型安全,零运行时回归。
  • Rust Acceleration:BM25 快1.3倍 (memchr SIMD+人造丝平行);BatchCosine 快19.9倍 (96毫秒→ 4.8ms).
  • C++ SIMD Search:sqlite-vec扫描10000×768D矢量 25毫秒 本地。
  • KV-Cache Integration:灵魂桥增量重新索引允许在启动时加载亚秒级历史记录。 --就像希腊神话中最伟大的织工阿拉喀涅一样。 ️

问题——为什么人工智能会让你的代码出错

想象一下,去看医生时说 “我头疼。”

  • 坏医生:读了你500页的病史,感到困惑,开错了药
  • 好医生:只查看相关记录——最近的症状、药物、过敏反应——以及指甲的诊断

人工智能编码助理就像那个坏医生。

当你的项目有500个文件时,人工智能无法读取所有文件。那么,接下来会发生什么?

 Your Project (500 files, 2M tokens)
│
├── auth/login.ts        ←  The bug is HERE
├── auth/session.ts      ←  login imports this
├── api/http.ts          ←  session imports this
├── utils/config.ts      ← ️ timeout settings live here
│
├── pages/home.tsx       ←  completely irrelevant
├── pages/about.tsx      ←  completely irrelevant
├── components/Button.tsx ←  completely irrelevant
└── ... 493 more files    ←  all irrelevant
方法 AI接收什么 结果
转储所有内容 2000000个令牌 超出上下文窗口,AI困惑
随机文件 ~50000个令牌 遗漏关键代码,修复错误
意芬 30000个代币 (4个相关文件) 每次精确修复

代币 =AI读取的文本单位。代币越多=成本越高,速度越慢,准确性越低。 人工智能有一个有限的“上下文窗口”——就像一张只能容纳这么多论文的桌子。

真实世界基准测试(N2浏览器--3219个文件)

度量 值
项目规模 3219个文件, 468万代币
Arachne产量 14074个代币
压缩 333 x (减少99.7%)
索引时间 627ms(增量:0ms)
数据库大小 24 MB

以实际生产项目衡量。Arachne提供了AI所需要的东西——数据量减少了333倍,准确性相同。


️ 解决方案——Arachne准确选择了人工智能所需的东西

Arachne是一个 本地MCP服务器 那表现得像个好医生。它一次读取你的整个代码库,理解其结构 只发送相关内容 AI。

You: "Fix the login timeout bug"
                │
                ▼
┌──────────────────────────────────────────────────────┐
│  ️ Arachne: "I'll find exactly what you need"      │
│                                                      │
│  L1  Project tree (so AI knows the structure)      │
│  L2  login.ts (the file you're working on)         │
│  L3  http.ts, session.ts (found via search +       │
│        dependency chain: login → session → http)     │
│  L4 ️ config.ts (frequently accessed, has timeout)  │
│                                                      │
│  → 30,000 tokens of perfectly curated context        │
└──────────────────────────────────────────────────────┘
                │
                ▼
        AI generates accurate fix 

无需手动选择文件。没有及时的工程。只要问就行了。


为什么是阿拉喀涅?

  • 98.5%的代币节省 --30K而不是2M代币。API调用节省了大量资金
  • 击败“迷失在中间” --智能输出排序(L1→L3→L4→L2)在AI关注的地方保留关键代码(研究支持)
  • 零外部存款 -没有Docker,没有云,没有API密钥。就 npm install 走吧
  • 快速燃烧 --在12毫秒内索引了21个文件。以亚秒为单位进行增量更新
  • 超轻 --只有3个部门: better-sqlite3, sqlite-vec, zod没有腹胀
  • 个人/OSS免费 --Apache-2.0适用于个人和开源项目。无遥测
  • 即插即用 --添加MCP配置→ done.项目无代码更改
  • 多语言 --遵循跨JS/TS、Python、Rust、Go的导入链, Java
  • Ollama可选 --无需Ollama(BM25搜索)即可完美运行。添加Ollama以进行额外的语义搜索

Arachne在4面板-钛版

灵魂+阿拉喀涅协同

主要特点

特性 描述
MCP标准 与Claude、Gemini、GPT、Ollama等任何人工智能提供商合作
本地优先 所有索引都在本地SQLite中。零数据离开您的机器
增量 仅重新索引已更改的文件。亚秒级更新
混合搜索 BM25关键字+语义向量搜索(Ollama嵌入)
️ 4层组件 令牌预算内的智能上下文分页
依赖图 遵循跨JS/TS、Python、Rust、Go的导入链, Java
️ 备份与恢复 SQLite在线备份和备份内搜索

️ 架构:4层上下文组装

┌─────────────────────────────────────────────┐
│              Token Budget (e.g. 30K)        │
├────────────┬────────────────────────────────┤
│ L1: Fixed  │ File tree overview (10%)       │
│ (always)   │ Project structure snapshot     │
├────────────┼────────────────────────────────┤
│ L2: Short  │ Current file + recent (20%)   │
│ (context)  │ What you're working on now     │
├────────────┼────────────────────────────────┤
│ L3: Assoc  │ Search + dependencies (50%)  │
│ (relevant) │ BM25 + semantic + dep chain   │
├────────────┼────────────────────────────────┤
│ L4: Spare  │ Frequently accessed (20%)     │
│ (backup)   │ Files you use most            │
└────────────┴────────────────────────────────┘

Output order: L1 → L3 → L4 → L2  (mitigates "Lost in the Middle")

语义搜索(可选,零锁定)

当Ollama可用时,Arachne从仅关键字升级到 混合搜索:

BM25 Score (keyword) ──┐
                       ├── Weighted Merge (α=0.5) → Best Results
Cosine Similarity ─────┘
(nomic-embed-text 768D)
  • sqlite-vc 用于SIMD加速(AVX2/SSE2/Neon)KNN矢量搜索
  • 768维 通过Ollama嵌入 nomic-embed-text --100%本地运行
  • 优雅降级没有奥利玛?只能回到BM25。 零碰撞。总是工作。
  • 在配置中启用: embedding.enabled = true
  • 矢量存储:每块约3KB。5000个块=磁盘上只有15MB

基准测试(v4.0)

所有基准测试都在AMD Ryzen 5 5600G、Node v24、Windows x64上运行。 三台发动机: TypeScript (v8jit), 锈 (napi rs), sqlite-vc (C++SIMD)。

搜索性能(10000个块/768D个向量)

搜索模式 引擎 性能 备注
关键词 🦀 铁锈BM25(铬+人造丝) 4.98毫秒 /查询速度比TS快1.3倍
关键词 SQLite喜欢 0.021毫秒 /查询 数据库索引,最快
语义KNN sqlite-vec(C++SIMD) 29.52毫秒 /查询 数据库原生扫描10K×768D
批量Cosine 🦀 铁锈(napi rs) 4.91毫秒 /查询 遗产:速度提高22.3倍,但会触发IPC堆峰值

架构枢轴:1GB+规模稳定性

虽然 Rust BatchCosine 实现了惊人的速度(4.9毫秒),在Node.js FFI边界加载数百万个向量,引发了1GB以上代码库上的大规模V8垃圾收集(GC)暂停和堆OOM崩溃。

为了在大规模数据集上实现100%的稳定性,Arachne v4.0强制执行 零编组政策:

  • 语义搜索:100%委托给 sqlite-vc。它需要~29ms(比Rust稍慢),但内存开销为 JS中为0字节节点事件循环保持完全畅通。
  • 关键词搜索:由 Rust BM25缓存.Chunk数据在Rust堆中大量缓存,仅在小查询和结果ID时跨越FFI边界。
Run benchmarks yourself
npm run build && node test/bench-hybrid-engine.js   # Raw engine comparison
npm run build && node test/bench-10mb.js             # Memory scale impact

结果保存到 data-hybrid-bench/benchmark-report.json.

Java支持——专为企业打造

Arachne提供 一流的Java支持,专为大型企业代码库(5M+LOC)设计:

特性 描述
智能分块 检测 class, interface, enum, method, @interface (注释)
大类拆分 超过500个代币的类 自动分块 变成单独的方法
导入分辨率 解析 import com.example.Service 和 import static org.junit.Assert.*
访问修改函数 手柄 public, private, protected, abstract, final, synchronized
泛型 正确处理 <T extends Comparable<T>> 以及复杂的泛型类型
Spring/JUnit 用弹簧靴测试 @RestController,JUnit5静态导入,Mockito
二进制排除 自动忽略 .class, .jar, .war, .ear 文件

大班分组是如何工作的

// 500+ token class → automatically split into methods
public class UserService {       // ← detected as container
    public User findById() {}    // ← sub-chunk 1
    public List<User> findAll()  // ← sub-chunk 2
    public User save() {}        // ← sub-chunk 3
    // ... fields, constructor   // ← remainder chunk
}

// Small class (<500 tokens) → kept as single chunk (no overhead)
public class TinyDTO { ... }     // ← single chunk, efficient

为什么这对500万LOC项目很重要:一个Java类可以有50多个方法,跨越数千行。如果没有子块,AI将把整个类作为一个blob接收。借助Arachne,人工智能可以获得单独的方法,从而实现精确、有针对性的代码生成。

代币影响:少即是多

Without sub-chunking:
  AI asks: "Fix the findById bug"
  → BM25 hits UserService class
  → Entire class sent: 6,000 tokens  

With sub-chunking:
  AI asks: "Fix the findById bug"
  → BM25 hits findById() method only
  → Just the method sent: 80 tokens    75x savings!

分装不需要额外费用 保存 通过只发送相关内容而不是整个类来发送令牌。

️ 稳定性:128次测试,零故障

Arachne是为生产而建造的。每个边缘情况都经过测试:

类别 测试内容
SQL注入 包括Bobby表在内的5种攻击模式
️ Null/空输入 Null,未定义,空字符串→ 安全返回
大量输入 10KB查询→ 没有碰撞
特殊字符 Unicode、表情符号、regex字符→ 已处理
Ollama断开连接 端点错误→ 优雅的BM25回退
Idempotency 三重重新索引→ 同样的结果
极端预算 预算0、1、100万→ 一切安全
边缘顶部K topK=-1,0,99999→ 没有碰撞
架构安全 三重初始化→ 数据得以保存
Phase 1 (Indexing/Search):    15/15 
Phase 2 (Assembly/Deps):      26/26 
Phase 2 (KV-Cache Bridge):   33/33 
Phase 3 (Semantic/Hybrid):    10/10 
Stability (Reddit-proof):     44/44 
─────────────────────────────────────
Total:                       128/128 

安装

专业提示:最佳安装方式?只需询问您的AI代理: “为我安装n2 arachne。” 它知道该怎么办。️

npm install n2-arachne

MCP配置(克劳德桌面/光标等)

{
  "mcpServers": {
    "n2-arachne": {
      "command": "node",
      "args": ["/path/to/n2-arachne/dist/index.js"],
      "env": {
        "ARACHNE_PROJECT_DIR": "/path/to/your/project"
      }
    }
  }
}

配置

创建 config.local.js 在Arachne目录中:

module.exports = {
    projectDir: '/path/to/your/project',
    dataDir: './data',

    indexing: {
        autoIndex: true,
        maxFileSize: 512 * 1024,    // 512KB max per file
    },

    // Enable semantic search (requires Ollama)
    embedding: {
        enabled: true,              // default: false
        provider: 'ollama',
        model: 'nomic-embed-text',
        endpoint: 'http://localhost:11434',
    },

    assembly: {
        defaultBudget: 30000,       // tokens
    },
};

用法(MCP工具)

Arachne注册了一个MCP工具 n2_arachne 通过这些操作:

动作 描述
search BM25关键字搜索(+语义搜索,如果启用)
assemble 令牌预算内的4层上下文组装
index 索引/重新索引项目文件
status 显示索引统计数据+嵌入状态
files 列出索引文件
backup 创建/列出/还原备份

示例:组装上下文

{
  "action": "assemble",
  "query": "HTTP request timeout error handling",
  "activeFile": "lib/executor.js",
  "budget": 20000
}

连接灵魂/QLN

Arachne在独立运行时表现出色,但随着 灵魂 (会话记忆)和 QLN (刀具布线)。

设置很简单——只需在MCP配置中一起注册它们:

灵魂+阿拉喀涅在一起

{
  "mcpServers": {
    "n2-soul": {
      "command": "node",
      "args": ["/path/to/n2-soul/index.js"]
    },
    "n2-arachne": {
      "command": "node",
      "args": ["/path/to/n2-arachne/dist/index.js"],
      "env": {
        "ARACHNE_PROJECT_DIR": "/path/to/your/project"
      }
    }
  }
}

无需额外配置! 在同一MCP配置中注册两个服务器,AI会自动使用这两个工具。

  • Soul 记住过去的会议工作和决定
  • Arachne 找到确切的代码并将其传递给AI
  • 结果:AI从你停止的地方开始——没有“我在做什么?”

全氮气栈(灵魂+阿拉喀涅+QLN)

{
  "mcpServers": {
    "n2-soul": {
      "command": "node",
      "args": ["/path/to/n2-soul/index.js"]
    },
    "n2-arachne": {
      "command": "node",
      "args": ["/path/to/n2-arachne/dist/index.js"],
      "env": {
        "ARACHNE_PROJECT_DIR": "/path/to/your/project"
      }
    },
    "n2-qln": {
      "command": "node",
      "args": ["/path/to/n2-qln/index.js"]
    }
  }
}

添加QLN,即使有100多个MCP工具,AI也会通过QLN的语义路由自动查找和使用所需的内容。

N2生态系统——共创美好

包 角色 npm 独立
QLN 刀具路径(1000+刀具→ 1 路由器) n2-qln
灵魂 代理内存和会话管理 n2-soul
方舟 安全策略和代码验证 n2-ark
意芬 代码上下文自动组装️ n2-arachne

每个包裹都有效 100%独立。但当它们结合在一起时,魔法就会发生:

协同效应:它们如何协同工作

User: "Fix the login timeout bug"
     │
     ▼
┌─── QLN (Router) ──────────────────────────────────────┐
│ 1000+ tools → Semantic routing finds:                 │
│   → n2_arachne.assemble (context)                     │
│   → n2_arachne.search (code search)                   │
│ Token cost: 2 tool defs instead of 1000+              │
└────────────────┬──────────────────────────────────────┘
                 │
                 ▼
┌─── Arachne (Context) ─────────────────────────────────┐
│ L1: Project tree overview                              │
│ L2: auth/login.ts (current file)                       │
│ L3: BM25 + semantic search → timeout-related code      │
│     + dependency chain: login.ts → api.ts → http.ts    │
│ L4: Frequently accessed config files                   │
│ → 30K tokens of perfectly curated context              │
└────────────────┬──────────────────────────────────────┘
                 │
                 ▼
┌─── Soul (Memory) ─────────────────────────────────────┐
│ "Last session, Rose fixed a similar timeout in         │
│  api.ts line 47. Decision: increased to 30s."          │
│ → Past context + decisions + handoff notes             │
│ → KV-Cache: instant session restoration                │
└────────────────┬──────────────────────────────────────┘
                 │
                 ▼
┌─── Ark (Security) ────────────────────────────────────┐
│  No hardcoded credentials in generated code          │
│  Timeout value from config, not magic number         │
│  Error handling follows project conventions           │
│ → Code verification before commit                      │
└───────────────────────────────────────────────────────┘

单人vs组合

场景 单人 组合
令牌使用 AI可以看到所有1000多种工具 QLN路线→ AI看到2-3个工具
上下文质量 AI猜测哪些文件很重要 Arachne提供了精确的相关代码
记忆 AI每次转弯都会忘记一切 灵魂会记住过去的会话+决定
代码安全 无护栏 Ark在部署前进行验证
设置 每个工具独立工作 无额外配置-自动检测

现实世界影响

  • QLN + 蜘蛛:QLN将请求路由到Arachne→ Arachne提供了完美的背景→ AI在第一次尝试时生成准确的代码。不再问“那是哪个文件?”
  • 灵魂+阿拉喀涅:Soul记得你上次做了什么→ Arachne索引那些优先级较高的文件→ 跨会话的连续性
  • 方舟+阿拉喀涅:Arachne提供代码上下文→ AI生成代码→ Ark验证它是否遵循项目模式。在发货前捕捉虫子。
  • 全部4个在一起:AI成为团队成员 记得一切, 发现任何东西, 使用正确的工具,以及 遵守规则.

许可证

该项目具有双重许可:

用例 许可证 成本
个人/教育 Apache 2.0 免费
开源(非商业) Apache 2.0 免费
商业/企业 商业许可证 联系我们

看 许可证 了解全部细节。

星迹

不喝咖啡?明星也很好


Arachne——最伟大的织布工。你的代码,编织得很完美。 ️