️ 阿拉克涅(n2阿拉克涅)
](https://www.npmjs.com/package/n2-arachne)  ](https://www.npmjs.com/package/n2-arachne) ](https://nodejs.org)
______________________________________________________________________
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面板-钛版
灵魂+阿拉喀涅协同
Soul remembers past sessions. Arachne finds the code. Together, AI never forgets and never misses.
主要特点
| 特性 | 描述 |
|---|---|
| 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 |
| 泛型 | 正确处理 > 以及复杂的泛型类型 |
| 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 findAll() // ← sub-chunk 2
public User save() {} // ← sub-chunk 3
// ... fields, constructor // ← remainder chunk
}
// Small class ( **为什么这对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 |免费|
|商业/企业|商业许可证|联系我们|
看 [许可证](LICENSE) 了解全部细节。
## 星迹
不喝咖啡?明星也很好
[](https://star-history.com/#choihyunsus/n2-arachne&Date)
______________________________________________________________________
*Arachne——最伟大的织布工。你的代码,编织得很完美。* ️