最初发表于tamiz.pro.
导言 现代单列集包含数十万个文件,涉及多种服务、图书馆和配置。
传统的代码搜索——无论是riggrep, sourcegraph, 或 IDE 搜索—— 带有语义查询的阻塞器, 如“ 我们如何处理付款重试 ” 或“ 查找检查用户权限的所有地方 ” 。
一个RAG辅助的模型上下文协议(MCP)服务器可以将您本地的代码库变成可查询的知识库,给出LLMs和CLI工具准确,内容丰富的答案.
此教程可以向您演示如何为您自己的单曲创建一个像回回回回回回回回回回回回回回回回式这样的工具的制作级版本 。
目录
1.
架构概览
2.
先决条件
3.
项目设置
4.
索引管道
5.
MCP 服务器实施
6.
客户端整合
7.
生产硬化
8.
常被问到的问题
1.
架构概览.
我们将构建三个组件: Indexer:将代码分解成AST-aware块,嵌入并存储在本地矢量数据库中.
MCP Server:曝光任何MCP相容客户端可以消费的标准化接口(工具,资源,提示).
Retriever:将矢量相似性与BM25 lexical search和AST上下文结合,用于精确取回.
2.
Preresites Node.js 20+和 pnpm/npm Python 3.11+ (用于嵌入服务器) 运行中的 Qdrant 实例(本地或远程) 具有可管理文件计数(此教程的 < 1M 文件) 基本熟悉 TypeScript和 Python 3 .
项目设置 初始化项目结构: 3.1 共享类型 创建常见类型共享软件包: 4.索引管道 4.1 AST-Aware Chunking 我们用语言解析法 这保存了语义边界(函数,类),而不是任意的字符分割. 4.2 嵌入生成 使用隐私和零 API 成本运行本地嵌入服务器 。 4.3 索引 Orchestrator Watch for file change,并逐步更新向量存储.
5.
MCP 服务器执行 我们将使用 FastMCP (TypeScript SDK) 来曝光三种工具:,和.
6.
客户端集成 6.1 Claude桌面 添加到您的 :
- 2 光标 IDE 在 Cursor 设置中, 添加 MCP 服务器作为自定义工具:
7.
生产 硬化 7.1 递增索引 使用 Git Hooks 代替文件系统监视(它忽略了重命名, churn), 使用和钩: 7.2 混合搜索 与 Qudrant 启用 Qdrant 内置的稀有向量( BM25) 进行更好的词汇回放 : 然后在搜索时,使用Qdrant的和引信分数。 7.3 安全与隐私 本地运行所有组件;除非加密,否则从不向外部API发送代码.
使用文件系统权限限制访问.
使文件路径具有安全性,以防止路径转弯.
添加限制嵌入服务器的速率 。
8.
常被问到的问题问题:这种单体能处理多大?
A:通过本地嵌入和Qdrant,我们测试了最多2M文件的重置(~50GB).
瓶颈是初始索引时间,而不是查询延迟.
问:我可以用非TypeScript语言吗?
A:是.
支持100+语言.
更新数组并使用相应的语法.
问:与 GitHub 副驾驶工作空间相比, 答:副驾驶由云主持并专有.
此工具完全运行在您的基础设施中,支持自定义检索逻辑,并与任何MCP客户端(Claude, Cursor,自定义的IDes)相集.
准备好了吗?
从索引器软件包开始,然后按块策略排列 。
对于生产部署,考虑为索引添加一个轻量级的工作队列(BullMQ)并给嵌入式服务器添加一个倒置代用.
生产考虑 对于生产部署,考虑为索引添加一个轻量级的工作队列(BullMQ)并给嵌入式服务器添加一个倒置代用.
下面是索引器软件包的最低限度的BullMQ集成.
嵌入服务器的倒置代理服务器 嵌入服务器应当坐落在一个处理 TLS 终止,请求缓冲,和连接集合的倒置代理后.
以下是 Nginx 配置: 监控和可观察性 A 代码库 智能工具生成显著的操作