mcpField
V
Vexor

Vexor

本地服务
github.com/scarletkc搜索与检索2474 周前更新

关于 Vexor

Vexor 是一款面向文件与代码的语义搜索引擎,可构建可复用的索引,并支持可配置的 embedding 与重排序提供方。它同时提供 Python API、命令行工具和 MCP 服务,适合开发者及 AI 编码 Agent 按含义查找文件。

主要功能

  1. 01构建可复用的文件与代码索引
  2. 02支持可配置的 embedding 与重排序提供方
  3. 03提供 Python API、命令行与 MCP 服务三种入口
  4. 04支持本地 embedding 模型离线使用
  5. 05支持混合关键词与语义排序

适用场景

  1. 01根据文件用途而非文件名查找源码
  2. 02让 AI 编码 Agent 在工作流中发现相关文件
  3. 03在 CI 中预先构建索引

MCP 相关

Vexor 内置 MCP stdio 服务,向 MCP 客户端暴露 vexor_search 和 vexor_index 两个工具,搜索结果会返回匹配的源码文本。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"scarletkc-vexor": {
"command": "uvx",
"args": [
"vexor"
],
"env": {
"VEXOR_API_KEY": "<VEXOR_API_KEY>",
"VEXOR_REMOTE_RERANK_API_KEY": "<VEXOR_REMOTE_RERANK_API_KEY>",
"VEXOR_CONFIG_JSON": "<VEXOR_CONFIG_JSON>"
}
}
}
}
启动命令uvx vexor
需要配置的环境变量
VEXOR_API_KEY密钥Embedding provider API key (optional; overrides a stored key; providers can also be configured via `vexor init`)
VEXOR_REMOTE_RERANK_API_KEY密钥Remote reranker API key (optional; overrides a stored key; only needed when rerank is set to remote)
VEXOR_CONFIG_JSONNon-secret Vexor config as a JSON object, e.g. {"provider": "gemini", "rerank": "bm25"} (optional; merged over ~/.vexor/config.json; credential fields are rejected, use the dedicated variables)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypivexor0.30.0

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
topinteger否要返回的结果数。
modeenum否索引粒度:auto 按文件类型路由;name 仅嵌入文件名;head/full/brief 控制内容深度;code 按 AST 分块;outline 按 Markdown 标题分块。auto | brief | code | full | head | name | outline
pathstring否要操作的目录。可以是绝对路径,也可以是相对于服务器默认路径(/tmp)的路径。
querystring是要查找的文件或代码的自然语言描述,例如“在哪里配置了 API 重试”。
no_cacheboolean否为此搜索构建临时内存索引,并禁用所有磁盘缓存。速度较慢,且可能会重新生成嵌入向量。
recursiveboolean否递归搜索子目录(默认)。设为 false 时,仅扫描目录的顶层。
extensionsarray否仅包含这些文件扩展名,例如 ['.py', '.md']。
content_budgetinteger否单次响应可返回的源文本总字符数;优先分配给排名最高的匹配项。
include_hiddenboolean否包含以点开头的文件和目录,例如 .github 或 .env(默认排除)。
include_contentboolean否在每个匹配项的路径旁返回其源文本。文本在搜索时从文件读取。如果模式未记录行范围、文件在索引后发生更改,或预算耗尽,则结果会改为包含 content_unavailable。
exclude_patternsarray否用于排除文件的 Gitignore 风格模式。
respect_gitignoreboolean否遵循 .gitignore 规则(默认)。设为 false 时,也会扫描被忽略的文件,例如构建输出。

详细介绍

Vexor

Vexor

Python PyPI CI Codecov CodeRabbit Pull Request Reviews License Ask DeepWiki


Vexor 是一款语义搜索引擎,可为文件和代码构建可复用的索引。 它支持可配置的嵌入和重排序提供商,并通过 Python API、CLI 工具和 MCP 服务提供相同的核心功能。

Vexor 演示视频

精选推荐

Vexor 获得了社区认可并被多处推荐:

为什么选择 Vexor?

当你记得某个文件的用途,却忘了它的名称或位置时,Vexor 能即刻找到它——无需 grep 模式或遍历目录。

Vexor 专为人类和 AI 编码助手打造,可在自主 Agent 工作流中实现语义文件发现。

安装

从 releases 下载独立二进制文件(无需 Python),或:

pip install vexor  # also works with pipx, uv

快速入门

0. 引导式设置(推荐)
vexor init

如果不存在配置,向导也会在首次运行交互式操作命令前自动启动。 配置管理(vexor config)、MCP、帮助和版本命令会直接运行。

1. 搜索
vexor "api client config"  # defaults to search current directory
# or explicit path:
vexor search "api client config" --path ~/projects/demo --top 5
# in-memory search only:
vexor search "api client config" --no-cache 

