Code Indexer 是一个本地代码索引与语义搜索工具,面向代码库提供快速代码搜索、定义查找和代码库导航能力,其实现基于简单的模式匹配与类 AST 分析。
【用途】 用于在代码库中查找函数或类定义、搜索代码内容、定位符号引用,以及分析单个文件的导入导出结构,帮助理解项目组织方式。
【主要能力】
- 索引代码库
- 搜索符号或函数
- 查找定义
- 查找引用/使用位置
- 分析文件的 import/export
- 获取项目结构
【支持的语言】
- JavaScript/TypeScript:完整支持(ES6+ 导入导出、类、函数)
- Python:完整支持(导入、类、函数)
- Java:完整支持(导入、类、方法)
- Go:完整支持(导入、函数、方法)
- Rust:完整支持(use、fn、struct、impl)
- C/C++:基础支持(#include、函数声明)
- 其他:对任意文本文件进行基础模式匹配
【使用方式】 无需额外安装,使用内置 Node.js 模块与 shell 命令(grep、find、sed)。可选安装 ripgrep 以加快搜索:
- macOS:brew install ripgrep
- Linux:apt install ripgrep 或 dnf install ripgrep
常用命令:
- 索引代码库:node /job/.pi/skills/code-indexer/index.js "/path/to/project"
- 搜索符号/函数:node /job/.pi/skills/code-indexer/search.js "functionName"
- 查找定义:node /job/.pi/skills/code-indexer/find-def.js "ClassName" "/path/to/project"
- 查找引用/使用:node /job/.pi/skills/code-indexer/find-refs.js "functionName" "/path/to/project"
- 分析文件导入/导出:node /job/.pi/skills/code-indexer/analyze.js "/path/to/file.js"
- 获取项目结构:node /job/.pi/skills/code-indexer/structure.js "/path/to/project"
搜索、定义、导入分析等结果以 JSON 格式输出,包含文件路径、行号、类型、上下文、匹配内容,以及总数和耗时等字段。
【配置】
- 默认遵循 .gitignore;设置环境变量 CODE_INDEXER_IGNORE_GIT=0 可禁用该行为。
- 索引缓存位于 /tmp/code-indexer-cache/,用于加速重复搜索;可用 node /job/.pi/skills/code-indexer/clear-cache.js 清除缓存。
【典型工作流】
- 理解代码库结构:查找与认证等主题相关的文件、类与函数。
- 查找函数定义位置,例如 calculateTotal。
- 查找某个配置变量的全部使用位置。
- 分析新文件的作用,获取其导入导出与结构。
【与其他技能的集成】
- 与 memory-agent 配合:存储关于项目架构的发现。
- 与 git-ops 配合:在切换分支后理解变更。
- 与 browser-tools 配合:为基于网页的代码查看器中的代码编写文档。
【限制】
- 无语义理解,仅模式匹配。
- 不解析动态导入或复杂类型推断。
- 大型代码库初次索引可能较慢。
- 部分语言特性可能无法识别。
【提示】
- 安装 ripgrep 可提升搜索速度,工具在可用时会自动使用。
- 类型定义方面,可先用 find-def.js 再用 find-refs.js 获得完整视图。
- 大型项目可使用 --limit 限制结果数量:search.js "query" --limit 20