Serena

by oraios
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Provides tools for interacting with Git repositories, including checking diffs to review changes made to the codebase

  • Provides integration with free/open-weights models through Ollama, enabling code analysis and editing without proprietary LLM APIs

  • Expected future integration with ChatGPT (mentioned as coming soon), which would allow using the MCP server with OpenAI's models

  • :rocket: Serena 是一个强大的编码代理工具包,能够将 LLM 转变为可直接在您的代码库上运行的功能齐全的代理。
  • :wrench: Serena 提供了类似于 IDE 功能的基本语义代码检索和编辑工具,可以在符号级别提取代码实体并利用关系结构。
  • :free: Serena 是免费且开源的,可增强您已免费使用的 LLM 的功能。

示范

以下是 Serena 使用 Claude Desktop 实现一个小功能(更好的日志 GUI)的演示。请注意 Serena 的工具如何帮助 Claude 查找和编辑正确的符号。

https://github.com/user-attachments/assets/6eaa9aa1-610d-4723-a2d6-bf1e487ba753

LLM 整合

Serena 提供了编码工作流所需的工具,但需要 LLM 来完成实际工作并协调工具的使用。

Serena 可以通过多种方式与 LLM 相结合:

  • 通过使用模型上下文协议(MCP)
    Serena 提供了一个 MCP 服务器,它集成了
    • 克劳德桌面,
    • VSCode、Cursor 或 IntelliJ 等 IDE,
    • 像 Cline 或 Roo Code 这样的扩展
    • Goose(提供良好的 CLI 体验)
    • 以及许多其他应用,包括即将推出的 ChatGPT 应用
  • 通过使用Agno——与模型无关的代理框架
    Serena 基于 Agno 的代理允许您将几乎任何 LLM 转变为编码代理,无论它是由 Google、OpenAI 或 Anthropic 提供的(带有付费 API 密钥),还是由 Ollama、Together 或 Anyscale 提供的免费模型。
  • 通过将 Serena 的工具整合到您选择的代理框架中。
    Serena 的工具实现与特定于框架的代码分离,因此可以轻松适应任何代理框架。

编程语言支持和语义分析能力

Serena 的语义代码分析功能基于语言服务器,并使用广泛实施的语言服务器协议 (LSP)。LSP 提供了一套基于符号式代码理解的多功能代码查询和编辑功能。凭借这些功能,Serena 可以像经验丰富的开发人员使用 IDE 的功能一样发现和编辑代码。即使在非常庞大复杂的项目中,Serena 也能高效地找到正确的上下文并执行正确的操作!因此,它不仅免费开源,而且通常比现有的收费解决方案取得更好的效果。

语言服务器支持多种编程语言。借助 Serena,我们提供

  • 直接、开箱即用的支持:
    • Python
    • Java(注意:启动速度较慢,尤其是初次启动)
    • TypeScript
  • 间接支持(可能需要一些代码更改/手动安装):
    • Ruby(未经测试)
    • Go(未经测试)
    • C#(未经测试)
    • Rust(未经测试)
    • Kotlin(未经测试)
    • Dart(未经测试)
    • C/C++(未经测试)这些语言由语言服务器库multilspy支持,Serena 在其后台使用该库。但我们尚未明确测试这些语言的支持是否有效。

原则上,通过为新的语言服务器实现提供浅层适配器,可以轻松支持更多语言。

目录

我可以使用 Serena 来做什么?

您可以使用 Serena 执行任何编码任务——无论是专注于分析、规划、设计新组件还是重构现有组件。由于 Serena 的工具允许 LLM 完成认知感知-行动循环,因此基于 Serena 的代理可以从头到尾自主执行编码任务——从初始分析到实现、测试,以及最终的版本控制系统提交。

Serena 可以读取、写入和执行代码,读取日志和终端输出。虽然我们并不鼓励这种做法,但“氛围编码”绝对是可行的。如果您想要一种“代码仿佛消失不见”的感觉,那么 Serena 甚至比 IDE 中的代理更适合氛围编码(因为 Serena 拥有一个独立的 GUI,让您真正忘记一切)。

