serena
oraios/serena加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

让大模型改代码,最怕的不是模型笨,而是模型看不见代码的结构。
你让它把一个函数重命名,它不知道这个函数在 30 个文件里被引用;你让它删掉一段死代码,它只能做文本层面的正则替换;你让它找出一个接口的全部实现,它只能靠 grep 一点点拼。于是你看到的是:模型改完代码,编译不过;或者编译过了,某个隐蔽的调用点被漏掉,整个系统在运行时炸掉。
这不是模型能力问题,而是工具形态问题。人类程序员有 IDE:跳转定义、查找引用、重命名符号、查看类型层级。编码智能体手里只有 grep 和 read_file,等于让一个近视的人靠记忆在雷区里施工。
Serena(Oraios AI 出品)要做的就是把 IDE 的语义能力搬给智能体。
Serena 的自我定位很直接:The IDE for Your Coding Agent。
核心手段是两条技术路线并行,用户可切换:
路线一:语言服务器(LSP)后端——这是默认方案,也是开源免费方案。Serena 内置了一个名为 SolidLSP 的抽象层(独立 MIT 许可),向上屏蔽不同语言 LSP 的差异,向下自动拉起对应的语言服务器进程。基于它,Serena 支持 80+ 种编程语言,覆盖 Python、Java、TypeScript、Go、Rust、C#、Java、PHP、Ruby、Vue、Svelte、Elixir、Erlang、Zig、Lean 4、MATLAB、R、Terraform 等主流与长尾语言。

路线二:JetBrains 插件后端——付费插件(有免费试用),直接调用 IntelliJ IDEA / PyCharm / GoLand 等 IDE 的索引与重构引擎,能力更强:文件与目录级重命名、移动、内联、传播删除,以及一套通过 REPL 交互式控制断点、查看变量、求值表达式的通用调试工具。
在这两条路线之上,Serena 提供的工具集分四层:
| 层次 | 代表能力 |
|---|---|
| 检索 Retrieval | 查找符号、符号概览、查找引用符号、查找声明与实现、诊断检查 |
| 重构 Refactoring | 符号重命名、符号/文件/目录移动、内联、传播删除(后者需 JetBrains 后端) |
| 符号化编辑 Symbolic Editing | 替换符号体、在符号前后插入、安全删除 |
| 基础与记忆 | 正则检索、正则/字面量替换、目录列举、文件查找、读文件、执行 Shell、跨会话记忆系统 |
设计哲学是 agent-first:工具粒度对齐「人类开发者的一个动作」,而不是对齐「一个文件操作」。README 里引用了 Claude Code、Codex CLI、Copilot CLI 上运行的编码智能体反馈,结论高度一致——跨文件重命名、移动、引用查找这类原本需要 8~12 步谨慎操作的任务,被压缩成一次原子调用。
仓库结构清爽,src/ 下三个 Python 包:
src/serena — 应用主体。MCP 服务器实现、CLI、配置体系、工具集、Web 仪表盘、REPL 智能体接口、JetBrains 客户端、记忆管理、hook 机制。src/solidlsp — LSP 抽象层,把各家语言服务器统一成一致的符号级 API。src/interprompt — 提示词与消息构造工具库。工具按域拆分为独立模块:symbol_tools.py(约 20KB)、jetbrains_tools.py(约 23KB)、file_tools.py(约 17KB)、memory_tools.py、repl_tools.py、workflow_tools.py、config_tools.py、cmd_tools.py。
v2 版本引入了 REPL 智能体接口:不再把每个动作暴露成独立 MCP 工具,而是给智能体一个 serena_repl 工具,由它写 Python 代码来编排调用。这样智能体能把「找到符号 → 读取 → 修改 → 写回」压缩进一次工具调用,减少往返,也更省 token。代价是调试可观测性略降,需要靠仪表盘与日志窗口观察。

推荐路径是 uv 工具安装,只有 uv 一个前置依赖:
uv tool install -p 3.13 serena-agent
serena init
serena init 会自动初始化配置并校验语言服务器可用性。随后在 MCP 客户端里配置启动命令即可,Claude Code、Codex CLI、Claude Desktop、Cursor、VS Code、JetBrains 系 AI 插件、OpenWebUI 等主流客户端都支持。
注意官方明确提醒:不要从 MCP 或插件市场安装 Serena,市场里的安装命令已过时。
Docker 方式存在(Dockerfile + compose.yaml),但官方在 DOCKER.md 里明确标注为实验特性,且 compose 中 build.target: production 在当前 Dockerfile 里并无对应阶段(Dockerfile 只有一个 base 阶段),实际使用需要自行调整。

ty 做类型检查,CodeQL 做安全扫描,CI 覆盖多个 Python 版本。依赖版本精确锁定(mcp==2.2.0、flask==3.1.3 等),并注明是为修补 CVE 而锁定。execute_shell_command 直接在宿主执行命令。Serena 自己也把 Docker 隔离列为主要卖点之一,说明这个风险是真实存在的。放进容器或受限账号里跑更稳妥。Serena 折射出一条清晰趋势:编码智能体的竞争正从「模型有多强」转向「工具有多准」。
上一代 Agent 框架给模型的是通用外壳(文件系统、Shell、搜索),这一代开始出现分工:有人做执行沙箱,有人做浏览器自动化,Serena 专攻「代码语义」这一件事——而且做的是开发者体验迁移而非另起炉灶:它没有发明新的编程范式,而是把 IDE 里二十年的交互设计,原样搬给 LLM。
对个人开发者,这是一句话成本极低、能力提升明显的加装项(uv tool install 之后配置一次 MCP)。对企业团队,它更值得被当作代码库理解层的标准化基础设施来评估:谁掌握了符号级检索与安全重构,谁的 AI 编码流水线就少一份「模型乱改代码」的返工成本。
而从社区热度看,这个方向的热度还在上升:Serena 在 GitHub 上已积累 3 万余 Star、2100 余 Fork,与 Claude Code、Codex、Vibe Coding 等主流叙事深度绑定。它大概率不会是唯一答案,但「给智能体装上 IDE」这个命题,已经被证明有人买单。
项目信息速览
| 项 | 值 |
|---|---|
| 仓库 | oraios/serena |
| Star / Fork | 30,874 / 2,104 |
| 语言 | Python(源码 187 个 .py,测试 317 个 .py,全仓 529 个 .py) |
| 许可 | GPL-3.0-or-later(SolidLSP 为 MIT) |
| 贡献者 | 249 |
| 最新版本 | v2.1.0(2026-10-19) |
| 创建时间 | 2025-03-23 |
| 语言支持 | 80+ 种(LSP 后端) |
| 部署 | uv 工具安装 / Docker(实验特性)/ Web 仪表盘 |
| 文档 | https://oraios.github.io/serena |