使用我们的MCP服务器进行Vibe Coding RAG
Kacper Łukawski
·2025年3月21日

又是一个月,又一个网络研讨会!这次Kacper Łukawski对一些流行的AI编码代理进行了测试。围绕Cursor、GitHub Copilot、Aider和Claude Code等工具的讨论热度很高,因此我们想看看它们在实现比简单前端应用程序更复杂的东西时表现如何。如果LLM能自己编写检索增强生成代码,那不是太棒了吗?
Vibe编码
Vibe编码是Andrej Karpathy引入的一种开发方法,开发者顺从直觉而非控制。它利用AI编码助手进行实现,而开发者则专注于结果。通过语音界面和对AI建议的完全信任,该过程优先考虑结果而非代码理解。
这听起来很有吸引力,因为代码可能由技术水平较低的人编写,而这正是我们在现场vibe编码会话中想要实现的目标,看看它是否真的那么容易。
免责声明:我们无法保证应用程序在网络研讨会结束时能够运行,但无论如何我们都尝试了!它不到一个小时,即使在此时间内拥有某种功能性的演示也已算作巨大的成功。
理解模型上下文协议(MCP)
在深入了解工具之前,了解我们方法背后的力量非常重要。模型上下文协议(MCP)是一个开放协议,可实现LLM应用程序与外部数据源和工具之间的无缝集成。无论您是构建AI驱动的IDE、增强聊天界面还是创建自定义AI工作流程,MCP都提供了一种标准化的方式,将LLM与其所需的上下文连接起来。
我们的mcp-server-qdrant实现充当Qdrant之上的语义记忆层。这种组合允许AI代理
- 存储和检索记忆(代码片段、文档等)
- 在您的代码库中执行语义搜索
- 找到生成新代码最相关的上下文
服务器提供两个主要工具
qdrant-store:将信息和可选元数据存储在Qdrant数据库中qdrant-find:使用语义搜索检索相关信息
这种架构使AI编码代理能够在整个开发过程中保持上下文感知。
AI编码助手
AI编码工具没有明显的赢家,选择取决于您的偏好和要求。我们进行了一些初步研究,并决定测试以下工具

最近Cursor引起了很大的轰动,这是有充分理由的。它是一个强大的集成在Visual Studio Code中的IDE工具,有望通过AI辅助改变我们的编码方式。但是,对于那些与VS Code关系有些复杂的人,比如我,可能更喜欢使用他们最熟悉且高效的工具,例如JetBrains IDE。Cursor的一个巨大优势是它可以与MCP服务器集成,例如mcp-server-qdrant,这允许您为AI模型提供自己的上下文。

GitHub Copilot可能是一个有趣的选择,特别是如果您是开源贡献者并且有资格免费获得专业版计划。这非常有吸引力,因为专业版计划没有任何使用限制。与Cursor相比,这是一个显著的优势,因为Cursor确实有一些使用限制。从纯经济角度来看,如果Copilot能提供可比的结果,它将非常有意义。

我们考虑的另一个竞争者是Aider——一个基于终端的编码代理。它是一个基于终端的工具,直接与您的git存储库协作,在多个文件之间进行编辑。特别引人注目的是它的灵活性——您可以将其连接到几乎任何您选择的LLM,包括本地模型,如果您担心隐私或离线工作的话。而且它是完全开源的,这可能是一个巨大的优势!