Serena 的免费编码代理

即使是 Anthropic 的 Claude 免费版也支持 MCP 服务器,因此您可以免费将 Serena 与 Claude 一起使用。据推测,一旦添加对 MCP 服务器的支持,ChatGPT Desktop 也很快将实现同样的功能。
通过 Agno,您还可以选择将 Serena 与自由/开放重量模型一起使用。

Serena 是Oraios AI对开发者社区的贡献。
我们自己也经常使用它。

我们厌倦了支付多个基于 IDE 的订阅费用(例如 Windsurf 或 Cursor),这迫使我们在已有的聊天订阅费用之外不断购买代币。Claude Code、Cline、Aider 等基于 API 的工具所产生的高额 API 费用同样令人难以接受。因此,我们构建了 Serena,并设定了可以取消大多数其他订阅的条件。

快速入门

Serena 可以以多种方式使用,下面您将找到针对所选集成的说明。

  • 如果您只是想将 Claude 变成免费使用的编码代理,我们建议您通过 Claude Desktop 使用 Serena。
  • 如果您想使用 Gemini 或任何其他型号,并且想要 GUI 体验,则应该使用Agno 。在 macOS 上,您还可以使用goose的 GUI。
  • 如果您更喜欢通过 CLI 使用 Serena,可以使用goose 。同样,几乎任何模型都是可行的。
  • 如果您想使用集成在 IDE 中的 Serena,请参阅有关其他 MCP 客户端的部分。

设置和配置

  1. 安装uv此处有说明)
  2. 将存储库克隆到/path/to/serena
  3. serena_config.template.yml复制到serena_config.yml并调整设置。
  4. myproject.template.yml复制到myproject.yml ,并根据你的项目调整相应的设置。(为每个你想让 Serena 运行的项目添加一个这样的文件。)
  5. 如果您希望 Serena 在项目之间动态切换,请将上一步中创建的所有项目文件列表添加到serena_config.yml中的projects列表中。

⚠️注意: Serena 正在积极开发中。我们不断添加功能,提升稳定性和用户体验。因此,配置可能会发生重大变化。如果您的配置无效,MCP 服务器或基于 Serena 的代理可能无法启动(前者请检查 MCP 日志)。更新 Serena 时,请查看更新日志和配置模板,并相应地调整您的配置。

初始设置完成后,根据您想要使用 Serena 的方式,继续以下某一部分。

MCP 服务器(Claude 桌面)

  1. 为您的项目创建一个配置文件,例如基于myproject.template.yml中的模板的myproject.yml
  2. 在您的客户端中配置 MCP 服务器。
    对于Claude Desktop (适用于 Windows 和 macOS),请前往“文件 / 设置 / 开发者 / MCP 服务器 / 编辑配置”,打开 JSON 文件claude_desktop_config.json 。添加以下内容(调整路径)以启用 Serena:
    { "mcpServers": { "serena": { "command": "/abs/path/to/uv", "args": ["run", "--directory", "/abs/path/to/serena", "serena-mcp-server", "--project-file", "/abs/path/to/myproject.yml"] } } }
    :info: 如果您在配置中设置了enable_project_activation ,则传递项目文件是可选的,因为此设置将允许您简单地指示 Claude 激活您想要处理的项目。如果您在 Windows 上使用包含反斜杠的路径(请注意,您也可以使用正斜杠),请确保正确转义它们( \\ )。

就这样!保存配置,然后重新启动 Claude Desktop。

注意:Windows 和 macOS 上有 Anthropic 的官方 Claude Desktop 应用程序,Linux 上有一个开源社区版本

⚠️ 请务必完全退出 Claude 桌面应用程序,因为关闭 Claude 只会将其最小化到系统托盘 - 至少在 Windows 上是这样。

重新启动后,您应该会在聊天界面中看到 Serena 的工具(请注意小锤子图标)。

