Zobrazit stránkuStarší verzeZpětné odkazyNahoru Tato stránka je pouze pro čtení. Můžete si pouze prohlédnout zdrojový kód, ale ne ho měnit. Zeptejte se správce, pokud si myslíte, že něco není v pořádku. ====== OpenCode: CLI agent a vlastní Web UI ====== ===== Úvodní Kontext ===== Potřeboval jsem mít AI kódovacího agenta, kterého spustím v terminálu, v IDE, případně přes webové UI, a přitom si zachovám kontrolu nad tím, co běží lokálně a co se tahá z internetu. V tomhle mi dává smysl OpenCode jako **privacy-first** nástroj s client-server architekturou. https:%%//%%opencode.ai ===== Co je OpenCode a jak je postavený ===== OpenCode beru jako open-source AI kódovacího agenta pro terminál, IDE nebo desktop, který mi pomáhá se psaním kódu, laděním a správou projektů. Podle projektu podporuje víc než 75 LLM providerů (Claude, GPT, Gemini i lokální modely) a je hodně rozšířený (uvádí 80 000+ stars a 1,5M měsíčních uživatelů). https:%%//%%opencode.ai ==== Základní vlastnosti, které používám jako „rychlou mapu" ==== * **CLI/TUI jako primární rozhraní**: nejčastěji běžím ''%%opencode%%'' v terminálu a UI je součást binárky (žádné externí CDN UI). https:%%//%%github.com/opencode-ai/opencode * **LSP integrace**: mám code intelligence přes automatickou integraci LSP. https:%%//%%opencode.ai * **Multi-session**: používám paralelní agenty a sdílení odkazů na sessiony. https:%%//%%opencode.ai * **Nástroje pro práci s repem**: ''%%glob%%'', ''%%grep%%'', bash execution, editování souborů a MCP pro integraci externích toolů. https:%%//%%github.com/opencode-ai/opencode * **Privacy-first + client-server**: server běží lokálně a myšlenka je, že kód se nikam neukládá; TUI je jen jeden z klientů. https:%%//%%yuv.ai/blog/opencode ==== Architektura (co si hlídám při debugování a integracích) ==== OpenCode je podle repa napsaný v Go a je modulárně rozdělený (např. ''%%cmd%%'' jako CLI s Cobra, ''%%internal/app%%'' core služby, ''%%internal/llm%%'' providery, ''%%internal/tui%%'' Bubble Tea UI, ''%%internal/db%%'' SQLite, ''%%internal/lsp%%'' atd.). https:%%//%%github.com/opencode-ai/opencode Server umím spouštět samostatně (''%%opencode serve%%'') a používám ho jako lokální backend s OpenAPI endpointem pro programatické ovládání; TUI beru jako klienta nad stejným backendem. https:%%//%%opencode.ai/docs/server/ Z praktických „agent" vlastností si všímám i auto-compact pro dlouhé konverzace, permission systému a git-powered snapshots pro změny. https:%%//%%www.linkedin.com/posts/milind-gaharwar_ai-awesome-artificialintelligence-activity-7357393767449964546-UHqA Poznámka, kterou beru jako riziko pro dlouhodobé používání: původní repo je archivované a projekt má pokračovat jako Crush. https:%%//%%github.com/opencode-ai/opencode ===== Instalace a konfigurace ===== Instalaci jsem bral jako rychlý bootstrap (curl skript / brew / go install) a konfiguraci řeším přes ''%%~/.opencode.json%%'' (API klíče, modely). https:%%//%%github.com/opencode-ai/opencode Použil jsem instalační skript: <code> curl -fsSL https://opencode.ai/install | bash </code> Napojení na providera jsem dělal interaktivně: spustím ''%%opencode%%'', zadám ''%%/connect%%'' a vyberu provider. https:%%//%%jecas.cz/opencode ===== Problém oficiálního Web UI: lokální backend, ale frontend z CDN ===== Když jsem chtěl webové rozhraní, narazil jsem na to, že oficiální ''%%opencode web%%'' je hybrid: lokální backend, ale vzdálený frontend. ==== Jak to funguje (podle dokumentace a issue) ==== * **Backend lokálně**: ''%%opencode web%%'' nebo ''%%opencode serve%%'' spustí HTTP server na ''%%localhost%%'' (API, sessions, filesystem nástroje). https:%%//%%opencode.ai/docs/cli/ * **Backend je open-source**: Go/Rust/CLI část je v repu. https:%%//%%github.com/anomalyco/opencode * **Frontend vzdáleně**: prohlížeč načítá HTML/JS/CSS bundle z CDN (např. ''%%desktop.dev.opencode.ai%%''), ne z lokálního disku. https:%%//%%github.com/sst/opencode/issues/5237 * **Zdrojáky oficiálního frontendu nejsou veřejně** v ''%%anomalyco/opencode%%'' jako buildnutelný frontend; prakticky to znamená, že si ho sám nezkompiluju a nemám verzi pod kontrolou. https:%%//%%advisories.gitlab.com/pkg/npm/opencode-ai/CVE-2026-22813/ ==== Dopady, které mi vadily v praxi ==== * Verze UI je řízená jejich deployem, ne verzí CLI na mém PC; downgrade CLI proto často nevyřeší bug ve Web UI. * Když vydají rozbitý web build (příklad zmiňovaný jako ''%%Maximum call stack size exceeded%%''), problém vidí všichni i po downgradu a často nezbývá než čekat na fix nebo web UI nepoužívat. https:%%//%%github.com/chris-tse/opencode-web * ''%%OPENCODE_DISABLE_AUTOUPDATE=1%%'' mi zastaví auto-update CLI, ale neovlivní fetch frontendu z CDN. ===== Alternativní self-hosted Web UI (kdy a proč je použít) ===== Když jsem se kvůli rozbitému oficiálnímu web UI potřeboval od CDN odpojit, dávalo mi smysl postavit UI nad vlastním lokálním backendem (''%%opencode serve%%'') a UI hostovat lokálně. ==== OpenChamber (btriapitsyn/openchamber) ==== OpenChamber beru jako desktop + web/PWA klienta pro OpenCode. Podstatné pro mě je, že běží komplet lokálně, frontend je open-source (React/TS) a komunikuje s mým ''%%opencode serve%%'' backendem bez závislosti na oficiálním CDN. https:%%//%%www.npmjs.com/package/@openchamber/web\\ Projekt a releasy: https:%%//%%github.com/btriapitsyn/openchamber / https:%%//%%github.com/btriapitsyn/openchamber/releases ==== chris-tse/opencode-web ==== Tohle je alternativní web UI postavené na React + Vite + Bun/Node. Použití chápu tak, že spustím ''%%opencode serve%%'' jako backend a v jejich repu udělám ''%%bun install%%'' + ''%%bun dev%%''; UI mi poběží na http:%%//%%localhost:5173 proti lokálnímu API. https:%%//%%github.com/chris-tse/opencode-web\\ Poznámka/kontext, kde jsem na to narazil: https:%%//%%jecas.cz/opencode ===== Praktické Příklady (konkrétní postup, který jsem dělal) ===== ==== 1) Spuštění backendu pro vlastní UI ==== Jako stabilní základ beru ''%%opencode serve%%'' (nebo ''%%opencode web%%'', pokud mi jde jen o lokální server). https:%%//%%opencode.ai/docs/server/ ==== 2) Instalace OpenChamber přes install.sh ==== OpenChamber jsem zkoušel instalovat takhle: <code> curl -fsSL https://raw.githubusercontent.com/btriapitsyn/openchamber/main/scripts/install.sh | bash </code> Instalátor mi hlásil, že potřebuje Node.js 20+. ==== 3) Řešení Node.js 20+ přes nvm (a jak s ním pracuju) ==== Node.js jsem doinstaloval přes nvm takhle: <code> curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash nvm install 20 </code> Abych si to udržel použitelné mezi shelly, beru nvm takhle (poznámka: tohle je moje provozní rutina; když se chová jinak, beru to jako závislé na shell initu): * Verzi Node kontroluju přes ''%%node -v%%'' a aktivní nvm přes ''%%nvm --version%%''. * Konkrétní Node v aktuálním shellu přepínám přes ''%%nvm use 20%%'' (nvm je „per-shell", takže v novém terminálu často musím mít nvm správně načtené a případně znovu použít ''%%nvm use ...%%''). * Pokud chci výchozí verzi, kterou budu typicky používat, dávám ''%%nvm alias default 20%%'' (a pak očekávám, že nový shell tuhle volbu převezme, pokud je nvm načtené). ==== 4) Spuštění OpenChamber ==== OpenChamber mi stačilo spustit příkazem ''%%openchamber%%''. Defaultně se mi otevřel na portu 3000 a připojil se k běžícímu opencode; opencode jsem musel mít předtím spuštěný. ===== Závěr / Výstupy ===== Pro rychlou a deterministickou práci mi nejlíp vychází TUI/IDE integrace (UI je součást binárky, žádné CDN). Když potřebuju web, beru ''%%opencode serve%%'' jako lokální backend a volím self-hosted UI (OpenChamber nebo chris-tse/opencode-web), protože u oficiálního ''%%opencode web%%'' nemám pod kontrolou verzi frontendu taháného z CDN. https:%%//%%opencode.ai/docs/web/ ai/platformy/opencode/uvod.txt Poslední úprava: 2026/03/12 13:40autor: Petr Nosek