问题:Agent 改代码全靠"猜"

你用 Claude Code 或 Codex 改过大型项目吗?

最常见的场景:你想重命名一个函数。Agent 的做法是——全文搜索这个函数名,然后逐个文件替换。听起来没问题?但实际操作中:

这就是问题所在:Agent 在用"文本编辑"的方式改"代码"。

人类用 IDE 改代码的时候,IDE 知道每个符号的定义、引用、类型、作用域。Agent 没有这个能力——它只能看到文本。

Serena 是什么

Serena 是一个 MCP Server,它把 IDE 的核心能力——符号级检索、语义编辑、安全重构——通过 MCP 协议暴露给任何支持 MCP 的 AI 客户端。

一句话:给你的 Agent 装一个 IDE 大脑。

它解决了什么问题

场景 没有 Serena 有 Serena
重命名函数 全文搜索替换,可能漏掉或多改 一个原子操作,所有引用自动更新
查找调用链 读一堆文件,靠猜 直接查"谁调用了这个符号"
移动函数到新文件 复制-粘贴-删旧-修 import,经常出错 一个 move 操作搞定
理解代码结构 读整个文件,token 爆炸 只查符号大纲,精准定位
跨文件重构 8-12 步操作,每步都可能出错 一个原子调用

怎么做到的

Serena 的核心思路很简单:接一个语言服务器(LSP),然后把 LSP 的能力包装成 MCP 工具。

LSP(Language Server Protocol)就是 VS Code 背后那个让代码高亮、自动补全、跳转定义、查找引用的协议。Serena 把这些能力"翻译"成了 Agent 能调用的工具。

支持 40+ 种语言

Python、TypeScript、Go、Rust、Java、C++、C#、Kotlin、Swift、Ruby、PHP……基本上主流语言都覆盖了。语言支持是通过开源的 LSP Server 实现的,不需要额外配置。

两套后端

特性 LSP 后端(免费) JetBrains 插件(付费)
符号查找
引用查找
符号重命名
文件/目录移动
类型层次结构
依赖搜索
交互式调试
内联重构

免费的 LSP 后端已经够用了。JetBrains 插件适合重度用户,特别是需要跨文件移动、调试这些高级操作的场景。

实际效果

Serena 团队做了一个很酷的测试:让 Opus 4.6 在 Claude Code 里用 Serena 做 20 个常规编码任务,然后问 Agent 自己的感受。

"Serena 的语义工具是我用过的最有价值的扩展——跨文件重命名、移动、引用查找,原来需要 8-12 个容易出错的步骤,现在一个原子调用就搞定了。我会让每个跟我合作的开发者都装上它。"

—— Opus 4.6 (high) in Claude Code

GPT 5.4 在 Codex CLI 里的评价也类似:

"作为一个编程 AI Agent,我会让我的主人装 Serena,因为它给了我 IDE 级别的符号、引用、重构理解能力,让脆弱的文本手术变成了更冷静、更快、更自信的代码变更。"

—— GPT 5.4 (high) in Codex CLI

怎么用

安装

# 前提:装好 uv(Python 包管理器)
uv tool install -p 3.13 serena-agent

# 初始化
serena init

接入 Claude Code

# 在 Claude Code 的 MCP 配置里加:
claude mcp add serena -- serena mcp

接入其他客户端

Serena 支持所有 MCP 客户端:Claude Desktop、Codex CLI、OpenCode、Gemini CLI、Cursor、VS Code + Copilot、JetBrains IDEs。

配置方式两种:

  1. 启动命令模式:告诉客户端用什么命令启动 Serena MCP Server
  2. HTTP 模式:自己启动 Serena,给客户端一个 URL

跟同类工具比

工具 定位 Star 核心差异
Serena IDE 级 MCP 工具包 26K 基于 LSP,符号级操作,40+ 语言
Context+ 代码知识图谱 2K RAG + AST,侧重"理解"而非"编辑"
Axon 代码知识图谱 714 图数据库,侧重依赖分析
Aider 终端编程助手 30K+ 完整的 Agent,不暴露 MCP 工具

Serena 的独特之处:它不是一个 Agent,而是一个"Agent 的工具"。你把它接给任何 MCP 客户端,那个客户端就自动获得了 IDE 级别的代码操作能力。它跟你的 Agent 是互补关系,不是竞争关系。

坑和注意事项

什么时候该用 Serena

如果你:

那 Serena 值得一试。它不改变你的工作流,只是让你的 Agent 多了一个"IDE 大脑"。

快速上手

# 安装
uv tool install -p 3.13 serena-agent

# 初始化
serena init

# 接入 Claude Code
claude mcp add serena -- serena mcp

# 开始用!Agent 现在可以:
# - find_symbol:查找符号定义
# - find_referencing_symbols:查找所有引用
# - rename_symbol:安全重命名
# - replace_symbol_body:替换函数体
# - symbol_overview:查看文件大纲

项目oraios/serena
Star:26,113 ⭐
语言:Python
协议:MIT
文档oraios.github.io/serena