Oracle风格
解析React和Sass文件,提取所有符号,并通过MCP服务器为Claude/AI代理进行搜索。
它的作用
- 提取React组件(props、state、hook等)
- 提取Sass/CSS内容(选择器、变量、混入等)
- 使用全文搜索将所有内容存储在SQLite中
- 为语义搜索创建向量嵌入
- 运行MCP服务器,以便Claude可以搜索您的代码库
搜索结合了关键字匹配+向量相似性+AI重新排序,以实际找到您要查找的内容。
为什么这很有用
你是否曾在大型代码库中工作,花了20分钟寻找“具有加载状态的按钮组件”或“处理卡阴影的混入”?
传统的搜索工具只搜索文本,所以你最终会得到47个“按钮”的结果,并且必须手动检查每个结果。这个东西实际上理解代码的作用,所以你可以问“带加载微调器的按钮”,它会找到 LoadingButton 即使“加载”一词从未出现在文件名中。
样式也是如此——询问“卡片阴影样式”,它会找到创建卡片阴影的相关混合、变量和选择器,即使它们分散在不同的文件中,名称如下 _elevations.sass 和 $shadow-depth-2.
基本上将你的代码库变成你可以与之对话的东西,而不是玩文本匹配的打地鼠游戏。
运作原理
Parse files → Store in SQLite + FAISS → Search via MCP server组件
extractor/-解析React/Sass文件,处理奇怪的语法边缘情况docker/-带可选web UI的SQLite设置embeddings/-创建OpenAI嵌入和FAISS索引server/-MCP服务器+BGE再银行服务器
需求
- Python 3.12
- Node.js 20+
- Docker(用于SQLite web UI,可选)
- 拥抱脸CLI(适用于BGE型号)
- OpenAI API密钥
设置
# Install stuff
pip install -r requirements.txt
cd extractor && npm install
# Set up Hugging Face (for reranking models)
huggingface-cli login
# Extract symbols from your project
node extractor/extract-symbols.js /path/to/your/src
# Create embeddings (needs OPENAI_API_KEY)
python embeddings/create_embeddings.py
# Start servers
./start-servers.sh你得到了什么
提取后,您将获得:
symbols.jsonl-所有提取的符号components.json-React组件信息families.json-边界元模式关系breakpoints.json-您的响应断点- 带全文搜索的SQLite数据库
- 用于语义搜索的FAISS矢量索引
然后,Claude(或其他MCP兼容工具)可以搜索您的代码库,并真正了解其中的内容。
备注
- 提取器具有多种回退策略,因此不会因奇怪的Sass语法而受阻
- 边界元模式检测在识别元件族方面效果很好
- 混合搜索(关键字+向量+重新排序)通常会找到您要查找的内容
- 之所以这样做,是因为现有的代码搜索工具在理解上下文方面很糟糕
