oraios/serena
GitHub: oraios/serena
Serena 是一个编程智能体工具包,通过提供类似 IDE 的语义级代码检索和编辑能力,让 LLM 能够高效地在大型复杂代码库中定位和修改代码。
Stars: 21003 | Forks: 1413
Serena 正处于积极开发中!请查看最新动态、即将推出的功能以及经验总结,以随时掌握最新进展。
## LLM 集成 Serena 为编程工作流提供了必要的[工具](https://oraios.github.io/serena/01-about/035_tools.html),但需要 LLM 来执行实际工作, 编排工具的使用。 通常,Serena 可以通过以下几种方式与 LLM 集成: * 通过使用 **model context protocol (MCP)**。 Serena 提供了一个 MCP 服务器,可与以下工具集成 * Claude Code 和 Claude Desktop, * 基于 terminal 的客户端,如 Codex、Gemini-CLI、Qwen3-Coder、rovodev、OpenHands CLI 等, * IDE,如 VSCode、Cursor 或 IntelliJ, * 扩展,如 Cline 或 Roo Code * 本地客户端,如 [OpenWebUI](https://docs.openwebui.com/openapi-servers/mcp)、[Jan](https://jan.ai/docs/mcp-examples/browser/browserbase#enable-mcp)、[Agno](https://docs.agno.com/introduction/playground) 等 * 通过使用 [mcpo 将其连接到 ChatGPT](docs/03-special-guides/serena_on_chatgpt.md) 或其他不支持 MCP 但支持通过 OpenAPI 进行工具调用的客户端。 * 通过将 Serena 的工具整合到您选择的智能体框架中,如[此处](docs/03-special-guides/custom_agent.md)所示。 Serena 的工具实现与特定框架的代码解耦,因此可以轻松适应任何智能体框架。 ## Serena 实战 #### 演示 1:在 Claude Code 中的高效操作 这是一个展示 Serena 在 Claude Code 中高效检索和编辑代码的演示,从而节省 token 和时间。高效的操作不仅有助于节省成本,通常还能提高生成代码的质量。这种效果在非常小的项目中可能不太明显,但在较大的项目中往往变得至关重要。 https://github.com/user-attachments/assets/ab78ebe0-f77d-43cc-879a-cc399efefd87 #### 演示 2:Claude Desktop 中的 Serena 这是一个展示 Serena 在 Claude Desktop 中为其自身实现一个小功能(更好的日志 GUI)的演示。 注意 Serena 的工具如何使 Claude 能够找到并编辑正确的符号。 https://github.com/user-attachments/assets/6eaa9aa1-610d-4723-a2d6-bf1e487ba753 ## 编程语言支持与语义分析能力 Serena 基于对代码的符号理解,提供了一系列通用的代码查询和编辑功能。 配备了这些能力,Serena 能够像熟练的开发人员利用 IDE 功能那样发现和编辑代码。 即使在非常大且复杂的项目中,Serena 也能高效地找到正确的上下文并做正确的事! 有两种替代技术支持这些能力: * **Language servers** 实现 language server Protocol (LSP) —— 免费/开源的替代方案。 * **The Serena JetBrains Plugin**,利用 JetBrains IDE 强大的代码分析和编辑能力。 您可以根据自己的偏好和需求选择其中任何一种后端。 ### 语言服务器 Serena 包含一个强大的抽象层,用于集成实现 language server protocol (LSP) 的 language servers。 底层的 language servers 通常是开源项目(如 Serena)或至少可免费使用。 通过 Serena 的 LSP 库,我们提供了**对 30 多种编程语言的支持**,包括 AL、Bash、C#、C/C++、Clojure、Dart、Elixir、Elm、Erlang、Fortran、GLSL、Go、Groovy(部分支持)、Haskell、HLSL、Java、Javascript、Julia、Kotlin、Lua、Markdown、MATLAB、Nix、OCaml、Perl、PHP、PowerShell、Python、R、Ruby、Rust、Scala、Swift、TOML、TypeScript、WGSL、YAML 和 Zig。 ### Serena JetBrains 插件 作为 language servers 的替代方案,[Serena JetBrains Plugin](https://plugins.jetbrains.com/plugin/28946-serena/) 利用了您 JetBrains IDE 的强大代码分析能力。 该插件自然支持 JetBrains IDE 支持的所有编程语言和框架, 包括 IntelliJ IDEA、PyCharm、Android Studio、WebStorm、PhpStorm、RubyMine、GoLand,以及可能的其他 IDE(不过 Rider 和 CLion 不受支持)。
该插件提供了最稳健、最强大的 Serena 体验。
有关更多详细信息和说明,请参阅我们的[文档页面](https://oraios.github.io/serena/02-usage/025_jetbrains_plugin.html)。
## 快速开始
**前置条件**。Serena 由 *uv* 管理。如果您还没有安装,需要在继续之前[安装 uv](https://docs.astral.sh/uv/getting-started/installation/)。
**启动 MCP 服务器**。启动 Serena MCP 服务器最简单的方法是使用 uvx 运行 GitHub 上的最新版本。
运行以下命令以查看可用选项:
```
uvx --from git+https://github.com/oraios/serena serena start-mcp-server --help
```
**配置您的客户端**。要将 Serena 连接到您首选的 MCP 客户端,通常需要[在您的客户端中配置启动命令](https://oraios.github.io/serena/02-usage/030_clients.html)。
请点击链接查看有关如何为 Claude Code、Codex、Claude Desktop、支持 MCP 的 IDE 以及其他客户端(如本地和基于 Web 的 GUI)设置 Serena 的具体说明。
## 用户指南
有关如何有效使用 Serena 的详细说明,请参阅[用户指南](https://oraios.github.io/serena/02-usage/000_intro.html)。
## 社区反馈
大多数用户报告称,Serena 对其编程智能体的结果有强烈的积极影响,即使在 Claude Code 等非常强大的智能体中使用也是如此。Serena 常被描述为[颠覆者](https://www.reddit.com/r/ClaudeAI/comments/1lfsdll/try_out_serena_mcp_thank_me_later/),带来巨大的[生产力提升](https://www.reddit.com/r/ClaudeCode/comments/1mguoia/absolutely_insane_improvement_of_claude_code)。
Serena 擅长导航和操作复杂的代码库,提供支持在大型、强结构化代码库中进行精确代码检索和编辑的工具。
然而,当处理仅涉及极少/小文件的任务时,您可能不会受益于在现有编程智能体之上添加 Serena。
特别是,在从头开始编写代码时,Serena 最初不会提供太多价值,因为 Serena 比简单的基于文件的方法处理得更优雅的更复杂结构尚未创建。
已有多个视频和博客文章讨论过 Serena:
* YouTube:
* [AI Labs](https://www.youtube.com/watch?v=wYWyJNs1HVk&t=1s)
* [Yo Van Eyck](https://www.youtube.com/watch?v=UqfxuQKuMo8&t=45s)
* [JeredBlu](https://www.youtube.com/watch?v=fzPnM3ySmjE&t=32s)
* 博客文章:
* [Serena's Design Principles](https://medium.com/@souradip1000/deconstructing-serenas-mcp-powered-semantic-code-understanding-architecture-75802515d116)
* [Serena with Claude Code (日语)](https://blog.lai.so/serena/)
* [Turning Claude Code into a Development Powerhouse](https://robertmarshall.dev/blog/turning-claude-code-into-a-development-powerhouse/)
## 致谢
### 技术
我们在多个现有的开源技术之上构建了 Serena,其中最重要的是:
1. [multilspy](https://github.com/microsoft/multilspy)。
这是一个封装了 language server 实现并使其适应通过 Python 进行交互的库。
它为我们的库 Solid-LSP (`src/solidlsp`) 提供了基础。
Solid-LSP 提供纯同步 LSP 调用,并使用 Serena 所需的符号逻辑扩展了原始库。
2. [Python MCP SDK](https://github.com/modelcontextprotocol/python-sdk)
3. 我们通过 Solid-LSP 使用的所有 language servers。
如果没有这些项目,Serena 将不可能实现(或者构建难度会大得多)。
## 定制和扩展 Serena
扩展 Serena 的 AI 功能以实现您自己的想法非常简单。
只需通过子类化 `serena.agent.Tool` 来实现一个新工具,
并使用符合工具要求的签名实现 `apply` 方法。
一旦实现,`SerenaAgent` 将自动能够访问新工具。
添加[对新编程语言的支持](/.serena/memories/adding_new_language_support_guide.md)也相对简单。
我们期待看到社区的创意!
有关贡献的详细信息,请参阅[贡献指南](/CONTRIBUTING.md)。标签:IDE功能, LLM集成, MCP服务器, Serena, Token效率优化, 二进制发布, 代码大模型工具, 代码库操作, 代码编辑, 代码重构, 威胁情报, 开发者工具, 开发辅助, 开源工具, 符号级分析, 编程智能体, 自动化编程, 语义检索, 逆向工具