Serena + Hermes Agent localmente: a IDE que faltava ao seu agent de programação
Autoria: Fahd Mirza · Assistir no YouTube
Vídeo de autoria do canal indicado, não da IANIA; todos os direitos pertencem ao criador. Transcrição, resumo e tradução gerados automaticamente; o conteúdo no idioma original é preservado na versão em idioma original.
Idioma original: inglês
Vídeo original: Serena + Hermes Agent Locally: IDE Your AI Coding Agent Was Missing · Canal: Fahd Mirza · 07:49 · Assistir no YouTube
Tópicos: Agentes de IA, Engenharia de software com IA, Ferramentas de desenvolvimento com IA
O vídeo apresenta Serena, uma ferramenta que oferece a um agent de programação recursos de compreensão semântica do código por meio de LSP e MCP. O apresentador instala Serena e a conecta ao Hermes Agent para analisar um aplicativo local com bugs. Em um teste, o agent encontra referências à coluna grade e identifica uma junção SQL incorreta. Em outro, renomeia uma função em todos os locais de uso e verifica o resultado.
Pontos-chave
Seção intitulada “Pontos-chave”- Serena oferece recursos de IDE, como localizar símbolos e referências e renomear funções com segurança.
- LSP permite que Serena compreenda a estrutura do código, em vez de tratar tudo como texto simples.
- MCP conecta o agent às ferramentas disponibilizadas por Serena.
- O apresentador configura Serena como servidor MCP no Hermes Agent, com escopo restrito à pasta do projeto.
- Serena expõe 21 ferramentas, que podem ser habilitadas na configuração do Hermes Agent.
- O agent encontra referências à coluna
gradee as organiza de acordo com o papel de cada ocorrência. - A análise identifica uma condição de junção SQL que compara com uma coluna inexistente na tabela.
- O agent renomeia uma função em seus locais de uso e verifica a alteração.
- O apresentador afirma que Serena pode ser usada com diferentes harnesses.
Capítulos
Seção intitulada “Capítulos”| Início | Capítulo | Resumo |
|---|---|---|
| 00:01 | Apresentação de Serena e instalação | O vídeo explica como Serena oferece recursos de IDE para agents e mostra sua instalação e inicialização. |
| 01:37 | Como LSP e MCP conectam Serena ao agent | O apresentador explica os papéis de LSP e MCP e prepara a conexão de Serena ao Hermes Agent. |
| 03:44 | Configuração e busca semântica no código | Serena é habilitada no Hermes Agent, que procura as referências à coluna grade e identifica uma junção incorreta. |
| 06:48 | Renomeação segura e conclusão | O agent renomeia uma função em seus locais de uso, verifica a alteração e o apresentador comenta a compatibilidade com diferentes harnesses. |
Citações
Seção intitulada “Citações”Serena se apresenta como a IDE do seu agent de programação. — 00:01
Serena usa LSP como seu cérebro para inteligência de código. — 01:37
Essa é a diferença entre uma busca no nível do grep e uma compreensão real do código. — 05:17
Uma renomeação baseada em texto corre o risco de alterar o shipment ou comentário errado. — 07:18
Conceitos e entidades
Seção intitulada “Conceitos e entidades”- Serena (ferramenta): Ferramenta que oferece a agents recursos de compreensão semântica e edição de código por meio de LSP.
- LSP (conceito): Protocolo de servidor de linguagem que fornece informações estruturais sobre símbolos, chamadas e referências no código.
- MCP (conceito): Protocolo usado para conectar agents a ferramentas externas de forma padronizada.
- Hermes Agent (ferramenta): Agent usado no vídeo para se conectar a Serena e interagir com o código do projeto.
- Claude Code (ferramenta): Ferramenta mencionada como outra opção de agent que pode se conectar a Serena.
- Iron Ore (repo): Aplicativo local com bugs usado como projeto de demonstração.
Tradução completa (pt-BR)
Seção intitulada “Tradução completa (pt-BR)”00:01 Então, o que estamos vendo aqui é o Serena. Ele se apresenta como a IDE para seu agent de programação. Normalmente, quando um agent de IA edita código, trabalha quase às cegas, vasculhando texto, tentando adivinhar números de linha e fazendo alterações frágeis no texto, que se quebram facilmente diante de qualquer coisa além de uma mudança trivial. Serena resolve isso dando ao agent uma compreensão do seu codebase no nível de uma IDE. Ele pode
00:33 encontrar um símbolo, rastrear todas as referências a uma função entre arquivos, renomear algo com segurança em todos os lugares em que é usado, tudo isso por meio de ferramentas semânticas adequadas, em vez de truques com texto. Vamos instalá-lo e, depois, vou usá-lo neste aplicativo local em execução, que tem alguns bugs, mas já está rodando no meu sistema Ubuntu, com um backend, um frontend e várias outras coisas. O aplicativo em si não é realmente o foco aqui. O mais importante é como Serena faz aquilo que
01:04 promete fazer. Então, vou instalá-lo com o UV. É um comando simples, que o instala rapidamente em um ambiente virtual. Pronto, já está feito. Vamos inicializá-lo rapidinho. E, a propósito, meu nome é Fahad Mirza, e dou as boas-vindas ao canal. Recentemente, também comecei esta newsletter semanal gratuita sobre IA, na qual você pode se inscrever em fahadmirza.substack.com. E, se estiver procurando alugar uma GPU por um preço muito bom, você encontra o link para Mass Compute na descrição do vídeo.
01:37 Serena foi inicializado, e você pode ver que o backend de linguagem está configurado para este LSP. Há dois termos que você precisa conhecer: LSP e MCP. LSP é o protocolo de servidor de linguagem. É a mesma tecnologia que permite o preenchimento automático, ir para a definição e a refatoração em editores como VS Code ou PyCharm. É um processo em segundo plano que realmente entende a estrutura do seu código, os símbolos, as chamadas de função e as referências, em vez de tratá-lo como texto simples. Serena usa o LSP como seu cérebro
02:11 para inteligência de código. Depois, temos o MCP, ou protocolo de contexto de modelo. Esta é uma camada de conexão. É como qualquer agent, seja Claude Code, Cursor, Hermes Agent ou OpenClaw, pode se comunicar com ferramentas externas de maneira padronizada. Serena disponibiliza seus recursos com tecnologia LSP como ferramentas MCP. Assim, qualquer agent que você estiver usando pode chamar diretamente funções como encontrar símbolo ou encontrar referências. Agora, já tenho o Claude Code instalado
02:42 e o Hermes Agent instalado, e ele até já nos disse que podemos usar o Claude Code, mas vou usar o Hermes Agent neste caso. E este diagrama que acabei de mostrar também apresenta tudo o que expliquei. Certo, está tudo configurado. Já tenho o Hermes Agent instalado. Então, vou conectar Serena ao Hermes Agent como um servidor MCP e, depois, vou apontá-lo
03:12 para este nosso aplicativo Iron Ore cheio de bugs, para que ele possa ver o código. É isso que vou fazer aqui. Este é o comando que vou executar. Ele registra um novo servidor MCP chamado Serena e informa ao Hermes como iniciá-lo. Ele executa o binário do Serena com o comando de iniciar o servidor MCP, no modo de assistente de IDE, limitado à pasta do nosso projeto, que está no meu sistema local. Como você pode ver, ele já encontrou Serena.
03:44 Ele se conectou a esse servidor MCP, e estas são todas as ferramentas — 21 delas — que Serena disponibiliza. Vou simplesmente pressionar Y maiúsculo para disponibilizar todas as ferramentas e ativá-las. E agora tudo foi salvo neste arquivo .Hermes config.yml. A propósito, estou usando a versão mais recente do Hermes Agent, então confira se você também está usando essa versão. E esta é a minha versão do Hermes, caso queira consultá-la como referência.
04:15 Em seguida, vou iniciar o Hermes Agent no meu terminal. Vou iniciá-lo como um Hermes Agent padrão, e ele também deve encontrar esse servidor MCP. Pronto, ele foi iniciado. Se eu rolar para cima, ele deve estar por aqui. Aí está. Este é o nosso servidor MCP Serena, ao qual ele está conectado. Primeiro, vou fazer uma pergunta simples sobre este codebase. Vou perguntar: “Encontre todas as referências à coluna grade neste codebase.”
04:46 É uma pergunta simples. Vamos esperar. Você pode ignorar estes avisos, porque ele está apenas me pedindo para atualizar o Hermes Agent. Essa atualização aparece mais ou menos a cada duas horas, todos os dias. Vou deixá-lo executar para que você também possa ver como ele usa a ferramenta. Em seguida, ele vai até esse Iron Ore DB, como você pode ver. Agora encontrou todas as referências e está nos mostrando bem o que a ferramenta pode fazer. Vou subir um pouco. Aí está. Está vendo?
05:17 Esta é a busca semântica e a ação do Serena. Ele acabou de analisar todas as referências a grade no codebase inteiro, agrupou-as por função e identificou o bug exato na linha 123, sem que eu precisasse dizer onde procurar. Essa é a diferença entre uma busca no nível do grep e uma compreensão real do código, e é disso que trata este repo. Agora, neste ponto, vou explicar de novo o que torna isso semântico, e não apenas uma busca por texto, porque
05:47 é isso que faz a diferença. O Hermes não está apenas procurando a palavra grade onde quer que ela apareça. Ele usa Serena para realmente entender o significado de cada ocorrência no contexto. Ele sabe, por exemplo, que esta linha 44 — olhe só — é uma definição de coluna, e que a linha 80 é um campo de modelo Pydantic. A linha 123, digamos, que mostrei antes, é uma condição de junção dentro de uma string SQL. E então ele consegue perceber que
06:17 uma das junções está estruturalmente errada, porque compara com uma coluna que não existe na tabela. Se você fizesse apenas um grep simples no shell, obteria as 32 correspondências sem qualquer organização, sem saber qual delas é um esquema, qual é uma variável e qual está realmente com defeito. Ainda teria que ler tudo por conta própria. O backend de servidor de linguagem do Serena, o LSP, realmente interpreta a estrutura do código, então o agent recebe tudo pré-organizado e até
06:48 identifica o bug real por conta própria. Vou fazer outra pergunta. Certo, vamos fazer mais um teste final, que acho que vai ajudar você a entender melhor. Vou pedir para renomear a função shipment summary para get tonnage by grade. Isso é algo que o grep geralmente não consegue fazer com segurança: uma renomeação de verdade. Então, estamos pedindo para renomear essa função para outra coisa em todos os lugares em que ela é usada. Uma renomeação baseada em texto corre o risco de renomear a remessa errada ou um comentário, enquanto isso deveria ser capaz de, uh,
07:18 renomeá-la. Como você pode ver, já está fazendo isso muito bem. E, com sorte, vai atualizar tudo junto, como uma única operação atômica — essa é a parte essencial. Pronto. Está vendo? O teste de renomeação foi feito em um só lugar, e está correto. E não só renomeou, como também verificou o resultado e nos deu a resposta exata. Muito bom, não é? Ficou muito bom. Então, acho que o projeto parece bastante promissor e, como eu disse, não é limitado a um único
07:49 harness. Você pode usá-lo com qualquer harness que preferir, assim como fizemos com o Hermes Agent. É a mesma coisa. Você só precisa reproduzir o mesmo padrão de MCP com OpenCode, OpenClaw, sabe, qualquer Claw que estiver usando, ou Claude Code. É isso. Conte nos comentários o que acha desta ferramenta. Mais uma vez, se quiser apoiar o canal, torne-se membro e assine esta newsletter. Obrigado por todo o apoio.
Transcrição original
[00:01] So, what we are looking at here is Serena. It builds itself as the IDE for your coding agent. Normally, what happens is that when an AI agent edits code, it’s working almost blind, grabbing through text, guessing at line numbers, doing fragile text surgery that breaks easily on anything beyond a trivial change. Serena fixes that by giving the agent real IDE level understanding of your code base. It can
[00:33] find a symbol, trace every reference to a function across files, rename something safely everywhere it’s used, all through proper semantic tooling instead of text hacks. We are going to install it, and then I’m going to use it on this live local application which has some bugs, but it is already running on my Ubuntu system with some back end, front end, and a lot of other things. Application is not really in question here. The most important thing is how Serena does what
[01:04] it promises that it does. So, I’m just going to get it installed through UV. It’s a simple command which installs it fairly quickly in a virtual environment. That’s already done. Let’s quickly initialize it. And by the way, this is Fahad Mirza, and I welcome you to the channel. Recently, I also have started this free weekly AI newsletter which you can subscribe at fahadmirza.substack.com. And if you’re looking to rent a GPU on very good price, you can find the link to Mass Compute in video’s description.
[01:37] Serena is initialized, and you can see that the language back end is set to this LSP. Now, there are two terms which you need to be aware of, LSP and MCP. LSP is language server protocol. It is the same technology that powers auto complete, go to definition, and refactoring in editors like VS code or PyCharm. It’s a background process that actually understands your code structure, the symbols, the function calls, the references, rather than treating it as plain text. Serena uses LSP as its brain
[02:11] for code intelligence. Then we have MCP or model context protocol. This is a connector layer. It’s how any agent, whether that’s Cloud Code, Cursive Hermes Agent, Open Claw, um can talk to external tools in a standard way. Serena exposes its LSP-powered capabilities as MSP tools. So, whatever agent you are using can call things like find symbol or find references directly. Um now I already have Cloud Code installed
[02:42] and Hermes Agent installed, and it has already um even told us that we can use that Cloud Code, but I’m going to use Hermes Agent for this one. And this diagram, which I just showed you, also tells you the whole stuff which I just uh explained. Okay, so everything is set up. I already have Hermes Agent installed. So, what I’m going to do, I’m going to hook this Serena up to Hermes Agent as an MCP server, and then I’m going to point it
[03:12] at our this buggy Iron Ore application so it can see the code. That is what I’m going to do here. So, this is the command which I’m going to run. This registers a new MCP server named Serena, and tells Hermes how to actually launch it. Where it is running the Serena binary with the start MCP server command in IDE assistant mode scoped to our project folder, which is on my local system. So, you see it already has found Serena.
[03:44] It got connected to that MCP server, and these are all the tools, 21 of them, which Serena exposes. So, I’m to just press capital Y to expose all the tools and enable them. And now everything has been saved in this uh dot Hermes config.yml file. And by the way, I’m using the latest version of Hermes agent, so make sure you’re also using that. And this is my Hermes version if you want to check it out as a reference.
[04:15] And next up, let me launch Hermes agent on my terminal. I’m just going to launch it uh as a vanilla Hermes agent, and it should find that um MCP server, too. So, it is launched. If I just scroll up, it should be here somewhere. There you go. So, this is our MCP server Serena where it is connected to it. So, let me first ask it a simple question from this code base. So, I’m asking it, “Find all references to the grade column across this code base.”
[04:46] It’s a simple enough one. And let’s wait for it. You can ignore these warnings because it is just asking me to update the Hermes agent. That update happens like every other hour every day. So, I will let it run so that you could also see how it is using the tool. And then it is going to that Iron Ore DB, as you can see. And now it has found all the references. And it is giving us uh the whole flavor of the tool. So, I’ll just go up. There you go. You see?
[05:17] So, this is Serena semantic search and action. It just scanned every reference to grade across the whole code base, grouped by role, and pinpointed the exact bug on line um this one, 123, without me telling it where to look. That’s the difference between grep level search and real code understanding, and that is what this whole repo is all about. Now, this is the point where uh I will just again explain what makes this semantic, not just text search, because
[05:47] that is what makes it different. Hermie’s isn’t just matching the word grade wherever it happens. It’s using Serena to actually understand what each occurrence means in context. It look It knows, for example, this line 44. Look at this. It is a column definition, and then line 80 is a Pydantic model field. Line, uh, let’s say 123, which I showed you earlier. That, uh, is a join condition inside a SQL string, and then it can tell that
[06:17] one join is structurally wrong because it’s comparing against a column that doesn’t exist on the table. If you would do just a plain grep in shell, that would have dumped all 32 matches flat, with no idea which one is a schema, which is a variable, and which is actually broken. You would still have to read through them yourself. Serena’s language server back end, LSP, actually passes the code’s structure, so the agent gets it pre-organized and even
[06:48] flags the real bug on its own. Let me ask it another question. Okay, let me do another final test where I think you will understand a bit more. I’m asking it to rename the function shipment summary to get tonnage by grade. Now, this is something grep generally cannot do safely, a real rename. So, we’re asking it to rename this function to something else everywhere it is used. A text-based rename risks renaming the wrong shipment or comment, whereas this should be, uh,
[07:18] able to rename it, which you can see it is already doing it pretty nicely. And hopefully it is going to update them all together as one atomic operation, and that is the key part here. There you go. You see? The rename test one place, and that is correct. And it has not only renamed it, but also it verified it, and then given us the exact answer. How good is that? Really good stuff. So, I think the project seems quite promising and as I said it is not really fixated on one
[07:49] harness. You can use it with any harness of your choice just like we did with Hermes Agent, same thing. Um you will you will just replicate the same pattern of MCP with open code, claw, you know, whatever claw you are using or claw code. That’s it. Let me know in the comments what do you think about this tool. Again, if you want to help out the channel, please become a member and subscribe to this newsletter. Thank you for all the support.