⚠️ 工具名称:Claude Desktop(以及大多数 MCP 客户端)不解析服务器名称。因此,您不应该使用类似“使用 Serena 的工具”之类的说法。相反,您可以指示 LLM 使用符号工具,或者通过引用其名称来使用特定工具。此外,如果您使用多个 MCP 服务器,可能会遇到工具名称冲突,从而导致未定义的行为。例如,由于工具名称冲突,Serena 目前与Filesystem MCP 服务器不兼容。

ℹ️ 请注意,就客户端/服务器架构而言,使用 stdio 作为协议的 MCP 服务器有些不寻常,因为服务器必须由客户端启动才能通过服务器的标准输入/输出流进行通信。换句话说,您无需自行启动服务器。客户端应用程序(例如 Claude Desktop)会负责此操作,因此需要使用启动命令进行配置。

有关带有 Claude Desktop 的 MCP 服务器的更多信息,请参阅官方快速入门指南

其他 MCP 客户 - Cline、Roo-Code、Cursor、Windsurf 等。

作为 MCP 服务器,Serena 可以集成到任何 MCP 客户端中。配置与上述相同,只需根据客户端的具体情况进行少量修改即可。大多数现有的热门编码助手(IDE 扩展或类似 VSCode 的 IDE)都支持连接到 MCP 服务器。集成 Serena 通常可以通过提供符号运算工具来提升性能。

在这种情况下,使用计费仍由您选择的客户端控制(与 Claude Desktop 客户端不同)。但您可能仍希望通过这种方式使用 Serena,例如,出于以下原因之一:

  1. 您已经在使用编码助手(例如 Cline 或 Cursor),只是想让它更强大。
  2. 您使用的是 Linux,但不想使用社区创建的 Claude Desktop
  3. 您希望将 Serena 更紧密地集成到您的 IDE 中,并且不介意为此付费

与使用 Serena for Claude Desktop 相同的考虑(特别是工具名称冲突)也适用于此。

当在内置 AI 交互的 IDE 或扩展程序中使用 Serena 时(实际上,所有 IDE 或扩展程序都内置了 AI 交互功能),Serena 的全套工具可能会与客户端内部工具发生不必要的交互,而这些交互对于用户来说可能难以控制。编辑工具尤其如此,您可能需要为此禁用这些工具。随着我们在各种热门客户端中使用 Serena 的经验不断积累,我们将收集并改进最佳实践,以提供流畅的体验。

goose是一款独立的编码代理,它集成了 MCP 服务器,并提供命令行界面 (CLI)(在 macOS 上还提供图形用户界面 (GUI))。目前,使用 goose 是通过命令行界面运行 Serena 并结合您选择的 LLM 最简单的方法。

按照此处的说明进行安装。

之后,使用goose configure添加扩展。要添加 Serena,请选择Command-line Extension选项,将其命名为Serena ,并添加以下命令:

/abs/path/to/uv run --directory /abs/path/to/serena serena-mcp-server /optional/abs/path/to/project.yml

由于 Serena 可以执行所有必要的编辑和命令操作,因此您应该禁用 Goose 默认启用的developer扩展。为此,请执行

goose configure

再次选择选项Toggle Extensions ,并确保已选择 Serena 已启用而未选择developer

就是这样。仔细阅读 goose 的配置选项,看看你能用它做什么(功能很多,比如为工具执行设置不同级别的权限)。

Goose 似乎并不总是能在会话结束时正确终止 MCP 服务器的 Python 进程。您可能需要在完成 Goose 的工作后禁用 Serena GUI 和/或手动清理所有正在运行的 Python 进程。

不明特工

Agno 是一个与模型无关的代理框架,它允许您将 Serena 转换为一个独立于 MCP 技术且拥有大量底层 LLM 的代理。Agno 是目前在聊天 GUI 中运行 Serena 并使用您选择的 LLM 的最简单方法(除非您使用的是 Mac,否则您可能更喜欢 Goose,它几乎不需要任何设置)。

虽然 Agno 尚未完全稳定,但我们还是选择了它,因为它自带开源 UI,可以直接通过聊天界面使用代理。有了 Agno,Serena 就变成了一个代理(不再是 MCP 服务器),因此可以以编程方式使用(例如用于基准测试或在您的应用程序中使用)。

