- Star
- 1,080
- Fork
- 23
- 未关闭 Issue
- 2
- 最近提交
- 3天前
这是什么?
cs(codespelunker)是一个用 Go 编写的命令行代码搜索工具。它会在搜索时实时解析每个匹配文件,区分代码、注释和字符串,再结合 BM25 相关性与结构权重进行排序,而不是简单罗列所有文本命中。由于无需预先建立索引,可以直接对任意目录开始搜索。
除了普通搜索,它还支持 --only-code、--only-comments、--only-strings、--only-declarations、--only-usages 等结构化过滤参数。基于圈复杂度的 gravity 设置可以让核心实现文件排在接口和配置文件之前,排序配置预设则把多个调优参数打包成一键选项。查询语句支持布尔运算、引号短语、正则表达式和模糊匹配。
同一套引擎还提供交互式 TUI、带语法高亮的 HTTP 搜索服务,以及 MCP 服务器模式,让 Claude Desktop、Claude Code 等 LLM 工具直接搜索代码库。--git-sync 选项可定期拉取搜索目录中的仓库,保持结果与代码同步。
核心功能
- 01结构感知匹配,可区分代码、注释和字符串字面量
- 02基于 BM25 的相关性排序,结合复杂度权重和文件位置加权
- 03声明与用法过滤,可直接定位定义或调用位置
- 04支持布尔查询、引号短语、正则表达式和模糊匹配
- 05提供命令行、TUI、HTTP 服务和 MCP 服务四种使用方式
- 06可定期对搜索目录中的 Git 仓库执行 pull 更新
适用场景
- 在大型代码库中找到函数的真正实现,而不是接口、测试或注释
- 跨项目只搜索 TODO、FIXME 注释或错误信息字符串
- 通过 MCP 为 LLM 智能体提供带相关性排序的代码搜索工具
- 在不维护搜索服务的前提下,搜索一组已克隆的仓库
快速上手
- 1
通过 Go 安装(需要 Go 1.25.2 或更高版本)
go install github.com/boyter/cs/v3@latest - 2
在任意目录中运行搜索
cs "authenticate" --gravity=brain
使用前须知
- 通过 go install 安装需要 Go 1.25.2 或更高版本;其他方式需要从发布页面下载二进制文件。
- 没有索引,每次搜索都会实时扫描匹配文件,纯文本匹配时比 ripgrep 慢。
标签
常见问题
- cs 是什么?
- 一款无需建立索引的命令行代码搜索工具,能识别代码结构并按相关性排序结果。 cs(codespelunker)是一个用 Go 编写的命令行代码搜索工具。它会在搜索时实时解析每个匹配文件,区分代码、注释和字符串,再结合 BM25 相关性与结构权重进行排序,而不是简单罗列所有文本命中。由于无需预先建立索引,可以直接对任意目录开始搜索。
- cs 可以免费使用吗?用的什么许可证?
- cs 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- cs 还在维护吗?
- 活跃维护中。cs 最近一次提交是在 2026年10月20日。
- cs 适合用来做什么?
- 在大型代码库中找到函数的真正实现,而不是接口、测试或注释 跨项目只搜索 TODO、FIXME 注释或错误信息字符串 通过 MCP 为 LLM 智能体提供带相关性排序的代码搜索工具 在不维护搜索服务的前提下,搜索一组已克隆的仓库
- cs 怎么安装和运行?
- 通过 Go 安装(需要 Go 1.25.2 或更高版本): go install github.com/boyter/cs/v3@latest 在任意目录中运行搜索: cs "authenticate" --gravity=brain
- 在哪里获取 cs?
- 源代码和安装说明在 GitHub 上:https://github.com/boyter/cs
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一款快速的命令行工具,按编程语言统计代码的文件数、行数、代码行、注释和空行。
1.5万712RustOther更新于 2个月前
用 Java 编写的快速源代码搜索与交叉引用引擎,可索引代码及版本控制历史。
5005841JavaOther更新于 3天前
自托管的代码上下文工具,统一索引多个代码托管平台的仓库,供开发者和 AI 智能体搜索与浏览。
4003372PythonMIT更新于 前天
本地运行的命令行搜索引擎,可检索 Markdown 笔记、会议记录和文档,结合 BM25、向量检索与 LLM 重排序。
3万1916TypeScriptMIT更新于 8天前