KI-Agent für mathematische Forschung: Wolfram Engine + Qwen Code CLI auf Mac mini
Ein vollständig autonomes Labor für mathematische Forschung wurde geschaffen, das über eine Messaging-App zugänglich ist – ganz ohne Cloud-APIs, externe Server oder den Verlust der Kontrolle über Code und Daten. Das System läuft lokal auf einem Mac mini, erhält Aufgaben von Delta Chat, generiert Algorithmen in der Wolfram-Sprache mithilfe von Qwen Code CLI, führt sie über die Wolfram Engine aus und sendet Ergebnisse mit Grafiken direkt zurück in den Chat. Dies ist keine Schnittstelle zu einer vorgefertigten Lösung – es ist eine Forschungsumgebung, die den gesamten Denkprozess vom Problemformulierungsstadium bis zur Verifizierung abbildet.
Architektur ohne Zwischendienste
Die gesamte Nachrichtenverarbeitungspipeline ist als lokaler Workflow implementiert, ohne Abhängigkeiten von Drittanbieter-APIs oder SaaS-Plattformen. Der entscheidende Vorteil liegt in der vollständigen Kontrolle über Eingabeaufforderungen, ausgeführten Code und Datenlebenszyklen. Es gibt keine versteckten Cloud-Aufrufe, kein automatisches Senden von Code an LLM-Dienste und keine Erfassung von Metriken außerhalb des Benutzergeräts.
Eine Nachricht von Delta Chat (via IMAP/SMTP) gelangt in den Python-Bot math_bot.py, der:
- den Absender anhand einer
WHITELIST_EMAILvalidiert; - eine neue Sitzung startet oder eine bestehende fortsetzt;
- eine atomare Aufforderung erstellt, die ein Systemvorwort aus
QWEN_PREAMBLEund Kontext aus vorherigen Schritten enthält; qwenim Headless-Modus mit den Flags--yolo --continueausführt;- stdout im JSON-Format erfasst;
- Grafikdateien aus
/tmp/mrl_graphics/nach den Erweiterungen.png,.jpg,.svg,.pdfanalysiert; - das Ergebnis zurück in den Chat sendet und gleichzeitig den Verlauf in
sessions/speichert.
Wichtig ist, dass Qwen Code CLI nicht als „Black Box“ verwendet wird. Es wird als lokales Unterprozess gestartet, und alle wolframscript-Befehle werden in einem streng definierten Verzeichnis mit expliziten Pfadangaben ausgeführt. Grafiken werden ausschließlich in einen dedizierten temporären Ordner exportiert – es werden keine Nebeneffekte in das Home-Verzeichnis oder ~/Downloads geschrieben.
Umgebungsanforderungen und Ausführungssicherheit
Das System ist für macOS 14+ konzipiert, funktioniert aber auch unter Linux und Windows dank plattformübergreifender Komponenten. Kritische Abhängigkeiten sind:
- Wolfram Engine 14.1+ – die kostenlose Version der Engine für den persönlichen Gebrauch. Sie wird via pkg installiert, wodurch das
wolframscript-Binärprogramm zum PATH hinzugefügt wird. Alle Berechnungen erfolgen lokal; keine Ausdrücke werden an Wolfram Cloud gesendet. - Qwen Code CLI v3.5 Plus – eine Headless-Version des Modells, die auf Node.js läuft. Sie benötigt keinen API-Schlüssel. Das Modell wird lokal geladen, wiegt etwa 2,1 GB (quantisiertes GGUF) und wird über die
qwen-CLI mit--model qwen3.5-plus.Q4_K_M.ggufgestartet. - Delta Chat RPC Server – ein natives Binärprogramm (
deltachat-rpc-server), das die Verbindung zum Mailbox verwaltet. Es arbeitet nur im--no-verify-ssl-Modus, wenn es lokal genutzt wird; für Ende-zu-Ende-Schutz wird PGP-Verschlüsselung per QR-Code empfohlen.
Die Sicherheitskonfiguration ist auf drei Ebenen implementiert:
- Netzwerk: Delta Chat nutzt standardmäßige IMAP/SMTP-Ports ohne Portweiterleitung, VPNs oder Whitelisted IPs. Der Datenverkehr ist mit TLS 1.3 verschlüsselt.
- Prozess: Qwen wird mit einem Timeout von
QWEN_TIMEOUT=600gestartet, um die Ausführung komplexer Aufgaben zu begrenzen. Wird das Limit überschritten, wird der Prozess zwangsweise übersubprocess.run(..., timeout=...)beendet. - Datei: Alle Grafiken werden ausschließlich in
/tmp/mrl_graphics/gespeichert, und Sitzungen werden inPROJECT_DIR/sessions/abgelegt. Der PfadGRAPHICS_DIRwird vor der Nutzung mittelsis_dir()auf absolute Gültigkeit und Existenz geprüft.
Implementierung des Sitzungslebenszyklus
Der Bot unterstützt sieben Befehle zur Sitzungsverwaltung, die jeweils den Zustand in SESSIONS_DIR modifizieren:
/start– erstellt eine neue Sitzung mit einer einzigartigen UUID, initialisiertsession_YYYYMMDD_HHMMSS.mdund_assets/./continue– setzt die letzte aktive Sitzung fort./resume <id>– öffnet eine bestimmte Sitzung nach ID./peek– zeigt die letztenPEEK_LINES=40Zeilen des aktuellen Logs an./archive– verschiebt eine Sitzung inarchived/und entfernt sie aus dem Index./close– schließt eine Sitzung endgültig: kopiertsolution.wlnachalgorithms/, generiertsummary.mdund leert_assets/./help– gibt Hilfe aus, ohne Zugriff auf interne Pfade.
Jede Sitzung ist eine Markdown-Datei, die den Dialog chronologisch dokumentiert, wobei jeder Schritt vier obligatorische Blöcke enthält:
- Verbaler Algorithmus (nummerierte Schritte);
- Wolfram-Linguistik-Code (exakter Text, bereit zur Ausführung);
- Tatsächliches Ergebnis von
wolframscript(stdout/stderr); - Interpretation des Ergebnisses (1–2 Sätze).
Dies gewährleistet Reproduzierbarkeit: Jeder Schritt kann manuell über wolframscript -code "..." wiederholt werden, und alle Grafiken können aus Export[...] neu generiert werden.
Beispiel einer funktionalen Interaktion
Ein Nutzer sendet folgende Nachricht an den Chat:
Finden Sie die Schnittpunkte von y = x^2 und y = 2x + 3. Zeichnen Sie den Graphen.
Der Bot leitet die Anfrage an Qwen Code CLI weiter mit dem Vorwort:
Verwenden Sie nur wolframscript (nicht Python). Speichern Sie Grafiken in /tmp/mrl_graphics/. Beschriftungen auf Grafiken sollten in lateinischen Buchstaben sein.
Finden Sie die Schnittpunkte von y = x^2 und y = 2x + 3. Zeichnen Sie den Graphen.
Qwen antwortet mit einer strukturierten Antwort:
- Verbaler Algorithmus
1. Setzen Sie die Funktionen gleich: x^2 == 2x + 3
2. Formen Sie um in Standardform: x^2 - 2x - 3 == 0
3. Lösen Sie die quadratische Gleichung
4. Zeichnen Sie beide Funktionen auf demselben Graphen
- Wolfram-Code
---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 -> "Schnittstelle von y=x^2 und y=2x+3",
AxesLabel -> {"x", "y"}]
Export["/tmp/mrl_graphics/intersection.png", %]
---wl---
- Wolframscript-Ergebnis
{{x -> -1}, {x -> 3}}
$Graphics$
- Interpretation des Ergebnisses
Schnittpunkte: (-1, 1) und (3, 9). Der Graph wird als intersection.png gespeichert.
Der Bot extrahiert das PNG aus /tmp/mrl_graphics/, sendet es an den Chat und fügt diesen Block dem Sitzungsprotokoll hinzu.
Was zählt
- Lokale Ausführung garantiert Privatsphäre: Kein mathematisches Objekt, keine Formel und keine Grafik verlässt jemals das Benutzergerät.
- Wolfram Engine ist kein Ersatz für Python – sie ist ein spezialisierter Rechner: Sie bietet präzise symbolische Algebra, Visualisierung und numerische Methoden, ohne dass man eigene Solver schreiben muss.
- Qwen Code CLI fungiert als Codegenerator, nicht als Solver: Das Modell gibt niemals eine „endgültige Antwort“ aus, sondern generiert lediglich ausführbaren Code und wartet auf das tatsächliche Ergebnis von
wolframscript. - Delta Chat bietet Ende-zu-Ende-Verschlüsselung ohne Server: PGP-Schlüssel werden per QR-Code ausgetauscht, und Nachrichten werden geräteintern verschlüsselt.
- Die Struktur
algorithms/schafft ein Repository reproduzierbarer Lösungen: Jeder Algorithmus enthältdescription.md,reasoning.mdundsolution.wl– bereit für Integration in CI/CD-Pipelines oder Dokumentation.
Einrichtung und Deployment
Zum Deployment benötigen Sie:
- Installieren Sie die Wolfram Engine von der offiziellen Website und führen Sie
wolframscript --installaus. - Installieren Sie Node.js 20+ und führen Sie
npm install -g qwen-cliaus. - Erstellen Sie eine Conda-Umgebung:
conda create -n mathbot python=3.12 && conda activate mathbot. - Installieren Sie Abhängigkeiten:
pip install -r requirements.txt. - Konfigurieren Sie
config.py: geben SieWHITELIST_EMAIL,PROJECT_DIRundQWEN_CMDan. - Führen Sie die Initialisierung aus:
bash init.sh– dies erstelltsessions/,algorithms/und_index.md. - Starten Sie den Bot:
python math_bot.py.
Nach dem Start beginnt der Bot alle 30 Sekunden, die Mailbox abzufragen. Zum Testen senden Sie einfach /start von einer autorisierten E-Mail-Adresse. Sitzungen werden in Echtzeit protokolliert, und Fehler werden in math_bot.log festgehalten.
— Editorial Team
Noch keine Kommentare.