它的工作原理如下(另请参阅Agno 的文档):

  1. 使用 npx 下载 agent-ui 代码
    npx create-agent-ui@latest
    或者,手动克隆它:
    git clone https://github.com/agno-agi/agent-ui.git cd agent-ui pnpm install pnpm dev
  2. 安装 serena 并满足可选要求:
    # You can also only select agno,google or agno,anthropic instead of all-extras uv pip install --all-extras -r pyproject.toml -e .
  3. .env.example复制到.env并填写您打算使用的提供商的 API 密钥。
  4. 使用以下命令启动 agno 代理应用程序
    uv run python scripts/agno_agent.py
    默认情况下,脚本使用 Claude 作为模型,但您可以选择 Agno 支持的任何模型(本质上是任何现有模型)。
  5. 在新终端中,使用以下命令启动 agno UI
    cd agent-ui pnpm dev
    将 UI 连接到您之前启动的代理并开始聊天。您将拥有与 MCP 服务器版本相同的工具。

以下是 Serena 使用最新 Gemini 模型执行小型分析任务的简短演示:

https://github.com/user-attachments/assets/ccfcb968-277d-4ca9-af7f-b84578858c62

⚠️ 重要提示:与 MCP 服务器方法相比,Agno UI 中的工具执行无需用户许可。shell 工具尤其重要,因为它可以执行任意代码。虽然我们在使用 Claude 进行测试时从未遇到过此类问题,但允许此类操作可能并不完全安全。您可以选择在 Serena 项目的配置文件 ( .yml ) 中禁用某些工具。

其他代理框架

Agno 代理由于 Agno UI 而特别好,但可以轻松地将 Serena 合并到任何代理框架中(如pydantic-ailanggraph或其他)。

您只需编写一个 Serena 工具的适配器,将其与您选择的框架中的工具进行适配,就像我们在SerenaAgnoToolkit中为 agno 所做的那样。

Serena 的工具和配置

Serena 将语义代码检索工具与编辑功能以及 Shell 执行功能相结合。完整的工具列表如下

通常建议使用所有工具,因为这可以让 Serena 提供最大的价值:只有通过执行 shell 命令(特别是测试),Serena 才能自主识别和纠正错误。

但是,需要注意的是, execute_shell_command工具允许任意代码执行。当使用 Serena 作为 MCP 服务器时,客户端通常会在执行工具之前请求用户授予权限,因此只要用户事先检查执行参数,这应该不会造成问题。但是,如果您有顾虑,可以选择在项目的 .yml 配置文件中禁用某些命令。如果您只想使用 Serena 进行代码分析和建议实现,而不修改代码库,则可以考虑在配置中禁用编辑工具,即

  • create_text_file
  • insert_after_symbol
  • insert_at_line
  • insert_before_symbol
  • replace_symbol_body
  • delete_lines

一般来说,请务必备份您的工作并使用版本控制系统,以避免丢失任何工作。

与其他编码剂的比较

据我们所知,Serena 是第一个功能齐全的编码代理,其全部功能都可以通过 MCP 服务器获得,因此不需要 API 密钥或订阅。

基于订阅的编码代理

最突出的基于订阅的编码代理是 Windsurf、Cursor 和 VSCode 等 IDE 的一部分。Serena 的功能类似于 Cursor 的 Agent、Windsurf 的 Cascade 或 VSCode 即将推出的代理模式

Serena 的优点在于无需订阅。但它的一个潜在缺点是它不能直接集成到 IDE 中,因此对新编写代码的检查不够流畅。

更多技术差异包括:

  • Serena 不绑定到特定的 IDE。Serena 的 MCP 服务器可以与任何 MCP 客户端(包括部分 IDE)配合使用,而基于 Agno 的代理则提供了更多应用其功能的方式。
  • Serena 不受特定的大型语言模型或 API 的约束。
  • Serena 使用语言服务器来导航和编辑代码,因此它能够以符号形式理解代码。基于 IDE 的工具通常使用基于 RAG 或纯文本的方法,这种方法通常功能较弱,尤其对于大型代码库而言。
  • Serena 是开源的,并且代码库很小,因此可以轻松扩展和修改。

