BeaconBay/ck

Local first semantic and hybrid BM25 grep / search tool for use by AI and humans!

📦 ck – 語意代碼搜尋

ck(發音:「seek」)是一款基於 Rust 的命令列工具,讓您能透過語意而非僅文字匹配來搜尋原始碼。它會建立程式碼的本地嵌入(embeddings),增量快取,並能回應如「錯誤處理」或「驗證邏輯」等查詢,即使這些字詞未明確出現,也能回傳相關的函數、類別或程式碼區塊。


🎯 功能

功能 說明
語意搜尋 透過向量嵌入(BGE‑Small、Mixedbread、Nomic、Jina‑Code 等)尋找程式碼概念。
混合搜尋 使用 Reciprocal Rank Fusion 將語意相關性與傳統正規表示式/關鍵字比對結合。
grep 相容 CLI 支援您熟悉的 grep/ripgrep 參數(-n-R-l 等)。
互動式 TUI 全螢幕終端介面,支援即時結果、預覽模式、多選與編輯器整合。
AI 代理(MCP)伺服器 透過 Model Context Protocol(MCP)公開工具(semantic_searchregex_search 等),讓 Claude Desktop、Cursor 或其他代理可程式化呼叫 ck。
增量、分塊級索引 僅重新嵌入變更的區塊;在典型編輯中快取命中率可達 80–90%。
智慧檔案過濾 尊重 .gitignore、專用的 .ckignore 及命令列排除參數。
結構化輸出 支援 --json(單一陣列)或 --jsonl(行分隔)格式,適用於腳本與 LLM 流水線。
多語言支援 Python、JavaScript/TypeScript、Rust、Go、C/C++、C#、Ruby、Haskell、Dart、Markdown,以及通用文字格式。
純離線運作 所有嵌入模型皆在本機執行;初始模型下載後不再產生網路流量。

⚙️ 工作原理(概覽)

  1. 索引建立ck --index <root> 遍歷原始碼樹,使用 Tree‑sitter 將檔案分割為語言感知的區塊(函數、類別等),並透過 FastEmbed 計算嵌入。索引資料儲存在 .ck/ 目錄中(或透過 CK_INDEX_DIR 指定自訂路徑)。
  2. 搜尋 – 查詢使用相同模型進行嵌入,與儲存的向量計算相似度分數。在混合模式下,傳統正規表示式搜尋並行執行,兩結果列表合併。
  3. 服務ck --serve 啟動 MCP 伺服器,將搜尋工具作為 JSON-RPC 端點公開,讓 AI 助手可直接呼叫。

🚀 快速入門(CLI)

# 從 crates.io 安裝二進位檔
cargo install ck-search

# 語意搜尋(首次執行時自動建立索引)
ck --sem "error handling" src/

# 混合搜尋(語意 + 關鍵字)
ck --hybrid "connection timeout" src/

# 傳統 grep 風格搜尋
ck -R "TODO|FIXME" .

# 互動式終端 UI
ck --tui "authentication logic"

🤖 AI 代理整合(MCP)

# 啟動伺服器
ck --serve

伺服器註冊如 semantic_search 等工具,代理可呼叫:

{
  "tool": "semantic_search",
  "args": {"query": "authentication logic", "path": "/my/project", "top_k": 25}
}

回應以 JSONL 格式串流輸出,便於在 LLM 驅動的工作流程中使用。


📚 常見使用情境

  • 開發者生產力 – 無需記住確切識別碼,即可快速跳轉至某概念的實作。
  • 程式碼審查準備 – 列出所有實作安全關鍵模式的函數。
  • CI/CD 自動化 – 掃描倉儲中不安全的模式(ck --json --sem "password|secret" . | my_scanner)。
  • 團隊入職 – 快速定位相關測試檔案或重複邏輯。
  • LLM 增強工具 – 將結構化搜尋結果輸入 Claude、Cursor 或自訂代理。

📦 安裝

方法 命令
Crates.io(推薦) cargo install ck-search
從原始碼安裝 git clone https://github.com/BeaconBay/ck && cd ck && cargo install --path ck-cli
未來套件管理器 Brew / apt 套件正在規劃中,尚未發佈。

📄 授權

採用 MITApache‑2.0 雙重授權(詳見 LICENSE-MIT / LICENSE-APACHE)。


🙏 更多資訊


ck 是一個真實、持續維護的開源專案,將現代 AI 驅動的語意搜尋帶入熟悉的命令列程式碼 grep 世界。它完全離線運作,尊重您的 .gitignore,並能無縫整合至人類工作流程與 AI 代理中。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案