AI-agent do badań matematycznych: Wolfram Engine + Qwen Code CLI na Mac mini
Stworzono całkowicie autonomiczną laboratorię do badań matematycznych za pomocą komunikatora — bez użycia chmurowych API, zewnętrznych serwerów i bez utraty kontroli nad kodem oraz danymi. System działa lokalnie na Mac mini, odbiera zadania z Delta Chat, generuje algorytmy w języku Wolfram Language przy pomocy Qwen Code CLI, wykonuje je za pomocą Wolfram Engine i zwraca wyniki z wykresami bezpośrednio do czatu. To nie jest interfejs do gotowego rozwiązania — to środowisko badawcze, które rejestruje cały proces myślenia: od sformułowania problemu po jego weryfikację.
Architektura bez pośrednich usług
Cały cykl przetwarzania wiadomości realizowany jest jako lokalny konwejer bez zależności od zewnętrznych API lub platform SaaS. Kluczową zaletą jest pełna kontrola nad wejściowymi promptami, wykonywanym kodem i czasem życia danych. Nie ma ukrytych wywołań do chmury, automatycznego wysyłania kodu do usług LLM ani zbierania metryk poza maszyną użytkownika.
Wiadomość z Delta Chat (przez IMAP/SMTP) trafia do bota Python math_bot.py, który:
- Weryfikuje nadawcę według
WHITELIST_EMAIL; - Inicjuje nową sesję lub wznowia istniejącą;
- Formuluje atomowy prompt zawierający preambułę systemową z
QWEN_PREAMBLEoraz kontekst poprzednich kroków; - Uruchamia
qwenw trybie headless z flagami--yolo --continue; - Przechwytuje stdout w formacie JSON;
- Parsuje pliki graficzne z
/tmp/mrl_graphics/według rozszerzeń.png,.jpg,.svg,.pdf; - Wysyła rezultat z powrotem do czatu, zachowując historię w
sessions/.
Ważne: Qwen Code CLI nie jest używany jako „czarny skrzynka”. Uruchamiany jest jako lokalny subprocess, a wszystkie komendy wolframscript wykonywane są w ściśle określonej dyrektorii z jasnym podaniem ścieżek. Wykresy eksportowane są tylko do wydzielonego folderu tymczasowego — żadnych pobocznych zapisów w domowej dyrektorii czy ~/Downloads.
Wymagania dotyczące środowiska i bezpieczeństwo wykonania
System przeznaczony jest dla macOS 14+, ale jest kompatybilny z Linuxem i Windowsem dzięki komponentom wieloplatformowym. Krytyczne zależności:
- Wolfram Engine 14.1+ — darmowa wersja silnika dostępna do użytku osobistego. Instalacja przez pkg dodaje binarne
wolframscriptdo PATH. Wszystkie obliczenia odbywają się lokalnie; żadne wyrażenia nie są wysyłane do Wolfram Cloud. - Qwen Code CLI v3.5 Plus — wersja headless modelu działająca przez Node.js. Nie wymaga klucza API. Model jest ładowany lokalnie, waży ok. 2,1 GB (quantized GGUF), uruchamiany przez
qwenCLI z--model qwen3.5-plus.Q4_K_M.gguf. - Delta Chat RPC Server — natywny binarik (
deltachat-rpc-server), zarządzający połączeniem z skrzynką pocztową. Działa w trybie--no-verify-ssltylko przy lokalnym użytkowaniu; zalecana jest konfiguracja szyfrowania PGP za pomocą kodu QR dla ochrony E2E.
Konfiguracja bezpieczeństwa realizowana jest na trzech poziomach:
- Sieciowy: Delta Chat korzysta ze standardowych portów IMAP/SMTP bez przekierowywania portów, VPN i białych IP. Ruch jest szyfrowany TLS 1.3.
- Procesowy: Qwen uruchamiany jest z timeoutem
QWEN_TIMEOUT=600, ograniczającym wykonanie skomplikowanych zadań. Po przekroczeniu — proces przymusowo zakończony przezsubprocess.run(..., timeout=...). - Plikowy: Wszystkie wykresy zapisywane są wyłącznie w
/tmp/mrl_graphics/, a sesje — wPROJECT_DIR/sessions/. ŚcieżkaGRAPHICS_DIRsprawdzana jest na absolutność i dostępnośćis_dir()przed użyciem.
Realizacja cyklu życia sesji
Bot obsługuje 7 komend zarządzania sesjami, z których każda zmienia stan w SESSIONS_DIR:
/start— tworzy nową sesję z unikalnym UUID, inicjujesession_YYYYMMDD_HHMMSS.mdi_assets/./continue— wznawia ostatnią aktywną sesję./resume <id>— otwiera konkretną sesję według ID./peek— pokazuje ostatniePEEK_LINES=40linii aktualnego logu./archive— przenosi sesję doarchived/, usuwając ją z indeksu./close— finalizuje sesję: kopiujesolution.wldoalgorithms/, generujesummary.md, czyści_assets/./help— wyświetla pomoc bez dostępu do wewnętrznych ścieżek.
Każda sesja to plik Markdown z chronologią dialogu, gdzie każdy krok zawiera cztery obowiązkowe bloki:
- Algorytm słowny (numerowane kroki);
- Kod Wolfram Language (precyzyjny tekst gotowy do wykonania);
- Faktyczne wyjście
wolframscript(stdout/stderr); - Interpretacja wyniku (1–2 zdania).
To zapewnia reprodukowalność: każdy krok można powtórzyć ręcznie przez wolframscript -code "...", a wszystkie wykresy — regenerować z Export[...].
Przykład pracy
Użytkownik wysyła do czata:
Znajdź punkty przecięcia y = x^2 i y = 2x + 3. Zbuduj wykres.
Bot przekazuje zapytanie do Qwen Code CLI z preambułą:
Wykorzystaj tylko wolframscript (nie Python). Wykresy zapisuj w /tmp/mrl_graphics/. Podpisy na wykresach — tylko alfabet łaciński.
Znajdź punkty przecięcia y = x^2 i y = 2x + 3. Zbuduj wykres.
Qwen zwraca strukturalną odpowiedź:
- Algorytm słowny
1. Przyrównaj funkcje: x^2 == 2x + 3
2. Doprowadź do standardowej postaci: x^2 - 2x - 3 == 0
3. Rozwiąż równanie kwadratowe
4. Zbuduj wykresy obu funkcji na jednym polu
- Kod 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 -> "Intersection of y=x^2 and y=2x+3",
AxesLabel -> {"x", "y"}
Export["/tmp/mrl_graphics/intersection.png", %]
---wl---
- Wynik wolframscript
{{x -> -1}, {x -> 3}}
$Graphics$
- Interpretacja wyniku
Punkty przecięcia: (-1, 1) i (3, 9). Wykres zapisany jako intersection.png.
Bot wydobywa PNG z /tmp/mrl_graphics/, wysyła go do czatu i dopisuje ten blok do logu sesji.
Co jest ważne
- Lokalne wykonanie gwarantuje poufność: żaden obiekt matematyczny, wzór czy wykres nie opuszcza maszyny użytkownika.
- Wolfram Engine — nie zastępstwo Pythona, lecz specjalistyczny obliczalnik: zapewnia precyzyjną algebrę symboliczną, wizualizację i metody numeryczne bez konieczności pisania własnych solverów.
- Qwen Code CLI działa jako generator kodu, a nie solver: model nigdy nie wydaje „odpowiedzi", tylko generuje wykonywalny kod i czeka na faktyczne wyjście
wolframscript. - Delta Chat zapewnia end-to-end szyfrowanie bez serwerów: klucze PGP wymieniane są przez kod QR, a wiadomości szyfrowane są na urządzeniu.
- Struktura
algorithms/tworzy repozytorium reprodukowalnych rozwiązań: każdy algorytm zawieradescription.md,reasoning.mdisolution.wl— gotowy do integracji w CI/CD lub dokumentację.
Konfiguracja i wdrożenie
Do wdrożenia potrzebne są:
- Zainstalować Wolfram Engine z oficjalnej strony i uruchomić
wolframscript --install. - Zainstalować Node.js 20+ i wykonać
npm install -g qwen-cli. - Stworzyć środowisko conda:
conda create -n mathbot python=3.12 && conda activate mathbot. - Zainstalować zależności:
pip install -r requirements.txt. - Skonfigurować
config.py: podaćWHITELIST_EMAIL,PROJECT_DIR,QWEN_CMD. - Uruchomić inicjacje:
bash init.sh— stworzysessions/,algorithms/,_index.md. - Uruchomić bota:
python math_bot.py.
Po uruchomieniu bot zaczyna sprawdzać skrzynkę pocztową co 30 sekund. Do testowania wystarczy wysłać /start z autoryzowanego e-maila. Sesje logowane są w czasie rzeczywistym, błędy — w math_bot.log.
— Editorial Team
Brak komentarzy.