AI 编码助手在大型项目中表现差的根本原因是检索问题而非推理问题,现有 RAG 架构对软件代码的结构化语义理解存在天然缺陷。
现代大语言模型在代码推理方面正在变得显著更好。上下文窗口正从几千 token 扩展到数百万。然而,开发者在大型、真实的代码仓库中使用 AI 编程助手时,仍然难以获得一致、准确的答案。
如果你曾经观察过 Claude Desktop 或 Cursor 这样的 Agent 尝试在一个新的代码仓库中调试复杂问题,你可能见过"绝望的 Grep 循环":
Agent 执行 grep -r "AuthService" .
然后对三个随机文件执行 cat
读取了 40,000 个无关配置和测试数据的 token
然后幻觉出一个无法编译的修复方案
主流观点认为,简单地将更多文件喂进更大的上下文窗口就能解决这个问题。但事实并非如此。
这不是模型推理问题。这是检索问题。
当前大多数 AI 检索系统(RAG)采用的标准架构遵循一个可预测的流程:读取文本、按字符数任意分块、生成向量嵌入、通过余弦相似度进行搜索。
这种架构在处理文档和企业 wikis 时效果非常好。然而,在软件代码仓库上,它会迅速退化。
当代码按字符数分块时,函数边界会被破坏。当检索完全依赖嵌入时,确定性的符号查找就变成了概率性的猜测。
如果开发者问 AI 助手:"AuthMiddleware 是在哪里实现的?"他们不想要"与认证相关的某样东西"。他们想要精确的 AuthMiddleware 类。立即。确定性地。
我构建 ContextOS 正是为了解决这个确切的问题。它是一个 local-first 的上下文引擎,专为 AI Agent 的软件结构索引和检索而设计。
1. 感知 AST 的提取
与盲目按字符分块不同,ContextOS 使用 Tree-sitter 解析代码仓库。它将函数、类、接口和方法提取为离散的、逻辑的块。一个 50 行的函数变成一个单一的块。代码的结构完整性得以保留。
2. BM25 优先于嵌入
虽然嵌入在查找概念相似性方面表现出色,但它们在精确符号查找方面却很吃力。ContextOS 颠覆了标准范式:它使用 SQLite FTS5 (BM25) 作为主要检索机制来进行确定性的词法搜索,只在必要时才回退到本地 MiniLM ONNX 模型进行语义匹配。
3. 上下文压缩
检索正确的上下文只是问题的一半。如果向 LLM 发送 50 个相关块,就会分散它的注意力。ContextOS 实现了查询感知的编译器来压缩上下文:最重要的节点被完整发送,而得分较低的节点被压缩成单行存根(例如,interface User — path/types.ts:12-40)。

在针对 Redis 7.x C 代码仓库的 100 次查询基准测试中,ContextOS 在精确函数查询上达到了 98% 的文件级召回率。关键的是,它在每次查询平均仅用 589 个 token 的情况下做到了这一点。
对于 React 和 Next.js 等现代 Web 框架,上下文占用进一步下降——平均每次查询仅约 280 个 token,同时保持 100% 准确率。
Token 效率直接转化为更低的延迟、降低的 API 成本,以及显著减少的模型困惑。一个分析约 300 个高度相关 token 的模型将始终优于淹没在 40,000 个嘈杂的完整文件上下文中的模型。
ContextOS 作为 Model Context Protocol (MCP) 服务器运行,意味着你现在可以直接将其插入 Cursor、Claude Desktop 和任何其他兼容 MCP 的客户端。
不要再让你的 AI 淹没在 grep 输出了。给它应有的上下文引擎。
在 GitHub 上查看该仓库。
封面照片由 Fotis Fotopoulos 在 Unsplash 上提供