基于 API 的编码代理

除了基于订阅的代理之外,还有基于 API 的代理,例如 Claude Code、Cline、Aider、Roo Code 等,它们的使用成本直接映射到底层 LLM 的 API 成本。其中一些代理(例如 Cline)甚至可以作为扩展程序包含在 IDE 中。它们通常非常强大,主要缺点是 API 成本(可能非常高)。

Serena 本身可以用作基于 API 的代理(请参阅上文关于 Agno 的部分)。我们尚未为 Serena 编写 CLI 工具或专用 IDE 扩展(而且后者可能也不需要,因为 Serena 已经可以与任何支持 MCP 服务器的 IDE 一起使用)。如果有像 Claude Code 那样需要 Serena 作为 CLI 工具的需求,我们会考虑编写一个。

Serena 与其他基于 API 的代理的主要区别在于,Serena 还可以用作 MCP 服务器,因此无需 API 密钥,从而避免了 API 成本。这是 Serena 独有的功能。

其他基于 MCP 的编码代理

还有其他专为编码而设计的 MCP 服务器,例如DesktopCommandercodemcp 。然而,据我们所知,它们均未提供语义代码检索和编辑工具;它们纯粹依赖于基于文本的分析。正是语言服务器与 MCP 的集成,使得 Serena 独具特色,并且在处理具有挑战性的编码任务时非常强大,尤其是在大型代码库的环境中。

入职和回忆

默认情况下,Serena 首次启动项目时会执行一个入门流程。该流程的目的是让 Serena 熟悉项目并积累经验,以便在未来的互动中运用。

记忆是存储在项目目录下.serena/memories/中的文件,代理可以选择读取这些文件。您可以根据需要随意读取和调整它们;您也可以手动添加新的记忆。.serena .serena/memories/目录下的每个文件都是一个记忆文件。

我们发现这些记忆显著提升了 Serena 的用户体验。Serena 会根据指令,在适当的时候创建新的记忆。

与其他 MCP 服务器组合

通过 MCP 客户端使用 Serena 时,您可以将其与其他 MCP 服务器一起使用。但是,请注意工具名称冲突!请参阅上文相关信息。

目前,Serena 与流行的文件系统 MCP 服务器存在冲突。由于 Serena 也提供文件系统操作,因此可能无需同时启用这两个服务器。

关于使用 Serena 的建议

随着 Serena 社区的不断发展,我们将继续收集最佳实践。以下是我们在内部使用 Serena 时的一些经验总结。

这些建议中的大多数适用于任何编码代理,包括上面提到的所有代理。

选择哪种模型?

令我们惊讶的是,Serena 与 Claude 3.7 的非思考版本(而非思考版本)的配合效果似乎比其思考版本更好(我们尚未与 Gemini 进行广泛的比较)。思考版本耗时更长,工具使用起来更困难,而且经常会在没有阅读足够上下文的情况下直接编写代码。

在我们最初的实验中,Gemini 似乎运行良好。可惜的是,Gemini 还不支持 MCP(目前为止?),所以唯一的使用方式是通过 API 密钥。好的一面是,Gemini 相对便宜,而且可以处理很长的上下文长度。

入职

在第一次交互中,Serena 被要求进行入门培训并写入第一个记忆文件。有时(取决于 LLM 项目),这些文件不会写入磁盘。在这种情况下,只需让 Serena 写入记忆即可。

在此阶段,Serena 通常会读取和写入大量文本,从而填充上下文。我们建议您在完成引导后切换到另一个对话,以免令牌耗尽。除非您明确触发引导,否则引导只会执行一次。

入职后,我们建议您快速浏览一下这些记忆,并在必要时进行编辑或添加其他记忆。

编辑代码之前

