关于 Serena
Serena 是面向编码 Agent 的 MCP 服务,提供语义代码导航、编辑、重构和调试能力。它支持语言服务器与 JetBrains 后端,并可配置工具和项目工作流记忆。
主要功能
- 01符号级代码检索
- 02语义编辑与重构
- 03诊断与代码检查
- 04基于 JetBrains 的调试
- 05可配置的项目记忆
适用场景
- 01浏览大型代码库
- 02跨文件重命名符号
- 03执行结构化代码编辑
- 04通过 Agent 调试程序
MCP 相关
Serena 向 MCP 客户端提供语义代码检索、编辑、重构和调试工具。客户端可通过启动命令运行服务,也可连接其 HTTP 模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
28收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 是 | 要写入文件的内容(需采用适当的编码)。 |
| relative_path | string | 是 | 要创建文件的相对路径。 |
详细介绍
为你的编码 Agent 打造的 IDE
- Serena 提供 IDE 级别的核心能力,包括语义代码检索、编辑、重构和调试工具, 可在符号层面运作并利用代码的关系结构。
- 它通过模型上下文协议(MCP)与任何客户端/大模型集成。
Serena 的Agent 优先工具设计采用稳健的高层抽象,使其有别于依赖行号或基础搜索模式等底层概念的方案。
实际上,这意味着你的 Agent 能够更快速、更高效、更可靠地运作,尤其是在规模较大、复杂度较高的代码库中。
提示
Serena v2 已发布,带来了全新的基于 REPL 的 Agent 接口。
了解详情 查看新接口的介绍,以及如何进行配置。
视频
我们的“最终用户”怎么说
虽然下载并设置 Serena 的是人类,但我们的最终用户本质上是 AI Agent。 作为实际使用 Serena 工具的一方,它们最有资格评价 Serena。
我们设计了一份不带偏见的评估提示词,引导 Agent 完成约 20 项常规编码任务, 这些任务代表了日常开发工作, 以便评估在搭配 Agent 自带工具时,Serena 工具能带来多大价值。
以下是 Agent 反馈的一句话总结:
Claude Code 中的 Opus 4.6(high),用于大型 Python 代码库:
“Serena 基于 IDE 的语义工具是我工具箱中最有影响力的新增工具——跨文件重命名、移动和查找引用这些操作,原本需要 8–12 个谨慎且容易出错的步骤,现在只需一次原子调用就能完成。我一定会请合作的开发者为我配置它。”
Codex CLI 中的 GPT 5.4(high),用于 Java 代码库:
“作为编码 AI Agent,我会请我的主人添加 Serena,因为它为我补上了 IDE 级别的符号、引用和重构理解能力,让脆弱的文本修改变成更从容、更快速、更有把握的代码变更,尤其是在语义至关重要的地方。”
Copilot CLI 中的 GPT 5.4(medium),用于大型多语言单体代码库:
“作为编码 Agent,我一定会请我的主人添加 Serena,因为它让我在处理真实代码时明显更加敏锐、从容——尤其是在符号感知导航、跨文件重构和单体代码库依赖跳转方面——同时,我仍会使用内置工具完成细小的文本编辑和非代码工作。”
不同设置下的不同 Agent 独立得出了相同结论。
给你的 Agent 配上它一直想要的工具,并将 Serena MCP 添加到你的客户端吧!
查看我们的文档,了解完整的方法及更详尽的评估结果;也可以在你选择的项目上自行开展评估。
Serena 的工作原理
Serena 提供编码工作流所需的工具, 但实际工作需要由大模型来完成,并由其协调工具的使用。
Serena 可通过**模型上下文协议(MCP)**扩展现有 AI 客户端的功能。 大多数现代 AI 聊天客户端都直接支持 MCP,包括:
- 基于终端的客户端,如 Claude Code、Codex、OpenCode 或 Gemini-CLI;
- VSCode、Cursor 和 JetBrains IDE 的 IDE 及 IDE 助手插件(Copilot、Junie、JetBrains AI Assistant 等);
- 桌面和 Web 客户端,如 Claude Desktop、Codex App 或 OpenWebUI。
:tv: 另请参阅:5 分钟了解 Serena(YouTube)
要将 Serena MCP 服务连接到客户端,你可以:
- 向客户端提供启动命令,以便其启动 MCP 服务;或
- 自行以 HTTP 模式启动 Serena MCP 服务,并向客户端提供 URL。
请参阅下方的快速入门部分,了解如何开始使用。
编程语言支持与语义分析能力
Serena 提供一系列多用途的代码查询和编辑功能, 这些功能基于对代码的符号理解。 借助这些能力,你的 Agent 可以像经验丰富的开发者利用 IDE 功能那样发现和编辑代码。 即使面对非常庞大且复杂的项目,Serena 也能高效找到合适的上下文并完成正确的操作!
这些能力由两种可选技术提供支持:
- 语言服务:实现语言服务协议(LSP)的服务——免费开源的替代方案,也是默认选项。
- Serena JetBrains 插件:利用 JetBrains IDE 强大的代码分析和编辑能力(付费插件;提供免费试用)。
你可以根据偏好和需求选择其中一种后端。
语言服务
Serena 集成了强大的抽象层,用于接入实现语言服务协议(LSP)的语言服务。 底层语言服务通常是开源项目,或至少可免费使用。
使用 Serena 的语言服务后端时,我们支持 40 多种编程语言,包括: Ada / SPARK、AL、Angular、Ansible、Astro、Bash、BSL、C#、C/C++、Clojure、Crystal、CUE、Dart、Deno、Elixir、Elm、Erlang、Fortran、F#、GDScript、Gleam、GLSL、Go、GraphQL、Groovy、Haskell、Haxe、HLSL、HTML、Java、JavaScript、JSON、Julia、Kotlin、LaTeX、Lean 4、Lua、Luau、Markdown、MATLAB、mSL、Nextflow、Nix、OCaml、Pascal、Perl、PHP、PowerShell、Python、QML、R、Rego、Ruby、Rust、Scala、SCSS / Sass / CSS、Solidity、Svelte、Swift、SystemVerilog、Terraform、TOML、TypeScript、VB.NET、Vue、WGSL、Wolfram Language、YAML 和 Zig。
Serena JetBrains 插件
付费版 Serena JetBrains 插件(提供免费试用) 利用 JetBrains IDE 强大的代码分析能力。 该插件自然支持 JetBrains IDE 所支持的所有编程语言和框架, 包括 IntelliJ IDEA、PyCharm、Android Studio、WebStorm、PhpStorm、RubyMine、GoLand,以及可能还有其他 IDE(但不支持 Rider 和 CLion)。
更多详情以及插件应用说明,请参阅我们的文档页面。
功能
Serena 提供丰富的工具,可高效检索、编辑和重构代码,还提供用于长期运行 Agent 工作流的记忆系统。
Serena 涵盖范围广泛,并通过多层配置系统适应你的需求。
详情
### 检索Serena 的检索工具让 Agent 能够在符号层面探索代码库,了解其结构和关系, 而无需读取整个文件。
| 能力 | 语言服务器 | JetBrains 插件 |
|---|---|---|
| 查找符号 | 是 | 是 |
| 符号概览(文件大纲) | 是 | 是 |
| 查找引用符号 | 是 | 是 |
| 搜索项目依赖 | -- | 是 |
| 类型层次结构 | -- | 是 |
| 查找声明 | 是* | 是 |
| 查找实现 | 是** | 是 |
| 查询外部项目 | 是 | 是 |
| 诊断/检查 | 是 | 是 |
*: 通常无法用于外部依赖中的声明。
**: 仅适用于部分语言,且受语言服务器功能限制。
重构
如果没有精准的重构工具,Agent 就不得不采用不可靠且成本高昂的搜索和替换操作。
| 能力 | 语言服务器 | JetBrains 插件 |
|---|---|---|
| 重命名 | 是(仅限符号) | 是(符号、文件、目录) |
| 移动(符号、文件、目录) | -- | 是 |
| 内联 | -- | 是 |
| 传播删除(移除未使用的代码) | -- | 是 |
符号化编辑
与常见替代方案相比,Serena 的符号化编辑工具不易出错,且能大幅节省令牌。
| 能力 | 语言服务器 | JetBrains 插件 |
|---|---|---|
| 替换符号主体 | 是 | 是 |
| 在符号后插入 | 是 | 是 |
| 在符号前插入 | 是 | 是 |
| 安全删除 | 是 | 是 |
交互式调试
Serena 的高度通用调试工具仅在 JetBrains 插件中提供, Agent 可通过持久的 REPL 式界面设置断点、检查变量、计算表达式并控制执行流程。
基本功能
除了语义功能外,Serena 还包含一组基本实用工具,以完善其功能。 在 Claude Code 或 Codex 等 Agent 工作框架中使用 Serena 时,这些工具通常默认处于禁用状态, 因为外围工作框架已提供功能重叠的文件、搜索和 shell 能力。
search_for_pattern– 在整个代码库中灵活地进行正则表达式搜索replace_content– 面向 Agent 优化的正则表达式和字面文本替换list_dir/find_file– 列出目录内容并搜索文件read_file– 读取文件或文件片段execute_shell_command– 运行 shell 命令(例如构建、测试、代码检查)
记忆管理
记忆系统是长期运行的 Agent 工作流不可或缺的一部分,尤其是在需要跨会话、用户和项目共享知识时。
尽管它很简单,我们仍收到许多用户的积极反馈;他们通常会将 Serena 的记忆管理系统与 Agent 的内部系统(例如 AGENTS.md 文件)结合使用。
如果你更喜欢使用其他方案,也可以轻松禁用它。
可配置性
Serena 的活动工具、工具描述、提示词、语言后端详细信息以及许多其他方面, 都可以通过调整几行 YAML 灵活地按需配置。 为此,Serena 提供了多个层级(可组合)的配置:
- 全局配置
- MCP 启动命令(CLI)配置
- 按项目配置(支持本地覆盖)
- 特定执行上下文的配置(例如,针对特定客户端)
- 可动态组合的配置片段(模式)
快速开始
重要
请勿通过 MCP 或插件市场安装 Serena!其中包含过时且不理想的安装命令。
前提条件。Serena 由 uv 管理,唯一必需的前提条件是安装 uv。
安装 Serena。通过 uv 安装 Serena 的方式如下:
uv tool install -p 3.13 serena-agent
成功安装后,命令 serena 应可在你的 Shell 中使用。
说明
使用语言服务器后端时,可能需要安装一些额外依赖,以支持特定语言; 详情请参阅语言支持页面。
初始化 Serena。要初始化 Serena 并确认设置正常运行,只需运行:
serena init
默认情况下,这会将 Serena 配置为使用语言服务器后端。若要改用 JetBrains 后端,请添加参数 -b JetBrains
(更多使用详情请参阅 JetBrains 插件文档页面)。
无论使用哪种后端,你都应该会看到一条成功消息,表明 Serena 已成功初始化。
配置客户端。要将 Serena 连接到你偏好的 MCP 客户端,通常需要在客户端中配置启动命令。 请访问链接,查看如何为 Claude Code、Codex、Claude Desktop、支持 MCP 的 IDE 以及其他客户端(例如本地和基于 Web 的 GUI)设置 Serena 的具体说明。
提示
虽然可以轻松快速上手,但 Serena 是一套功能强大的工具包,提供许多配置选项。 我们强烈建议阅读用户指南,以充分发挥 Serena 的作用。
我们特别建议阅读以下内容……
用户指南
有关如何有效使用 Serena 的详细说明,请参阅用户指南。
致谢
Serena 的很大一部分内容,尤其是对各种语言的支持,来自开源社区的贡献。 我们非常感谢众多贡献者,是他们让这一切成为可能,并为 Serena 发展 成为如今的样子发挥了重要作用。
许可证
Serena 按组件分别授权:SolidLSP(src/solidlsp)采用 MIT 许可证,
Serena 应用程序(其余所有内容)采用 GPL-3.0-or-later。
将两者结合的发行版本整体受 GPL 约束。
权威概览请参阅 LICENSE,背景信息请参阅 许可证文档。 贡献者须接受我们的 CLA;请参阅 CONTRIBUTING.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

