ast索引v3.41.0
34种编程语言的快速代码搜索CLI。原生Rust实现。
支持的项目
| 平台 | 语言 | 文件扩展名 |
|---|---|---|
| 安卓系统 | Kotlin,Java | .kt, .java |
| iOS | Swift、Objective-C | .swift, .m, .h |
| Web/前端 | TypeScript、JavaScript | .ts, .tsx, .mts, .js, .jsx, .mjs, .cjs, .vue, .svelte |
| Web/前端 | CSS、SCSS、Less | .css, .pcss, .postcss, .scss, .less |
| 系统 | 生锈 | .rs |
| 系统 | Zig | .zig, .zon |
| 后端 | C#、Python、Go、C++、Scala | .cs, .py, .go, .cpp, .cc, .c, .hpp, .scala, .sc |
| 后端 | PHP | .php, .phtml |
| 脚本 | Ruby、Perl | .rb, .pm, .pl, .t |
| 移动 | 飞镖/颤振 | .dart |
| 架构 | 协议缓冲区,WSDL/XSD | .proto, .wsdl, .xsd |
| 企业 | BSL(1C:企业) | .bsl, .os |
| 脚本 | Lua、Bash | .lua, .sh, .bash, .zsh |
| 功能性 | Elixir | .ex, .exs |
| 数据 | SQL,R | .sql, .r, .R |
| 科学 | Matlab | .m |
| JVM | Groovy | .groovy, .gradle |
| 函数式 | 通用Lisp | .lisp, .lsp, .cl, .asd |
| 游戏 | GDScript(Godot) | .gd |
自动检测项目类型。
项目设置指南 --安装、命令和使用示例。
安装
自制(macOS/Linux)
brew tap defendend/ast-index
brew install ast-indexWinget(Windows)
winget install --id defendend.ast-index从科特林指数迁移
如果你有旧的 kotlin-index 安装:
brew uninstall kotlin-index
brew untap defendend/kotlin-index
brew tap defendend/ast-index
brew install ast-index来源
git clone https://github.com/defendend/Claude-ast-index-search.git
cd Claude-ast-index-search
cargo build --release
# Binary: target/release/ast-index (~44 MB)故障排除:安装时出现语法错误
如果 brew install ast-index 合并冲突错误失败(`,解析输出,并返回 紧凑的受TOON启发的文本blob(≈比漂亮的JSON少2-3倍的令牌)。代理 可以通过以下方式选择每次调用使用原始JSON format: "json"` 当他们需要结构化时 解析。
构建:
cargo build --release -p ast-index-mcp
# Binary: target/release/ast-index-mcp外露工具(20):
| 工具 | 目的 |
|---|---|
search | 跨文件、符号、导入和内容的通用搜索 |
symbol | 按精确名称/glob/kind过滤器查找符号(精确替代 search) |
class | 按名称或模式查找类、接口、协议、枚举、结构 |
outline | 文件的结构大纲(读取>500行文件前调用) |
usages | 符号的每次使用(文件:行+上下文) |
callers | 函数的直接调用者 |
call_tree | 递归调用树,深度可配置 |
implementations | 实现/扩展接口或父级的类型 |
hierarchy | 全继承树——一次调用中的超类+子类 |
refs | 一次性定义+导入+使用 |
imports | 导入/包含源文件 |
api | 模块的公共API(重构和变更日志准备) |
changed | 自基分支以来发生更改的符号(代码审查) |
module | 查找与模式匹配的模块 |
deps | 模块依赖关系 |
dependents | 反向deps——谁依赖此模块 |
find_file | 按名称模式查找文件 |
stats | 项目类型、计数、数据库大小、额外根 |
rebuild | 完全重新索引(慢速--首选 update) |
update | 增量重新索引(快速) |
每个代理的设置说明: docs/mcp-setup.md.
Gemini CLI
gemini skills install https://github.com/defendend/Claude-ast-index-search.git --path plugin/skills/ast-index基于规则的通用代理
添加 .cursor/rules 或项目特定的代理规则:
Use `ast-index` CLI for fast code search. Run `ast-index rebuild` before first use.
Available commands: search, class, implementations, usages, callers, call-tree, deps, outline, deprecated.______________________________________________________________________
💝 支持发展

______________________________________________________________________
命令(46+)
基于Grep(无需索引)
ast-index todo [PATTERN] # TODO/FIXME/HACK comments
ast-index callers # Function call sites
ast-index provides # @Provides/@Binds for type
ast-index suspend [QUERY] # Suspend functions
ast-index composables [QUERY] # @Composable functions
ast-index deprecated [QUERY] # @Deprecated items
ast-index suppress [QUERY] # @Suppress annotations
ast-index inject # @Inject points
ast-index annotations # Classes with annotation
ast-index deeplinks [QUERY] # Deeplinks
ast-index extensions # Extension functions
ast-index flows [QUERY] # Flow/StateFlow/SharedFlow
ast-index previews [QUERY] # @Preview functions
ast-index usages # Symbol usages (falls back to grep)基于索引(需要重建)
ast-index search # Universal search
ast-index file
# Find files
ast-index symbol # Find symbols
ast-index class # Find classes/interfaces
ast-index symbol # Find any symbol by name
ast-index implementations
# Find implementations
ast-index hierarchy # Class hierarchy tree
ast-index usages # Symbol usages (indexed, ~8ms)模块分析
ast-index module
# Find modules
ast-index deps # Module dependencies
ast-index dependents # Dependent modules
ast-index unused-deps # Find unused dependencies (v3.2: +transitive, XML, resources)
ast-index api # Public API of module模块路由——两个模块之间的依赖路径
显示模块A如何通过依赖关系图到达模块B:
# Shortest path (default)
ast-index module-route --from core.utils --to features.payments.api
# All simple paths, filtered to api edges only
ast-index module-route --from app --to core.db --all --via-kind api
# JSON output — machine-readable, no ANSI
ast-index module-route --from app --to core.db --format json
# Mermaid diagram (paste into any markdown renderer)
ast-index module-route --from app --to core.db --format mermaid
# Graphviz DOT
ast-index module-route --from app --to core.db --format dot
# Gradle-style module names work too
ast-index module-route --from :app --to :core:utils选项:
--all--返回所有简单路径,而不是单个最短路径--via-kind--过滤器遍历到一种边类型(默认值:all)--max-paths--在以下情况下限制返回路径--all已设置(默认值:50)--max-depth--以跳数为单位的路径长度上限(默认值:20)--timeout-ms--挂钟保护(毫秒)(默认值:5000)
XML和资源分析
ast-index xml-usages # Find class usages in XML layouts
ast-index resource-usages # Find resource usages (@drawable/ic_name, R.string.x)
ast-index resource-usages --unused --module # Find unused resources文件分析
ast-index outline # Symbols in file
ast-index imports # Imports in file
ast-index changed [--base BRANCH] # Changed symbols (git diff)iOS特定命令
ast-index storyboard-usages # Class usages in storyboards/xibs
ast-index asset-usages [ASSET] # iOS asset usages (xcassets)
ast-index asset-usages --unused --module # Find unused assets
ast-index swiftui [QUERY] # @State/@Binding/@Published props
ast-index async-funcs [QUERY] # Swift async functions
ast-index publishers [QUERY] # Combine publishers
ast-index main-actor [QUERY] # @MainActor usagesPerl特定命令
ast-index perl-exports [QUERY] # Find @EXPORT/@EXPORT_OK
ast-index perl-subs [QUERY] # Find subroutines
ast-index perl-pod [QUERY] # Find POD documentation (=head1, =item, etc.)
ast-index perl-tests [QUERY] # Find Test::More assertions (ok, is, like, etc.)
ast-index perl-imports [QUERY] # Find use/require statements指标管理
ast-index init # Initialize DB
ast-index rebuild [--type TYPE] # Full reindex
ast-index update # Incremental update
ast-index stats # Index statistics
ast-index version # Version info语言特定功能
Types/JavaScript(v3.9中的新功能)
支持的元素:
- 类、接口、类型别名、枚举
- 类方法(构造函数、getter/setter、静态、异步)
- 类字段/属性,私有
#members,抽象方法 - 函数(常规、箭头、异步)
- React组件和钩子(
useXxx) - SFC视图(`` 提取)
- Svelte组件
- 装饰器(@控制器、@可注射等)
- 命名空间、常量、导入/导出
ast-index class "Component" # Find React/Vue components
ast-index search "use" # Find React hooks
ast-index search "@Controller" # Find NestJS controllers
ast-index class "Props" # Find prop interfacesRust(v3.9中的新功能)
支持的元素:
- 结构、枚举、特征
- Impl块(
impl Trait for Type) - 函数、宏(
macro_rules!) - 类型别名、常量、静态值
- 模块、使用语句
- 派生属性
ast-index class "Service" # Find structs
ast-index class "Repository" # Find traits
ast-index search "impl" # Find impl blocks
ast-index search "macro_rules" # Find macrosRuby(v3.9中的新功能)
支持的元素:
- 类、模块
- 方法(def,def self)
- RSpec DSL(描述、它、让)
- Rails模式(has_many、验证、作用域、回调)
- 要求声明,包括/扩展
ast-index class "Controller" # Find controllers
ast-index search "has_many" # Find associations
ast-index search "describe" # Find RSpec tests
ast-index search "scope" # Find scopesC#(v3.9中的新功能)
支持的元素:
- 类、接口、结构、记录
- 枚举、代表、事件
- 方法、属性、字段
- ASP。NET属性(@ApiController、@HttpGet等)
- Unity属性(@SerializeField)
- 命名空间,使用语句
ast-index class "Controller" # Find ASP.NET controllers
ast-index class "IRepository" # Find interfaces
ast-index search "[HttpGet]" # Find API endpoints
ast-index search "MonoBehaviour" # Find Unity scriptsDart/Flutter(v3.10中的新功能)
支持的元素:
- 带有Dart 3修饰符的类(抽象类、密封类、最终类、基类、接口类、混合类)
- 混合、扩展、扩展类型
- 使用机具/工具增强枚举
- 函数、构造函数、工厂构造函数
- 取/放、类型定义、属性
- 进口/出口
ast-index class "Widget" # Find widget classes
ast-index class "Provider" # Find providers
ast-index search "mixin" # Find mixins
ast-index implementations "State" # Find State implementations
ast-index outline "main.dart" # Show file structure
ast-index imports "app.dart" # Show importspython
ast-index class "ClassName" # Find Python classes
ast-index symbol "function" # Find functions
ast-index outline "file.py" # Show file structure
ast-index imports "file.py" # Show imports去
ast-index class "StructName" # Find structs/interfaces
ast-index symbol "FuncName" # Find functions
ast-index outline "file.go" # Show file structure
ast-index imports "file.go" # Show imports演出
大型Android项目的基准测试(约29k个文件,约300k个符号):
| 命令 | Rust | grep | 加速 |
|---|---|---|---|
| 导入 | 0.3毫秒 | 90毫秒 | 260x |
| 家属 | 2ms | 100ms | 100倍 |
| deps | 3ms | 90ms | 90倍 |
| 类 | 1ms | 90ms | 90倍 |
| 搜索 | 11毫秒 | 280毫秒 | 14倍 |
| 使用时间 | 8ms | 90ms | 12倍 |
尺寸比较
| 度量 | Rust | Python |
|---|---|---|
| 二进制 | ~44 MB | ~273 MB(venv) |
| 数据库大小 | 180 MB | ~100 MB |
| 符号 | 299393 | 264023 |
| 参考文献 | 900079 | 438208 |
建筑
- grep搜索器 --用于快速搜索的ripgrep内部
- SQLite+FTS5 --全文搜索索引
- 人造丝 --并行文件解析
- 忽略 --gitignore感知目录遍历
数据库模式
files (id, path, mtime, size)
symbols (id, file_id, name, kind, line, signature)
symbols_fts (name, signature) -- FTS5
inheritance (child_id, parent_name, kind)
modules (id, name, path)
module_deps (module_id, dep_module_id, dep_kind)
refs (id, file_id, name, line, context)
xml_usages (id, module_id, file_path, line, class_name, usage_type, element_id)
resources (id, module_id, type, name, file_path, line)
resource_usages (id, resource_id, usage_file, usage_line, usage_type)
transitive_deps (id, module_id, dependency_id, depth, path)
storyboard_usages (id, module_id, file_path, line, class_name, usage_type, storyboard_id)
ios_assets (id, module_id, type, name, file_path)
ios_asset_usages (id, asset_id, usage_file, usage_line, usage_type)配置文件
创建 .ast-index.yaml 在项目根目录中配置ast索引:
# Force project type (useful when auto-detection fails)
project_type: bsl
# Additional directories to index
roots:
- "../shared-lib"
- "../common-modules"
# Directories to exclude from indexing
exclude:
- "vendor"
- "build"
- "node_modules"
# Include files ignored by .gitignore
no_ignore: false所有字段都是可选的。CLI标志覆盖配置文件值。
例子
1C:企业(BSL)项目:
project_type: bsl带有共享库的Monorepo:
project_type: android
roots:
- "../core"
- "../network"包含要跳过的生成代码的项目:
exclude:
- "generated"
- "proto/gen"更新日志
3.41.0
- Codex和Cursor插件打包 --添加了一流的Codex和Cursor清单、回购本地市场、特定于Cursor的项目规则/初始化器命令和验证脚本,使代理打包与发布版本同步。现有的Claude插件负载保持不变。
- 添加
module-route命令 --找到两个模块之间的传递依赖路径。支持最短(BFS)和所有路径(迭代DFS)模式,四种输出格式(text,json,mermaid,dot),边缘类型过滤(--via-kind api|implementation|all),可配置的深度和路径上限,以及挂钟超时保护。接受Gradle样式的模块名称(:core:utils,core/utils,core.utils全部解析到同一模块) - 修复
module-route --all当存在直边时,在大型图上返回“无路径” --DFS按字母顺序迭代每个帧的边,依此类推:app对于许多兄弟姐妹,它可能会在达到按字母顺序排列的较晚目标之前,超过2000毫秒的超时时间来探索诱饵子树。现在,每一帧的边缘都被重新排序,因此任何直接指向的边缘to首先进行处理;在任何深度递归之前记录1步直接路径。由于超时或max_paths,呈现的消息是这样说的(truncated_timeout/truncated_max_paths)而不是误导性的“无依赖路径” - 表面
module-route --all搜索进度和建议--timeout-ms--DFS现在跟踪nodes_visited,edges_explored,max_depth_reached,以及elapsed_mstruncatedtext/JSON输出包括这些,以及一个加倍和夹紧的suggested_timeout_ms因此,用户可以判断搜索是否已用尽时间,并知道下一个要尝试的值。默认--timeout-ms从2000提高到5000,为真正的Android单仓库图提供更多开箱即用的空间 - 双向修剪
module-route --all在大型图形上 --在DFS之前,从以下位置运行反向BFSto计算dist_to[node](从每个节点到to).DFS跳过不在中的任何子项dist_to(无法达到目标)和任何孩子current_depth + dist_to[child] > max_depth(无法在预算范围内完成)。在一个包含1000个模块的Gradle项目中:app展开到约150个直接deps,这将“DFS达到5s超时,不返回任何内容”变为“在\dependencies = wrapper(...) [+ wrapper(...)]*分配块(并行平衡扫描+行注释条),因此从project("...")在注释、字符串文字或无关代码中不能泄漏。每个文件(module_id, dep_id)HashSet保持包装器锚定正则表达式的真实性dep_kind(api/compileOnly/…)当两者在同一边缘发射时。回归测试包括(1)deps(externals) + deps(project, project, project)链条和(2)诱饵project(...)` 注释中的文本和Kotlin字符串文字
3.40.2
- 修复Windows版本构建被树保姆scss 1.0.0破坏的问题 --已发布的crate硬编码
-Wno-unused-parameter在build.rs,哪个MSVCcl.exe拒绝与error D8021: invalid numeric argument,杀死了整个Windows+矩阵构建(从未发布过v3.40.0和v3.40.1版本工件)。Upstream master从2024年4月26日开始进行平台条件修复,但从未剪切1.0.1;固定通孔[patch.crates-io]对该承诺 - 将GitHub操作升级到非弃用版本 —
actions/checkout@v4 → v6,actions/setup-node@v4 → v6,actions/upload-artifact@v4 → v7,actions/download-artifact@v4 → v7.消除Node.js 20弃用警告(Node.js 20将于2026年9月16日从运行程序中删除)
3.40.1
- 解析自定义Gradle DSL
(project(":path"))依赖关系(#33) --以前索引器只识别api/implementation/compileOnly/testImplementation作为依赖配置。可包裹的自定义DSLproject(...)在不同的标识符下(例如Formadeps(project(":foo")),kapt(project(...)),classpath(project(":buildSrc")))被默默地忽略了。Gradle解析器现在接受任何(project(":path"))形式,所以ast-index deps/dependents/module正确覆盖自定义DSL上的Android项目。感谢@AndVl1的修复
3.40.0
- CSS/SCSS/PCSS/语言支持较少 --基于树的解析器
.css,.pcss,.postcss(通过CSS语法),.scss,以及.less已索引:类选择器(.foo),id选择器(#bar),CSS自定义属性(--var),SCSS变量($primary),变量更少(@brand),@mixin/@function/%placeholder(SCSS),.mixin()定义(更少),@keyframes,以及@import/@use/@forward路径。ast-index file自动遍历新的扩展名。FTS5代币化处理$,@,--,%作为分隔符,所以search primary发现$primary和search brand发现@brand - 修复#32:
hierarchy在50时自动截断 —ast-index hierarchy "BaseQueryService"仅按字母顺序返回前50个孩子(例如A→ E) 在125个层次结构中,60%的真实子类在没有警告的情况下丢失。命令现在接受--limit(默认值为200),在显示的切片旁边报告总计数(Children (50 of 125 shown)),并打印黄色Truncated.确切地暗示--limit查看所有结果所需的值
3.39.0
- Zig语言支持 --基于树形图的解析器
.zig和.zon扩展,ProjectType::Zig自动检测通过build.zig/build.zig.zon,集成测试涵盖fn/struct/field/测试块符号提取 - MCP服务器扩展到20个工具 --添加
symbol,class,hierarchy,imports,api,changed,module,deps,dependents,call_tree在原来的10号之上。涵盖了精确的符号查找、文件上下文、模块级导航和代码审查工作流,而不需要多个ast-index命令shell。看docs/mcp-setup.md --walk-up/AST_INDEX_WALK_UP选择加入monorepos --启用后,读取命令更喜欢任何现有的父目录索引,而不是嵌套的项目/VCS标记。当子项目有自己的时很有用.git/Cargo.toml/settings.gradle但共享根级别索引。默认关闭——避免意外扩大父索引(#30)- 修复#25:SQL项目检测 --包含以下内容的文件夹
.sql文件现在报告ProjectType::Sql而不是Unknown,与README所宣传的SQL支持相匹配 - 门控
Time:/Total time:输出落后--verbose—rebuild和update默认情况下不再打印时间线,保持代理输出干净。通过--verbose查看每个阶段的计时 - 数据库模式现已记录在案 --看
docs/db-schema.md对于完整的ER图,设计决策(邻接表与物化路径,为什么refs.nameTEXT不是FK),以及常见的查询模式 - 烟雾测试+基准测试工具 —
scripts/smoke.sh针对发布二进制文件运行六个端到端CLI场景(包括性能预算场景);scripts/check-pr.sh链构建→ 测试→ 烟→ PR前验证的台架编译检查。看docs/smoke-testing.md和docs/benchmarks.md - 基于属性的解析器测试 —
tests/parser_proptest.rs练习5种语言×3个属性(无恐慌/确定性/行边界),每个属性有64个随机案例,使用proptest = "1" - 60+新的集成测试 --横跨
tests/files_command_tests.rs,tests/indexer_detection_tests.rs,tests/management_query_tests.rs,tests/zig_tests.rs,加上涵盖MCP argv调度(20)、格式整形器(15)和根查找逻辑(15)的内联单元测试 - 贡献者指南 —
CLAUDE.md回购根和七条重点规则.claude/rules/(架构、命令、解析器、提交、测试、发布、验证)为AI编码代理的代码库提供了一致的规范。三个代理配置文件.claude/agents/(bug修复、研究、审查)对可重用的工作流进行编码
3.38.1
- 修复额外根下搜索输出中的模糊路径 --何时
add-root指向主要项目之外,search/symbol/class/implementations/refs/hierarchy/usages仅打印存储的相对路径(例如。src/main/java/.../BClass.java)没有指示哪个根拥有它。代理默认使用主项目,无法打开该文件。现在,当配置了任何额外的根时,通过探测磁盘上的每个根(先是主根,然后是额外根),将索引支持的结果解析为绝对路径。单根输出不变
3.38.0
- 修复
update清除额外根目录下的文件 —update_directory_incremental只遍历主根,每次运行时将所有额外的根文件标记为已删除。现在行走初级+每extra_root根据元数据,计算每个根的相对路径以进行匹配rebuild的存储方案。在一个111k文件的项目中,每删除一个85k文件update
3.37.1
- 子项目模式现在对模块、deps、XML布局、资源、故事板和资产进行索引 --以前
cmd_rebuild_sub_projects仅索引源文件,默默跳过模块检测、依赖关系图、Android XML/资源和iOS故事板/资产。现在,所有从子项目漫游中收集的构建文件、布局文件和资产目录都在主循环后进行处理,与单个项目重建的行为相匹配 ya.make在项目类型检测中得到认可 --目录与ya.make(并且没有其他构建系统标记)现在被检测为C++项目,而不是Unknown,从而改善了monorepo子项目中特定类型的行为
3.37.0
outline现在所有语言都使用树形图 --Perl、Python、Go、C++、Kotlin以前使用过正则表达式回退,但结果不准确。现在,通过用于索引的相同树型解析器进行路由,并通过以下方式进行通用回退FileType::from_extension涵盖约30种语言。outline仍然可以在没有数据库的情况下工作,动态解析文件(每个文件约5-50ms,例如1806行Kotlin文件,包含1298个符号→ 47ms)- python
import X as Y现已编入索引 —refs以前错过import sqlalchemy as sa同时发现from sqlalchemy import orm.Tree sitter查询扩展为同时发出原始模块名称和别名Import符号 ya.make构建系统支持:
- ya.make 在单目录遍历过程中被识别为模块标记的文件 - 模块键使用相对于外部存储库根的路径,以便 PEERDIR(...) 条目(与回购根相关)可以通过文字查找进行匹配 - PEERDIR(...) 解析器处理具有空格分隔路径的单行和多行块,发出具有 dep_kind=peerdir
- Python依赖关系解析
pyproject.toml/setup.py:
- [project] dependencies = [...] (第621页) - [tool.poetry.dependencies] (跳过 python 外部封装,仅匹配内部模块) - install_requires=[...] 在 setup.py/setup.cfg - 剥离PEP 508版本说明符、附加项和标记,仅获取包名称 - 在真实的Python项目上验证:检测到126个模块/267个deps
- Dep索引在Android上不再受限制 --the
Indexing module dependencies...该步骤仅在检测到项目为Android时运行,默默跳过Java/Python/ya.make monorepos。现在,无论构建系统如何,只要索引中有任何模块,都会运行 includeconfig现在总是通过作用域路径路由 --以前ainclude仅当触发自动切换到子项目模式时(≥2个子项目和≥65k文件),才允许列表生效。小型项目includeset掉到了主干上,主干穿过了整个根,默默地忽略了过滤器。现在include始终强制只对列出的目录进行范围行走,并使用清晰的Honoring include config (N paths)消息- 嵌套
include路径现在确实有效 --以前include: [smart_devices/tools/burn_data]将扩展到最高级别smart_devices/目录(因为find_sub_projects仅按名称匹配直接子目录)。一个300路径的配置最终对整个树进行了索引,因为每个条目都与外部目录匹配。现在,每个包含条目都按原样获取,并成为其自己的作用域根--cmd_rebuild_sub_projects完全按照列出的路径行走,没有更宽的路径。子项目显示对嵌套条目使用相对路径 .h文件路由 —detect_h_file_objc晋升为pub所以outline可以使用与索引相同的ObjC/C++自动检测
3.36.2
- 发布版本检查
3.36.1
watch命令:按项目分组以防止重复的观察者
3.36.0
- Monorepo排除/包括支持:
- exclude config现在在子项目模式下工作——以前在自动切换到子项目时被默默忽略 - exclude 现在使用完整的gitignore语法(*, **, ?,基于路径的模式,如 proto/gen) - 额外的根现在用索引 exclude 筛选器(丢失) - 新 include 允许列表 .ast-index.yaml --只索引匹配的目录,跳过其他所有内容。非常适合需要少量dirs的大型monorepos - 新CLI标志: --include, --exclude, --path 为了 rebuild 命令
3.35.0
- BSL修复 (第19期,作者@colegero):
- 模块索引 --1C模块现在已从目录路径中提取(CommonModules/X/ → X, Documents/Y/ → Документ.Y等),修复 Modules: 0 在1C配置上。支持35+1C元数据集合。 - outline 对于BSL文件 --路线 .bsl/.os 到树型解析器(又回到了Kotlin正则表达式→ 未找到符号) - 查询计划优化 --附加综合指数 idx_refs_name_file_line +早期物化 find_references 通过子查询。大型BSL数据库(1200多万参考文献) usages/callers 从30s超时到\> 正确,而不是从内部断裂 >`
inject支持@Autowired —inject命令搜索两者@Inject和@Autowired注释(Spring DI)- 部分匹配
implementations—implementations "Service"现在找到以下实现UserService,PaymentService等。通过包含与相关性排名的匹配 - 重叠验证
add-root--在项目根目录或其父目录中添加根目录时发出警告;使用--force覆盖
3.18.0
- 专用Java解析器 --Java文件现在使用
tree-sitter-java而不是通过Kotlin解析器路由;索引类、接口、枚举、方法、构造函数、字段和Spring注释(@RestController,@Service,@GetMapping等等) - Maven模块支持 —
pom.xml文件被识别为模块描述符; `提取为模块名称,` 与本地模块匹配的条目 - 改进了Java的调用树 --正则表达式模式现在可以检测Java风格的方法定义(
void methodName(,String methodName(),this.method()和super.method()呼叫模式 - 更新技能文档 --添加了Java/Spring示例,Maven支持说明,删除了不正确的通配符语法
3.17.5
- 无标记文件 --已删除
.ast-index-root标记;通过缓存中的现有索引数据库检测到项目根目录(项目目录中没有文件)
3.17.4
- 目录范围搜索 --从子目录运行时,结果会自动限制在该子树中
3.17.3
--threads/-j重建标志 --控制并行线程(例如。-j 32对于I/O成为瓶颈的网络文件系统)
3.17.2
- 修复FUSE挂起自动检测 —
quick_file_count不再统计.gitignore/.arcignore每个目录,这会导致FUSE挂载的存储库挂起
3.17.1
--verbose重建标志 --每个步骤(遍历、解析、数据库写入、锁定、模块、deps)的详细计时日志,用于诊断性能问题- 移除
init命令 —rebuild从头开始创建DB,init是多余的 - SQLite并发安全 —
busy_timeout = 5000ms防止“数据库锁定”错误;文件锁可防止在同一项目上进行并发重建
3.17.0
- 自动子项目模式 —
rebuild当目录有65K+个源文件和2+个子项目目录时,自动切换到子项目索引 --sub-projects旗帜 --大型monorepos的显式子项目模式,将每个子目录分别索引到一个共享数据库中- 扩展的VCS支持 --尊重
.gitignore和.arcignore在monorepos没有.git目录
3.16.3
- FTS5前缀搜索修复 —
search不再在以下查询中崩溃SlowUpstream;前缀*操作员现在正确地放置在FTS5报价之外 - 扩展的VCS支持 —
rebuild/search/grep现在尊重.gitignore和.arcignore在非git monorepos中,防止大型代码库挂起 - 模糊搜索修复 —
--fuzzyflag现在返回所有匹配结果(精确+前缀+包含),而不是仅在精确匹配时提前返回
3.16.0
restore命令 --从a还原索引.db文件:ast-index restore /path/to/index.db
3.15.0
- TypeScript类成员 --索引类方法(构造函数、getter/setter、静态、异步)、字段/属性、私有
#members和抽象方法;正确排除对象文字方法
3.14.0
map命令 --紧凑型项目概述:按大小和符号种类计数的顶级目录;--module用于深入了解类和继承conventions命令 --从索引代码库中自动检测架构模式、框架和命名约定refs命令 技能记录
3.13.4
- Android索引性能 --消除4个冗余的文件系统遍历
rebuild;XML布局文件、在main walk中收集的资源文件、从DB查询的代码文件使用情况
3.13.3
- iOS索引性能 --消除3次冗余的文件系统遍历
rebuild;故事板/xib文件和.xccassets目录现在收集在主行走中,swift文件资产使用情况从DB查询,而不是第四次行走
3.13.2
- 修复
rebuild失去多余的根 —add-root路径现在被保留下来rebuild(之前已与DB一起删除)
3.13.1
- 修复插件技能发现 --添加
"skills"字段到plugin.json,修复调用时出现的“未知技能:ast-index”错误/ast-index
3.13.0
- Scala语言支持 --类、case类、对象、trait、enum(Scala 3)、def、val/var、类型别名的树型解析器,给定
- 巴泽尔项目检测 —
WORKSPACE,WORKSPACE.bazel,MODULE.bazel作为项目根标记 - 在非Android/iOS项目上重建速度提高4倍 --当没有平台标记时跳过XML布局、故事板、iOS资产、CocoaPods阶段(309秒→ 83有83k个文件)
- Git默认分支检测 --正确解析
origin/trunk,origin/develop来自符号ref,而不仅仅是main/master
3.12.0
- 12种语言的树型AST解析 --将基于正则表达式的解析器替换为Kotlin、Java、Swift、ObjC、Python、Go、Rust、Ruby、C#、C++、Dart、Proto和TypeScript的树型解析器。解析现在基于真实的AST而不是正则表达式启发式算法——更准确的符号提取、对嵌套结构的正确处理和更少的误报
- 分组
--help输出 --命令分为8个逻辑类别(索引管理、搜索和导航、模块命令、代码模式、Android、iOS、Perl、项目配置),而不是简单的字母列表 - 更新项目说明 --“多语言项目的快速代码搜索”
3.11.2
- 修复
watch大型项目指挥 --从kqueue切换到FSEvents(macOS)/inotify(Linux),修复了“打开的文件太多”错误
3.11.1
- 修复
changed命令 --自动检测默认git分支(origin/main或origin/master) - 修复
api命令 --接受带圆点的模块名称(例如。module.name→module/name) - 更新技能文档 --添加
--format json,unused-symbols,watch,多根命令
3.11.0
- 快10倍
unused-deps--用基于索引的SQL查询替换文件系统扫描(WalkDir+read_to_string)refs桌子。core模块(225个deps)现在可以在大约6秒内完成,而不是60秒+超时 - 固定传递依赖逻辑 --正确检查
transitive_deps表(api链可达性)而不是重新扫描符号 - 多VCS支持
changed--自动检测VCS,自动选择基本分支(trunk对于电弧,origin/main对于git),规范化origin/前缀 - 从初始化命令中删除技能复制 —
/initialize-*不再将技能文件复制到项目目录
3.10.4
- 大型项目索引速度提高2.6倍 --修复Dart解析器为每个类声明分配行向量的问题
3.10.2
- 修复
changed命令 --使用merge-base而不是直接显示差异,仅显示当前分支的变化 - 多VCS支持 --自动检测电弧与git,使用正确的VCS命令
3.10.1
- 修复索引挂在大型monorepos上的问题 --禁用符号链接跟踪,添加最大深度限制
- 扩展排除目录 --添加
bazel-out,bazel-bin,buck-out,out,.metals,.dart_tool以及更多 - 更好的进度报告 --在每个块后输出,而不是每4个块后输出
- GitHub操作发布工作流 --darwin-arm64、darwin-x8664、linux-x8664和windows-x8664的自动构建
3.10.0
- 飞镖/颤振支撑 --索引和搜索Dart/Flutter代码库
- 带有Dart 3修饰符的类: abstract, sealed, final, base, interface, mixin class - 混合物: mixin Foo on Bar - 扩展和扩展类型(Dart 3.3) - 增强型枚举 with/implements - 函数、构造函数、工厂构造函数 - 取/放、类型定义、属性 - 进口/出口 - 多行类声明 - 文件类型: .dart
- 20项新测试 --Dart解析器的全面测试覆盖率
3.9.3
- 简化插件安装 —
install-claude-plugin现在呼叫claude plugin marketplace add和claude plugin install而不是手动复制文件 - 更新README --插件安装说明现在使用官方
claude pluginCLI命令
3.9.2
- 修复大型项目上的OOM崩溃 (70K+个文件)
- 批处理索引:以500个文件为单位解析并写入数据库,而不是将所有内容加载到内存中 - 限制人造丝线池,最多8条线,以限制峰值内存 - 跳过大于1 MB的文件(压缩/生成的代码) - 跳过ref解析器中超过2000个字符的行 - 将ref上下文截断为500个字符(不受限制——压缩的JS行导致12GB以上的数据库) - 将SQLite缓存从64 MB减少到8 MB
- 硬编码目录排除 --始终跳过
node_modules,__pycache__,build,dist,target,vendor,.gradle,Pods,DerivedData,.next,.nuxt,.venv,.cache等等,不管.gitignore - 新项目类型检测 --前端(
package.jsonpythonpyproject.toml)去吧(go.mod),生锈(Cargo.toml) - LazyLock正则表达式 --通过缓存的所有146个正则表达式编译
std::sync::LazyLock(正在按文件重新编译)
3.9.1
- 性能修复 --基于grep的命令现在使用提前终止
- 命令如下 deeplinks, todo, callers 等发现后停止扫描 limit 结果 - 在大型代码库(29k文件:4-35s)上,速度提高了100-1000倍→ 10-50ms)
3.9.0
- Types/JavaScript支持 --索引和搜索网络项目
- React:组件、钩子(useXxx)、JSX/TSX - Vue:SFC脚本提取,定义组件 - Svelte:组件道具提取 - NestJS/Angular:装饰器(@Controller,@Injectable,@Component) - Node.js:ES模块,CommonJS - 文件类型: .ts, .tsx, .mts, .js, .jsx, .mjs, .cjs, .vue, .svelte
- Rust支持 --索引和搜索Rust代码库
- 结构、枚举、特征、impl块 - 函数、宏、类型别名 - 导出属性跟踪 - 文件类型: .rs
- Ruby支持 --索引和搜索Ruby/Rails代码库
- 类、模块、方法 - RSpec DSL(描述、it、let、上下文) - Rails:关联、验证、作用域、回调 - 文件类型: .rb
- C#支持 --索引和搜索。NET项目
- 类、接口、结构、记录 - ASP。NET:控制器、HTTP属性 - Unity:单一行为,序列化字段 - 文件类型: .cs
- 探索代理 --深度代码调查与确认
- 审核代理 --变更分析与影响评估
- 63测试 --所有解析器的全面测试覆盖率
3.8.5
- 文档 --为brew安装合并冲突错误添加了故障排除部分
3.8.2
- 插件改进
- 添加了C++、协议缓冲区和WSDL/XSD参考文档 - 在SKILL.md中添加了“关键规则”部分,以更好地集成Claude - 立即初始化命令,将技能文档复制到项目中 .claude/ 目录 - 更新了插件描述,以包括所有支持的语言
3.8.1
- 搜索命令修复 —
-l/--limit参数现在正确地限制了文件结果 - 内容搜索 —
search命令现在还可以搜索文件内容(而不仅仅是文件名和符号)
3.8.0
- Python支持 --索引和搜索Python代码库
- 指标: class, def, async def,装饰师 - 进口: import module, from module import name - 文件类型: .py - outline 和 imports 命令用于Python文件
- Go支持 --索引和搜索Go代码库
- 指标: package, type struct, type interface, func,接收器的方法 - 导入:单个导入和导入块 - 文件类型: .go - outline 和 imports 命令适用于Go文件
- 演出 —
deeplinks命令速度提高200倍(优化模式)
3.7.0
- 调用树命令 --显示向上的完整呼叫层次结构(谁呼叫呼叫者)
- ast-index call-tree "functionName" --depth 3 --limit 10 - 适用于Kotlin、Java、Swift、Objective-C和Perl
- --无忽略标志 --索引gignored目录,如
build/
- ast-index rebuild --no-ignore - 可用于查找生成的代码,如 BuildConfig.java
3.6.0
- Perl支持 --索引和搜索Perl代码库
- 指标: package, sub, use constant, our 变量 - 继承: use base, use parent, @ISA - 文件类型: .pm, .pl, .t, .pod - 新命令: perl-exports, perl-subs, perl-pod, perl-tests, perl-imports - Grep命令现在搜索Perl文件: todo, callers, deprecated, annotations - imports 命令现在解析Perl use/require 陈述 - 作为模块索引的Perl包 module 命令 - 项目检测: Makefile.PL, Build.PL, cpanfile
3.5.0
- 重命名为ast索引 --项目重命名自
kotlin-index
- 新CLI命令: ast-index (是 kotlin-index) - 新的自制水龙头: defendend/ast-index (是 defendend/kotlin-index) - 新回购: Claude-ast-index-search (是 Claude-index-search-android-studio)
3.4.1
- 修复iOS中基于grep的命令 --6个命令现在可以在Swift/ObjC中使用:
- todo --在.swift/.m/.h文件中搜索 - callers --支持Swift函数调用模式 - deprecated --支持 @available(*, deprecated) 语法 - annotations --在Swift/ObjC文件中搜索(@ObjC、@IBAction等) - deeplinks --添加iOS模式(openURL、CFBundleURLSchemes、NSUserActivity) - extensions --支持Swift extension Type 语法
3.4.0
- iOS故事板/xib分析 —
storyboard-usages在故事板和xibs中查找类用法的命令 - iOS资产支持 --索引和搜索xcassets(图像、颜色),
asset-usages命令与--unused旗帜 - SwiftUI命令 —
swiftui用于查找@State、@Binding、@Published、@ObservedObject属性的命令 - 快速并发 —
async-funcs对于异步函数,main-actor@MainActor用法 - 结合支持 —
publishers查找PassthroughSubject、CurrentValueSubject、AnyPublisher的命令 - 可可豆/迦太基 --检测并索引Podfile和Cartfile中的依赖关系
3.3.0
- iOS/Swift/ObjC支持 --自动检测项目类型并索引Swift/ObjC文件
- Swift:类、结构、枚举、协议、actor、扩展、func、init、var/let、typealias
- ObjC:@接口、@协议、@实现、方法、@属性、typedef、类别
- 从Package.swift(.target、.testTarget、.binaryTarget)检测SPM模块
- Swift/ObjC的继承和协议一致性跟踪
3.2.0
- 添加
xml-usages命令--查找XML布局中的类用法 - 添加
resource-usagescommand--查找资源使用情况(可绘制、字符串、颜色等) - 添加
resource-usages --unused--在模块中查找未使用的资源 - 更新
unused-deps具有传递依赖性检查(通过api-deps) - 更新
unused-deps带有XML布局使用检查 - 更新
unused-deps具有资源使用检查功能 - 新标志:
--no-transitive,--no-xml,--no-resources,--strict - 索引XML布局(在大型Android项目中使用5K+)
- 索引资源(63K+资源,15K+使用量)
- 构建可传递依赖缓存(11K+个条目)
3.1.0
- 添加
unused-deps命令--查找未使用的模块依赖项 - 模块依赖关系现在默认索引(使用
--no-deps跳过)
3.0.0(生锈)
- 重大发布 --完成Rust重写,替换Python版本
- 33个命令中有26个比Python快
- 最高加速:进口(260倍),家属(100倍),deps/class(90倍)
- 完整索引,参考文献超过90万
- 固定的
hierarchy多行类声明 - 固定的
providesJava支持和后缀匹配
Python版本(1.0.0-2.5.2)
旧Python代码存档于 legacy-python-mcp/ 文件夹2.5.2
- 项目特定数据库:每个项目现在都有自己的索引数据库
2.5.1
- 使用ripgrep进行基于grep的搜索,速度提高10-15倍
2.5.0
- 添加
composables,previews,suspend,flows命令
2.4.1
- 修复
callers,outline,api命令
2.4.0
- 添加
todo,deprecated,suppress,extensions,api,deeplinks命令
2.3.0
- 添加
callers,imports,provides,inject命令
2.2.0
- 添加
hierarchy,annotations,changed命令
2.1.0
- 修复
class命令,添加update命令
2.0.0
- pip包、带typer+丰富的CLI、克劳德代码技能、MCP服务器
1.2.0
- Java支持(树型Java),查找用法,查找实现
1.1.0
- 增量索引,更好的模块检测
1.0.0
- 初始版本:文件/符号/模块搜索,MCP服务器
许可证
麻省理工学院