最好从干净的 git 状态开始代码生成任务。这不仅能让你更轻松地检查更改,而且模型本身也有机会通过调用git diff查看更改内容,从而自行更正,或在需要时继续进行后续对话。

:warning:重要提示:由于 Serena 会使用系统原生的行尾写入文件,并且可能需要查看 git diff,因此在 Windows 上将git config core.autocrlf设置为true非常重要。如果在 Windows 上将git config core.autocrlf设置为false ,最终可能会因为行尾问题而产生巨大的 diff。通常,在 Windows 上启用以下 git 设置是个好主意:

git config --global core.autocrlf true

代码编辑中的潜在问题

根据我们的经验,LLM 的计数能力非常差,也就是说,它们很难将代码块插入到正确的位置。大多数编辑操作可以在符号级别执行,从而克服了这个问题。然而,有时行级插入也很有用。

Serena 被指示仔细检查行号和它将编辑的任何代码块,但如果遇到问题,您可能会发现明确告诉它如何编辑代码很有用。

脱离上下文

对于冗长复杂的任务,或者 Serena 已读取大量内容的任务,您可能会接近上下文标记的极限。在这种情况下,继续进行新的对话通常是个好主意。Serena 有一个专用工具,可以创建进度的当前状态摘要以及继续进行该任务所需的所有相关信息。您可以请求创建此摘要并将其写入内存。然后,在新的对话中,您可以直接让 Serena 读取内存并继续执行任务。根据我们的经验,这种方法非常有效。好的一面是,由于在单个会话中不涉及摘要,Serena 通常不会迷失方向(不像其他一些在后台进行摘要的代理),并且还会指示它偶尔检查是否在正确的轨道上。

此外,Serena 被指示要谨慎使用上下文(例如,不要不必要地读取代码符号主体),但我们发现 Claude 并不总是擅长于此(Gemini 似乎更擅长)。如果你知道它不需要读取代码符号主体,你可以明确地指示它不要读取。

控制工具执行

Claude Desktop 会在执行工具之前询问您。对于大多数工具,您可以放心地点击“允许本次聊天”,尤其是在所有文件都受版本控制的情况下。execute_shell_command 工具是一个例外 - 您可能需要单独检查每个execute_shell_command 。我们建议您检查每次调用此命令,而不是在整个聊天过程中都启用它。

构建你的代码库

Serena 使用代码结构来查找、读取和编辑代码。这意味着它能很好地处理结构良好的代码,但可能无法处理完全非结构化的代码(例如包含大量非模块化函数的 God-class)。类型注释在这里也大有帮助。你的代码越好,Serena 的效果就越好。因此,我们通常建议你编写结构良好、模块化且类型明确的代码——这不仅对你有帮助,对你的 AI 也同样有帮助 ;)。

日志记录、Lint 和测试

Serena 无法调试(据我们所知,目前没有编码助手可以做到这一点)。这意味着,为了改进代理循环中的结果,Serena 需要通过执行测试、运行脚本、执行 linting 等方式来获取信息。包含大量包含明确信息的日志消息并进行有意义的测试通常非常有帮助。尤其是后者,通常有助于代理进行自我纠正。

我们通常建议从所有 linting 检查和测试通过的状态开始编辑任务。

一般建议

我们发现,在实际执行任务之前,花一些时间进行概念化和规划通常是一个好主意,尤其是对于一些比较重要的任务。这不仅有助于取得更好的结果,还能增强掌控感,并保持进度。你可以在一个环节制定详细的计划,Serena 可能会阅读你的大量代码来构建上下文,然后在另一个环节继续执行(可能在建立合适的记忆之后)。

故障排除

Claude Desktop 中对 MCP 服务器的支持以及各种 MCP 服务器 SDK 是相对较新的开发,可能会出现不稳定性。

MCP 服务器的工作配置可能因平台和客户端而异。我们建议始终使用绝对路径,因为相对路径可能存在错误。语言服务器在单独的子进程中运行,并使用 asyncio 调用——有时客户端可能会导致其崩溃。如果您启用了 Serena 的日志窗口,而它消失了,您就会知道发生了什么。

