janAGI_old
AGI build on bolt.diy and mcp-agent open source
Links
README
From the repo.
janAGI — Open-source AI Agent Orchestration Framework
Cílem tohoto souboru je uchovávat současnou myšlenku a implementaci systému: jak se používá, jak nastavit LLM a jak rozšiřovat agenty.
mcp-agent — stručný popis fungování
Architektura: centrální orchestrace + sada per‑agent modulů. Orchestrace rozhoduje, zda odpovědět přímo nebo vytvořit a spustit plán agentů. Viz mcp-agent/llm_mcp_app/orchestration.py:104.
Agenti: každý agent má adresář s agent.yaml (meta: model, provider, prompt_template, permissions) a main.py implementující get_agent(agent_config) + veřejné funkce. Příklad CodeWriter: mcp-agent/agents/codewriter/agent.yaml:1 a mcp-agent/agents/codewriter/main.py:65.
AgentRunner: složí prompt z prompt_template + runtime task, vybere provider a zavolá ho; vrací normalizovaný výsledek. Viz mcp-agent/llm_mcp_app/agent_runner.py:11.
Providers: factory get_provider(model, provider_override) mapuje model na implementaci (OpenAI, HuggingFace, Gemini, Mistral). Implementace Mistral pro "codestral" byla přidána. Viz mcp-agent/llm_mcp_app/providers.py:405.
Orchestrace → plán: assistant má vrátit strojově čitelný JSON ({"direct_answer":...} nebo {"plan":[...]}); plán se zobrazí uživateli pro potvrzení a následné spuštění kroků (execute_plan / execute_plan_stream). Viz mcp-agent/llm_mcp_app/orchestration.py:139 a mcp-agent/llm_mcp_app/orchestration.py:351.
Různé utility: show_agent handler vrací strukturovaný payload s klíčem show_agent (jádro pro front‑end zobrazení kódu). Viz mcp-agent/llm_mcp_app/orchestration.py:502.
bolt.diy — co dělá front‑end
Chat UI: zobrazuje zprávy, markdown a artefakty (kód, obrázky, diffy) přes komponenty které umí vykreslit strukturovaný obsah LLM‑odpovědí. Hlavní render v Markdown/Artifact komponentách: bolt.diy/app/components/chat/Markdown.tsx:109 a bolt.diy/app/components/chat/Artifact.tsx:164.
Code viewer: speciální CodeBlock komponenta pro zobrazení zdrojového kódu s kopírováním a zvýrazněním: bolt.diy/app/components/chat/CodeBlock.tsx:18.
Integrace se serverem: když orchestrace pošle assistant content obsahující např. {"show_agent": {...}}, front‑end rozpozná payload a otevře zabudovaný code viewer / file panel bez dalších úprav UI. Viz orchestrace → payload: mcp-agent/llm_mcp_app/orchestration.py:502 a front‑end renderer: bolt.diy/app/components/chat/Markdown.tsx:109.
Streaming: SSE / OpenAI‑like streamy z backendu jsou spotřebovány v UI jako inkrementální zprávy; front‑end komponenty podporují postupné vykreslování chunků.
Stručný přehled
janAGI se soustředí na záměr → plán → exekuci. Uživatel zadá záměr a systém:
- rozhodne, zda odpovědět přímo (central LLM)
- nebo vygeneruje strukturovaný plán (JSON) s kroky a agenty
- po schválení spustí plán a streamuje výsledky do UI
Hlavní komponenty
- mcp-agent (orchestrátor + planner)
- Agenti (adresáře v
mcp-agent/agents/) - Providers (get_provider: OpenAI, HuggingFace, Gemini, Mistral, Dummy)
- bolt.diy (frontend: chat, code viewer, artifact viewer)
Jak systém funguje (podrobněji)
- Uživatelský záměr: uživatel zadá záměr ve frontendu.
- Decision: orchestrátor (central LLM) vytvoří rozhodnutí — buď
{"direct_answer":...}nebo{"plan":[...]}. - Zobrazení plánu: plan se zobrazí ve frontendu ke schválení (UI používá strukturovaný JSON).
- Exekuce: po schválení
execute_planspouští kroky; pro každý krok zavolá příslušného agenta. - Stream & agregace: výsledky se streamují do UI; orchestrátor může agregovat finální odpověď.
Nastavení LLM
- Hlavní LLM (Planner / Orchestrátor)
- Konfigurováno v
mcp-agent/llm_mcp_app/config.py:11proměnnou LLM_PROVIDER a DEFAULT_MODELS. - Orchestrace používá
get_provider(DEFAULT_MODELS[LLM_PROVIDER])pro plánování a rozhodování.
- Konfigurováno v
- Per‑agent LLM
- Každý agent má
agent.yamls klíči: model, provider, prompt_template, permissions, timeout. - Příklad:
mcp-agent/agents/codewriter/agent.yaml:1 - Loader načte
agent.yamla předáagent_configdoget_agent(agent_config=...). AgentRunnerzpracujeprompt_templatea zavolá provider specifikovaný vagent_config.- Pokud
agent.yamluvádíprovider: mistralamodel: codestral,AgentRunnerpoužijeMistralProviderpro tohoto agenta.
- Každý agent má
Interní toky a formáty
- Decision výstup: assistant vrací validní JSON (
{"direct_answer": "..."} nebo {"plan":[...]}). - Plan krok:
{ "step": n, "description": "...", "agent": "codewriter", "arguments": {...} }. - Show‑agent: orchestrace vrací assistant message s obsahem JSON
{"show_agent": {"name": "...", "files": {...}}}pro frontend.
Jak přidat nebo upravit agenta
- Vytvoř složku
mcp-agent/agents/<agent_name>/ - Přidej
agent.yamls metadata (model, provider, prompt_template, permissions, timeout). - Implementuj
main.pys funkcíget_agent(agent_config)vracející Agent objekt a veřejnou funkci (např. generate_*). - Doporučeno: použít stejný pattern jako v
mcp-agent/agents/codewriter/main.py:65— podporujeagent_configa fallback.
Bezpečnost a validace
- Před načtením nového agenta proveď AST analýzu zdrojů, whitelist/banned modulů a zkontroluj permissions.
- Neprovádějte nerestriktivní importy dynamicky bez validace.
- AgentCreator má mít ochranu proti přepsání souborů a validaci specu.
Testování a vývoj
- Lokální smoke test agenta: (PYTHONPATH include
mcp-agent/src)- Windows:
set PYTHONPATH=./mcp-agent/src && python mcp-agent/agents/codewriter/main.py - Unix:
PYTHONPATH=./mcp-agent/src python mcp-agent/agents/codewriter/main.py
- Windows:
- Pro
show_agent: pošli do orchestrace text "zobraz mi kod agenta ".
Doporučené další kroky (prioritně)
- Implementovat bezpečnostní validační pipeline (AST checks, banned modules).
- Dokončit a zabezpečit
MistralProviderpro production (env klíče). - Přidat
TESTING.mds API příklady, SSE a end‑to‑end scénáři. - Přidat automatizované smoke a integrační testy pro orchestrace a per‑agent volání.
Poznámka pro údržbu
Tento readme.md slouží jako hlavní dokument a "single source of truth" pro myšlenku a implementaci. Udržujte jej aktuální při změnách architektury nebo chování agentů.
Collected info
- ★ 1 stars
- Language: Python
- Source updated: 2/2/2026