1broseidon/cymbal
Language-agnostic code navigation CLI powered by tree-sitter
解决的问题
Cymbal 通过用快速的索引方法替代低效的手动搜索模式(如链式调用 grep、find 和文件读取),解决了在大型陌生代码库中导航的难题。它提供了一种结构化的方式来理解符号关系、依赖项和变更的影响,对人类开发者和AI代理尤其有用,因为它们在探索代码时常常面临高Token消耗的问题。
工作原理
Cymbal 使用 tree-sitter 将源文件解析为抽象语法树(AST),提取符号、导入和引用。这些数据被存储在本地 SQLite 索引中,并使用 FTS5 实现快速符号搜索。工具在每次查询前仅增量重新解析已更改的文件,确保索引保持最新,而无需后台守护进程。它还支持跨多个 Git 工作树的联邦搜索。
适用人群
- 希望获得快速 CLI 用于代码库探索和影响分析的 开发者。
- 需要结构化代码导航层以减少 Token 使用并避免长链搜索调用的 AI 代理。
- 希望通过 Go 库将索引化代码导航嵌入编辑器、机器人或自动化工具的 工具构建者。
主要亮点
- 自适应探索:
investigate命令可在一次调用中提供源代码、调用者和影响范围的综合视图。 - 关系映射:支持
trace(向下依赖)和impact(向上调用者),并可选生成 Mermaid、DOT、JSON 格式的可视化图谱。 - 变更分析:
changed命令将 Git 差异映射到具体符号及其影响范围(爆炸半径)。 - 语言无关:支持 Go、Python、Rust、TypeScript、Java、C++ 等多种语言。
- 代理集成:包含 OpenCode 和 Claude Code 的专用钩子,以简化代理式代码导航。
相关
- 项目
- 项目
- 项目
- 项目
- 项目