====== OpenCode Quota ======
//Vytvořeno: **10.5.2026** | Aktualizováno: **~~LASTMOD~~**//
[[https://github.com/slkiser/opencode-quota|OpenCode Quota]] je plugin pro OpenCode, který zobrazuje přehled kvót, limitů a tokenové spotřeby napříč providery. Hodí se hlavně pro rychlou kontrolu, kolik zbývá z GPT / OpenAI subscription nebo jiných podporovaných plánů, aniž by bylo potřeba chodit do webového rozhraní poskytovatele.
===== Základní konfigurace =====
V mém případě stačilo přidat plugin do ''opencode.json'':
{
"plugin": [
"@slkiser/opencode-quota"
]
}
Podle [[https://opencode.ai/docs/plugins|dokumentace OpenCode pluginů]] se npm pluginy zapisují do pole ''plugin'' v konfiguraci. OpenCode je potom při startu automaticky stáhne a načte.
Oficiální README pluginu doporučuje pro běžnou instalaci také příkaz:
npx @slkiser/opencode-quota init
Ten umí doplnit chybějící konfigurační položky a projít volby UI. Pro základní použití slash commandu ale v této instalaci fungoval už samotný záznam v ''opencode.json''.
===== Status lišta v TUI =====
Compact status line v TUI nestačí zapnout jen server pluginem v ''opencode.json''. Podle README pluginu a podle [[https://opencode.e-nosek.cz/L2hvbWUvYWl3b3JrL3NjcmF0Y2g/session/ses_1efa22ea2ffeFUGQoc10CpHOEM|OpenCode session k nastavení quota status line]] bylo potřeba doplnit ještě dvě věci:
* TUI plugin v ''~/.config/opencode/tui.json''.
* Sidecar konfiguraci v ''~/.config/opencode/opencode-quota/quota-toast.json''.
Soubor ''~/.config/opencode/tui.json'':
{
"$schema": "https://opencode.ai/tui.json",
"plugin": ["@slkiser/opencode-quota"]
}
Soubor ''~/.config/opencode/opencode-quota/quota-toast.json'':
{
"enabledProviders": "auto",
"enableToast": false,
"tuiSidebarPanel": {
"enabled": false
},
"tuiCompactStatus": {
"enabled": true,
"homeBottom": true,
"sessionPrompt": true
}
}
Tím se vypnuly popup toasty i sidebar panel a zapnul se jen compact status line:
* ''homeBottom: true'' — kvóta se má zobrazit dole na úvodní/home obrazovce TUI.
* ''sessionPrompt: true'' — kvóta se má zobrazit i u promptu v session.
Po změně konfigurace je potřeba restartovat OpenCode TUI. Ověření v session proběhlo přes ''/quota_status'' a validaci JSON konfiguračních souborů přes ''node''. Diagnostika ukázala, že TUI plugin je načtený z ''~/.config/opencode/tui.json'' a provider OpenAI byl dostupný.
Důležité: tahle konfigurace řeší jen terminálové TUI. Ve Web UI se TUI status line nezobrazí. Ve webovém rozhraní zůstávají použitelné slash příkazy jako ''/quota'' nebo ''/quota_status'', ale compact status line je TUI prvek.
===== Co plugin přidává =====
Plugin přidává několik způsobů zobrazení kvót a tokenové spotřeby:
* ''/quota'' — detailní quota report.
* ''/quota_status'' — diagnostika konfigurace, providerů, autentizace a pricing dat.
* ''/pricing_refresh'' — obnovení lokálních pricing dat.
* ''/tokens_today'', ''/tokens_weekly'', ''/tokens_monthly'' a další tokenové reporty.
* Volitelně sidebar panel, popup toasty nebo compact status line v TUI.
Podporované providery se podle README postupně rozšiřují. Pro moje použití je podstatné hlavně sledování GPT / OpenAI limitů, případně dalších providerů napojených v OpenCode.
===== Poznámka k Web UI chybě =====
Při testování jsem řešil stav, kdy se po spuštění ''/quota'' ve webovém rozhraní výstup sice vykreslil, ale UI zároveň zobrazilo dialog s chybou. Kontext je v [[https://opencode.e-nosek.cz/L2hvbWUvYWl3b3JrL3NjcmF0Y2g/session/ses_1efdabea7ffeET12ByOesa2QkG|OpenCode session k chybě /quota]].
Závěr z debugování:
* konfigurace ''%%plugin: ["@slkiser/opencode-quota"]%%'' byla správně;
* na testovaném stroji běžel OpenCode ''1.14.46'' a plugin ''@slkiser/opencode-quota'' ve verzi ''3.7.1'';
* plugin po zpracování příkazu používá sentinel chybu ''%%__QUOTA_COMMAND_HANDLED__%%'', aby zabránil pokračování běžného command flow a spuštění LLM;
* Web/Desktop UI tuhle sentinel chybu může zobrazit jako uživatelskou chybu typu „Failed to send command“, i když samotný výstup pluginu už byl vykreslený.
Nejde tedy o chybu mojí konfigurace, ale o vedlejší efekt toho, jak plugin obchází chybějící first-class mechanismus pro „command handled, no LLM reply“. Podobný problém popisuje upstream issue [[https://github.com/anomalyco/opencode/issues/13922|Desktop shows plugin sentinel errors, TUI does not]] a související požadavek [[https://github.com/anomalyco/opencode/issues/9306|Add noReply option to command.execute.before hook]].
Praktický závěr:
* v TUI by se tahle chyba typicky zobrazovat neměla;
* ve Web/Desktop UI může být dialog jen kosmetický problém, pokud se výstup ''/quota'' normálně vykreslí;
* čisté řešení závisí na upstream podpoře mechanismu typu ''noReply'' / ''preventDefault'' pro plugin hook ''command.execute.before''.
===== Kdy použít =====
OpenCode Quota dává smysl zapnout, pokud:
* často přepínáš mezi providery a chceš rychle vidět aktuální limity;
* potřebuješ hlídat GPT / OpenAI subscription přímo z OpenCode;
* chceš tokenové reporty bez ručního procházení lokální historie;
* ladíš autentizaci nebo quota zdroje přes ''/quota_status''.
Pokud jde jen o základní kontrolu limitů, začal bych minimální konfigurací v ''opencode.json'' a případné další UI prvky řešil až podle potřeby.
===== Zdroje =====
* [[https://github.com/slkiser/opencode-quota|slkiser/opencode-quota – GitHub repozitář pluginu]]
* [[https://opencode.ai/docs/plugins|OpenCode dokumentace pluginů]]
* [[https://github.com/anomalyco/opencode/issues/13922|anomalyco/opencode#13922 – Desktop shows plugin sentinel errors, TUI does not]]
* [[https://github.com/anomalyco/opencode/issues/9306|anomalyco/opencode#9306 – Add noReply option to command.execute.before hook]]
* [[https://opencode.e-nosek.cz/L2hvbWUvYWl3b3JrL3NjcmF0Y2g/session/ses_1efa22ea2ffeFUGQoc10CpHOEM|OpenCode session k nastavení quota status line]]
* [[https://opencode.e-nosek.cz/L2hvbWUvYWl3b3JrL3NjcmF0Y2g/session/ses_1efdabea7ffeET12ByOesa2QkG|OpenCode session k debugování chyby /quota]]