项目简介

'ck' (发音 "seek") 是一个功能强大的语义代码搜索工具,旨在通过理解代码的“含义”而非仅依赖关键词来帮助开发者查找代码。它能无缝集成到Claude Desktop、Cursor等AI客户端中,作为Model Context Protocol (MCP) 服务器提供代码搜索和索引管理服务。作为MCP服务器,'ck' 能够以标准化的方式向AI客户端提供上下文信息和工具,使得AI能够更智能地理解和操作代码库。

主要功能点

  • 语义搜索: 使用自然语言描述代码功能(例如:“错误处理代码”、“用户认证逻辑”),'ck' 将返回概念上相似的代码段,即使关键词不匹配。
  • 正则搜索: 支持传统的基于正则表达式的文本匹配,适用于精确的关键词、符号或特定代码模式查找(例如:“'try/catch' 块”、“异步函数定义”)。
  • 混合搜索: 结合语义理解和关键词匹配的优势,通过RRF(Reciprocal Rank Fusion)算法提供更全面和相关的搜索结果。
  • 代码索引管理: 自动创建、更新和管理代码库的语义索引,支持增量更新,确保搜索效率。索引文件存储在代码库的 '.ck/' 目录下。
  • AI Agent集成: 作为MCP服务器,提供标准化的JSON-RPC接口,允许AI客户端调用其搜索和索引管理工具,实现LLM驱动的研发辅助。
  • 分页处理: 能够优雅地处理大量搜索结果,支持分页、游标和代码片段长度控制,避免响应过大。
  • 模型选择与Reranking: 支持多种本地运行的嵌入模型和Reranking模型,可以根据需求选择优化搜索相关性。
  • 代码段提取: 支持提取完整的函数、类或方法等语义代码块,而非仅匹配行。

安装步骤

  1. 安装 Rust 和 Cargo: 'ck' 是使用 Rust 语言开发的,因此您需要先安装 Rust 编程环境。请访问 Rust 官方网站 (https://www.rust-lang.org/tools/install) 下载并安装 'rustup'。
  2. 通过 Cargo 安装 'ck-search': 打开您的命令行终端,运行以下命令即可安装 'ck':
    cargo install ck-search
  3. 从源代码安装 (可选): 如果您希望从源代码构建 'ck',请执行以下步骤:
    git clone https://github.com/BeaconBay/ck
    cd ck
    cargo install --path ck-cli

服务器配置 (为MCP客户端配置 'ck')

'ck' MCP服务器通过命令行启动,您的AI客户端(例如Claude Code、Cursor)需要知道其启动命令和参数才能建立连接。以下是为支持MCP协议的AI客户端配置 'ck' 服务器的示例信息。请将 '/path/to/your/codebase' 替换为您的实际代码库路径。

{
  "mcpServers": {
    "ck": {
      "command": "ck",
      "args": ["--serve"],
      "cwd": "/path/to/your/codebase"
    }
  }
}
  • 'mcpServers': 这是MCP客户端配置中用于定义所有MCP服务器的顶层键。
  • 'ck': 这是您为 'ck' 服务器定义的名称。在MCP客户端中,您将使用此名称来引用和调用 'ck' 提供的工具。
  • 'command': 指定启动 'ck' 程序的命令行命令,通常就是 'ck'。
  • 'args': 这是一个字符串数组,包含传递给 'ck' 命令的参数。'--serve' 参数指示 'ck' 以MCP服务器模式运行。
  • 'cwd': (Current Working Directory) 这是 'ck' 服务器将在此目录下启动并搜索代码的绝对路径。请务必将其替换为您的代码库的实际路径。

重要提示: 在Claude Code等客户端中,系统可能会提示您批准 'ck-search' 工具(例如 'semantic_search', 'regex_search', 'hybrid_search', 'index_status', 'reindex', 'health_check')的权限。请务必批准这些权限,以便AI客户端能够正常调用 'ck' 提供的功能。

基本使用方法 (作为MCP客户端的用户视角)

一旦 'ck' 服务器在MCP客户端中成功配置并运行,AI客户端即可通过其内置的工具功能与 'ck' 进行交互。以下是一些常见的交互示例:

  • 语义搜索示例: 当您想查找处理“身份验证逻辑”的代码时,您可以这样向AI客户端提问:

    "请使用 'semantic_search' 工具,在代码库中查找关于“用户身份验证逻辑”的代码。" (AI客户端会根据您的提问,在内部调用 'ck' 服务器的 'semantic_search' 工具,并传递相应的查询参数。)

  • 正则搜索示例: 如果您需要查找所有包含“TODO”注释的Rust文件,您可以这样提问:

    "请使用 'regex_search' 工具,查找模式为“TODO”的Rust文件,忽略大小写,并显示相关代码行。" (AI客户端会调用 'ck' 服务器的 'regex_search' 工具,并传递正则表达式、文件路径、忽略大小写等参数。)

  • 检查索引状态: 您可以询问AI客户端来检查当前代码库的索引状态:

    "请使用 'index_status' 工具,查看当前代码库的索引状态。" (AI客户端会调用 'ck' 服务器的 'index_status' 工具,返回当前代码库的索引是否存在、文件数量、块数量等信息。)

  • 重新构建索引: 如果您的代码库发生了大量变动,或者想更换嵌入模型,您可以请求AI客户端重新构建索引:

    "请使用 'reindex' 工具,强制重新构建代码库的搜索索引。" (AI客户端会调用 'ck' 服务器的 'reindex' 工具,触发索引的重建过程。)

重要提示: 首次进行语义或混合搜索时,'ck' 会自动构建或更新索引,这可能需要一些时间,尤其是在大型代码库中。AI客户端可能会显示进度通知。后续搜索会因为利用了已构建的索引而变得非常迅速。

信息

分类

开发者工具