Vexor 会在首次搜索时自动建立索引。输出示例:

Vexor semantic file search results
──────────────────────────────────
#   Similarity   File path                       Lines   Preview
1   0.923        ./src/config_loader.py          -       config loader entrypoint
2   0.871        ./src/utils/config_parse.py     -       parse config helpers
3   0.809        ./tests/test_config_loader.py   -       tests for config loader
2. 显式建立索引(可选)
vexor index  # indexes current directory
# or explicit path:
vexor index --path ~/projects/demo --mode code

适用于 CI 预热,或禁用 auto_index 时。

Python API

也可以直接在 Python 中导入并使用 Vexor:

from vexor import index, search

index(path=".", mode="head")
response = search("config loader", path=".", mode="name")

for hit in response.results:
    print(hit.path, hit.score)

配置解析方式与 CLI 相同,遵循全局和项目级配置。 有关运行时覆盖、缓存控制和单次调用选项,请参阅 docs/api/python.md。

AI Agent 技能

此代码库包含一项技能,供 AI Agent 高效使用 Vexor:

vexor install --skills claude  # Claude Code
vexor install --skills codex   # Codex

技能源文件:plugins/vexor/skills/vexor-cli

MCP 服务

vexor MCP 服务

说明

Agent Skill 和 MCP 服务提供相同的核心能力——每个 Agent 任选其一。 该技能教会具备 shell 操作能力的 Agent(Claude Code、Codex)使用完整 CLI,并假设 vexor 已安装在 PATH 上;MCP 服务将搜索功能作为原生工具公开,可用于任何 MCP 客户端(Cursor、Windsurf、Zed 等),并可通过 uvx 和环境变量在无需预先设置的情况下启动。

Vexor 内置了 MCP stdio 服务,因此任何支持 MCP 的 Agent 都能将语义文件搜索用作原生工具:

claude mcp add vexor -- vexor mcp   # Claude Code
codex mcp add vexor -- vexor mcp    # Codex

或者在任何 MCP 客户端中手动配置,也可以选择通过 env 提供 API 密钥 和任何配置覆盖项(无需运行 vexor init):

{
  "mcpServers": {
    "vexor": {
      "command": "vexor",
      "args": ["mcp"],
      "env": {
        "VEXOR_API_KEY": "sk-...",
        "VEXOR_CONFIG_JSON": "{\"provider\": \"gemini\", \"rerank\": \"bm25\"}"
      }
    }
  }
}

该服务提供两个工具:vexor_search(语义文件搜索,返回匹配的源文本,因此 Agent 通常无需再读取文件)和 vexor_index(显式预热索引)。无需额外依赖。Vexor 已列入官方 MCP 注册表,名称为 io.github.scarletkc/vexor。工具架构、环境变量和客户端设置详情,请参阅 docs/mcp.md。

配置

vexor init                             # guided setup (recommended)
vexor config --set-api-key "YOUR_KEY"  # or env: VEXOR_API_KEY / OPENAI_API_KEY / ...
vexor config --set-provider openai     # default; also gemini/voyageai/custom/local
vexor config --rerank hybrid           # optional: fuse exact keyword + semantic ranking
vexor config --show                    # view effective settings and origins

全局配置位于 ~/.vexor/config.json;最近的 <project>/.vexor/config.json 可为该项目覆盖一组受限的行为字段。也可以通过 VEXOR_CONFIG_JSON 注入非机密字段(适用于 MCP 客户端和 CI),并且支持通过 本地嵌入模型完全离线使用。

完整参考请参阅 docs/configuration.md:项目配置字段及优先级、所有配置命令、API 密钥和环境变量、重排策略(混合 / BM25 / FlashRank / 远程)、远程与本地提供方、嵌入维度,以及离线本地模型设置。

CLI 参考

日常使用只需 vexor "query"、vexor search 和 vexor index(参见快速入门)。完整命令表、常用标志、索引模式(--mode auto/name/head/brief/full/code/outline)、.vexorignore 文件、项目本地索引(vexor index --local)、缓存行为和 porcelain 输出格式,均记录在 docs/cli.md 中。

文档

  • 配置 — 提供方、API 密钥、重排、嵌入维度、本地模型
  • CLI 参考 — 命令、标志、索引模式、缓存行为
  • MCP 服务 — 客户端设置、环境变量、工具架构
  • Python API — 编程式用法
  • 集合 API — 由数据库支持的文本记录和筛选搜索

参与贡献

欢迎贡献、提交问题和 PR!提交消息和 PR 标题遵循 Conventional Commits 规范(例如 feat(mcp): add stdio server)。如果觉得有帮助,请点个 Star。

Star 历史

Star 历史图表

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。