Zpět na domů

AI agent pro matematiku na Mac mini

Je popsáno vytvoření autonomní matematické laboratoře na Mac mini s využitím Wolfram Engine, Qwen Code CLI a Delta Chat. Systém přijímá úkoly z messengera, generuje a spouští Wolfram kód lokálně, vrací výsledky s grafy a ukládá úplnou historii sezení.

Matematická laboratoř na Mac mini: AI + Wolfram
Advertisement 728x90

AI-agent pro matematické výzkumy: Wolfram Engine + Qwen Code CLI na Mac mini

Vytvořena zcela autonomní laboratoř pro matematický výzkum prostřednictvím messengera — bez cloudových API, bez externích serverů a bez ztráty kontroly nad kódem a daty. Systém pracuje lokálně na Mac mini, přijímá úkoly z Delta Chatu, generuje algoritmy ve Wolfram Language pomocí Qwen Code CLI, vykonává je prostřednictvím Wolfram Engine a vracejí se výsledky s grafy přímo do chatu. Nejedná se o rozhraní k hotovému řešení — jde o výzkumné prostředí, které zaznamenává celý proces myšlení: od formulace po verifikaci.

Architektura bez meziproduktů

Celý řetězec zpracování zpráv je realizován jako lokální konvejér bez závislostí na cizích API nebo SaaS platformách. Klíčovou výhodou je plná kontrola nad vstupními prompty, spouštěným kódem i životností dat. Není žádných skrytých volání do cloudu, žádné automatické odesílání kódu do LLM služeb, žádné sběru metrik mimo zařízení uživatele.

Zpráva z Delta Chatu (přes IMAP/SMTP) putuje do Python bota math_bot.py, který:

Google AdInline article slot
  • Validuje odesílatele podle WHITELIST_EMAIL;
  • Založí novou session nebo obnoví existující;
  • Vytvoří atomární prompt obsahující systémovou preambulu z QWEN_PREAMBLE a kontext předchozích kroků;
  • Spustí qwen v headless režimu s parametry --yolo --continue;
  • Zachytí stdout ve formátu JSON;
  • Parsuje grafické soubory z /tmp/mrl_graphics/ podle přípon .png, .jpg, .svg, .pdf;
  • Odpověď odešle zpět do chatu s uchováním historie v sessions/.

Důležité: Qwen Code CLI není používán jako „černá krabice“. Spouští se jako lokální subprocess a všechny příkazy wolframscript jsou prováděny v přesně určené složce s explicitním zadáním cest. Grafy jsou exportovány pouze do vyhrazené dočasné složky — žádné vedlejší zápisy do domácí složky ani do ~/Downloads.

Požadavky na prostředí a bezpečnost provozu

Systém je navržen pro macOS 14+, ale kompatibilní s Linuxem i Windows díky multiplatformním komponentám. Kritické závislosti:

  • Wolfram Engine 14.1+ — bezplatná verze engine dostupná pro osobní použití. Instaluje se přes pkg, přidá binárku wolframscript do PATH. Veškeré výpočty probíhají lokálně; žádné výrazy nejsou odesílány do Wolfram Cloud.
  • Qwen Code CLI v3.5 Plus — headless verze modelu fungující přes Node.js. Nevyžaduje API klíč. Model je nahrán lokálně, váží ~2,1 GB (quantized GGUF), spouští se přes qwen CLI s --model qwen3.5-plus.Q4_K_M.gguf.
  • Delta Chat RPC Server — nativní binárka (deltachat-rpc-server), která řídí spojení s e-mailovou schránkou. Pracuje v režimu --no-verify-ssl pouze při lokálním použití; doporučuje se nastavení PGP šifrování prostřednictvím QR kódu pro E2E ochranu.

Bezpečnostní konfigurace je realizována na třech úrovních:

Google AdInline article slot
  • Síťová: Delta Chat používá standardní IMAP/SMTP porty bez přesměrování portů, bez VPN a bez bílého IP. Doprava je šifrována TLS 1.3.
  • Procesní: Qwen je spouštěn s timeoutem QWEN_TIMEOUT=600, což omezuje provádění složitých úloh. Při překročení je proces nuceně ukončen pomocí subprocess.run(..., timeout=...).
  • Souborová: Všechny grafy jsou uloženy výhradně v /tmp/mrl_graphics/, session pak v PROJECT_DIR/sessions/. Cesta GRAPHICS_DIR je před použitím ověřena na absolutnost a existence is_dir().

Realizace životního cyklu session

