====== Serena ======
//Vytvořeno: **15.8.2026** | Aktualizováno: **~~LASTMOD~~**//
[[https://github.com/oraios/serena|Serena]] je open-source nástroj, který dává coding agentům schopnosti IDE přes Model Context Protocol (MCP). Agent díky němu může v projektu vyhledávat a upravovat funkce, třídy a jejich reference podle významu kódu, ne jen podle textu nebo čísel řádků.
===== K čemu slouží =====
Serena není AI model ani samostatný autonomní agent. Je to vrstva mezi agentem, například OpenCode, Claude Code nebo Codexem, a nástroji pro analýzu zdrojového kódu.
Největší přínos má při práci nad většími nebo neznámými projekty:
* najde definici funkce, třídy nebo metody a všechna její použití;
* zobrazí přehled symbolů v souboru, aniž by agent musel načíst celý soubor;
* přejmenuje symbol napříč projektem přes refaktoring language serveru;
* nahradí celé tělo konkrétního symbolu nebo vloží obsah před či za něj;
* vrátí diagnostiku z language serveru;
* uchovává volitelnou projektovou paměť pro další agentní session.
Příklad: při přejmenování metody ''calculateTotal'' na ''calculateInvoiceTotal'' by agent neměl slepě nahradit řetězec v souborech. Serena může najít symbol a požádat language server o refaktoring, který pracuje s jeho skutečnými referencemi.
Serena nenahrazuje testy, lint, code review ani Git. Sémantické nástroje snižují riziko chybné editace, ale správnost výsledku stále musí ověřit testy a kontrola změn.
===== CLI a MCP server =====
Serena má dvě role.
* **CLI ''serena''** obsluhuje instalaci, konfiguraci, správu projektu, indexaci a spuštění serveru.
* **MCP server** je rozhraní, přes které Serenu volá agent. Agent nepoužívá příkazy typu ''serena find-symbol''; po připojení dostane MCP nástroje jako ''find_symbol'' nebo ''rename_symbol''.
Po instalaci přes [[https://docs.astral.sh/uv/getting-started/installation/|uv]] jsou pro člověka užitečné například tyto příkazy:
# Instalace a inicializace s výchozím LSP backendem
uv tool install -p 3.13 serena-agent
serena init
# Vytvoření projektu a předindexace symbolů
serena project create --index
# Dodatečná indexace a kontrola projektu
serena project index
serena project health-check
# Spuštění MCP serveru
serena start-mcp-server
Podle [[https://oraios.github.io/serena/02-usage/020_running.html|dokumentace spuštění]] se v běžném režimu ''stdio'' server nespouští ručně: MCP klient jej spustí jako vlastní podproces a komunikuje s ním přes standardní vstup a výstup.
==== Provozní režimy ====
**Stdio** je vhodné pro jednoho agenta nad jedním projektem. Každá agentní session spustí vlastní instanci Sereny.
**Streamable HTTP** se hodí, když se k jedné instanci mají připojovat různí klienti nad týmž projektem. Server pak spouští správce prostředí a klienti se připojí na MCP URL. Serena je stavová a v jedné instanci má aktivní právě jeden projekt; nesdílí se proto mezi agenty, kteří pracují nad různými repozitáři.
===== Jak funguje LSP backend =====
[[https://microsoft.github.io/language-server-protocol/|Language Server Protocol (LSP)]] je standardní rozhraní mezi editorem a analyzátorem konkrétního programovacího jazyka. Language server zná syntaxi, importy, typy, definice a reference v projektu.
Agent → MCP → Serena → LSP language server → analýza projektu
← ← ← ← výsledky
Serena převede MCP volání na dotazy do vhodného language serveru a odpověď vystaví agentovi ve sjednocené podobě. Nejde o hledání nad embeddingy ani o vektorovou databázi nad zdrojovým kódem. Sémantické porozumění dodává konkrétní language server.
Například [[https://github.com/microsoft/pyright|Pyright]] analyzuje Python, [[https://intelephense.com/|Intelephense]] PHP, [[https://github.com/typescript-language-server/typescript-language-server|TypeScript Language Server]] TypeScript a JavaScript, ''gopls'' Go a ''rust-analyzer'' Rust. [[https://oraios.github.io/serena/01-about/020_programming-languages.html|Serena podporuje]] desítky jazyků; u některých server sama stáhne a u jiných vyžaduje lokální závislost nebo další konfiguraci.
==== Nástroje pro agenta ====
[[https://oraios.github.io/serena/01-about/035_tools.html|Nástroje Sereny]] zahrnují zejména:
* ''find_symbol'', ''find_declaration'', ''find_implementations'' a ''find_referencing_symbols'' pro navigaci v kódu;
* ''get_symbols_overview'' pro strukturu souboru;
* ''get_diagnostics_for_file'' pro chyby a varování;
* ''rename_symbol'', ''replace_symbol_body'', ''insert_before_symbol'', ''insert_after_symbol'' a ''safe_delete_symbol'' pro symbolické editace;
* nástroje pro projektovou paměť a onboarding.
Podpora jednotlivých operací závisí na schopnostech language serveru. LSP backend například umí rename symbolů, ale obecný přesun symbolu, souboru nebo adresáře není dostupný pro všechny jazyky.
===== Indexace a projektová paměť =====
Serena rozlišuje analýzu kódu od projektové paměti.
==== Indexace kódu ====
Language server při otevření projektu analyzuje workspace a vytváří si vlastní informace o symbolech a vztazích. Serena může u větších projektů předem načíst symbolická data příkazem ''serena project index''. Tato předindexace zrychlí první dotazy; podle [[https://oraios.github.io/serena/02-usage/040_workflow.html|workflow dokumentace]] se spouští jednou a Serena ji pak průběžně aktualizuje při změnách souborů.
U JetBrains backendu indexaci obstarává IDE, takže samostatná indexace Sereny nedává smysl.
==== Paměť a onboarding ====
Při prvním použití projektu může Serena provést onboarding: projde důležité soubory, build a testovací nastavení a vytvoří lidsky čitelné Markdown poznámky v '' .serena/memories/'' v kořeni projektu. Typicky jde o architekturu, příkazy pro build a testy nebo projektové konvence.
[[https://oraios.github.io/serena/02-usage/045_memories.html|Paměť Sereny]] není RAG ani databáze. Agent nejdříve dostane seznam názvů pamětí a relevantní soubor si přečte cíleně. Paměti lze upravovat ručně, verzovat s projektem a kombinovat s ''AGENTS.md''.
Onboarding může spotřebovat hodně kontextu. Po prvním spuštění je vhodné vytvořené poznámky zkontrolovat a pro další práci začít novou agentní session. Pokud projekt vlastní paměť nepotřebuje, lze ji i onboarding vypnout režimy ''no-memories'' nebo ''no-onboarding''.
===== Alternativní JetBrains backend =====
Vedle výchozího LSP backendu nabízí Serena [[https://oraios.github.io/serena/02-usage/025_jetbrains_plugin.html|placený plugin pro JetBrains IDE]]. MCP server zůstává stejný; plugin je jen alternativní zdroj jazykové inteligence z otevřeného IDE.
JetBrains varianta navíc umí například indexovat externí knihovny, přesouvat symboly, soubory a adresáře, inlinovat symboly, zobrazit type hierarchy a interaktivně debugovat přes breakpointy a REPL. Vyžaduje otevřený stejný projekt v IDE a není nutná, pokud LSP backend poskytuje dostatečnou podporu pro daný jazyk.
===== Doporučené nastavení pro coding agenta =====
Výchozí LSP backend není chybný. Nevhodné však může být výchozí nastavení serveru určené pro klienta, který nemá vlastní nástroje pro soubory a shell. OpenCode už takové nástroje má, proto není dobré vystavit dvě sady podobných nástrojů bez jasného pravidla použití.
Pro terminálového coding agenta je vhodný kontext ''ide'', který je určený pro asistenty s vlastními základními nástroji. Server lze spustit například takto:
serena start-mcp-server \
--context ide \
--project-from-cwd \
--open-web-dashboard false
* ''--context ide'' omezuje duplicity se souborovými a shellovými nástroji agenta.
* ''--project-from-cwd'' vybere projekt podle aktuálního adresáře; Serena hledá nejbližší '' .serena/project.yml'' nebo ''.git''.
* Dashboard je vhodný při ladění, ale v headless agentním provozu jej není nutné otevírat.
[[https://oraios.github.io/serena/02-usage/030_clients.html|Dokumentace MCP klientů]] upozorňuje, že agenti někdy preferují vlastní ''grep'' a čtení souborů, i když mají Sereně dostupné sémantické nástroje. Pro práci v projektu proto dává smysl mít v ''AGENTS.md'' explicitní pravidlo: pro navigaci v kódu, hledání referencí, rename a změny napříč soubory má agent nejprve použít symbolické nástroje Sereny. Textové vyhledávání zůstává vhodné pro konfigurace, dokumentaci, nezdrojové soubory a případy, kde LSP daný jazyk nebo konstrukci nepokrývá.
===== Bezpečnost a omezení =====
Serena může upravovat soubory a spouštět příkazy. Důvěryhodný MCP klient, důvěryhodný repozitář a důvěryhodná lokální konfigurace jsou součástí jejího bezpečnostního modelu.
* Udržuj projekt v Gitu a ověřuj ''git diff'', testy a lint.
* Aktivní nástroje omez na nezbytné minimum.
* Nedůvěryhodné repozitáře otevírej v sandboxu, například v Dockeru. Označení projektu jako nedůvěryhodného není sandbox a samo o sobě nebrání agentovi měnit soubory nebo spouštět příkazy.
* HTTP režim ponech na ''localhost'', pokud není k dispozici bezpečná síťová vrstva s autentizací a omezeným přístupem.
* LSP backend může na vyžádání instalovat language servery. Serena pro řadu z nich používá připnuté verze, kontrolu hashů, omezení zdrojových hostitelů a vlastní instalační adresáře, ale správce stále musí důvěřovat použitým registry a závislostem.
Podrobnosti popisuje [[https://oraios.github.io/serena/02-usage/070_security.html|bezpečnostní dokumentace Sereny]].
===== Kdy ji použít =====
Serena se vyplatí pro rozsáhlejší aplikace, monorepa, refaktoring veřejných API, práci v neznámém kódu a dlouhodobé agentní workflow. Pro malý skript, čistě dokumentační repozitář nebo jednorázovou textovou změnu přinese málo oproti běžnému hledání a editaci souborů.
===== Zdroje =====
* [[https://github.com/oraios/serena|Serena – repozitář projektu]]
* [[https://oraios.github.io/serena/01-about/035_tools.html|Serena – přehled MCP nástrojů]]
* [[https://oraios.github.io/serena/01-about/020_programming-languages.html|Serena – jazyková podpora a LSP]]
* [[https://oraios.github.io/serena/01-about/025_features.html|Serena – srovnání funkcí LSP a JetBrains backendu]]
* [[https://oraios.github.io/serena/02-usage/020_running.html|Serena – spuštění serveru]]
* [[https://oraios.github.io/serena/02-usage/030_clients.html|Serena – připojení MCP klienta]]
* [[https://oraios.github.io/serena/02-usage/040_workflow.html|Serena – workflow projektu a indexace]]
* [[https://oraios.github.io/serena/02-usage/045_memories.html|Serena – paměť a onboarding]]
* [[https://oraios.github.io/serena/02-usage/025_jetbrains_plugin.html|Serena – JetBrains plugin]]
* [[https://oraios.github.io/serena/02-usage/070_security.html|Serena – bezpečnostní doporučení]]
* [[https://microsoft.github.io/language-server-protocol/|Language Server Protocol]]