用途
CICADA(Code Intelligence: Contextual Analysis, Discovery, and Attribution)的目标是解决 AI 代码助手进行“盲目搜索”的问题:直接用 Grep 会把整个文件内容塞进上下文,而用户可能只需要一个函数签名,从而挤占模型用于推理的空间。CICADA 通过 AST 级索引,为 AI 助手提供结构化、预索引的代码知识,让上下文更紧凑、token 消耗更低。
重要提示:官方仓库中明确标注警告——当前 AI 智能体的工作方式已与项目构想时不同,在前沿模型的最新基准测试中,使用代码智能工具几乎没有优势。CICADA 已停止维护,作者建议不要使用该工具或其他任何“代码智能”工具。
主要能力
- AST 级索引:记录模块、函数、类的定义,包含签名、spec 和文档。
- 多语言支持:Elixir、Python、TypeScript、JavaScript、Rust、Go、Java、Kotlin、Scala、C/C++、Ruby、C#、Visual Basic、Dart、PHP、Erlang(beta)等 17 种以上语言。
- 完整调用点追踪:跨语言处理别名、导入和动态引用。
- 语义搜索:支持关键词提取或嵌入(Ollama 集成)按概念查找代码。
- Git 与 PR 归因:呈现代码存在的原因,而不仅是内容。
- 依赖分析:双向追踪(谁调用了它、它调用了谁)。
- 自动语言检测:可在多语言代码库中无缝工作。
使用方式
通过编辑器内置的 MCP 管理安装 CICADA。安装后可用命令包括:
cicada [claude|cursor|vs|gemini|codex|opencode|zed]:按项目一键交互式设置。cicada-mcp:MCP 服务器(由编辑器自动启动)。cicada serve:启动 REST API 服务器,通过 HTTP 访问所有 MCP 工具。cicada status:显示索引状态、PR 索引、链接状态、agent 文件、MCP 配置。cicada stats [repo]:显示使用统计(工具调用、token、执行时间)。cicada watch:监视文件变更并自动重新索引。cicada index:使用自定义选项重新索引代码(-f/--force、--keywords、--embeddings、--watch)。cicada index-pr:为 PR 归因索引拉取请求。cicada run [tool]:直接从 CLI 执行 7 个 MCP 工具中的任意一个。cicada agents install:将 Claude Code agents 安装到./.claude/目录。cicada link [parent_dir]:将当前仓库链接到已有索引。cicada clean:完全移除 CICADA 集成及所有设置。
MCP 工具
CICADA 面向 Elixir、Python 和 Erlang 代码库提供 7 个专用 MCP 工具:
query:智能代码发现入口,自动区分关键词与模式,支持 scope、recent、filter_type、match_source 等过滤,返回片段并给出下一步建议,可用path_pattern按位置过滤。search_module:深度模块分析,查看函数、签名、spec、文档;Python 显示类及方法数量与签名,Elixir 显示带 arity 的函数;支持what_calls_it=true(影响分析)和what_it_calls=true(依赖分析),支持通配符与 OR 模式,可按可见性过滤。search_function:函数使用追踪,查找定义与所有调用点,默认what_calls_it=true查看调用者,what_it_calls=true查看依赖,可用include_usage_examples=true包含代码示例,按usage_type过滤 source/tests/all。git_history:统一 Git 操作,支持单行 blame+PR、行范围分组 blame、按函数名追踪演进、文件历史,支持 recent 时间过滤和 author 过滤,自动集成 PR 索引。expand_result:从查询结果下钻,自动识别模块或函数,显示完整详情与用法示例。query_jq:对索引执行高级 jq 查询,支持 schema 发现、compact/pretty 输出、大结果抽样。
所有工具返回结构化 Markdown/JSON 片段(签名、调用点、PR 元数据),而非完整文件。v0.5.1 起默认使用紧凑输出以最小化 token,可用 verbose=true 获取完整文档与 spec。
隐私与安全
- 100% 本地:解析与索引在用户机器上完成,无外部访问。
- 无遥测:不收集使用情况或任何遥测数据。
- 只读工具:MCP 端点只读取索引,不能修改仓库。
- 可选 GitHub 访问:PR 功能依赖
gh和用户已有的 OAuth token。 - 数据布局:
~/.cicada/projects/<repo_hash>/下包含index.json、config.yaml、hashes.json、pr_index.json。仓库中只会新增编辑器配置(.mcp.json、.cursor/mcp.json、.vscode/settings.json、.gemini/settings.json、.codex/mcp.json或.opencode.json)。
适用场景
适合希望以本地优先方式为 AI 助手提供丰富 Git 上下文(PR 归因、blame、函数演进追踪)并优化 token 使用的 Elixir 或 Python 等代码库。官方对比说明:需要基于 LSP 的代码编辑能力且可接受更高资源占用时可选 Serena;Elixir 项目且偏好 LLM 语义摘要时可选 Codicil。
限制与注意事项
- 项目已停止维护,作者明确建议不要使用。
- Erlang、Java/Kotlin/Scala、C#/Visual Basic 支持标记为 Beta 或开发中;生产就绪语言为 Elixir(tree-sitter)、Python(SCIP)、TypeScript(SCIP)、JavaScript(SCIP)。
- Python 首次索引可能比 Elixir 慢(需 SCIP 生成步骤),大型
.venv会自动排除,部分动态 Python 模式可能无法捕获。 - 关键词搜索需在索引时启用关键词提取,否则报“Keyword search not available”。
- PR 功能需配置 GitHub CLI;首次索引会拉取所有 PR,可能较慢并受 GitHub API 速率限制。
- Watch 模式仅监视
.ex、.exs(Elixir)和.py(Python)文件,排除deps、_build、node_modules、.git、assets、priv、.venv、venv。