AI assistant
Server obsahuje vlastní AI assistant podsystém (src/ai/). Umožňuje psát chatovat s libovolným LLM (Anthropic, Ollama, Gemini), volat nástroje z interních MCP toolů i uživatelem připojených MCP serverů a přepínat mezi modely a sessions přímo v admin UI.
Co umí
- Chat s LLM — multi-turn konverzace s plnou historií. Provider i model se volí na úrovni session a uloží se ve snapshotu pro audit.
- Nástroje (tool calling) — assistant má přístup ke stejným nástrojům jako Claude přes MCP (
read_page,edit_page, …) plus libovolné externí MCP servery, které si uživatel přidá. - Web search — lokální nástroj
web_searchpřes Serper API; aktivní jen pokud je nastavenSERPER_API_KEY. - Tool permissions — pravidla
allow/deny/promptper uživatel a per nástroj (s wildcard patterny a prioritou). Uživatel rozhoduje, co může assistant volat bez potvrzení. - Streamování odpovědí —
loop_driverzpracovává agentic loop (model → tool calls → výsledky → další iterace) a zprávy proudí do UI.
Komponenty (src/ai/)
| Modul | Popis |
|---|---|
loop_driver.rs | Agentic smyčka — volá LLM, zpracuje tool calls, ukládá zprávy, streamuje výstup |
tool_registry.rs | Sjednocený registr lokálních nástrojů a všech aktivních MCP serverů |
mcp_client/ | Klient pro uživatelem připojené MCP servery (HTTP transport, persistentní spojení) |
tool_permissions.rs | Vyhodnocení pravidel allow/deny/prompt podle priority |
local_tools/ | Vestavěné nástroje (web search) |
llm/ | Adaptéry pro anthropic, ollama, gemini |
handlers/ | API handlery pro /api/assistant/* |
config.rs | AiConfig (env, defaulty) |
Datový model
| Tabulka | Role |
|---|---|
llm_providers | Provider (anthropic/ollama/gemini) + api_key + base_url |
llm_models | Konkrétní model pod providerem (např. claude-opus-4-7); jeden je is_default |
assistant_sessions | Session se snapshotem provideru a modelu, plus enabled_mcp_server_ids (JSONB) |
assistant_messages | Zprávy v session (role + JSON content pro multi-modální obsah) |
user_mcp_servers | Uživatelovy externí MCP servery (URL, hlavičky, forward_user_token) |
tool_permissions | Pravidla pro povolování nástrojů |
Detail sloupců: about/blog/databaze.
API
| Cesta | Popis |
|---|---|
/api/assistant/* | Sessions, zprávy, streaming odpovědí |
/api/llm/providers | CRUD providerů |
/api/llm/models | CRUD modelů |
/api/tool-permissions | CRUD pravidel |
| (uživatelské MCP servery) | Spravované přes /api/assistant/* (případně dedikovaný endpoint) |
Frontend stránky v admin SPA: /admin/providers, /admin/models, /admin/assistant, /admin/mcp-servers, /admin/tool-permissions.
Konfigurace
- Klíče k poskytovatelům (
anthropic,gemini, …) se ukládají dollm_providers.api_keypřes admin UI — nikdy v kódu ani v.env. - Self-hosted Ollama — nastav
base_urlprovidera (např.http://localhost:11434). SERPER_API_KEY— env proměnná. Pokud není nastavena, web search nástroj se zaregistruje jako nedostupný.- MCP servery — přidává si je každý uživatel sám přes UI (URL + hlavičky);
forward_user_tokenpropisuje uživatelův session token do hlaviček MCP serveru.