最后但同样重要的是,我们有Claude Code——另一个终端AI编码助手,但它是唯一一个与特定模型家族——Anthropic的Claude模型紧密集成的。由于它是由创建模型的同一团队支持的,因此它可能是针对该任务进行优化的。该工具仍处于测试预览阶段,但内置的对模型上下文协议的支持是一个巨大的优势,我们最终决定将其用于我们的vibe编码会话!
构建项目
vibe编码背后的理念是让AI承担繁重的工作,而您专注于结果。然而,真正的软件开发不仅仅是编写代码。它关乎理解问题、设计解决方案以及选择正确的工具和库。我们不希望模型使用它可能受训的库的过时版本,因此我们需要为其提供正确的上下文。这就是为什么为AI编码代理构建一个内联RAG(检索增强生成)可以将其提升到新的水平,因为它可以在模型需要时为其带来上下文。
在我们的案例中,我们确实想使用DaisyUI,一个Tailwind CSS组件库,在CSS中使用语义类名。最新版本(截至网络研讨会为5.0.6)是首选,然而我们使用的所有LLM都倾向于基于较旧的4.x版本生成代码。想象一下,LLM不会从头开始生成代码,而是会在我们的知识库中搜索最相关的示例,并根据提取的示例生成代码,甚至在可能的情况下重用代码片段。这就是为什么我们决定使用MCP服务器为AI编码助手提供上下文。
设置MCP服务器
Qdrant MCP服务器充当语义记忆层,可以
- 使用
qdrant-store工具存储代码片段、文档和实现细节 - 使用
qdrant-find工具根据自然语言查询检索最相关的信息
对于我们的实时编码会话,我们配置了Claude Code与此MCP服务器协同工作。当Claude需要生成代码时,它可以自动在我们的代码库中搜索相关示例,并根据提取的示例创建新代码。此外,当助手完成代码生成后,它还可以将其存储在Qdrant中以供进一步参考。如果配置正确,它只会在我们接受更改时才这样做。
mcp-server-qdrant的最新版本允许为AI代理指定指令,这样它就能理解何时使用哪个工具。通过这种方式,MCP服务器不仅可以用于编码,还可以用于几乎任何上下文至关重要的语义搜索任务。这就是我们在网络研讨会期间的做法
export TOOL_FIND_DESCRIPTION="Use this tool ALWAYS before generating any FRONTEND code. \
It lets you search for relevant code snippets based on natural language descriptions. \
The 'query' parameter should describe what you're looking for, and the tool will return the most relevant code \
snippets. If this tool finds something similar, then create your code so it is consistent. Reuse existing code \
as much as you can."
export TOOL_STORE_DESCRIPTION="Store reusable FRONTEND code snippets for later retrieval. \
The 'information' parameter should contain a natural language description of what the code does, while the actual \
code should be included in the 'metadata' parameter as a 'code' property. The value of 'metadata' is a Python \
dictionary with strings as keys. Use this always when you generate some code to store it for further reference."
这两个描述都可以在您运行服务器时进行配置
claude mcp add qdrant-code-search \
-e QDRANT_URL="https://:6333" \
-e COLLECTION_NAME="mcp-server-qdrant-knowledge-base" \
-e TOOL_FIND_DESCRIPTION="$TOOL_FIND_DESCRIPTION" \
-e TOOL_STORE_DESCRIPTION="$TOOL_STORE_DESCRIPTION" \
-- uvx mcp-server-qdrant
MCP服务器配置主要通过环境变量完成。对于希望设置自己的实例的用户,以下是关键配置选项
| 名称 | 描述 | 默认值 |
|---|---|---|
QDRANT_URL | Qdrant服务器的URL | 无 |
QDRANT_API_KEY | Qdrant服务器的API密钥 | 无 |
COLLECTION_NAME | 要使用的集合名称 | 必填 |
QDRANT_LOCAL_PATH | 本地Qdrant数据库的路径(QDRANT_URL的替代方案) | 无 |
EMBEDDING_PROVIDER | 要使用的嵌入提供程序 | fastembed |
EMBEDDING_MODEL | 要使用的嵌入模型名称 | sentence-transformers/all-MiniLM-L6-v2 |
默认情况下,服务器使用来自FastEmbed的sentence-transformers/all-MiniLM-L6-v2嵌入模型来编码记忆,该模型在性能和准确性之间取得了良好的平衡。
构建DaisyUI组件知识库
DaisyUI附带了一系列组件,其文档对LLM友好,因为它提供了包含所有组件的llms.txt文件。

这使得提取所有带有相应含义的代码片段并在我们vibe编码应用程序时存储以供参考变得非常容易。这种提取过程使用LLM很容易,但我们现在将跳过这一部分。Qdrant快照包含我们在网络研讨会期间使用的知识库,因此您可以将其导入到您的Qdrant实例并立即开始使用。
项目范围:YouTube视频内搜索
学习新技能时,YouTube视频是很好的资源。然而,深入的内容通常冗长,并且可能假设没有先验知识。如果您能有一个智能助手帮助您浏览视频并准确找到您需要的内容,那会怎么样?本项目旨在创建一个视频内容搜索引擎,帮助您快速浏览并专注于对您来说真正重要的内容。
您想重现我们vibe编码的项目吗?存储库包含所有必要的说明和代码,可帮助您入门。
Vibe编码会话
如果您有兴趣了解Claude Code在实际操作中的表现,可以在下方观看完整的网络研讨会录像
无论您是构建MVP,还是想在AI的帮助下构建更复杂的应用程序,为您的代理提供可靠的信息来源都是关键。这就是我们构建MCP服务器的原因,以便您可以轻松地将文档和代码库连接到Claude Code、Cursor、Windsurf或任何其他支持模型上下文协议的AI代理。
