为您的AI助手提供对Elixir和Python代码库的结构化访问。
</div>Python支持处于测试阶段 – 完整的代码智能功能,自动检测语言。即将支持TypeScript。
传统的AI助手将你的仓库视为一堆文本。这会导致:
CICADA是一个MCP服务器,它为Elixir和Python(测试阶段)提供了AST级别的知识:
verify_credentials/2或AuthService.check(),你也可以通过“认证”来查找。结果: 在我们的比较中,同样的问题从3,127个令牌 / 52.8秒减少到550个令牌 / 35秒,并且答案正确。
# 1. 安装uv(如果需要)
# curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install cicada-mcp
# 在你的仓库中
cicada claude # 或者:cicada cursor, cicada vs, cicada gemini, cicada codex, cicada opencode
<div align="left">
<summary><strong>在永久安装前试用</strong></summary>
按需运行CICADA(索引质量较差,但无需安装)。
uvx cicada-mcp claude # 或者 cursor, vs
或者
claude mcp add uvx cicada-mcp
gemini mcp add uvx cicada-mcp
codex mcp add uvx cicada-mcp
使用编辑器内置的MCP管理来安装CICADA。
</details> </div>安装后可用的命令:
cicada [claude|cursor|vs|gemini|codex|opencode] - 每个项目的一键交互式设置cicada-mcp - MCP服务器(由编辑器自动启动)cicada watch - 监控文件更改并自动重新索引cicada index - 使用自定义选项重新索引代码(-f/--force + --fast/--regular/--max, --watch)cicada index-pr - 索引拉取请求以进行PR归属cicada find-dead-code - 查找可能未使用的函数cicada link [parent_dir] - 将当前仓库链接到现有的索引cicada clean - 完全移除cicada集成及其所有设置询问您的助手:
# Elixir
"显示MyApp.User中的函数"
"authenticate/2在哪里被调用?"
# Python
"显示AuthService类的方法"
"login()在代码库中哪里被使用?"
# 两种语言
"找到与API认证相关的代码"
gh和您现有的OAuth令牌。~/.cicada/projects/<repo_hash>/
├─ index.json # 模块、函数、调用位置、元数据
├─ config.yaml # 索引选项 + 关键词层级
├─ hashes.json # 增量索引缓存
└─ pr_index.json # 可选的PR元数据 + 审查
您的仓库只会获得一个编辑器配置(.mcp.json, .cursor/mcp.json, .vscode/settings.json, .gemini/settings.json, .codex/mcp.json, 或 .opencode.json)。一次将CICADA接入您的编辑器,每次助手会话都会继承上下文。
cd /path/to/project
cicada claude # 或 cicada cursor / cicada vs / cicada gemini / cicada codex / cicada opencode
brew install gh # 或 apt install gh
gh auth login
cicada index-pr . # 增量
cicada index-pr . --clean # 完全重建
解锁诸如“哪次PR引入了第42行?”或“关于billing.ex的审查意见是什么?”等问题。
启用文件更改时的自动重新索引,通过带有--watch标志启动MCP服务器:
** .mcp.json**
{
"mcpServers": {
"cicada": {
"command": "cicada-mcp",
"args": ["--watch"],
"env": {
"CICADA_CONFIG_DIR": "/home/user/.cicada/projects/<hash>"
}
}
}
}
当监视模式启用时:
.ex, .exs(Elixir)和.py(Python)文件的变化deps, _build, node_modules, .git, assets, priv, .venv, venv注意: 语言检测是自动的 – CICADA会自动检测Elixir(mix.exs)和Python(pyproject.toml)项目。
| 命令 | 目的 | 运行时机 |
|---|---|---|
cicada claude | 配置MCP + 增量重新索引 | 第一次设置,本地更改后 |
cicada watch | 监控文件并自动重新索引 | 开发活跃期间 |
cicada index --force --regular . | 完全重建,带语义关键词 | 大规模重构或启用AI层级后 |
cicada index-pr . | 同步PR元数据/审查 | 新PR合并后 |
cicada find-dead-code --min-confidence high | 列出未使用的公共函数 | 清理冲刺 |
先运行索引器:
cicada index /path/to/project
确保索引成功完成。检查~/.cicada/projects/<hash>/index.json。
使用代码中出现的确切模块名称(例如,MyApp.User,而不是User)。
如果模块最近添加,请重新索引:
cicada index .
</details>
<details>
<summary><b>MCP服务器无法连接</b></summary>
故障排查清单:
验证配置文件存在:
# 对于Claude Code
ls -la .mcp.json
# 对于Cursor
ls -la .cursor/mcp.json
# 对于VS Code
ls -la .vscode/settings.json
检查路径是否为绝对路径:
cat .mcp.json
# 应该包含:/absolute/path/to/project
# 不应为:./project 或 ../project
确保索引存在:
ls -la ~/.cicada/projects/
# 应该显示您的项目的目录
完全重启编辑器(不仅仅是重新加载窗口)
检查编辑器MCP日志:
设置GitHub CLI:
# 安装GitHub CLI
brew install gh # macOS
sudo apt install gh # Ubuntu
# 或访问 https://cli.github.com/
# 认证
gh auth login
# 索引PR
cicada index-pr
常见问题:
cicada index-pr .强制重建:
cicada index-pr --clean
</details>
<details>
<summary><b>关键词搜索不起作用</b></summary>
错误: “关键词搜索不可用”
原因: 索引是在没有关键词提取的情况下构建的。
解决方案:
# 使用关键词提取重新索引
cicada index . # 或 --fast 或 --max
验证:
cat ~/.cicada/projects/<hash>/config.yaml
# 应该显示 keyword_extraction: enabled
</details>
更多详情:docs/PR_INDEXING.md,docs/08-INCREMENTAL_INDEXING.md。
<details> <summary><b>Python索引(测试阶段)</b></summary>需求:
首次设置: CICADA会在第一次索引时自动通过npm安装scip-python。这可能需要一分钟。
已知限制(测试阶段):
性能提示:
# 确保 .venv 被排除
echo "/.venv/" >> .gitignore
# 使用 --fast 层级进行更快的索引
cicada index --fast .
报告问题: GitHub Issues 标签为“Python”
</details>CICADA提供了7种专注于MCP工具,旨在高效地探索Elixir和Python(测试阶段)代码库。
| 需求 | 工具 | 备注 |
|---|---|---|
| 开始探索 | query | 🚀 从这里开始 - 智能发现,关键词/模式 + 过滤器(范围、近期、路径) |
| 查看模块的完整API | search_module | 函数、签名、规格、文档。使用what_calls_it/what_it_calls进行双向分析 |
| 查找函数的使用位置 | search_function | 定义 + 所有调用位置。支持通配符(*)和OR(|)模式 |
| 跟踪git历史 | git_history | 统一工具:blame、提交、PR、函数演变(取代4个旧工具) |
| 查找死代码 | find_dead_code | 识别潜在未使用的函数,具有信心级别 |
| 深入结果 | expand_result | 自动展开查询结果中的模块或函数 |
| 高级索引查询 | query_jq | 为高级用户定制jq查询 |
想看看这些工具的实际操作吗? 查看完整工作流程示例以及专业技巧和现实场景。
query - 智能代码发现(您的起点)
scope(公开/私有),recent(最近14天),filter_type(模块/函数),match_source(文档/字符串)path_pattern按位置过滤search_module - 深度模块分析
what_calls_it=true → 查看谁使用这个模块(影响分析)what_it_calls=true → 查看这个模块依赖什么MyApp.*,Python:api.handlers.*)和OR模式(MyApp.User|MyApp.Post)search_function - 函数使用追踪
what_calls_it=true(默认)→ 查看所有调用者what_it_calls=true → 查看所有依赖项include_usage_examples=trueusage_type过滤:源码、测试或全部git_history - 所有git操作在一个工具中
git_history("file.ex", start_line=42) → blame + PRgit_history("file.ex", start_line=40, end_line=60) → 分组blamegit_history("file.ex", function_name="create_user") → 演变git_history("file.ex") → 所有PR/提交recent=true(14天内),recent=false(超过14天),recent=null(全部)author="john"expand_result - 从查询结果深入
search_module和search_function的便捷包装find_dead_code - 代码清理分析
@impl函数query_jq - 高级索引查询
| schema发现架构详细参数 + 输出格式:MCP_TOOLS_REFERENCE.md。
所有工具返回结构化的Markdown/JSON片段(签名、调用位置、PR元数据),而不是完整的文件,使提示更简洁。