一些客户端(如 goose)可能无法正确终止 MCP 服务器,请留意挂起的 python 进程并在需要时手动终止它们。

塞雷娜伐木公司

为了帮助您进行故障排除,我们编写了一个用于日志记录的小型 GUI 实用程序。对于大多数客户,我们建议您在遇到问题时通过项目配置 ( myproject.yml ) 启用它。许多客户还会编写 MCP 日志来帮助识别问题。

日志记录 GUI 可能无法在所有客户端和系统上运行。目前,它无法在 macOS 或 Cline 等 VSCode 扩展程序上运行。

致谢

我们在多种现有开源技术的基础上构建了 Serena,其中最重要的是:

  1. multilspy 。一个设计精美的封装器,遵循 LSP 规范,用于语言服务器。它无法轻松扩展 Serena 所需的符号逻辑,因此我们没有将其作为依赖项引入,而是复制了源代码并根据需求进行了调整。
  2. Python MCP SDK
  3. Agno和相关的agent-ui ,我们利用它们允许 Serena 与任何模型一起工作,除了支持 MCP 的模型。
  4. 我们通过 multilspy 使用的所有语言服务器。

如果没有这些项目,Serena 就不可能建成(或者说建造起来会困难得多)。

自定义 Serena

您可以根据自己的需求轻松扩展 Serena 的 AI 功能。只需继承serena.agent.Tool并实现apply方法(此方法不属于接口,请参阅Tool中的注释)即可实现一个新的 Tool。默认情况下, SerenaAgent将立即获得访问权限。

添加对新语言的支持也相对简单。我们期待看到社区的贡献!有关贡献的详细信息,请参阅此处

完整工具列表

以下是 Serena 工具的完整列表及其简短说明( uv run serena-list-tools的输出):

  • activate_project :按名称激活项目。
  • check_onboarding_performed :检查入职是否已完成。
  • create_text_file :在项目目录中创建/覆盖文件。
  • delete_lines :删除文件内的一定范围的行。
  • delete_memory :从 Serena 的项目特定记忆库中删除记忆。
  • execute_shell_command :执行shell命令。
  • find_referencing_code_snippets :查找引用给定位置的符号的代码片段。
  • find_referencing_symbols :查找引用给定位置的符号的符号(可选择按类型过滤)。
  • find_symbol :执行全局(或本地)搜索,查找具有/包含给定名称/子字符串的符号(可选择按类型过滤)。
  • get_active_project :获取当前活动项目的名称(如果有)并列出现有项目
  • get_symbols_overview :获取给定文件或目录中定义的顶级符号的概述。
  • insert_after_symbol :在给定符号定义结束后插入内容。
  • insert_at_line :在文件的给定行插入内容。
  • insert_before_symbol :在给定符号定义的开始之前插入内容。
  • list_dir :列出给定目录中的文件和目录(可选递归)。
  • list_memories :列出 Serena 项目特定记忆库中的记忆。
  • onboarding :执行入职培训(确定项目结构和基本任务,例如测试或构建)。
  • prepare_for_new_conversation :提供准备新对话的说明(以便继续必要的上下文)。
  • read_file :读取项目目录中的文件。
  • read_memory :从 Serena 的项目特定内存存储中读取具有给定名称的内存。
  • replace_lines :用新内容替换文件中的一系列行。
  • replace_symbol_body :替换符号的完整定义。
  • restart_language_server :重新启动语言服务器,当不通过 Serena 进行编辑时可能需要重新启动。
  • search_for_pattern :在项目中执行模式搜索。
  • summarize_changes :提供总结代码库所做更改的说明。
  • think_about_collected_information :用于思考所收集信息完整性的思考工具。
  • think_about_task_adherence :用于确定代理是否仍在按计划执行当前任务的思考工具。
  • think_about_whether_you_are_done :用于判断任务是否真正完成的思考工具。
  • write_memory :将命名内存(供将来参考)写入 Serena 的项目特定内存存储。
ID: jga5aoweo7