Bot podporuje 7 příkazů pro řízení session, každý z nich mění stav v SESSIONS_DIR:

  • /start — vytvoří novou session s unikátním UUID, inicializuje session_YYYYMMDD_HHMMSS.md a _assets/.
  • /continue — obnoví poslední aktivní session.
  • /resume <id> — otevře konkrétní session podle ID.
  • /peek — zobrazí posledních PEEK_LINES=40 řádků aktuálního logu.
  • /archive — přesune session do archived/, odstraní ji z indexu.
  • /close — finalizuje session: kopíruje solution.wl do algorithms/, generuje summary.md, vyčistí _assets/.
  • /help — vypíše návod bez přístupu k interním cestám.

Každá session je Markdown soubor s chronologií dialogu, kde každý krok obsahuje čtyři povinné bloky:

  • Slovní algoritmus (číslované kroky);
  • Kód Wolfram Language (přesný text, připravený k provedení);
  • Faktický výstup wolframscript (stdout/stderr);
  • Interpretace výsledku (1–2 věty).

To zajišťuje reprodukovatelnost: každý krok lze ručně opakovat prostřednictvím wolframscript -code "...", a všechny grafy lze znovu vygenerovat z Export[...].

Google AdInline article slot

Příklad pracovního interakce

Uživatel odesílá do chatu:

Najdi body průniku y = x^2 a y = 2x + 3. Nakresli graf.

Bot předává dotaz do Qwen Code CLI s preambulí:

Využij pouze wolframscript (ne Python). Grafy ukládej do /tmp/mrl_graphics/. Názvy na grafech — pouze latinka.

Najdi body průniku y = x^2 a y = 2x + 3. Nakresli graf.

Qwen vrátí strukturovanou odpověď:

  • Slovní algoritmus

1. Přirovnat funkce: x^2 == 2x + 3

2. Převést na standardní tvar: x^2 - 2x - 3 == 0

3. Vyřešit kvadratickou rovnici

4. Nakreslit grafy obou funkcí na jednom poli

  • Kód Wolfram

---wl---

eq = x^2 == 2 x + 3;

solutions = Solve[eq, x];

Plot[{x^2, 2 x + 3}, {x, -3, 5},

Epilog -> {Red, PointSize[Large],

Point[{x, x^2} /. solutions]},

PlotLabel -> "Průnik y=x^2 a y=2x+3",

AxesLabel -> {"x", "y"}

Export["/tmp/mrl_graphics/intersection.png", %]

---wl---

  • Výsledek wolframscript

{{x -> -1}, {x -> 3}}

$Graphics$

  • Interpretace výsledku

Body průniku: (-1, 1) a (3, 9). Graf je uložen jako intersection.png.

Bot extrahuje PNG z /tmp/mrl_graphics/, odesílá ho do chatu a doplňuje tento blok do logu session.

Co je důležité

  • Lokální provoz zaručuje soukromí: žádný matematický objekt, vzorec ani graf neopustí zařízení uživatele.
  • Wolfram Engine není náhradou Pythonu, ale specializovaným výpočetním nástrojem: zajišťuje přesnou symbolickou algebra, vizualizaci i numerické metody bez nutnosti psát vlastní řešiče.
  • Qwen Code CLI funguje jako kodogenerátor, nikoli řešitel: model nikdy nevydá „odpověď“, ale pouze generuje spouštěcí kód a čeká na faktický výstup wolframscript.
  • Delta Chat poskytuje end-to-end šifrování bez serverů: PGP klíče se vyměňují prostřednictvím QR kódu, zprávy jsou šifrovány na zařízení.
  • Struktura algorithms/ vytváří repozitář reprodukovatelných řešení: každý algoritmus obsahuje description.md, reasoning.md a solution.wl — připravený k integraci do CI/CD nebo dokumentace.

Nastavení a nasazení

K nasazení je potřeba:

  • Nainstalovat Wolfram Engine z oficiálních stránek a spustit wolframscript --install.
  • Nainstalovat Node.js 20+ a provést npm install -g qwen-cli.
  • Vytvořit conda okolí: conda create -n mathbot python=3.12 && conda activate mathbot.
  • Nainstalovat závislosti: pip install -r requirements.txt.
  • Nastavit config.py: uvést WHITELIST_EMAIL, PROJECT_DIR, QWEN_CMD.
  • Spustit inicializaci: bash init.sh — vytvoří sessions/, algorithms/, _index.md.
  • Spustit bota: python math_bot.py.

Po startu začíná bot vyhledávat e-mailovou schránku každých 30 sekund. Pro testování stačí odeslat /start z autorizovaného emailu. Session jsou logovány v reálném čase, chyby v math_bot.log.

— Editorial Team

Advertisement 728x90

Číst dál