The IDE for Your Coding Agent
- Serena提供必不可少的 语义代码检索、编辑、重构和调试工具 其类似于IDE的功能,
在符号级别操作并利用关系结构。
- 它通过模型上下文协议与任何客户端/LLM集成(主控程序).
Serena的 代理优先工具设计 涉及强大的高级抽象,将其与 依赖于行号或原始搜索模式等低级概念的方法。
实际上,这意味着你的代理人在运作 更快、更高效、更可靠尤其是在较大和 更复杂的代码库。
\[!重要\] 不要通过MCP或插件市场安装Serena!它们包含过时和次优的安装命令。 相反,请遵循我们的 快速开始 说明。
快速演示
https://github.com/user-attachments/assets/8d11646e-b80e-4723-b9d7-32d6101b5f58
:tv:较长的视频: 《Serena 5分钟介绍》(YouTube)
我们的“最终用户”怎么说
虽然下载和设置Serena的是人类,但我们的最终用户本质上是人工智能代理。 作为真正应用Serena工具的人,他们最适合评估Serena。
我们设计了一个无偏见的评估提示,引导代理执行约20个常规编码任务, 代表日常开发工作, 以便估算Serena的工具与内置工具一起使用时的附加值。
以下是特工们不得不说的一句话总结:
在大型Python代码库上的Claude Code中的Opus 4.6(高):
“Serena的IDE支持的语义工具是我工具包中最具影响力的一个补充——跨文件重命名、移动和引用查找 将花费我8到12个小心的、容易出错的步骤合并为一个原子调用,我绝对会要求任何与我一起工作的开发人员进行设置。"
Java代码库上Codex CLI中的GPT 5.4(高):
“作为一名编码AI代理,我会要求我的所有者添加Serena,因为它让我对符号、引用和 重构,将脆弱的文本操作转化为语义重要的更平静、更快、更自信的代码更改。"
在大型多语言单仓库上的Copilot CLI中的GPT 5.4(中等):
“作为一名编程代理,我绝对会要求我的老板加上Serena,因为这会让我明显更敏锐、更冷静 真正的代码——尤其是符号感知导航、跨文件重构和单仓库依赖跳跃——而我仍然在学习 内置用于微小文本编辑和非代码工作的插件。”
不同环境中的不同代理独立地得出相同的结论。
_为您的代理提供它一直要求的工具,并将Serena MCP添加到您的客户中!_
查看我们的 文档 了解完整的方法和更详细的评估结果,或者对您选择的项目进行自己的评估。
Serena的工作原理
Serena提供了必要的 工具 对于编码工作流程, 但是需要LLM来做实际的工作,编排工具的使用。
Serena可以通过以下方式扩展现有AI客户端的功能 模型上下文协议. 大多数现代AI聊天客户端直接支持MCP,包括
- 基于终端的客户端,如Claude Code、Codex、OpenCode或Gemini CLI,
- 用于VSCode、Cursor和JetBrains IDE(Copilot、Junie、JetBrains AI assistant等)的IDE和IDE助手插件,
- 桌面和web客户端,如Claude desktop、Codex App或OpenWebUI。
:tv:另请参见: 《Serena 5分钟介绍》(YouTube)
要将Serena MCP服务器连接到您的客户端,您可以
- 向客户端提供启动命令,允许其启动MCP服务器,或
- 以HTTP模式自行启动Serena MCP服务器,并向客户端提供URL。
请参阅 快速开始 关于如何开始的信息,请参阅下面的部分。
编程语言支持和语义分析能力
Serena提供了一套通用的代码查询和编辑功能 基于对代码的符号理解。 有了这些功能,您的代理可以像经验丰富的开发人员一样发现和编辑代码 利用IDE的功能。 Serena可以有效地找到正确的背景,做正确的事情,即使是在非常大的地方 复杂的项目!
有两种替代技术为这些功能提供动力:
- 语言服务器 实现语言服务器协议(LSP)——自由/开源的替代方案
默认情况下使用。
- Serena JetBrains插件,它利用了强大的代码分析和编辑功能
JetBrains IDE的功能(付费插件;免费试用)。
您可以根据自己的喜好和要求选择这些后端中的任何一个。
语言服务器
Serena采用了一个强大的抽象层,用于集成实现语言服务器协议(LSP)的语言服务器。 底层语言服务器通常是开源项目,或者至少可以免费使用。
当使用Serena的语言服务器后端时,我们提供 支持40多种编程语言,包括 Ada/SPARK、AL、Angular、Ansible、Bash、BSL、C#、C/C++、Clojure、Crystal、Dart、Elixir、Elm、Erlang、Fortran、F#、GDScript、GLSL、Go、Groovy、Haskell、Haxe、HLSL、HTML、Java、JavaScript、JSON、Julia、Kotlin、Lean 4、Lua、Luau、Markdown、MATLAB、mSL、Nix、OCaml、Perl、PHP、PowerShell、Python、R、Ruby、Rust、Scala、SCSS/Sas/CSS、Solidity、Svelte、Swift、TOML、TypeScript、WGSL、YAML和Ziggle。
Serena JetBrains插件
付费Serena JetBrains插件(免费试用) 利用JetBrains IDE强大的代码分析功能。 该插件自然支持JetBrains IDE支持的所有编程语言和框架, 包括IntelliJ IDEA、PyCharm、Android Studio、WebStorm、PhpStorm、RubyMine、GoLand,以及可能的其他产品(但Rider和CLion不受支持)。
查看我们的 文档页面 有关如何应用插件的更多详细信息和说明。
特性
Serena提供了广泛的工具,用于高效的代码检索、编辑和重构,以及 用于长期代理工作流的存储系统。
鉴于其广泛的范围,Serena通过提供多层配置系统来适应您的需求。
Details
检索
Serena的检索工具允许代理在符号级别探索代码库,理解结构和关系 而无需读取整个文件。
| 功能 | 语言服务器 | JetBrains插件 |
|---|---|---|
| 查找符号 | 是 | 是 |
| 符号概述(文件大纲) | 是 | 是 |
| 查找引用符号 | 是 | 是 |
| 在项目依赖关系中搜索 | -- | 是 |
| 类型层次结构 | -- | 是 |
| 查找声明 | yes\* | yes |
| 查找实现 | 是\*\* | 是 |
| 查询外部项目 | 是 | 是 |
| 诊断/检查 | 是 | 是 |
\*:通常不适用于外部依赖关系中的声明。
\*\*:仅适用于某些语言,受语言服务器功能的限制。
重构
如果没有精确的重构工具,代理就不得不求助于不可靠且昂贵的搜索和替换操作。
| 功能 | 语言服务器 | JetBrains插件 |
|---|---|---|
| 重命名 | 是(仅符号) | 是(符号、文件、目录) |
| 移动(符号、文件、目录) | -- | 是 |
| 内联 | -- | 是 |
| 传播删除(删除未使用的代码) | -- | 是 |
符号编辑
Serena的符号编辑工具不太容易出错,并且比典型的替代品更具令牌效率。
| 功能 | 语言服务器 | JetBrains插件 |
|---|---|---|
| 替换符号体 | 是 | 是 |
| 在符号后插入 | 是 | 是 |
| 在符号前插入 | 是 | 是 |
| 安全删除 | 是 | 是 |
交互式调试
Serena是JetBrains插件独有的,支持高度通用的调试工具, 它允许代理设置断点、检查变量、计算表达式和控制执行流 通过持久的REPL风格接口。
基本特性
除了语义能力之外,Serena还包括一组基本的实用程序以实现完整性。 当Serena在Claude Code或Codex等代理工具中使用时,这些工具通常默认禁用, 因为周围的线束已经提供了重叠的文件、搜索和shell功能。
search_for_pattern–在代码库中灵活搜索正则表达式replace_content–基于正则表达式和文字文本替换的代理优化list_dir/find_file–目录列表和文件搜索read_file–读取文件或文件块execute_shell_command–运行shell命令(例如构建、测试、linters)
内存管理
内存系统是长期代理工作流程的基本要素,尤其是在跨代理共享知识时 会话、用户和项目。 尽管它很简单,但我们收到了许多用户的积极反馈,他们倾向于将Serena的内存管理系统与他们的 代理的内部系统(例如。, AGENTS.md 文件)。 如果你喜欢使用其他东西,它很容易被禁用。
可配置性
Serena的活动工具、工具描述、提示、语言后端细节和许多其他方面 只需调整几行YAML,就可以根据具体情况灵活配置。 为了实现这一点,Serena提供了多级(可组合)配置:
- 全局配置
- MCP启动命令(CLI)配置
- 每个项目配置(具有本地覆盖)
- 特定于执行上下文的配置(例如,针对特定客户端)
- 动态可组合配置片段(模式)
快速开始
先决条件Serena由以下人员管理 *紫外线*,以及 安装紫外线 这是唯一必需的先决条件。
\[!注意\] 使用语言服务器后端时,可能需要安装一些额外的依赖项来支持某些语言; 看 语言支持 详情请参阅页面。
安装SerenaSerena通过紫外线安装如下:
uv tool install -p 3.13 serena-agent@latest --prerelease=allow成功安装后,命令 serena 应该在你的shell中可用。
初始化Serena.要初始化Serena并验证您的设置是否正常工作,只需运行:
serena init默认情况下,这将设置Serena使用语言服务器后端。要使用JetBrains后端,请添加参数 -b JetBrains (见 JetBrains插件文档页面 更多使用细节)。\ 无论哪种方式,您都应该收到一条成功消息,表明Serena已成功初始化。
配置您的客户端。要将Serena连接到您首选的MCP客户端,您通常需要 在客户端中配置启动命令. 请点击链接,了解如何为Claude Code、Codex、Claude Desktop、启用MCP的IDE和其他客户端(如本地和基于网络的GUI)设置Serena的具体说明。
\[!提示\] 虽然快速入门很容易,但Serena是一个功能强大的工具包,有许多配置选项。 我们强烈建议您通读 用户指南 充分利用Serena。 具体来说,我们建议阅读。.. - Serena基于项目的工作流程 和 - 配置Serena.
用户指南
请参阅 用户指南 了解如何有效使用Serena的详细说明。
致谢
Serena的很大一部分,特别是对各种语言的支持,是由开源社区贡献的。 我们非常感谢许多贡献者,他们使这一切成为可能,并在制作Serena方面发挥了重要作用 今天是什么。
