Serena 代码语义工具
Serena 是一个开源的 MCP 工具包,为 AI 编程助手提供 IDE 级别的代码语义能力。与基于文本搜索的工具不同,Serena 通过语言服务器协议(LSP)或 JetBrains 分析引擎,提供符号级的操作——让 Claude Code 像开发者在 IDE 中一样理解、导航和修改代码。
为什么需要 Serena
Claude Code 默认使用 Grep、Glob、Read 等文本搜索工具来理解代码。这种方式在简单任务中没问题,但在复杂的重构和跨文件操作中会遇到瓶颈:
- 重命名不精确:文本替换会误改注释、字符串和无关同名符号
- 引用查找困难:找到一个函数的所有调用者需要多次工具调用
- 重构风险高:移动符号、内联函数等操作没有语义感知,容易破坏代码
- Token 浪费:每次读取整个文件来理解一个函数,上下文效率低
Serena 通过 LSP 提供原子化的语义操作——一次调用完成精确重命名、安全删除、符号级编辑,比文本搜索更可靠、更高效。
Serena vs 文本搜索对比:
- 文本搜索:重命名
UserService.authenticate()需要 grep 所有文件 → 逐个检查 → 手动替换 → 可能误改 - Serena:一次
rename_symbol调用,LSP 精确找到所有引用,原子化替换 :::
架构
Serena 由两层组成:
-
语言后端:提供代码语义理解
- LSP 后端(免费/开源,默认):支持 40+ 种语言(Python、TypeScript、Rust、Go、Java、C/C++ 等)
- JetBrains 插件(付费,有免费试用):利用 JetBrains IDE 分析引擎,额外支持类型层次、移动重构、内联重构和交互式调试
-
MCP 工具层:将语义能力暴露为标准化 MCP 工具,供任何兼容客户端调用
安装
前置条件
安装 uv(Python 包管理器):
方式一:安装 Serena(推荐)
serena init 会在当前目录创建 Serena 配置文件。如果要使用 JetBrains 后端:
方式二:通过 pip 安装
配置 Claude Code
Serena 作为 MCP 服务器运行,需要在 Claude Code 中注册:
或手动编辑 ~/.claude.json:
方式三:HTTP 模式
Serena 也可以作为 HTTP 服务器运行,适合远程或多客户端场景:
方式四:通过 CC-Switch 管理
如果你已安装 CC-Switch,可以通过它管理 Serena 的 MCP 服务器配置:
- 打开 CC-Switch Desktop
- 进入 MCP 服务器管理
- 添加 Serena MCP 服务器配置
- CC-Switch 会自动同步到 Claude Code
:::tip CC-Switch 特别适合在多个 AI 工具之间同步 Serena 的 MCP 配置——一次配置,所有工具生效。
MCP 工具
Serena 为 Claude Code 提供以下 MCP 工具:
代码检索
符号级编辑
重构(JetBrains 专属)
交互式调试(JetBrains 专属)
通用工具
通用工具(read_file、list_dir、execute_shell)默认禁用,因为 Claude Code 自身已提供这些能力。可以在配置中按需启用。
使用示例
示例一:精确重命名
Serena 会通过 rename_symbol 一次调用完成:找到 authenticate 的定义和所有引用,原子化替换为 verifyCredentials。
示例二:查找调用链
Claude Code 会调用 find_referencing_symbols 获取所有引用点,包括控制器、测试、中间件等。
示例三:安全重构
Serena 的 move_symbol(JetBrains)会自动处理导入更新、旧文件清理。
示例四:代码理解
Claude Code 调用 get_symbols_overview 获取文件大纲,包括所有函数、类、方法及其可见性。
示例五:符号级编辑
Serena 通过 insert_before_symbol 精确在函数定义前插入代码,不需要手动计算行号。
配置系统
Serena 支持多层配置,按优先级从低到高:
- 全局配置:
~/.serena/config.yaml - MCP 启动参数:CLI 命令行参数
- 项目配置:
<project>/.serena/config.yaml(可提交到 Git) - 本地覆盖:
<project>/.serena/config.local.yaml(不提交) - 执行上下文:按客户端区分的配置
项目配置示例
Modes(模式)
Serena 支持动态组合配置片段——modes。根据当前任务激活不同的工具集:
支持的语言
LSP 后端(40+ 种语言)
Python、TypeScript、JavaScript、Rust、Go、Java、C、C++、Kotlin、Swift、Scala、Ruby、PHP、C#、Dart、Lua、Haskell、Elixir、Erlang、OCaml、F#、R、Julia、Perl、Zig、Nim、Crystal、Groovy、Clojure、Lisp、Fortran、COBOL、Assembly、SQL、HTML、CSS、SCSS、XML、YAML、TOML、Markdown、LaTeX、Shell、PowerShell
JetBrains 后端
支持所有 JetBrains IDE 识别的语言,额外能力包括:
- 类型层次探索
- 移动重构(符号/文件/目录)
- 内联重构
- 交互式调试
- 搜索项目依赖
内存管理
Serena 内置跨会话内存系统,可以在不同 Claude Code 会话之间持久化知识:
- 代码库的关键决策和约定
- 常用符号的位置和作用
- 项目特定的术语和模式
Serena 的内存系统独立于 Claude Code 的 CLAUDE.md 和 Memory 功能。两者可以互补使用——CLAUDE.md 记录高层约定,Serena 内存记录代码级细节。
与其他工具的对比
选型建议
选择 Serena 如果:
- 你需要精确的符号级重构(重命名、移动、安全删除)
- 你使用 JetBrains IDE(额外获得调试、类型层次等能力)
- 你处理 40+ 种语言的多语言项目
- 你需要原子化的代码修改操作
选择 CodeGraph 如果:
- 你主要需要快速探索代码库结构
- 你偏好零配置、开箱即用的工具
- 你需要知识图谱式的代码查询
选择 Code Review Graph 如果:
- 你主要需要代码审查和 PR 审核
- 你需要 Blast-Radius 影响分析和架构可视化
组合使用:
- Serena 用于精确重构和符号级编辑
- CodeGraph 用于日常代码探索和知识图谱查询
- Code Review Graph 用于代码审查和架构分析
- 三者通过 MCP 并行运行,互不冲突
卸载
相关资源
- Serena GitHub — 项目仓库(24.9k Stars)
- Serena 官方文档 — 完整使用指南
- Serena PyPI — Python 包
- uv 安装指南 — 前置条件
下一步
- MCP 服务器 — 深入了解 MCP 服务器配置
- CodeGraph 代码智能 — 另一个代码智能工具
- Code Review Graph — 代码审查专用工具
- 技巧与最佳实践 — 更多高效使用技巧

