用途:在已接入 SymDex 的仓库中查找、追踪和理解代码,避免大范围浏览文件,用精确检索替代整文件扫描以节省 token。
主要能力:覆盖 21 种语言表面,包括 Python、Go、Kotlin、Dart、Swift、HTML、CSS、Shell、Vue/Svelte 脚本块,以及 Markdown 标题和受支持的围栏代码块。支持路由提取(Python、JavaScript/TypeScript、Spring/Kotlin、Laravel、Gin 风格 Go、ASP.NET、Rails/Sinatra、Phoenix、Actix)。MCP 提供 21 个工具,如 search_symbols、semantic_search、search_text、build_context_pack、get_symbol、get_file_outline、get_callers、get_callees、search_routes、get_index_status、get_repo_stats、list_repos、gc_stale_indexes 等。结果含 quality 字段(confidence、freshness、parser mode、语言表面、生成文件提示、embedding 可用性),并输出 roi、roi_summary、roi_agent_hint 以提示 token 节省。
使用方式:先确认 repo id(未知时用 list_repos 匹配当前工作树),用 get_index_status 检查新鲜度,未索引则 index_folder(path=".")。已知 repo 时每次调用都传 repo。宽泛的功能、API、文档或缺陷调查问题先用 build_context_pack;窄查询用 search_symbols、semantic_search 或 search_text,再收窄到 get_symbol 或 get_file_outline。追踪调用关系用 get_callers/get_callees,查路由用 search_routes。编辑时先定位符号,只读该文件或符号片段,做最小改动。
适用场景:定位函数/类/方法、按意图找代码、追踪调用链、查找 HTTP 路由、生成仓库概览、为文档或缺陷调查收集证据。
限制:SymDex 不可用、仓库无法索引、文件类型不受支持或为生成内容、需要符号级响应之外的上下文时,才回退到普通文件读取。semantic_search 无 embedding 时回退到 search_symbols 或 search_text。symdex watch 默认仅刷新结构索引,需持续刷新语义 embedding 时用 symdex watch --embed;托管模型延迟或 RPM 受限时用 symdex index --lazy 并设置 SYMDEX_EMBED_RPM。状态默认在全局 ~/.symdex,也可用工作区本地 ./.symdex。SymDex 是证据检索工具,不能单独作为结论证明,需检查 quality 字段后再下判断。