Arslan Docs Stand v0.1.63Deutsch

Arslan, erklärt.Entwurf, Umsetzung und Entwicklung vom ersten Prototyp bis v0.1.63

Ein lokal arbeitender, quelloffener persönlicher KI-Assistent für den Mac: seine Produktentscheidungen, seine Funktionsweise, Daten und Berechtigungen sowie die technischen Erfahrungen aus mehr als fünfzig Releases. Der Text trennt Ausgeliefertes, historische Entwürfe und künftige Richtungen; jede Aussage verweist auf den Quellcode von v0.1.63.

2026.06.07 →

Früheste in Git nachvollziehbare Entwicklung
nicht die erste Idee und nicht der Open-Source-Start

64 Versions-Tags

v0.1.0–v0.1.63, lückenlos
davon 63 öffentliche Releases

Ein zentraler Wandel

Experten-Personas → eine Agentenschleife
Fähigkeiten erhalten, kürzerer Weg

01 / ProjektüberblickVon natürlicher Sprache zu konkreter Arbeit

Arslan ist ein quelloffener persönlicher KI-Assistent, der vorrangig für den Mac entwickelt wurde und lokal arbeitet. Nutzer beschreiben eine Aufgabe; Arslan stellt den Kontext zusammen, ruft das Modell auf, setzt Werkzeuge ein, protokolliert die Ausführung und liefert überprüfbare Antworten oder Dateien. Chat, Gedächtnis, Dateiverarbeitung, Terminal, Web, die Bedienung ausgewählter nativer Apps und Hintergrundaufgaben sind über einen gemeinsamen Einstieg zugänglich.

Der Autor entwickelt und erweitert das Projekt allein mithilfe von KI – eine Arbeitsweise, die häufig als Vibe Coding bezeichnet wird. Dieses Dokument führt von den Produktzielen bis zu den konkreten Grenzen im Code: Es erläutert die Entwurfsentscheidungen, die Funktionsweise und die Entwicklung vom ersten Prototyp bis zu v0.1.63.

Die Aufgabe verstehen

Die aktuelle Anforderung, jüngste Gespräche, zur Nutzung freigegebene persönliche Erinnerungen und relevante Unterlagen bestimmen, welche Informationen und Werkzeuge als Nächstes benötigt werden.

Ausführen und beobachten

Das Modell schlägt strukturierte Aktionen vor. Der Code prüft Parameter und Berechtigungen, die Werkzeuge liefern tatsächliche Ergebnisse. Anschließend entscheidet das Modell, ob es fortfährt, die Vorgehensweise ändert oder die Aufgabe abschließt.

Überprüfbare Ergebnisse liefern

Dateien, Werkzeugrückgaben, Aufgabenstatus und Quellen bilden die Grundlage des Ergebnisses. Nutzer können den Fortschritt verfolgen, Freigaben erteilen, Aufgaben stoppen oder anhand vorhandener Aufzeichnungen weiterarbeiten.

Ein Einstieg für unterschiedliche Aufgaben

AufgabenartTypische TätigkeitenVoraussetzungen und Grenzen
Recherche und LektüreWebsuche, Inhaltsextraktion, Lesen von Anhängen, Zusammenfassen von Informationen mit QuellenangabenAbhängig von der Erreichbarkeit der Webseiten, der Vollständigkeit der Extraktion und den Fähigkeiten des Modells; Quellen ermöglichen eine Prüfung, beweisen aber nicht automatisch die Richtigkeit einer Schlussfolgerung
Dateien und ArbeitsergebnisseTexte oder Daten im Arbeitsbereich bearbeiten, Konvertierungsbefehle ausführen, Dateien erzeugen, die sich öffnen lassenDer Lese- und Schreibumfang richtet sich nach Werkzeug, Arbeitsbereich und Berechtigung; Speicherprotokoll und tatsächliche Dateien müssen übereinstimmen
Aktionen auf dem MacUnterstützte Apps über Systemschnittstellen, Shortcuts, Apple Events oder Hands auslesen und bedienenJeder Zugriffsweg hat eigene Anforderungen an Systemberechtigungen und App-Kompatibilität; sensible Aktionen können eine zusätzliche Bestätigung verlangen
Länger laufende AufgabenLange Arbeit im Chat behalten oder in den Hintergrund geben, wenn Sie oder das Modell das wählen; geplante Aufgaben ausführen (die in 0.1.63 keine Terminalbefehle ausführen); Fortschritt und Ergebnisse empfangenDer lokale Prozess muss laufen können; bei Ruhezustand, fehlender Netzverbindung oder ausgeschaltetem Mac ist die Verfügbarkeit nicht mit einem Cloud-Dienst vergleichbar
Persönliche ZusammenarbeitAnrede, Formatwünsche, Projektregeln und auf diesem Rechner bewährte Vorgehensweisen speichernFür Erinnerungen gelten Geltungsbereich, Sensibilität, Herkunft und Nutzungserlaubnis; gespeicherte Erfahrung erweitert keine Werkzeugberechtigungen

Was „lokal zuerst“ konkret bedeutet

„Lokal zuerst“ beschreibt den primären Speicher- und Ausführungsort: Desktopoberfläche, lokaler Dienst, Datenbank, Arbeitsbereich und Mac-Werkzeuge laufen überwiegend auf dem Rechner des Nutzers. Das Modell wird vom Nutzer konfiguriert. Bei Cloud-Modellen gehen die im Aufruf enthaltenen Gespräche, Dokumentausschnitte und freigegebenen Erinnerungen an den jeweiligen Modellanbieter. Auch kompatible lokale Modellendpunkte lassen sich anbinden; deren Werkzeugaufrufe und visuelle Fähigkeiten hängen jedoch vom Modell und der Implementierung des Dienstes ab.

Die Architektur muss daher zwei Fragen getrennt beantworten: Auf welchem Rechner findet die Arbeit statt, und welche Inhalte werden an welchen Modellendpunkt gesendet? Lokale Datenspeicherung, die Freigabe von Erinnerungen für die Cloud und Werkzeugberechtigungen erfüllen unterschiedliche Aufgaben. Ein einzelner Schalter „lokal“ kann sie nicht zusammenfassen.

Auf welche Version sich dieses Dokument bezieht

Grundlage ist die offiziell veröffentlichte v0.1.63 vom 27. Oktober 2026 um 22:26:31 Uhr Pekinger Zeit (UTC+8); der Abgleich reicht bis zum 27. Oktober 2026. Codelinks verweisen fest auf den Release-Commit 9bbb6ad653b4. Entwicklungen nach der Veröffentlichung, historische Funktionen und künftige technische Arbeiten werden gesondert gekennzeichnet.

Leseweg

Für Produkt und Entstehung: dieses Kapitel, Eigenständige Entwicklung und Entwicklungslinien. Für die Implementierung: von der Systemarchitektur zu Laufzeit, Daten, Werkzeugen und Sicherheit. Für den Reifegrad: Tests und Ergebnisse sowie Technische Weiterentwicklung. Für einzelne Änderungen: der vollständige Versionsanhang.

Einstieg in die Implementierung: Einheitlicher Einstieg von Arslan; Kontext für Aufgaben und Erinnerungsnutzung; Modellanbindung; Release Notes zu v0.1.63.

02 / Eigenständige Entwicklung und Open SourceEine Person entwickelt mit KI eine App zum System

Arslan ist ein Projekt, das ich allein mithilfe von KI entwickelt habe – häufig wird das als Vibe Coding bezeichnet. Vom ersten Prototyp bis zu den späteren Versionen habe ich das Projekt durchgehend eigenständig vorangetrieben.

„Eigenständige Entwicklung“ bedeutet hier, dass der Autor das gesamte Projekt allein verantwortet und vorantreibt; KI dient als Werkzeug bei der Umsetzung. Zugleich baut Arslan auf quelloffenen Frameworks, System-APIs, externen Modellen und Komponenten Dritter auf. Arbeitsweise, Projektverantwortung und Herkunft der Komponenten sind klar voneinander zu unterscheiden. Im Folgenden geht es um die Entwürfe und Implementierungen, die tatsächlich in das Produkt eingeflossen sind.

Von generiertem Code zu einem wartbaren Produkt

Lauffähiger Code deckt nur einen kleinen Teil eines Produkts ab. Eine Desktop-App muss auch klären, wie Dienste starten, Fenster sich verbinden, alte Datenbanken aktualisiert werden, nach dem Beenden von Prozessen aufgeräumt wird, wer die Systemberechtigungen hält und ob das Installationspaket auf einem Rechner ohne Entwicklungsumgebung funktioniert. Ein Agent bringt weitere Unsicherheiten mit: Modellaufrufe können das Zeitlimit überschreiten, Werkzeugparameter abgeschnitten werden, Webseiten unvollständig lesbar sein. Auch mitten in der Ausführung kann eine Freigabe durch den Nutzer erforderlich werden.

Diese Probleme haben die Weiterentwicklung von Arslan schrittweise in vier Richtungen gelenkt: klare Verträge für Eingaben und Zustände, beobachtbare Werkzeugergebnisse zur Prüfung der Fertigstellung, Berechtigungsgrenzen für tatsächliche Nebenwirkungen sowie Tests und Abnahmeprüfungen für Änderungen und Releases. KI-Unterstützung kann Umsetzung und Fehlersuche beschleunigen; ein verlässlich auslieferbares Produkt benötigt jedoch das Zusammenspiel dieser Vorkehrungen.

Frühe Annahmen verwerfen können

Anfangs waren die Fähigkeiten um spezialisierte Expertenfiguren organisiert. Später wurden sie in einem einheitlichen Arslan zusammengeführt. Werkzeuge und Methoden blieben wiederverwendbar, während der Einstieg für Nutzer und der zentrale Ausführungspfad anhand realer Probleme neu gestaltet wurden. 0.1.63 hat das im Code zu Ende gebracht: Der Code aus der Expertenzeit, den keine Antwort mehr erreichen konnte (Anlegen von Experten, ihre Vorlagen und die Engine), wurde gelöscht, und Arslans Produktcode war am Ende um 12.514 Zeilen kleiner als in 0.1.62.

Auch ausbleibende Verbesserungen dokumentieren

Zusätzliche Prüfschichten, gespeicherte Erfahrungen oder Parallelität verbessern die Ergebnisse nicht zwangsläufig. Das Projekt hat auch fehlgeschlagene Prüfungen, Rückstände bei Rechercheaufgaben und ausbleibende Beschleunigung nach Lernschritten dokumentiert. Daraus ergeben sich konkrete Ansatzpunkte für die nächste Änderung. 0.1.63 hat die Recherchenprüfung, die Evolutions- und Kurationsmaschinerie sowie „Destillieren“ im Unterhaltungsmenü entfernt, statt sie weiterlaufen zu lassen.

Was Arslan selbst leistet und was Abhängigkeiten beitragen

BestandteilRolle im Projekt
Anwendung und LaufzeitsystemArslan verbindet Oberfläche, Modelladapter, einheitliche Ausführungsschleife, Aufgabenstatus, Gedächtnis, Werkzeugberechtigungen und Desktop-Auslieferung zu einer installierbaren persönlichen Anwendung.
Grundlegende FrameworksReact, Tauri, FastAPI, SQLAlchemy, SQLite und weitere Komponenten stellen allgemeine Funktionen für Oberfläche, Host, Dienste und Persistenz bereit.
ModelleModelle werden über vom Nutzer konfigurierte Endpunkte aufgerufen. Arslan stellt Anwendungsumgebung und Ausführungskette bereit; im Rahmen dieses Projekts wurde kein neues Basismodell trainiert.
Komponenten für DesktopautomatisierungHands verwendet agent-desktop (Apache-2.0) auf dem Upstream-Stand v0.9.4 plus vier Commits, gebaut aus einem Fork, der seine Abhängigkeiten selbst mitführt und eine Änderung von Arslan enthält (eine App, deren Prozess nicht mehr existiert, wird aus der App-Liste ausgelassen); diese Änderung wurde dem Upstream-Projekt angeboten. Arslan ergänzt einen eigenständigen Helper, Authentifizierung und Berechtigungsrichtlinien.
Herkunft der TerminalregelnArslans eigenes Modul zum Lesen von Shell-Befehlen und die harte Untergrenze seiner Terminalregeln sind aus MIT-lizenziertem Code von Hermes Agent angepasst; die darüberliegenden Regelschichten (verboten, nur dieses Mal, Sandbox) und die Regeln für externe Aktionen und Zugangsdaten stammen von Arslan selbst. Bis 0.1.62 wurde eine mitgelieferte Kopie des Hermes-Codes ausgeliefert; 0.1.63 hat sie durch Arslans angepasstes Modul ersetzt und die Kopie entfernt.

Das Projekt ist unter Apache-2.0 veröffentlicht. Lizenzen und Urheberschaft von Drittkomponenten sind in THIRD_PARTY_NOTICES.md aufgeführt, das auch mit der App ausgeliefert wird; dort steht auch Hermes Agent (MIT), auf dem Arslans Lesen von Shell-Befehlen beruht. Der offene Quellcode macht Implementierung, Grenzen und Entwicklung nachvollziehbar; damit gehört auch die Begründung von Entscheidungen zur Dokumentation.

Die Angaben zur Arbeitsweise stammen vom Autor. Implementierung und Urheberschaft: Projektlizenz; Hinweise zu Drittkomponenten; Architekturentscheidung zum Laufzeitkern; Umbau zur einheitlichen Schleife.

03 / Technologie-StackAufgabenteilung zwischen Oberfläche, Host, Ausführung und Daten

Arslans Technologie-Stack folgt den Anforderungen einer Desktopanwendung und eines persönlichen Agenten. Die genauen Versionen unten stammen aus den Lockdateien von v0.1.63 und geben die für diesen Quellstand aufgelösten Abhängigkeiten wieder. Sie sind weder die Versionsnummern, die Nutzer auf ihrem Rechner installieren müssen, noch die Release-Version des Projekts.

EbeneEingesetzte TechnikAufgabe und Begründung
OberflächeReact 19.2.7
TypeScript 5.8.3
Vite 6.4.3
Komponenten für Chat, Aufgaben- und Freigabekarten, Einstellungen und Gedächtnisseiten; Typen helfen, seitenübergreifende Zustände und Ereignisprotokolle zu pflegen. Vite übernimmt Entwicklung und Build.
Oberflächenzustand und GestaltungZustand 5.0.14
Tailwind CSS 4.3.1
i18next 26.3.1
Gemeinsamer UI-Zustand, Gestaltung und Ressourcen für sechs Sprachen. ECharts rendert die Diagramme, die das Werkzeug render_chart im Chat erzeugt, sowie Run-Vergleiche; D3 zeichnet den Erinnerungsgraphen. Beide sind keine Frameworks für die Inferenz im Backend.
Desktop-HostTauri 2.11.5 / Rust
System-WebView / objc2
Fenster, Menüleiste, Start, Beenden, Statusinsel, Updates und macOS-APIs. Das Rust-Projekt deklariert mindestens Version 1.77.2 und Edition 2021; daraus lässt sich nicht die tatsächlich verwendete Build-Toolchain ableiten.
Lokaler DienstPython ≥ 3.11
FastAPI 0.141.1
Uvicorn 0.51.0
Schnittstellen, WebSocket, Agent-Schleife, asynchrone I/O, Werkzeugausführung und Zeitplanung. Python erleichtert die Nutzung des Ökosystems für Modelle und Dokumentverarbeitung.
DatenmodellePydantic 2.13.4
SQLAlchemy 2.0.51
aiosqlite 0.22.1 / SQLite
Validierung von Eingaben und Aufgabenverträgen, asynchroner Datenbankzugriff und lokale Persistenz. SQLite senkt den Bereitstellungsaufwand einer persönlichen Desktopanwendung, ist aber keine verteilte Datenplattform für mehrere Mandanten.
Suche und GedächtnisSQLite FTS5
Embedding / cosine / RRF
Optional fastembed 0.8.0
Volltextsuche und semantische Suche ergänzen sich. Ohne Embedding-Pfad bleibt die Stichwortsuche verfügbar. Für persönliche Erinnerungen gelten zusätzlich Geltungsbereich, Sensibilität und Nutzungsberechtigungen.
Modellkommunikationhttpx 0.28.1
OpenAI-kompatible / Anthropic- / Gemini-Adapter
Einheitliche Schnittstelle für Modellaufrufe bei Erhalt der anbieterspezifischen Semantik von Werkzeugaufrufen, fortgesetztem Reasoning und Verbrauchsdaten; Seit 0.1.63 werden Antworten für OpenAI-kompatible Anbieter, Claude und Gemini so gestreamt, wie das Modell sie schreibt; ein Parameter, den ein Anbieter nicht mehr akzeptiert, wird weggelassen und pro Modell gemerkt. Die Fähigkeiten hängen weiterhin vom jeweiligen Modell und Endpunkt ab.
ErweiterungenMCP Python SDK 1.28.1
SKILL.md / arslan.plugin.json
MCP liefert das Werkzeugprotokoll, ein Skill die Vorgehensweise, das Plugin-Manifest die Beschreibung der Zusammensetzung. Die drei Begriffe bezeichnen unterschiedliche Dinge. Aktivierte MCP-Server starten im Hintergrund, jeweils mit einem Zustand, den das Modell und die Seite „Fähigkeiten“ gemeinsam lesen; seit 0.1.63 werden MCP-Werkzeuge und selten genutzte Werkzeuge bei Bedarf gefunden, statt mit jeder Anfrage mitgeschickt zu werden.
Anhänge und lokale OCRpypdf / pypdfium2
python-docx / python-pptx / Pillow
macOS Vision + PyObjC
Lesen von Dokumentinhalten und Text in Bildern. OCR erkennt Schrift; sie bedeutet weder Diagrammverständnis noch garantiert sie das vollständige Lesen eines Dokuments. Teilweise gelesene Inhalte und Sprachgrenzen müssen offengelegt werden.
Native Mac-AppsArslan Hands (Rust-Helper)
agent-desktop (v0.9.4 + 4 Upstream-Commits, fest versionierter Fork)
Accessibility / Unix-Socket
Auslesen des Bedienungshilfenbaums und – seit 0.1.60 – eines Bildes des einen Fensters, in dem gearbeitet wird, sowie regelgebundene Aktionen. agent-desktop ist eine Abhängigkeit unter Apache-2.0; der Fork enthält eine Änderung von Arslan, und die mitgelieferte NOTICE weist darauf hin.
Geräteübergreifende NutzungMac Swift Bridge (dieses Repository)
CloudKit / CryptoKit / Keychain
Die SwiftUI-App der iPhone-Seite liegt in einem separaten iOS-Projekt, nicht in diesem Repository
Synchronisierung verschlüsselter Nachrichten, Freigaben und Ergebnisse zwischen Mac und iPhone. Entwicklungsstand der mobilen App und ihr App-Store-Status werden getrennt dargestellt.
Paketierung und Qualitätuv.lock / npm lock / Cargo.lock
PyInstaller 6.21.0
pytest / Vitest / Rust / Swift tests
GitHub Actions
Reproduzierbare Abhängigkeiten, Bündelung des lokalen Dienstes, sprachübergreifende Tests, Plattformprüfungen, Signierung, Notarisierung und Abnahme des tatsächlichen Installationspakets. Der Desktop-Installer ist der Auslieferungsweg; der Docker-Bereitstellungsweg wurde in 0.1.63 entfernt.

Warum der Ausführungskern in Python bleibt

Python übernimmt Modellanbindung, Dokumentverarbeitung, Agent-Schleife und Aufgabendienste. Dabei lassen sich das vorhandene Ökosystem und bestehende Implementierungen direkt weiterverwenden. Tauri und Rust verantworten Fenster, Prozesslebenszyklus und native Integration. Eine öffentliche Architekturentscheidung dokumentiert die Beibehaltung dieses Kerns. Ein Wechsel in eine andere Sprache würde zugleich Werkzeuge, Datenmigrationen, Paketierung und Testgrenzen verändern; der Nutzen lässt sich nicht allein daran messen, ob eine Lösung „nativer“ ist.

Die Struktur ist logisch geschichtet, bleibt bei der Bereitstellung aber auf den lokalen Dienst konzentriert. Die internen Python-Module sind keine jeweils eigenständigen entfernten Microservices. Auch Redis, Celery, Docker oder Kubernetes sind für den Betrieb nicht erforderlich. Hands, Bridge, MCP-Dienste und Terminal-Unterprozesse bilden dort Prozessgrenzen, wo getrennte Berechtigungen oder eigene Laufzeitumgebungen benötigt werden.

Festgeschriebene Abhängigkeiten: Frontend-Lockdatei; Desktop-Lockdatei; Python-Lockdatei. Entwurf und Urheberschaft: Entscheidung zum Laufzeitkern; Hinweise zu Drittkomponenten.

04 / Wie das Projekt seinen heutigen Stand erreichteVon generierten Experten zu einem dauerhaft arbeitsfähigen Arslan

Der Autor entwickelt Arslan kontinuierlich allein und mit KI-Unterstützung im Sinne von Vibe Coding. Diese Entwicklung umfasst neue Fähigkeiten ebenso wie zurückgenommene Entwürfe: Manche Funktionen benötigen ergänzende Betriebsbedingungen, manche Komplexität muss entfallen. Diese Veränderungen erklären die heutige Architektur besser als eine undifferenzierte Liste aller jemals vorhandenen Funktionen.

Diese Zeitleiste berücksichtigt die Grenzen der verfügbaren Belege. Frühe Daten stammen aus erhaltenen Git-Commits, offizielle Versionsdaten aus öffentlichen Releases. Alle wurden in Pekinger Zeit (UTC+8) umgerechnet. Der erste Commit, die Vorbereitung auf Open Source, die öffentliche Freigabe des Repositorys und das erste Release sind unterschiedliche Ereignisse. Wann das Repository genau auf Public umgestellt wurde, lässt sich anhand der vorliegenden Aufzeichnungen nicht bestimmen; das heutige öffentliche Repository wurde am 26. Juli 2026 angelegt.

Juni: Ein geschlossener Ablauf für „Agenten per Gespräch erstellen“

Der früheste erhaltene Commit vom 7. Juni 2026 beginnt mit Datenmodellen. Damals verfolgte das Projekt einen Meta-Agent-Ansatz: Auch technisch unerfahrene Nutzer sollten im Gespräch Fachexperten erstellen können, die anschließend Aufgaben erledigen. Es folgten Modelladapter, Werkzeugregister, ein Zustandsautomat für die Anforderungsklärung, Vorlagen, Spawn Manager und CLI. Am 8. Juni wurden FastAPI, asynchrone Datenbank, Authentifizierung, WebSocket und React-Oberfläche verbunden. Der Prototyp besaß damit einen interaktiven Einstieg mit Speicherung und Wiederherstellung der Verbindung.

Als Werkzeuge tatsächlich ausgeführt wurden, musste das System nachvollziehen können, „was ausgeführt wurde“, und Antworten mit Material versorgen. Am 23. Juni kamen Runs, Steps, Evaluations sowie Dokumentaufteilung und SQLite FTS5 hinzu; am 27. Juni folgten die MCP-Transporte stdio und HTTP. Damit entwickelte sich das Projekt vom Erzeugen eines Expertenprompts zur Verwaltung eines vollständigen Ablaufs: Modell aufrufen, Werkzeuge ausführen, Verlauf speichern, Unterlagen durchsuchen und Ergebnisse an den Nutzer zurückgeben.

Erstes Datenmodell; Runs-Datenmodell; FTS5-Wissensindex; MCP-HTTP-Transport.

Juli: Gedächtnis und Auslieferung als technische Aufgaben

Am 5. Juli erhielt Second Brain Embeddings und eine nach Geltungsbereichen gefilterte hybride Suche, die Volltextsuche, Vektorähnlichkeit und RRF-Rangfusion kombiniert. Danach kamen Herkunft von Fakten, Gültigkeitsstatus, Ersetzung und Widerruf, Ordnungsvorschläge sowie Nutzungsaufzeichnungen hinzu. Das Gedächtnis wurde damit mehr als eine Gesprächszusammenfassung: Relevanz, fortbestehende Gültigkeit und Geltungsbereich einer Information bestimmen mit, ob sie in den Modellkontext gelangen darf.

Mehr Verlauf im Kontext bringt neue Abwägungen mit sich. Ein zu großer Suchbereich kann irrelevantes Material einbeziehen, alte Fakten können neuere überlagern, und externe Texte können langfristiges Verhalten beeinflussen. Deshalb ergänzte die Implementierung im Juli Herkunft und zeitliche Einordnung der Fakten, unterschied zwischen automatischen Ergänzungen, prüfpflichtigen Änderungen und sensiblen Inhalten und führte Ordnungsergebnisse einem Vorschlagseingang zu. Die späteren Gedächtnisfunktionen entwickelten diese Regeln weiter. Dass Nutzer Erinnerungen sehen, korrigieren und zurücknehmen können, wurde zum konkreteren technischen Ziel als bloß „mehr behalten“.

In dieser Phase begann auch die Arbeit an langfristiger Wartbarkeit. Am 14. Juli wechselten Datenbankmigrationen zu einem eigenen versionierten Runner; die Alembic-Abhängigkeit entfiel. Am 10. Juli wechselte die Lizenz zu Apache-2.0, und NOTICE sowie SECURITY.md kamen hinzu; ein ausdrücklicher Commit zur Open-Source-Vorbereitung folgte am 25. Juli. Am 27. Juli erschien v0.1.0 als erste installierbare Desktopversion. Tauri-Hülle und gebündeltes Python-Backend wurden gemeinsam ausgeliefert; Signierung, Notarisierung, Updates und Prüfungen der Erstinstallation wurden Teil des Release-Ablaufs.

Die tatsächliche Installationsumgebung zeigte unmittelbar Lücken, die Entwicklungstests nicht erfasst hatten: In den Paketen v0.1.0–0.1.6 fehlte eine WebSocket-Laufzeitabhängigkeit. Der Health-Endpunkt funktionierte, der Chat konnte jedoch keine Verbindung aufbauen. 0.1.7 korrigierte die Abhängigkeitsebene und die impliziten PyInstaller-Importe und nahm einen echten Handshake in die Installationsabnahme auf. Der Fehler zeigt, warum auf „das Backend ist gestartet“ die Prüfung folgen muss, ob der gesamte Nutzerablauf funktioniert.

Hybride Suche; Versionierte Migrationen; Open-Source-Vorbereitung; Rückblick auf den WebSocket-Fehler im Installationspaket.

August: Fähigkeiten anbinden und verständlich machen

0.1.20 unterschied bei Zugangsdaten zwischen nicht konfiguriert, entschlüsselbar und nicht entschlüsselbar und stabilisierte Salt sowie Schlüsselmigration. Die Suche erhielt Quellen- und Fehlerangaben, Modelle wurden nach Aufgaben aufgeteilt. Es folgten MCP OAuth, OpenRouter-Anmeldung, Ersteinrichtung, Erweiterungsmanifeste, Lesen und Schreiben im lokalen Arbeitsbereich, geplante Aufgaben und SSH. Mit der Zahl der Erweiterungen wuchs auch die Pflicht, ihren Zustand präzise zu erklären: Kann die aktuelle Verbindung Werkzeuge aufrufen, ist die Ausstattung aktiv und welche Aktion benötigt eine Freigabe?

Auch die lokale Ausführung wurde stärker unterteilt. Lesen und Schreiben im Arbeitsbereich wurden getrennt; Schreiben benötigt die passende Berechtigung. Geplante Aufgaben besitzen eine eigene Planungserlaubnis. SSH kann Rechner speichern, verlangt aber weiterhin für jede entfernte Ausführung eine Bestätigung. Das Werkzeugverzeichnis beschreibt damit Fähigkeiten und Nutzungsvoraussetzungen zugleich. „Verbunden“ und „darf jetzt ausgeführt werden“ sind für Nutzer unterschiedliche Zustände, die sowohl Oberfläche als auch Modellkontext abbilden müssen.

Das Turn Journal von 0.1.23 erlaubte, eine noch entstehende Antwort nach einem Gesprächswechsel wieder aufzunehmen. Die Korrektur der npx-Erkennung in der installierten App zeigte erneut, dass eine Desktopanwendung eine andere Umgebung vorfindet als ein Terminal. Im August ging es deshalb nicht nur um zusätzliche Dienste, sondern darum, Verbindungen, Zustände und Berechtigungen in verständliche Bedienabläufe zu übersetzen.

September: Von einzelnen Antworten zu nachvollziehbarer Arbeit

0.1.38 konzentrierte sich auf Zuverlässigkeit: eine bei Unsicherheit sperrende Python-Sandbox, eine eigenständige Rechenlaufzeit, persistente Runs, Artefakte, Checkpoints und ein gemeinsames Ausführungsbudget. Vorabversionen und Stabilisierung von 0.1.40 ergänzten Projektgedächtnis, Dokumentquellen, Aufgabenfortsetzung und Sicherungen vor Migrationen. Bekannte Fehler bei sprachübergreifenden Vergleichen mehrerer Dokumente blieben dokumentiert. Anklickbare Quellen belegen, dass Material auffindbar ist; sie beweisen nicht die Richtigkeit der Modellschlussfolgerung.

Etwas früher, vom 31. August bis zum 3. September, entwickelte sich die Sprachfunktion vom Vorlesen (0.1.32) über Push-to-Talk (0.1.36) zum Halbduplexgespräch (0.1.37); zugleich wurden Mikrofonberechtigungen und Sprachauswahl korrigiert. Die Rechercheabnahme von 0.1.40 stellte fehlgeschlagene sprachübergreifende Vergleiche weiterhin als Fehler dar. Die Quellenprüfung von 0.1.41 blieb nach unzureichender Kalibrierung standardmäßig ausgeschaltet (0.1.63 hat diese Recherchenprüfung später entfernt). Solche Aufzeichnungen grenzen ein, was „das System hat geprüft“ bedeutet, und richten weitere Verbesserungen auf tatsächliche Fehler aus.

Mit 0.1.41 ließ das Schließen des Fensters die App in der Menüleiste weiterlaufen. 0.1.42 verlagerte lange Aufgaben in den Hintergrund, damit Nutzer weiterchatten können. 0.1.43 unterschied anschließend zwischen weicher Budgetgrenze und hartem Stopp: An der weichen Grenze wird zunächst mit dem bereits vorliegenden Material ein Ergebnis erstellt, damit eine halb fertige Recherche nicht ohne Lieferung endet. Aufgaben erhielten zunehmend einen vom Fenster unabhängigen Lebenszyklus. Daraus folgt jedoch nicht, dass beliebige externe Aktionen nach einem Absturz sicher automatisch wiederholt werden können.

Ende September bis Oktober: Eine gemeinsame Ausführungsschleife

Im frühen Entwurf waren Experten dauerhafte Rollen. Nutzer und System mussten Auswahl, Einladung und Routing verwalten. 0.1.44 beendete das Erstellen und Einplanen von Experten; ihre bisherigen Methoden ließen sich in Skills umwandeln. 0.1.46 stoppte die Expertenweiterentwicklung im Hintergrund, für die es keinen aktiven Nutzungspfad mehr gab. 0.1.48 entfernte den vorgeschalteten Router: Jede Nachricht gelangt unmittelbar in die Agent-Schleife. Laut Release Notes stammten manche fest vorgegebenen „Das kann ich nicht“-Antworten aus Routingentscheidungen und spiegelten keine tatsächliche Fähigkeitsgrenze wider. Mit dieser Zusammenführung kehrte die Werkzeugauswahl in den Ausführungsprozess zurück, der die realen Werkzeuge und Zustände kennt.

Danach konzentrierten sich die Verbesserungen auf die gemeinsame Ausführungsebene: 0.1.49 verbesserte native Werkzeugprotokolle sowie den Umgang mit abgeschnittenen Antworten und Fehlern. 0.1.50 ergänzte den aktuellen Arbeitszustand, Pläne und alternative Vorgehensweisen. 0.1.51 führte Befehlssandbox und Island ein. Mit 0.1.52 flossen Nutzererinnerungen und Learned Practices in spätere Arbeit ein. „Lernen“ bedeutet hier, verwaltbare Erfahrungen zu speichern und zu verwenden; die Gewichte des Basismodells werden nicht verändert.

0.1.53 ergänzte einen eigenständigen Hands-Helper zum Lesen des Bedienungshilfenbaums und Bedienen von Mac-Apps sowie die Mac-Seite der iPhone Bridge. 0.1.54 macht diese Mac-Seite bereit für die iPhone-App (Freigaben per Touch ID, ein Eintrag pro Telefon, Aufräumen beim Entfernen eines Telefons) und schließt vier Lücken im Terminal-Gate; jede dieser Änderungen führt zu mehr Rückfragen, nicht zu weniger. 0.1.55 gibt allem, was eine Rückfrage stellt, ein einheitliches Erscheinungsbild und eine gemeinsame Warteschlange: Karten lassen sich im Posteingang beantworten und, sofern der Schritt nicht riskant ist, auch in der Island. 0.1.56 bringt Projekte in zwei Ebenen: ein Board für alle Projekte und für jedes Projekt Etappen mit Prüfpunkten, die Arslan nur anhand von Belegen abhakt, die es benennen kann. 0.1.57 lässt die Fähigkeiten wachsen: Braucht ein Schritt etwas, das Arslan nicht kann, sucht es einen passenden Server oder Skill, fragt nach, installiert ihn fest versioniert und in einer Sandbox, testet ihn und wiederholt den Schritt. 0.1.58 macht Antworten und Dateien lesbar: eine unaufdringliche Zeile zu dem, was getan wurde, Dateien, die als Karten zurückkommen, eine Leseansicht und jedes beliebige Modell pro Unterhaltung. 0.1.59 hält den Chat auch bei langen Antworten am Leben, antwortet in der Sprache des Nutzers und wertet abgeschlossene Hintergrundarbeit als erledigt. 0.1.60 bringt Hands v2: Es kann das eine Fenster ansehen, in dem es arbeitet, sich kurz den Vordergrund ausleihen und – nur nach einem Ja – den Bildschirm übernehmen. 0.1.61 bringt eine einheitliche Freigabekarte für das Chatfenster, den Posteingang, die Island und das iPhone, MCP-Server, die sich selbst starten, und eine Korrektur für Claude-Modelle, die die Einstellung temperature ablehnen. 0.1.62 lässt lange Terminalbefehle bis zu ihrer eigenen Grenze laufen, beschränkt „braucht Ihre Prüfung“ auf Aktionen, die tatsächlich eine Spur hinterlassen haben könnten, formt MCP-Werkzeugbeschreibungen so um, dass die Ablehnung eines Anbieters nicht mehr jeden Chat zum Scheitern bringt, und verhindert, dass Dateischreibvorgänge einem Link aus dem Arbeitsordner hinaus folgen. 0.1.63 erlaubt es, eine Nachricht hinzuzufügen, während eine Antwort läuft, streamt Antworten, während sie geschrieben werden, führt bis zu vier Lesevorgänge gleichzeitig aus, speichert einen Kontrollpunkt, damit ein Zug rückgängig gemacht werden kann, sendet selten genutzte Werkzeuge nur bei Bedarf, ergänzt ein Dollar-Limit pro Aufgabe (standardmäßig eingeschaltet) und fragt bei jedem neuen Befehl nach, während die Beurteilung harmloser Befehle erst später vervollständigt wird. Außerdem wurde Code gelöscht: der Code aus der Expertenzeit, den keine Antwort mehr erreichen konnte, die Evolutions- und Kurationsmaschinerie, die Recherchenprüfung, „Destillieren“, der Docker-Bereitstellungsweg und die mitgelieferte Hermes-Kopie. Die frühere Expertenorchestrierung ist inzwischen historisch. Auch der Zugriff über Bedienungshilfen bedeutet nicht, dass jede App zuverlässig steuerbar wäre. Die aktuelle Version begrenzt das tatsächlich ausführbare Handeln des Modells weiterhin durch sichtbare Zustände, ausdrückliche Berechtigungen und überprüfbare Ergebnisse.

Grundlagen der Zuverlässigkeit; Umfang des stabilen Rechercheassistenten; Hintergrundarbeit; Einheitliche Agent-Schleife; Hands und Bridge.

05 / SystemarchitekturDie Aufgaben von Oberfläche, Ausführung und Berechtigungen

Einfach ausgedrückt: React ist die sichtbare Arbeitsoberfläche, Tauri die Verbindung zu macOS, Python die koordinierende Ausführungsengine. Das Modell trifft Entscheidungen, Werkzeuge führen tatsächliche Aktionen aus, Datenbank und Dateisystem speichern Verlauf und Ergebnisse. Diese Aufgaben gehören zu einem gemeinsamen Desktopprodukt, aber nicht zu einem einzigen Prozess.

Systemarchitektur von Arslan v0.1.63React verbindet sich über HTTP und WebSocket mit dem Python-Dienst. Tauri verwaltet Desktop und Dienstlebenszyklus. Die einheitliche Agent-Schleife greift auf Modelle, Zustände und Werkzeuge zu; Werkzeuge auf Dateien und das eigenständige Hands. Bridge ist über einen eigenen lokalen Steuerkanal an Python angebunden und tauscht über CloudKit Nachrichten mit dem noch in Entwicklung befindlichen iPhone-Client aus. Mac des Nutzers · Release v0.1.63 React 19 + TypeScriptChat / Activity / Brain / Einstellungen Tauri 2 + Rust · Desktop-HostFenster / Prozesse / Island / Updates Lokales HTTP + WebSocket Start / Port-Handshake Python-Sidecar · FastAPI / UvicornLokale Authentifizierung, API, Ereignisse, Sitzungen und Hintergrundaufgaben Einheitliche Agent-Schleife · tool_loop.run_nativeKontext + Gedächtnis + Skill → Modell → Prüfung + Freigabe → Werkzeug → ErgebnisVorder- und Hintergrund: Plan, Budget, Abbruch, Abschluss und Ablaufprotokoll Adapter Konfigurierter ModellendpunktOpenAI-compatible / Anthropic / GeminiCloud-API oder lokales ModellLokales Modell ggf. auf dem Mac links Zustand und GedächtnisSQLite / FTS5 / VektorsucheTasks, Runs, Steps, Vorlieben, Praxis, Belege Werkzeugregister und AusführungDateien / Terminal / Suche / Browser / MCPApp-Aktionen / Apple Events / Lese-Worker Dateizugriff Unix-Socket Datenträger und ArbeitsbereichErgebnisdateien / Ausgaben / Backups / RückgängigZugriff nur mit Werkzeugberechtigung Arslan HandsNativer HelperAccessibility-Recht Arslan BridgeHTTP + /ws/bridgeSwift · Host-Aufsicht Apple CloudKitGleiche Apple ID / Privates ChiffrepostfachAsynchron; nötige Routing-Metadaten bleiben iPhone-ClientSwiftUI / CryptoKit · Tasks, Freigaben, ResultateEntwicklung / Abnahme; kein Store-NachweisEigene mobile App; Anbindung per CloudKit Pfeile: wichtigste Aufruf- und Steuerbeziehungen; Antworten laufen zurück. Durchgezogen: Code dieser Version; gestrichelt: mobile Entwicklung / Abnahme.Logische Übersicht: Nicht alle Module laufen ständig oder in jeder Runde; eine Abnahme aller realen Szenarien ist damit nicht belegt.

Abbildung 1 · Aktuelle Architektur. Als Text: Arbeitsoberfläche ↔ lokaler Dienst → einheitliche Agent-Schleife ↔ Modell; Ausführungsschleife → Werkzeuge → System / Dateien; Zustände werden in SQLite und auf dem Datenträger gespeichert. Das iPhone kommuniziert über CloudKit mit der Mac Bridge und greift nicht direkt auf eine öffentliche Mac-API zu.

Warum diese Aufteilung gewählt wurde

GrenzeNutzenAufwand
React ↔ lokaler DienstChat, Einstellungen und Graphen sind von der Ausführungslogik getrennt; Antworten werden gestreamt, während das Modell sie schreibt, und Werkzeugereignisse lassen sich in Echtzeit anzeigenProtokoll, Wiederverbindung, Streaming-Zustand und Authentifizierung müssen gepflegt werden; ein offenes Fenster belegt keine laufende Aufgabe
Tauri ↔ Python-SidecarDas Python-Ökosystem für Modelle und Dokumente bleibt nutzbar, bei einer gewöhnlichen Mac-InstallationMehrsprachige Paketierung, dynamische Abhängigkeiten, Portermittlung, Prozessende und Signierung müssen verwaltet werden
Modell ↔ WerkzeugausführungDas Modell schlägt Aktionen vor; deterministischer Code prüft, autorisiert, führt aus und protokolliertFehlerhafte Parameter, unbekannte Werkzeuge, abgeschnittene Antworten, wiederholte Fehler und Abbrüche müssen behandelt werden. Selten genutzte Werkzeuge und MCP-Werkzeuge werden bei Bedarf gefunden, statt mit jeder Anfrage mitgeschickt zu werden; eine Freigabekarte wird angezeigt, wo ein Schritt eine braucht
Eigenständiger Hands-HelperEin eigener Prozess hält die Accessibility-Berechtigung; Regeln gelten je App und AktionCodesignatur, Prozessidentität, Systemberechtigungen und App-Unterschiede erhöhen den Wartungsaufwand
Mac ↔ iPhoneBei eingeschaltetem, verbundenem und wachem Mac lassen sich auch unterwegs Anfragen stellen, Ergebnisse ansehen und unterstützte Freigaben bearbeitenIst der Mac nicht verfügbar, warten Nachrichten in iCloud; Wiederholungen, falsche Reihenfolge, Wiederherstellung und konsistente Endzustände müssen behandelt werden

Wie die Prozesse beim Start verbunden werden

  1. Tauri startet den gebündelten Python-Sidecar und zeigt bis zur Dienstbereitschaft einen Startbildschirm.
  2. Der Sidecar bindet bevorzugt den lokalen Port 47317. Bei einem Konflikt nutzt er einen temporären Port und meldet ihn über die Standardausgabe im ARSLAN_PORT-Handshake zurück.
  3. Nach Empfang des Ports lädt der Desktop-Host im System-WebView die vom lokalen Dienst bereitgestellte React-Seite. Der bevorzugte feste Port hält WebKit-Origin und lokalen Oberflächenspeicher möglichst stabil. Ein serverseitiges Sitzungsverzeichnis ermöglicht, den Verlauf auch nach einem Portwechsel wiederzufinden.
  4. Die Oberfläche verwaltet Ressourcen über HTTP und empfängt Textstreams, Werkzeugzustände, Freigaben und Aufgabenfortschritt über WebSocket. Auch lokale Verbindungen benötigen Token- und Herkunftsprüfungen; der Server der Desktop-App verlangt stets seinen Token, akzeptiert keine andere Website als Aufrufer und ignoriert Einstellungen, die aus der startenden Umgebung geerbt wurden.
  5. Der Host hält die Standardeingabe-Pipe als Lebenszyklusverbindung offen. Beendet sich der Elternprozess und entsteht EOF, kann der Sidecar aufräumen und enden. Auch die Ausgabepipes müssen fortlaufend gelesen werden, um Blockaden oder verwaiste Prozesse nach Verbindungsverlust zu vermeiden.

Gemeinsam halten diese Details die Lebenszyklen von Fenster, Dienst und Datenbank im Einklang. Ein erfolgreicher HTTP-Health-Aufruf beweist nicht, dass WebSocket, Anhänge, statische Ressourcen und native Helper einsatzbereit sind. Sie benötigen eigene Prüfungen in der Release-Abnahme.

Startdetails: Einstieg des gebündelten Dienstes und Portstrategie; Sidecar-Handshake und Pipe-Verwaltung; WebSocket-Anbindung.

Alte und neue Architektur: Wiederverwendung bleibt, Expertenrouting entfällt

Historisch

Mehrere Experten / Meta-Agent

Nutzer → vorgeschalteter Router → Spawn auswählen / erstellen → Expertenausführung → Zusammenfassung; Expertenprompts konnten eine Holdout-Evaluation und manuelle Promote-Freigabe durchlaufen. Nutzer mussten Expertenidentitäten, Ausstattung, Verzeichnis und Weiterentwicklung verstehen.

Hauptpfad in 0.1.63

One Arslan / einheitliche Schleife

Nutzer → dieselbe Agent-Schleife → Skills nach Bedarf laden und Werkzeuge aufrufen → Ergebnis ausgeben; gewöhnliche Fakten werden nach der Antwort extrahiert. Frühere Experten können in Skills überführt werden, ihr Verlauf bleibt erhalten, und eine von einem früheren Experten gestartete Aufgabe wird von Arslan fortgesetzt, wenn sie wieder aufgenommen wird. Expertenrouting ist nicht mehr der zentrale Ausführungspfad, und seit 0.1.63 sind der Code aus der Expertenzeit, den keine Antwort mehr erreichen konnte, die Evolutions- und Kurationsmaschinerie und die Recherchenprüfung gelöscht.

„Einheitliche Schleife“ bedeutet weder, dass alles seriell abläuft, noch dass niemals delegiert wird. Der Code enthält weiterhin eingeschränkte Worker mit ausschließlich lesendem Zugriff. Sie sind nicht mit dem früheren Expertensystem samt eigener Persönlichkeit, Ausstattung, Weiterentwicklung und Routing gleichzusetzen.

Einstiege in den Code: Desktop-Host und Sidecar-Lebenszyklus; Einheitlicher Einstieg; Ausführungsschleife; Entscheidung für den bestehenden Python-Ausführungskern; Überwachung des Bridge-Prozesses; Lokaler Bridge-Steuerkanal; Geräteübergreifendes Protokoll.

06 / AusführungslaufzeitJede Anfrage braucht einen Ablauf, Grenzen und ein Ergebnis

Arslans Ausführungskern übersetzt die Absicht des Nutzers in beobachtbare Schritte: Kontext vorbereiten, Modell aufrufen, Werkzeuganfragen prüfen, erlaubte Aktionen ausführen, tatsächliche Ergebnisse lesen und anschließend fortfahren oder liefern. Seit v0.1.60 verwendet der Standardeinstieg eine einheitliche Schleife; Nachrichten gelangen direkt in den Antwortablauf, und dauerhafte Fakten werden erst nach der Antwort extrahiert. Der Hauptablauf beginnt nicht mit einem Modellrouting-Aufruf, und der Code aus der Expertenzeit, den keine Antwort mehr erreichen konnte (Anlegen von Experten, ihre Vorlagen und die Engine), wurde in v0.1.63 entfernt.

Aufgabe anlegenSitzung, Arbeitsbereich und Rechte zuordnen
Eingabe vorbereitenVerlauf, Gedächtnis, Material und Werkzeuge
Modell entscheidetWerkzeug anfordern oder antworten
Aktion ausführenPrüfen, freigeben, protokollieren, Ergebnis zurückgeben
Lieferung prüfenVereinbarung, Belege und Artefakte abgleichen

Quellcode: Nachrichteneingang und Kontextaufbau; Vertrauenswürdiger Aufgabenkontext; Einheitliche Werkzeugschleife.

Ablauf einer Aufgabe mit Freigabe 1. Anfrage empfangenText / Anhänge / Transkription 2. Kontext zusammenstellenVerlauf, Gedächtnisrechte, Dateien, Skills 3. Modell entscheidetAntwort oder Werkzeugaufruf 4. Aufruf validierenSchema / Verfügbarkeit / VollständigkeitAbgeschnittene Aufrufe stoppen 5. RichtlinieErlauben / Fragen / Sperren Freigabe Konkrete Aktion anzeigenZiel, Risiko, Grund, Ja oder NeinEigenes Zeitlimit für Freigaben Nach Freigabe Direkt erlaubt 6. Werkzeug ausführenDateien / Befehle / Browser / Mac-AppsWirkung nur im erlaubten Rahmen 7. Ergebnis zurückgebenExitcode / Ausgabe / Artefakt / VerlaufFehlergrund + Alternativen Ergebnis ans Modell Direkte Antwort Budgetabschluss / Stopp 8. Antwort und Artefakte prüfen, wahrheitsgemäß liefernAbnahme anhand realer Werkzeugergebnisse, Dateiverweise und AufgabenvereinbarungErledigtes, offene Teile und Fortsetzung nennen; Fehler nicht als Erfolg ausweisen Verboten Abgelehnt / Zeitlimit Aktion nicht ausgeführtGrund für Sperre oder Abbruch meldenAlternative suchen oder Lücke nennen Abschluss Danach: Vorlieben und Erfahrungen mit Erlaubnis und Quelle erfassen; ggf. als Prüfvorschlag

Abbildung 2 · Geschlossener Ausführungsablauf. Als Text: Eingabe → Kontext → Modell → Parameterprüfung → Freigabe → Werkzeugausführung → Ergebnis zurück ans Modell; danach beginnt die nächste Runde. Das Modell kann auch direkt antworten. Antwort und Artefakte müssen vor der Lieferung geprüft werden; offene Arbeit ist wahrheitsgemäß zu benennen. Verbote und Ablehnungen lassen sich nicht durch den Willen des Modells aufheben.

Das Modell schlägt den nächsten Schritt vor, die Laufzeit prüft seine Voraussetzungen

Das Modell sieht Werkzeuge als Namen, Verwendungszweck und Parameterschema. Gibt es strukturierte tool_calls zurück, parst die Laufzeit zunächst JSON und validiert die Parameter. Danach prüft sie erneut, ob das Werkzeug noch verfügbar ist, das aktuelle Budget den Aufruf erlaubt und eine Nutzerfreigabe erforderlich ist. Das Register ordnet integrierten Werkzeugen ihre Ausführungsfunktionen zu; Werkzeuge mit dem Präfix mcp_ werden an MCP weitergeleitet, und dem Modell werden nur MCP-Server angeboten, die gerade bereit sind. Ein Eintrag im Register bedeutet nicht, dass das Werkzeug in jeder Gesprächsrunde angeboten wird: Seit v0.1.63 enthält eine Anfrage nur die regelmäßig genutzten Werkzeuge plus zwei Finder, find_tools und use_tool; selten genutzte Werkzeuge und MCP-Werkzeuge werden bei Bedarf gefunden und aufgerufen, mit denselben Freigaben und Aufzeichnungen wie bei einem direkten Aufruf. Die Liste, die eine Unterhaltung bei Bedarf genutzt hat, wächst auf höchstens 12 und wird nur im Arbeitsspeicher gehalten.

Eine entscheidende Grenze ist die Vollständigkeit der Antwort. Schneidet der Anbieter einen Werkzeugaufruf wegen eines Ausgabelimits ab, wird die gesamte betreffende Gruppe von Aufrufen nicht ausgeführt – auch wenn ein einzelner Aufruf vollständig erscheint. Modelltext, der Werkzeugaufrufe begleitet, gilt nur als Zwischenbericht und darf nicht vorzeitig als Endergebnis dienen. Vor und nach der Ausführung werden Checkpoints gespeichert; tatsächliche Werkzeugergebnisse gehen mit der zugehörigen Aufrufidentität an das Modell zurück. Inhalte aus Webseiten, Dateien und externen Werkzeugen bleiben dabei Daten.

„Ich habe die Datei gespeichert“ muss sich deshalb einem tatsächlichen Speicherergebnis und einem Artefaktverweis zuordnen lassen. Ein sprachliches Versprechen wird nicht automatisch zu einer ausgeführten Aktion. Auch Werkzeugfehler fließen in die nächste Eingabe ein. Die Schleife kann ihre Vorgehensweise ändern, muss dabei aber dieselben Berechtigungs- und Budgetgrenzen einhalten.

Bei „Lies das angegebene Verzeichnis und erstelle eine Übersicht“ wird etwa der Verzeichnispfad zunächst als Eingabe in den Aufgabenumfang aufgenommen. Das Modell fordert das Lesen an; das Werkzeug liefert reale Dateiinformationen. Erst darauf lässt sich die Übersicht stützen. Sollen Dateien anschließend verschoben oder gelöscht werden, muss die Laufzeit die Freigabe für die jeweilige Operation beurteilen. Die Lieferung sollte auf eine tatsächlich erzeugte Datei verweisen und die Prüfergebnisse nennen. Dateiliste, Aktionsbeleg und Artefaktverweis erfüllen in diesem Ablauf jeweils unterschiedliche Nachweisfunktionen.

Seit v0.1.63 erscheint die Antwort so, wie sie geschrieben wird (auf den unten aufgeführten Endpunkten); Prüfungen, die eine Antwort früher zurückgehalten haben, ergänzen bei Bedarf danach eine Korrektur. Bricht ein Stream auf halbem Weg ab, behält Arslan, was Sie gesehen haben, und sagt, dass die Antwort unterbrochen wurde, statt von vorn zu beginnen. Verlangt das Modell mehrere Lesevorgänge hintereinander (Webseiten, Suchen, MCP-Werkzeuge, die ihr Server als nur lesend kennzeichnet), laufen bis zu vier gleichzeitig; jedes Ergebnis bleibt dem Aufruf zugeordnet, der es angefordert hat, und jeder Aufruf, der kein Lesevorgang ist, läuft allein an seiner Stelle.

Quellcode: gemeinsam laufende Lesevorgänge; Streaming und Werkzeugschleife.

Einheitlicher Einstieg bei unterschiedlichen Modellprotokollen

LLMAdapter bietet eine gemeinsame Aufrufschnittstelle. Der jeweilige Provider verarbeitet Anfrageformat, Streaming-Ereignisse, Werkzeugaufrufe und usage. Provider-Implementierungen senden HTTP-Anfragen mit httpx; ein OpenAI-kompatibler Endpunkt kann auch auf einen lokalen Modelldienst verweisen. Bei Auswahl eines Cloud-Modells wird der zugehörige Anfragekontext an den vom Nutzer konfigurierten Anbieter gesendet.

ProtokollpfadTatsächliches Verhalten in v0.1.63
OpenAI-kompatibelUnterstützt Native Trajectory: assistant-Werkzeugaufrufe, Aufruf-IDs und tool-Ergebnisse werden als nativer Nachrichtenverlauf dargestellt. Bestimmte Protokollablehnungen können einen begrenzten Fallback auslösen. Die Antwort wird auf DeepSeek-, OpenAI- und OpenRouter-Endpunkten gestreamt, während sie geschrieben wird, weil dort gestreamte Werkzeugaufrufe bekanntermaßen vollständig sind; andere Endpunkte antworten als Ganzes.
AnthropicNutzt seit v0.1.63 ebenfalls die Native Trajectory. Auf Anthropics eigenem Host (oder einem aufgeführten First-Party-Proxy) wird die Antwort gestreamt, während sie geschrieben wird, und die API wird gebeten, alte Werkzeugergebnisse selbst zu löschen; ein anderer Endpunkt mit Anthropic-Protokoll antwortet als Ganzes.
GeminiBehält eigene Werkzeugaufrufe und Verlaufsdarstellung bei und erhält die erforderlichen anbieterspezifischen Fortsetzungsinformationen. Seit v0.1.63 nutzt es ebenfalls die Native Trajectory und streamt nur auf Googles eigenem Host.

Trajectory bezeichnet den strukturierten Ablaufverlauf der Schleife. Er hält fest, welcher Aufruf welches Ergebnis erzeugt hat. So bleiben interne Aufzeichnungen einheitlich, während jeder Anbieter sein eigenes Protokoll verwenden kann. Werkzeuginteraktionen müssen dadurch nicht zu schwer überprüfbarem Fließtext verdichtet werden. Lehnt ein Endpunkt den nativen Verlauf ab, wechselt die Runde für den Rest dieser Runde zur älteren Darstellung.

Auf dieser Ebene sitzen zwei Reparaturen. Seit 0.1.61 sendet Arslan die Anfrage erneut ohne die Einstellung, wenn ein Anbieter eine optionale Anfrageeinstellung ablehnt (zum Beispiel temperature bei neueren Claude-Modellen), oder unter dem Namen, den der Fehler verlangt, und merkt sich das für das Modell bis zum Neustart. Seit 0.1.62 werden MCP-Werkzeugbeschreibungen in eine Form umgeformt, die Anthropic, OpenAI-kompatible Anbieter und Gemini akzeptieren; lehnt ein Anbieter ein Werkzeug trotzdem ab, wird dieses Werkzeug für den Rest der Antwort weggelassen (bei einer zweiten Ablehnung oder einer Ablehnung, die kein Werkzeug nennt, entfallen für diese Antwort alle MCP-Werkzeuge). Integrierte Werkzeuge werden unverändert gesendet.

Quellcode: Modellfassade; Datenstruktur des Ablaufverlaufs; Fähigkeitsvertrag der Provider; erneutes Senden ohne abgelehnte Einstellung; Umformung der MCP-Werkzeugbeschreibungen; Werkzeuge bei Bedarf; Änderungen an der Ausführungsebene.

Temporäre Worker und Hintergrundaufgaben erfüllen unterschiedliche Aufgaben

delegate_work verteilt voneinander unabhängige Recherchen an temporäre Worker: höchstens 4 Aufträge pro Gruppe, davon maximal 2 gleichzeitig. Derzeit dürfen Worker ausschließlich web_search und web_extract verwenden. Sie können weder Dateien noch persönliche Erinnerungen schreiben und nicht rekursiv weiterdelegieren. Der Hauptagent prüft und integriert das zurückgelieferte Material. So bleibt parallele Recherche möglich, während die Ausführungsverantwortung bei der ursprünglichen Aufgabe liegt.

Ein Hintergrund-Job dient dagegen einer längeren vollständigen Aufgabe. Er besitzt eigenen Kontext und eigenes Budget, verwendet dieselbe Werkzeugschleife sowie dieselben Abläufe zur Artefaktprüfung und -reparatur. Seine Fortschrittsmeldungen erscheinen als Aufgabenkarte im Gespräch; standardmäßig laufen höchstens 3 Jobs gleichzeitig. Netzwerkverbindung, Chatfenster und Hintergrundausführung haben eigene Lebenszyklen. Ein Gesprächswechsel bricht keine Aufgabe ab. Bei Ruhezustand oder Prozessende übernimmt jedoch keine Cloud die Hintergrundarbeit.

Vor der harten Grenze beginnt der Abschluss

Das Budget erfasst Modellanfragen, Werkzeugaufrufe, kumulierte Token, Ausführungszeit und seit v0.1.63 auch Dollar. Eine Chat-Antwort und eine Hintergrundaufgabe erhalten nun dieselben Grenzen: die in den Einstellungen gewählte Stufe, standardmäßig standard. An der weichen Grenze (Soft Limit) soll die Schleife die Recherche nicht weiter ausweiten, sondern die vorhandenen Ergebnisse aufbereiten. Die harte Grenze (Hard Limit) verhindert unkontrollierten weiteren Verbrauch. Verschachtelte Ausführungen und Wiederholungen zählen ebenfalls zum Aufgabenbudget. Zusätzlich werden wiederholte Aufrufe ohne Fortschritt erkannt, damit dieselbe fehlgeschlagene Vorgehensweise nicht endlos erneut versucht wird.

Stufe (Chat-Antwort und Hintergrundaufgabe)ModellanfragenWerkzeugaufrufeKumulierte TokenAusführungszeit
Lean6040300.000900 Sekunden
Standard (Standardwert)12080600.0001.800 Sekunden
Ample2401601.200.0003.600 Sekunden

Die Tabelle zeigt die standardmäßigen Soft Limits; die vier Hard Limits betragen jeweils das 1.5-Fache. Grenzen für einzelne Ausgaben und Artefaktgrößen werden separat berechnet. Tokenverbrauch wird erst nach Eingang einer Antwort verbucht. Die Schwellen sind daher Steuerungsgrenzen, keine exakten Kostenobergrenzen oder Zusagen zur Fertigstellungszeit. Wartezeit auf eine Freigabekarte zählt nicht als Ausführungszeit. Zusätzlich zu den Stufen gibt es ein Dollar-Limit pro Aufgabe, standardmäßig eingeschaltet bei 2 $ (Einstellungen › Hintergrund › Dollar-Limit pro Aufgabe): Bei zwei Dritteln davon beginnt der Lauf mit dem Abschluss, beim Limit hält er an. Es zählen nur Antworten von Modellen mit bekanntem Preis; ein lokales Modell oder eines, das in der Preistabelle fehlt, trägt nichts bei, und die Token-Limits gelten weiterhin. Die Prüfung erfolgt vor der nächsten Anfrage, ein Lauf kann das Limit also um eine Antwort überschreiten. Fortgesetzte Aufgaben übernehmen bereits verbrauchte Zähler, Ausführungszeit und Dollar. Wartezeit während eines Stillstands zählt nicht als erneute Ausführungszeit und setzt das Budget nicht zurück.

Lange Arbeit bleibt im Chat: Arslan schiebt sie nicht mehr von selbst in den Hintergrund; eine Hintergrundaufgabe ist dieselbe Arbeit an anderer Stelle, wenn Sie oder das Modell sie wählen. Nach zehn Minuten teilt eine Antwort mit, dass sie noch arbeitet. Ein Terminalbefehl läuft so lange, wie er angefordert hat (standardmäßig 2 Minuten, höchstens 10), nie über die Zeit hinaus, die der Antwort bleibt; stoppt ihn ein Zeitlimit, sieht Arslan trotzdem die bisherige Ausgabe und wird darüber informiert, und ein Befehl, der seine Ausgabe überflutet, behält Anfang und Ende. Jeder neue Befehl zeigt standardmäßig zuerst eine Karte (v0.1.63), und eine geplante Aufgabe führt in dieser Version keine Befehle aus: Dieser Schritt wird übersprungen und im Posteingang aufgeführt. Eine unbeantwortete Karte läuft nach 30 Minuten ab; Arslan wird mitgeteilt, dass das keine Ablehnung ist.

Quellcode: Budgetregeln; Zeitlimit und Ausgabegrenze von Befehlen; Freigabekarten und ihr Ablauf; Temporäre Worker; Hintergrundaufgaben.

Aufgabe, Versuch und Abnahme werden getrennt erfasst

TaskSpec speichert die Aufgabenvereinbarung mit Anweisung, Eingaben, Umfang, Abnahmekriterien und Budget sowie einer Revisionsnummer. Ein task kann mehrere attempts durchlaufen; ein attempt ist ein konkreter Ausführungsversuch. Eine geänderte Vereinbarung, verspätete Ergebnisse nach einem Abbruch und neue Versuche nach einer Wiederaufnahme dürfen ihre Zustände nicht gegenseitig überschreiben. Persistente Aktualisierungen prüfen sowohl die attempt-Identität als auch die row version, damit veraltete Ausführungen keine neueren Zustände überschreiben.

StatusBedeutung
queued / runningWartet auf den Start / wird ausgeführt.
waiting_userBenötigt eine Nutzeraktion oder ausdrückliche Fortsetzung; der Status besagt nicht, dass das Ergebnis fertig ist.
verifyingBelege und Artefakte werden anhand der Aufgabenvereinbarung geprüft.
succeeded / failed / cancelledAbnahme bestanden / Ausführung fehlgeschlagen / abgebrochen.

Abnahmeergebnisse unterscheiden unter anderem bestanden, fehlgeschlagen, nicht ausgeführt und nicht anwendbar. Eine Bewertung benötigt passende Belege. Vereinbarte Prüfungen dürfen nicht fehlen, und die Bewertung darf nicht ausschließlich auf einer Selbsteinschätzung des Modells beruhen. Dateiexistenz, Aufgabenbezug und Prüfsummen lassen sich deterministisch kontrollieren; für subjektive Qualität kann ergänzend eine Modell- oder menschliche Bewertung sinnvoll sein. Solange Aktionen noch vorbereitet werden, laufen oder eine unbekannte Wirkung haben, verhindert auch die Repository-Schicht einen unmittelbaren Wechsel auf erfolgreich.

Deshalb müssen Aufgabenrevisionen ihre Identität behalten: Ein für frühere Anforderungen erzeugtes Ergebnis belegt nicht automatisch, dass neue Anforderungen erfüllt sind. Eine Abnahme muss sich auf dieselbe Revision der Vereinbarung, denselben gültigen Versuch und zu dieser Aufgabe gehörende Belege beziehen. Wesentliche Prüfungen dürfen nicht beliebig als „nicht anwendbar“ markiert werden; diesen Spielraum gibt es nur für nicht kritische Kriterien gemäß den Vertragsregeln. Fehlen Belege, bleibt das Ergebnis ungeprüft oder unvollständig, bis ergänzende Prüfungen vorliegen.

Wiederaufnahme auf Grundlage vorhandener Belege

Checkpoints speichern Fortschritt, verbrauchtes Budget sowie Verweise auf Belege und Artefakte. Laufzeitereignisse stehen der Oberfläche nach einer Wiederverbindung zur Verfügung. Die prozessinterne Run Registry hält die tatsächlichen asynchronen Aufgaben und Abbruchzugänge und verteilt Ereignisse an verbundene Fenster. Beim erneuten Verbinden werden Snapshot und Anbindung an den Ereignisstrom synchron vorgenommen, um verlorene oder doppelte Ereignisse am Übergang zu vermeiden.

Nach einem Prozessneustart werden nicht beendete Ausführungen als unterbrochen erkannt; Nutzer müssen sie ausdrücklich fortsetzen. Wurde eine externe Aktion bereits abgeschickt, aber kein Beleg empfangen, gilt ihre Wirkung als unbekannt. Sie muss zunächst überprüft werden, statt sie sofort erneut abzuschicken. Beim Wiederherstellen einer Sicherung werden zudem alte Aktionsfreigaben widerrufen und betroffene Aktionen als ungewiss markiert. Checkpoints beantworten, wo sicher weitergearbeitet werden kann; bereits eingetretene externe Wirkungen machen sie nicht rückgängig.

Eine andere Art von Checkpoint dient „Diesen Zug rückgängig machen“ (v0.1.63). Wenn ein Zug zum ersten Mal eine Datei schreibt oder einen Befehl ausführt, sichert Arslan den Arbeitsordner einmalig so, wie er war. Rückgängig macht stellt die Dateien wieder her und entfernt diesen Zug und jeden späteren aus der Unterhaltung, zusammen mit den Fakten, die sie vermittelt haben; Zusammenfassungen bleiben erhalten, und Nachrichten-IDs werden nie wiederverwendet. Der Ordner wird nur gesichert, wenn er höchstens 20.000 Dateien und 5 GB umfasst, genug freier Speicher vorhanden ist und er sich auf demselben Datenträger wie Arslans Daten befindet. Wiederherstellbare Ordner (Python-Umgebungen, node_modules, Build-Ausgaben, __pycache__) und Dateien in der Form von Geheimnissen werden ausgelassen und nie zurückgespielt; das Rückgängig-Feld nennt, was nicht gesichert wurde. Nach dem Zug geänderte Dateien bleiben erhalten und werden aufgelistet, und Rückgängig wird abgelehnt, solange ein Lauf den Ordner noch verändert.

Auch das Stoppen hat zwei Ebenen: Die Run Registry bricht wartende oder laufende asynchrone Arbeit ab. Der persistente Zustand verhindert, dass verspätete Ergebnisse weiter übernommen werden. Hat ein externes System eine Anfrage bereits akzeptiert, beweist der Abbruch des lokalen Wartens nicht, dass sie dort unausgeführt blieb. Die Aktionstabelle unterscheidet deshalb vorbereitet, gestartet, bestätigt, fehlgeschlagen, Wirkung unbekannt und abgebrochen. Die Wiederaufnahme klärt zunächst diese Zustände und entscheidet dann, welche Schritte erneut versucht werden können.

Quellcode: Aufgaben- und Abnahmeverträge; Persistente Zustände und Nebenläufigkeitsprüfung; Artefaktprüfung; Ausführung und ausdrückliche Fortsetzung; Trennung von Verbindung und Ausführung; Grenzen der Wiederherstellung aus Backups; Ordner-Checkpoints für Rückgängig; Rückgängigmachen eines Zuges.

Eine Runde, die das Fenster auf dem Laufenden hält

Seit 0.1.59 sendet der Server dem Fenster während einer laufenden Runde mindestens alle 15 Sekunden ein „working“-Ereignis, auch wenn das Modell minutenlang an einer einzigen langen Datei schreibt; „Interrupted“ bedeutet daher jetzt, dass die Verbindung selbst verloren gegangen ist. Seit 0.1.63 erreicht eine Nachricht, die gesendet wird, während Arslan noch antwortet, diese Antwort bei ihrem nächsten Schritt, statt auf deren Ende zu warten: Die noch nicht begonnenen Schritte werden übersprungen, die Antwort liest die Nachricht zuerst, und das Fenster sagt, dass sie hinzugefügt wurde. Eine Antwort, die bereits ihre Schlussantwort schreibt, hat keinen Schritt mehr übrig, die Nachricht läuft also direkt danach. Wartet eine Freigabekarte, beantwortet eine Nachricht sie mit Nein, mit der Nachricht als Anmerkung, und läuft als Nächstes. Die Antwortsprache folgt der jüngsten Nachricht des Nutzers: Pfade, URLs und Code werden bei ihrer Bestimmung ignoriert, und eine Nachricht ohne Wörter folgt der Sprache der Oberfläche. Eine Freigabe, die angefragt wird, während die Verbindung des Fensters geschlossen ist, lässt die Runde nicht mehr scheitern; die Karte wartet im Posteingang, in der Island oder im wieder verbundenen Fenster.

Quellcode: working-Ereignisse, Warteschlange und Karten nach einer Wiederverbindung; zu einer laufenden Antwort hinzugefügte Nachricht; Antwortsprache.

Projekte: ein Board, Etappen und Prüfpunkte, die Belege brauchen

Seit 0.1.56 hat ein Projekt einen Plan aus Etappen, jede mit einer klaren Bedingung und einigen Prüfpunkten. Die Wahl eines Typs (Spiel, App, Website, Recherche, Text, Video, Skill, Reise, Job oder Sonstiges) entwirft die Etappen aus einer Vorlage, ohne ein Modell aufzurufen. „Let Arslan refine“ passt sie mit einem einzigen Aufruf des vom Nutzer eingerichteten Modells an das Ziel an; gespeichert wird nichts, bevor der Nutzer das Projekt anlegt. Die Spalten des Boards – Idea, Shaping, Doing, Done – ergeben sich aus der aktuellen Etappe und werden nie per Ziehen verschoben; Done und Dropped setzt nur der Nutzer.

Arslan bewegt einen Plan nur anhand von Belegen, die es benennen kann, und nur für die aktuelle Etappe: Ein Prüfpunkt, der Dateien nennt, wird abgehakt, sobald diese im Projektordner erscheinen; nach einer Nachricht des Nutzers fragt ein Bewertungsmodell, ob sie besagt, dass etwas erledigt ist; ein Hintergrundjob, der aus der Übergabe des Projekts gestartet wurde, hakt seinen Prüfpunkt ab, wenn er als erledigt endet. Kleine Häkchen lassen sich rückgängig machen; der Abschluss einer Etappe ist ein Vorschlag auf der Karte, nie eine Benachrichtigung oder ein Eintrag im Posteingang. Erst nach zehn richtigen Einschätzungen in Folge fragt Arslan einmal, ob es Etappen selbst weiterschalten darf. Die gelernten Planregeln, das Arbeitstempo des Nutzers und der Hinweis „stockt“ bleiben lokal und erreichen ein Modell nur innerhalb einer Entwurfsanfrage, die der Nutzer selbst gestartet hat.

Quellcode: Etappen, Board und Vorschläge; Dateien, Aussagen des Nutzers, Ausführungen; Etappenvorlagen; Planregeln, Tempo und Stocken.

07 / Daten und GedächtnisNützlichen Kontext bewahren und Datengrenzen klar halten

Arslan speichert seine wesentlichen Zustände lokal in SQLite. Für Gespräche, Ausführungsverläufe, Aufgaben, persönliche Erinnerungen, Modellkonfiguration und Verbrauch gibt es eigene Datenmodelle. Ergebnisdateien werden auf den Datenträger geschrieben; den vollständigen Text sehr langer Werkzeugausgaben legt Arslan separat im Datenordner der App ab (sieben Tage lang aufbewahrt), und das Modell liest ihn abschnittsweise über den im Ergebnis angegebenen Pfad. Ein geschlossenes Fenster löscht damit keinen Aufgabenverlauf. Zugleich lassen sich getrennt verwalten, „was damals gesagt wurde“, „was tatsächlich getan wurde“ und „was künftig erinnert werden darf“.

Der Datenzugriff erfolgt asynchron über SQLAlchemy und aiosqlite. Verbindungen aktivieren WAL, Fremdschlüsselprüfung, eine Wartezeit von 5 Sekunden bei belegter Datenbank sowie synchronous=NORMAL. Diese Entscheidungen passen zu einer lokalen Einzelbenutzeranwendung: Sie verringern Bereitstellungsabhängigkeiten und verbessern gleichzeitiges Lesen und Schreiben. Eine kooperative Prozesssperre im Datenverzeichnis verhindert außerdem, dass Instanzen, die dasselbe Protokoll beachten, gleichzeitig dieselben Daten verwenden.

Entstehung, Freigabe und Abruf von Erinnerungen QuellenAussagen / Korrekturen / ToolverlaufWebseiten und Dateien: externe Inhalte Umfang und Vertrauen prüfenTemporär? Sensibel? Extern beeinflusst?Vorliebe / Erfahrung / Rechnergrenze Aktiv oder zur PrüfungErlaubte gewöhnliche Inhalte sofort aktivSensibel / extern meist prüfpflichtig Speichern und verwaltenInhalt / Version / Quelle / NutzungsregelBrain: ansehen, widerrufen, löschen Vor Wiederverwendung filternPerson / Projekt + Cloud-ErlaubnisRelevanz, Obergrenze, aktuelle Gültigkeit In den Kontext aufnehmenAbout you / Mac notes / lessonsNutzung und Ergebnis erfassen Erfahrung verbessert Methoden, erweitert aber keine Berechtigungen.Löschen betrifft auch alte Revisionen, Quellen, Zusammenfassungen und Löschregister, damit gelöschte Inhalte nicht zurückkehren.

Abbildung 3 · Gedächtnisablauf. Als Text: Quelle → Bewertung → Aktivierung / Vorschlag → Speicherung → Filter nach Umfang und Berechtigung → Abruf → Nutzungsprotokoll. Die Erinnerung „EventKit verwenden“ erteilt keine Berechtigung für die App Erinnerungen.

Datenobjekte sind nach Zuständigkeit gegliedert

DatengruppeWesentliche ObjekteBeantwortete Frage
Gespräche und AusführungenArslanMessage, ArslanSummary, Run, RunStep, UsageLedgerWas hat der Nutzer gesagt, was wurde aufgerufen und wie hoch war der Verbrauch?
Persistente Aufgabencompanion_tasks, task_revisions, task_attempts, task_checkpoints, task_events, task_actionsWelche Vereinbarungsrevision und welcher Versuch gelten, welche Aktionen und Belege liegen vor?
Persönliches Gedächtnismemory_entries, memory_revisions, memory_sourcesWelche Information wird gespeichert, welche Fassung ist aktuell und woher stammt sie?
Nutzungs- und Löschaufzeichnungencontext_receipts, memory_deletions, memory_suppressionsWelche Erinnerungsrevision gelangte in einen Kontext, und welche Löschungen müssen weiter gelten?
Berechtigungen und Freigabenpermission_rules, permission_grants, approval_eventsWelche dauerhaften Antworten („Immer“) und welche Antworten pro Aufgabe oder pro Gespräch gibt es, und jede Entscheidung, die eine Grenze überschritten hat: wer sie getroffen hat und wie lange die Karte gewartet hat?
Material und ErfahrungenKnowledgeChunk, Lesson, JudgmentWelche durchsuchbaren Unterlagen, wiederverwendbaren Erfahrungen und Ergebnisse kleiner Bewertungen gibt es?

Die Aufgabentabelle speichert den aktuellen Zustand, die Revisionstabelle die Aufgabenvereinbarung, die attempt-Tabelle Ausführungsversuche, die event-Tabelle geordnete Ereignisse und die action-Tabelle tatsächliche Aktionen samt Wirkungsstatus. Zusammen tragen sie Prüfung und Wiederaufnahme. Persönliche Erinnerungen trennen stabile Identität, Inhaltsrevisionen und Herkunft, um Bearbeitung, Nachverfolgung und Löschung zu ermöglichen. Nicht der gesamte Chat wird unmittelbar als dauerhaftes Gedächtnis übernommen.

Quellcode: SQLite-Verbindung; Modelle für Ausführungen, Material und Konfiguration; Aufgabenmodelle; Modelle für persönlichen Kontext und Gedächtnis.

Arbeitskontext: Eingaben begrenzen und Originalverlauf erhalten

Modelle können pro Aufruf nur begrenzt Inhalte aufnehmen. Arslan bildet den Arbeitskontext deshalb aus einer begrenzten fortgeschriebenen Zusammenfassung und jüngsten Nachrichten. Seit v0.1.63 richtet sich die Größe dieses Verlaufsfensters nach dem Modell der Runde: geschätzt 40 % seines Kontextfensters, nie unter 3.000 und nie über 24.000 Token (bei einem unbekannten Modell werden 32.000 angenommen, bei einem lokalen Modell 8.192); auch die Zusammenfassung selbst ist längenbegrenzt. Das ist das Budget für die Zusammenstellung des Verlaufs und bedeutet nicht, dass die gesamte Modellanfrage nur 3.000 Token umfasst: Systemanweisungen, Werkzeugschemas, Unterlagen und Ergebnisse belegen zusätzlichen Platz.

Wächst das Gespräch, bleiben die jüngsten vier Nutzerrunden im Wortlaut erhalten (solange sie in die Hälfte des Budgets passen), und die Werkzeugzusammenfassungen älterer Runden werden zuerst ausgeblendet, was nichts kostet; sobald der Verlauf drei Viertel seines Budgets überschreitet, werden ältere Nachrichten in die Zusammenfassung gefaltet, die die Abschnitte Ziel, Fortschritt, Entscheidungen, Berührte Dateien und Nächste Schritte beibehält. Was sich von Runde zu Runde ändert (Fakten, Zusammenfassung, Material, die Antwortsprache), steht in einem Referenzblock am Anfang der Anfrage der Runde, nicht im Systemprompt, und wird nie als Wortlaut des Nutzers gespeichert. Die Verdichtung bestimmt, welche Inhalte beim nächsten Mal zusammengestellt werden; sie löscht nicht die vollständige Sitzung aus der Datenbank. Auch bei einem Fehler der Verdichtung bleiben die Originalaufzeichnungen erhalten. Für lange Werkzeugausgaben gibt es einen separaten Speicherpfad: Das Modell erhält Auszüge vom Anfang und Ende sowie den Dateipfad und kann bei Bedarf abschnittsweise nachlesen. Die vollständige Ausgabe wird gemäß der Aufbewahrungsregel später bereinigt.

Diese Aufteilung priorisiert für das Modell die aktuell benötigten Informationen und erhält zugleich Originalbelege für spätere Prüfungen. Eine Zusammenfassung ist nur eine verdichtete Darstellung vorhandener Inhalte und ersetzt keinen tatsächlichen Beleg einer externen Aktion.

Persönliches Gedächtnis: Erst die Nutzungserlaubnis, dann die Relevanz

Ein Erinnerungseintrag enthält Typ, Geltungsbereich, Sensibilitätsstufe, Nutzungsrichtlinie, Status, Konfidenzinformationen und Version. Der Geltungsbereich kann global sein oder ein Projekt betreffen (daneben gibt es interne Bereiche wie Domäne und Experte); zudem gehört jeder Eintrag einem Eigentümer. Nutzungsrichtlinien wie local_only bestimmen zusätzlich, ob Inhalte in Anfragen an Cloud-Modelle gelangen dürfen. Der vertrauenswürdige Kontext jeder Runde lädt die Sitzungseinstellungen aus der Datenbank. Gewöhnlicher Nutzertext, Webseiten und Modellausgaben können diese Rechte nicht selbst umschreiben.

Sitzungseinstellungen lesenProjekt, temporäre Sitzung, Gedächtniserlaubnis
Grenzen filternUmfang, Status, Sensibilität, Cloud-Regeln
Inhalte auswählenGrundlegende Erinnerungen und Relevanzrangfolge
Begrenzt einfügenKontrollierte Inhalte in den aktuellen Kontext
Nutzung belegenEintrags-ID, Revision und Verwendungsgrund

„Über dich“ und „Mac-Notizen“ werden in begrenztem Umfang grundsätzlich eingebunden; weitere Inhalte nach Relevanz ausgewählt. Seit v0.1.52 kann die standardmäßig aktivierte Einstellung „Informationen über mich merken und im Gespräch verwenden“ die Nutzung gewöhnlicher cloud_allowed-Einträge im konfigurierten Cloud-Modell erlauben. Sensible Inhalte benötigen zusätzliche Erlaubnis. local_only-Inhalte werden durch den allgemeinen Schalter nicht für die Cloud freigegeben.

ContextReceipt protokolliert verwendete Einträge und Revisionen, Verwendungsgrund und geschätzte Zählwerte, ohne den Erinnerungstext zu kopieren. Nutzer können damit die Grundlage einer Kontextauswahl nachvollziehen, ohne dass das System eine weitere Kopie sensibler Inhalte anlegt.

Eine Bearbeitung erzeugt eine neue Revision und aktualisiert den Verweis des Eintrags auf die aktuelle Fassung. Quellenaufzeichnungen erklären weiterhin, wie diese Fassung entstanden ist. Pausiert, abgelaufen, ersetzt oder gelöscht sind weitere Zustände, die den späteren Kontextzugang beeinflussen. Versionierung macht Änderungen nachvollziehbar; der Löschprozess entfernt jedoch zu löschende Texte. Es handelt sich deshalb nicht um ein Ereignisarchiv, aus dem historische Inhalte grundsätzlich nie entfernt werden können.

Quellcode: Verlauf und Zusammenfassung; Lange Werkzeugausgaben; Verlaufsgröße nach Modellfenster; Referenzblock pro Runde; Sitzungsberechtigungen; Umfangs- und Datenschutzfilter, Nutzungsbelege.

Materialsuche: Stichwörter und Vektoren kombinieren

Das Suchmodul für Wissensmaterial unterstützt Volltextsuche mit SQLite FTS5 und Vektorsuche über Kosinusähnlichkeit. Die erste findet Übereinstimmungen im Wortlaut, die zweite sucht mittels Embeddings semantisch verwandte Ausschnitte. Sind beide verfügbar, führt RRF ihre Ranglisten zusammen. RRF vergleicht Rangpositionen und vermischt nicht direkt Rohwerte unterschiedlicher Skalen. Ohne konfiguriertes Embedding oder bei fehlenden Vektoren bleibt die Volltextsuche nutzbar.

Gefundene Ausschnitte gelangen mit Quellenangaben in den Modellkontext; das Modell erstellt daraus unter Berücksichtigung der aktuellen Frage eine Antwort. Das ist hier mit RAG gemeint. Die Materialsuche läuft nur in Projekten mit gebundenen Materialsammlungen; bei einem Cloud-Modell muss zusätzlich die eigene Cloud-Gedächtnis-Erlaubnis des Gesprächs eingeschaltet sein (der standardmäßig aktivierte Schalter „Informationen über mich merken“ deckt Material nicht ab). Die Ergebnisse gelangen als Rückgabewert des Werkzeugs recall in den Kontext. Dazu müssen weder Gewichte des Basismodells verändert noch eine separate Vektordatenbank betrieben werden. Die Auswahl im persönlichen Gedächtnis v2 beruht überwiegend auf Berechtigungsfiltern, Volltextsuche und lokaler Relevanzlogik. Daraus lässt sich nicht ableiten, dass sämtliche Erinnerungen dieselbe Vektorpipeline durchlaufen.

Erfahrungslernen: Korrekturen in prüfbare Regeln überführen

Lesson speichert Nutzerkorrekturen, erfolgreiche Ausweichwege nach einem Fehler und Besonderheiten der Rechnerumgebung. Benötigt ein Befehl auf diesem Mac beispielsweise andere Parameter, kann daraus eine Erfahrung mit Quellenbezug für ähnliche Aufgaben entstehen. Höchstens 5 Einträge mit insgesamt ungefähr 800 Zeichen werden abgerufen. Sie stehen im dynamischen agent status und verändern nicht den stabilen Systempräfix. Abruf, Befolgung, Erfolg und Misserfolg besitzen jeweils eigene Zähler.

Die Judgment-Schicht kann eng begrenzte Einschätzungen dazu vorschlagen, ob ein Inhalt gespeichert werden sollte oder vorhandene Inhalte wiederholt beziehungsweise ihnen widerspricht. Sie erfasst dabei Wahrscheinlichkeiten und spätere Ergebnisse. Nutzerkorrekturen oder nicht von externen Inhalten beeinflusste Erfahrungen können unmittelbar aktiv werden, wenn die Einstellungen dies erlauben und die Bewertung einen Nutzen erkennt. Andere prüfpflichtige Inhalte werden als Vorschlag abgelegt. Kandidaten mit Zugangsdaten werden sofort verworfen; die Regel, dass abgeleitete sensible Informationen geprüft werden müssen, gilt für das persönliche Gedächtnis, nicht für Erfahrungen. Fehlende oder zeitlich abgebrochene Bewertungen haben Rückfallpfade.

Seit 0.1.55 gilt eine Korrektur nur dann als solche, wenn sie auf etwas antwortet, das Arslan zuvor im Gespräch getan hat: Eine erste Nachricht ist ein Auftrag, nie eine Korrektur. Widerspricht eine Korrektur dem Weg, der in derselben Runde gerade funktioniert hat, wird sie nicht sofort wirksam, sondern als Vorschlag abgelegt, der auf die Zustimmung des Nutzers wartet. Ein Fehler, den der Nutzer selbst beheben muss – etwa eine von macOS verweigerte Berechtigung –, wird nie als Grund gelernt, einen anderen Weg zu nehmen. Speichert Arslan während eines Gesprächs eine Erinnerung, teilt es das im Verlauf mit und bietet Rückgängig an.

Diese Mechanismen verändern das von der Anwendung gespeicherte und abgerufene Wissen, trainieren aber keine Modellgewichte. Auch der aktive Umfang von judgment unterscheidet sich je Einsatz: Die Bewertungspunkte für Gedächtnis, Erfahrungen und Projekte laufen nach der Antwort, und ein registrierter (Abschluss einer Runde) ist ausgeschaltet. Keine Bewertung entscheidet, ob ein Befehl ausgeführt wird: Die Schattenbewertung der Befehlskarten wurde in v0.1.63 entfernt, und nur der Freigabeablauf entscheidet.

Quellcode: Hybride Materialsuche; Erfahrungsextraktion und -abruf; Begrenzte Bewertungen und Betriebsmodi.

Löschungen müssen auch Zusammenfassungen und alte Sicherungen berücksichtigen

Beim Löschen einer Erinnerung erhöht das System die deletion epoch, entfernt die alten Revisionstexte und Quellen dieses Eintrags und leert die fortlaufenden Zusammenfassungen aller Gespräche sowie die in Ausführungsaufzeichnungen zwischengespeicherten Prompts, damit alte abgeleitete Inhalte die gelöschte Erinnerung nicht zurückbringen. Löschaufzeichnungen bewahren nur einen Inhaltsfingerabdruck zum Abgleich (ein HMAC mit lokalem Schlüssel) sowie Metadaten wie den Geltungsbereich, damit der gelöschte Text nicht erneut im Register landet. suppression-Einträge verhindern, dass dieselbe noch im Chatverlauf vorhandene Quelle die Erinnerung automatisch wieder erzeugt. Eine Erinnerung zu löschen und das ursprüngliche Gespräch zu löschen sind unterschiedliche Datenoperationen. „Diesen Zug rückgängig machen“ ist eine dritte, engere: Es löscht die Einträge, deren Quellen ausnahmslos rückgängig gemachte Runden sind (ein Eintrag, den auch etwas anderes stützt, verliert nur diese Quellen), hinterlässt keinen Texteintrag als Grabstein und behält Zusammenfassungen.

Ein eigenständiges Löschregister und ein Löschmanifest setzen Löschungen auch beim Start und bei Wiederherstellung fort. Vor dem Wiederherstellen einer alten Sicherung prüft das System die Speicheridentität. Noch vor der Aktivierung gleicht es die zwischengelagerten Daten mit den Löschinformationen ab. Das verringert das Risiko, dass alte Backups gelöschte Erinnerungen zurückbringen. Diese Zusage hängt vom Wiederherstellungsablauf und den verfügbaren Löschaufzeichnungen ab; bereits extern exportierte Kopien lassen sich damit nicht pauschal zurückholen.

Auch die übrigen Erinnerungen einer Sicherung erhalten nicht sofort alle bisherigen Nutzungsrechte zurück. Die Wiederherstellung isoliert sie zur Prüfung, verschärft Nutzungsrichtlinien, löscht zwischengespeicherten Kontext, deaktiviert alle geplanten Aufgaben, entzieht gesprächsbezogene Cloud- und Sensibilitätsfreigaben und archiviert laufende Projekte. Datenwiederherstellung und erneute Nutzungserlaubnis erfolgen getrennt, damit alte Sitzungsfreigaben in einer neuen Laufzeitumgebung nicht unbemerkt wirksam werden.

Erst die Migration, dann die Nutzung der Daten

Aktuell erfolgen Datenbankaktualisierungen über einen expliziten Migrations-Runner. Er prüft die Schemaversion, bereitet eine Sicherung vor, erstellt fehlende Tabellen und führt ausstehende Migrationen der Reihe nach aus. Danach folgen Schlüsselkompatibilität und Aktivierung von Gedächtnis v2. Unbekannte oder zu neue Schemas werden abgewiesen, damit ein älteres Programm neuere Daten nicht unkontrolliert verändert. In v0.1.63 reicht die ausdrückliche Registrierung bis 0070. Die frühere Alembic-Historie beschreibt nicht den aktuellen Laufzeitmechanismus. Seit v0.1.60 kamen 0067 (die Berechtigungstabellen), 0068 (ein Zustand pro MCP-Server und die Hinweise zu jedem Werkzeug), 0069 (Nachrichten-IDs werden nie wiederverwendet, damit das Rückgängigmachen einer Runde keine gelöschte ID erneut vergeben kann) und 0070 (ein gespeichertes „nur bei riskanten Befehlen fragen“ wird einmalig zu „vor jedem Befehl fragen“) hinzu.

Bei der Aktivierung von Gedächtnis v2 werden frühere Fakten- und Lerntabellen in Legacy-Tabellen umbenannt und durch Nur-Lese-Trigger geschützt. Kompatibilitätsansichten bilden alte Lesezugänge auf die neue Struktur ab; dabei entsteht auch der Volltextindex. Geheime Felder – Modell-API-Schlüssel, MCP-Umgebungsvariablen und OAuth-Tokens, SSH-Schlüssel und Ähnliches – werden auf Feldebene mit Fernet verschlüsselt (PBKDF2 plus ein Salt, das für jede Installation eigens erzeugt wird). Gewöhnliche Gesprächs- und Aufgabentabellen werden dadurch nicht zu einer vollständig verschlüsselten Datenbank. Persistenz, Schutz von Geheimnissen und Wiederherstellung haben jeweils konkrete Grenzen.

Quellcode: Erinnerungslöschung und Versionierung; dauerhafte Antworten und Antworten pro Aufgabe; Rückgängigmachen eines Zuges; Löschregister; Löschabgleich vor Wiederherstellung; Koordination der Backup-Wiederherstellung; Isolation wiederhergestellter Daten; Startreihenfolge des Speichers; Explizite Migrationen; Berechtigungstabellen; Aktivierung der Gedächtnisstruktur; Schutz der Schlüsselfelder.

08 / Werkzeuge, Skills und ErweiterungenFähigkeiten wiederverwenden und Ausführung begrenzen

Arslan organisiert „etwas ausführen können“ und „wissen, wie es geht“ getrennt. Werkzeuge übernehmen tatsächliche Aktionen, Skills speichern Vorgehensweisen und Referenzen, MCP bindet externe Fähigkeiten an, und Plugin-Manifeste fassen diese Ressourcen zusammen. Das Modell erhält die in der jeweiligen Runde verfügbaren Fähigkeiten. Ein Werkzeug im Quellcode-Register ist deshalb nicht automatisch aktiviert oder zur Ausführung freigegeben.

Wie die vier Begriffe zusammenspielen

BestandteilWas er bereitstelltWas er nicht ersetzt
ToolEine Aktion mit Namen, Parametervertrag und Ausführungsfunktion, etwa Suchen, Dateien lesen oder Befehle ausführenDie Werkzeugbeschreibung ersetzt weder Parametervalidierung noch Berechtigungsentscheidung oder tatsächlichen Rückgabewert
SkillEine Vorgehensweise in SKILL.md sowie optionale Skripte und ReferenzmaterialienEin Skill erhält selbst keine Systemrechte und ist kein separat trainiertes Modell
MCPEin Protokoll, um externe Werkzeuge über stdio oder HTTP zu entdecken und aufzurufenEine einheitliche Schnittstelle garantiert keinen vertrauenswürdigen Dienst; Verbindung, Sichtbarkeit und Freigabe bleiben unter Kontrolle der Anwendung
Plugin manifestarslan.plugin.json beschreibt den MCP-Start, Secret-Felder und verknüpfte SkillsInstallation und Auslesen eines Manifests starten nicht unmittelbar beliebige darin enthaltene Server

Welche Prüfungen zwischen Deklaration und Ausführung liegen

Fähigkeiten findenIntegriertes Register, konfiguriertes MCP, Skill-Index
Auswählen und anbietenSchemas nach Kontext, Konfiguration und Rechten
Anfrage auswertenWerkzeugname, JSON-Parameter und Vollständigkeit prüfen
Ausführen und zurückmeldenNach Freigabe ausführen, Ergebnisse und Fehler erfassen

Integrierte Werkzeuge werden von registrierten Ausführungsfunktionen verarbeitet; Aufrufe mit dem Präfix mcp_ gehen an den MCP-Proxy. Das Ergebnis kehrt in die einheitliche Schleife zurück. Daraufhin kann das Modell Parameter ergänzen, eine Alternative wählen oder die Aufgabe abschließen. Auch nach dem Lesen eines Skills müssen Datei-, Befehls- und App-Aktionen ihre jeweiligen Berechtigungsgrenzen passieren.

Seit 0.1.63 enthält eine Anfrage nicht mehr jedes Werkzeug. Sie enthält eine feste Menge alltäglicher Werkzeuge (Websuche und Seitenlesen, Dateien lesen, schreiben und bearbeiten, das Terminal, Planung, Hintergrundarbeit, Gedächtnis, read_skill, die Fähigkeitenliste und die Desktop-Werkzeuge von Hands) plus zwei Finder: find_tools ordnet die Werkzeuge, die diese Runde aufrufen darf, die ihr aber nicht gezeigt wurden, nach Relevanz, und use_tool ruft eines unter seinem echten Namen auf, sodass die Parameter gegen die eigenen Parameter dieses Werkzeugs geprüft werden und dieselbe Freigabe, Ablaufspur und dieselben Belege gelten wie bei einem direkten Aufruf. MCP-Werkzeuge, attach_file und die Browser-Werkzeuge werden auf diesem Weg erreicht. Ein bei Bedarf genutztes Werkzeug gehört ab der nächsten Runde zur Liste dieser Unterhaltung (höchstens 12 pro Unterhaltung, im Arbeitsspeicher gehalten, sodass das Modell nach einem Neustart erneut sucht). Text eines MCP-Servers, den find_tools zurückgibt, wird als externe Daten eingepackt, nie als Anweisung.

Verlangt das Modell mehrere Lesevorgänge hintereinander, laufen bis zu vier gleichzeitig: Websuche und Seitenlesen, read_skill, Dateilesen, Auflistungen und Ähnliches sowie MCP-Werkzeuge, deren Server sie als nur lesend kennzeichnet (eines pro Server in einer Gruppe). Jeder Aufruf durchläuft weiterhin jede Prüfung in der Reihenfolge der Antwort, und jedes Ergebnis bleibt dem Aufruf zugeordnet, der es angefordert hat; alles, was kein Lesevorgang ist, läuft allein an seiner Stelle.

Skills werden nach Bedarf gelesen: Der Index zeigt dem Modell die verfügbaren Methoden; read_skill lädt anschließend den Inhalt aus einem registrierten SkillPack oder einem erlaubten Referenzpfad. So kann die Methodensammlung wachsen, ohne den Kontext jeder Runde unbegrenzt zu vergrößern. Arslan liefert zwei eigene Skills mit, einen gestalteten HTML-Bericht und den Skill Creator. Seit 0.1.63 sind die Vorgaben aus der Expertenzeit, die voreingestellte MCP-Connector-Liste und das Werkzeug des Modells zum Vorschlagen von Connectoren entfallen (ein neuer MCP-Server wird über find_capability gefunden, siehe unten), und ein Skill, den Sie unter einem eingestellten Namen importiert haben, wird nicht mehr entfernt.

Seit 0.1.55 listet die Seite Capabilities auf, was Arslan kann, und zwar als Schalter: jeweils an, aus, einen Schritt entfernt oder hier nicht möglich, jeweils mit Begründung. Aus bedeutet, dass dem Modell die Fähigkeit gar nicht erst angeboten wird; read_skill verweigert einen ausgeschalteten Skill. Die Zeilen werden aus denselben Prüfungen gelesen, die festlegen, welche Werkzeuge eine Runde erhält. Eine Zeile kann daher nicht „an“ anzeigen, während ihre Werkzeuge fehlen. Ein Werkzeug whats_new beantwortet die Frage „Welche Version bist du, was hat sich geändert?“ anhand der mit der App ausgelieferten Release Notes, nie aus dem Gedächtnis des Modells.

Erweiterungsdienste bilden eine zusätzliche Vertrauensgrenze

Ein lokaler stdio-MCP-Dienst bedeutet in der Regel den Start eines eigenen Prozesses; HTTP-MCP kann einen entfernten Dienst ansprechen. Arslan muss Verbindung, Verfügbarkeit für den Hauptassistenten, Sichtbarkeit der Werkzeuge sowie Speicherung und Anzeige von Zugangsdaten getrennt verwalten. Die im Plugin-Manifest angegebene URL eines HTTP-MCP-Dienstes muss HTTPS verwenden. Secret-Felder deklarieren die Form der Parameter; echte Zugangsdaten werden nicht in das Manifest eingebettet. Konfigurierte Umgebungswerte werden verschlüsselt gespeichert und bei der Anzeige maskiert.

Seit 0.1.61 startet jeder MCP-Server, den Sie eingeschaltet haben, beim Öffnen von Arslan im Hintergrund, höchstens vier gleichzeitig, und ein Chat wartet nie auf einen. Jeder Server hat einen Zustand, den die Seite Capabilities und das Modell gemeinsam lesen, und dem Modell werden nur die Server angeboten, die gerade bereit sind; ein Aufruf eines anderen wird mit seinem Zustand und dem Grund beantwortet, wobei Schlüssel und Token maskiert sind. Ein erster Start erhält 120 Sekunden; ein fehlgeschlagener Server wird nach 30 Sekunden erneut versucht, danach seltener (höchstens alle 10 Minuten).

Seit 0.1.62 formt Arslan die Parameterbeschreibungen von MCP-Werkzeugen in eine Form um, die Anthropic, OpenAI-kompatible Anbieter und Gemini akzeptieren, bevor es sie sendet; integrierte Werkzeuge werden unverändert gesendet. Lehnt ein Anbieter eines trotzdem ab, wird dieses Werkzeug für den Rest der Antwort weggelassen, und die Antwort geht weiter (nennt die Ablehnung kein Werkzeug oder wird ein zweites abgelehnt, entfallen für diese Antwort alle MCP-Werkzeuge).

Seit 0.1.63 fragt ein MCP-Aufruf danach, was der Server über die Wirkung des Werkzeugs angibt: Ein Werkzeug, das der Server als nur lesend kennzeichnet, läuft ohne Karte; eines, das er als zerstörerisch kennzeichnet, fragt jedes Mal, nur dieses Mal; jedes andere fragt – dieses Mal oder für die Unterhaltung, nie „Immer“. Ein Aufruf, dessen Parameter zu lang sind, als dass eine Karte sie vollständig zeigen könnte, wird abgelehnt, nie gekürzt. Diese Kennzeichnungen sind die eigene Angabe des Servers, die Arslan nicht überprüft. Wo niemand gefragt werden kann (ein geplanter Lauf), laufen nur nur lesende Werkzeuge.

Diese Regeln verringern versehentliche Offenlegung und unbeabsichtigte Ausführung. Der tatsächliche MCP-Dienst kann jedoch weiterhin auf die Ressourcen zugreifen, die ihm zur Verfügung stehen. Herkunft der Werkzeuge, erforderliche Rechte, an entfernte Dienste gesendete Daten und Nebenwirkungen der Aktionen müssen deshalb bei Erweiterungen erklärt werden.

Wachsende Fähigkeiten: finden, fragen, installieren, prüfen, testen

Seit 0.1.57 gilt: Braucht ein Schritt etwas, das Arslan nicht kann, durchsucht find_capability gemeinsam die offizielle MCP Registry, GitHub und geprüfte Skill-Bibliotheken. propose_capability darf nur einen Kandidaten nennen, der in dieser Unterhaltung angezeigt wurde, und die Karte wird auf dem Server aus diesem Suchergebnis erstellt, nie aus den Worten des Modells: was hinzukäme, woher es stammt, seine Lizenz – gelesen aus der Lizenzdatei des Projekts selbst –, wie es ausgeführt würde, welche Ordner es verwenden darf und welchen Schlüssel es benötigt. Freigeben kann nur das Arslan-Fenster, das gefragt hat; ein Hintergrundauftrag oder eine Runde, in der niemand gefragt werden kann, legt den Fund stattdessen unter „Arslan found“ auf der Seite Capabilities ab.

Nach der Freigabe wird die Fähigkeit fest versioniert und ausgeschaltet installiert: über eine Lock-Datei mit Hashes, eine veröffentlichte Prüfsumme oder einen Commit, mit Arslans eigenem, fest versioniertem uv oder Node, ohne dass während der Installation Paketcode läuft (nur wheels, npm ohne Installationsskripte). Eine Prüfung sucht nach bekannten gefährlichen Mustern – versteckte Anweisungen in einem Skill, Code, der weiteren Code herunterlädt und ausführt, Schreibzugriffe dorthin, wo macOS Programme startet –, und ein schwerwiegender Befund entfernt die Installation wieder. Die Prüfung kann nichts als sicher beweisen; deshalb läuft der Server anschließend in seiner eigenen Sandbox (Kapitel 09). Er muss starten und mindestens ein Werkzeug auflisten, bevor er eingeschaltet wird, und die Werkzeugschleife liest seine Werkzeuge neu ein, sodass der fehlgeschlagene Schritt in derselben Antwort wiederholt werden kann. Von GitHub importierte Skills werden auf einen Commit festgelegt, mit einer Prüfsumme pro Datei, und ihr Text wird als externer Inhalt gelesen, der keine Berechtigungen erteilen kann.

Quelle: Fragen, Installieren, Prüfen, Testen, Einschalten; Fest versionierte Installation und Lizenz aus der Quelle; Prüfung auf bekannte Muster; MCP Registry, GitHub und Skill-Bibliotheken.

Dateien kommen als Dateien zurück: die Leseansicht der Arbeitsfläche

Seit 0.1.58 erscheint eine während einer Runde geschriebene Datei unter der Antwort als Karte, und Pfade in einer Antwort öffnen sich in Arslan oder im Dateibrowser. Die Leseansicht der Arbeitsfläche liest nur dort, wo auch Arslans eigene Lesewerkzeuge lesen dürfen: im Arbeitsbereich, in Desktop, Documents und Downloads, wenn das standardmäßige Lesen eingeschaltet ist, in den Ordnern aktiver Projekte und in Arslans eigenen Ausgaben. Symlinks werden zuerst aufgelöst, versteckte Dateien und Namen, die nach Zugangsdaten aussehen, werden nie aufgelistet oder gelesen, Dateibytes werden als Anhang mit nosniff gesendet, und HTML wird in einem iframe mit leerem sandbox angezeigt, sodass seine Skripte nicht ausgeführt werden können.

Seit 0.1.63 hängt attach_file eine Datei an die Antwort an, wenn Sie um eine Datei bitten (einen Screenshot, ein Diagramm, einen Export oder ein Dokument): eine Dateikarte im Fenster und die Datei selbst auf einem gekoppelten iPhone. Es braucht keine eigene Karte, weil es nur dort liest, wo auch die Leseansicht lesen darf, und es gelten dieselben Regeln: keine versteckten oder an Zugangsdaten erinnernden Namen, kein Link aus den lesbaren Ordnern hinaus. Es nimmt außerdem nie etwas aus Arslans eigenen Daten, aus Schlüsselbunden oder SSH-Schlüsseln, keine Datei über 20 MB und nicht mehr Dateien, als ein Lauf aufnehmen kann.

Quelle: attach_file; Zugelassene Leseorte und versteckte Namen; Dateibytes; HTML in der Sandbox.

Hands v2: das Bild eines Fensters, Stapel, den Vordergrund ausleihen, übernehmen

Hands liest ein Fenster weiterhin als seinen Bedienungshilfenbaum. Seit 0.1.60 kann jeder Blick zusätzlich ein JPEG genau dieses einen Fensters anhängen – nie des ganzen Bildschirms –, das im Arbeitsspeicher gehalten und nur an das Modell gesendet wird; es wird weder auf die Festplatte noch in den Trace oder in die Oberfläche geschrieben, und kann das Modell keine Bilder verarbeiten, liest stattdessen macOS Vision den Text lokal. Das lässt sich unter Einstellungen › Hands ausschalten oder für Apps, die der Nutzer auflistet, auf Text beschränken. Mehrere Schritte in einer App laufen als ein Stapel von bis zu acht Schritten, Menüpunkte werden direkt gewählt, auch wenn die App nicht im Vordergrund ist, und Apps werden im Hintergrund geöffnet. Bis 0.1.62 durfte eine Chatantwort höchstens fünf Aktionen ausführen, alle in einer App; ab 0.1.63 hat sie keine eigene Hands-Grenze mehr und handelt innerhalb der Grenzen des Laufs, wie ein Hintergrundjob. Ein geplanter Lauf kann auf dem Mac gar nicht handeln: Niemand ist da, um es freizugeben.

Manches funktioniert nur, wenn die App im Vordergrund ist, etwa ein Pop-up-Menü. Hands wartet dann auf eine Tipppause von einer Sekunde, leiht sich den Vordergrund für etwa eine Sekunde aus, während die Ränder aller Bildschirme blau leuchten, hält in dieser Zeit gedrückte Tasten zurück und spielt sie erneut ein, sobald die App des Nutzers wieder vorn ist. Liegt das Fenster der App auf einem anderen Schreibtisch (Space), wechselt Hands unter denselben Regeln dorthin und kehrt zurück, wenn die Arbeit endet, nach 15 Sekunden ohne Aktion oder bei der ersten Eingabe des Nutzers. Für längere Arbeit kann ein Hintergrundjob darum bitten, den Bildschirm für bis zu 30 Minuten zu übernehmen; jede Tastatur- oder Mauseingabe pausiert die Übernahme, bis der Nutzer fortfährt. „While I'm away“ ist standardmäßig ausgeschaltet; ist es eingeschaltet, darf eine Übernahme nach drei Minuten ohne Eingabe auch ohne Karte beginnen. Das Ausleihen lässt sich ausschalten; Hands lehnt dann stattdessen ab.

Quelle: Ein Fenster, nichts wird gespeichert; Vordergrund ausleihen; Anderer Schreibtisch; Übernahme und Eingabepause; Aktionen im Chat, Stapel und Menüs; Einstellungen › Hands.

Suche und Lesen im Web

Seit 0.1.63 nutzt web_search zuerst die Suche des Modells, auf dem diese Runde läuft: Anthropics eigene Websuche für eine Claude-Unterhaltung über Anthropics eigene API, die von DeepSeek für ein DeepSeek-Modell. Eine Unterhaltung mit einem lokalen Modell sendet ihre Suchanfragen nie an die eigene Suche eines Anbieters. Tavily oder ein selbst gehostetes SearXNG, in den Einstellungen gewählt, ist entweder die einzige Suche oder eine Ersatzsuche nach der des Modells; ohne bewusste Wahl steht ein Best-Effort-Scraping von DuckDuckGo an letzter Stelle. Lehnt ein Suchdienst Arslan ab, sagt das Ergebnis, dass die Suche blockiert wurde und nichts gesucht wurde, nie „keine Ergebnisse“.

Seitenlesen und der Browser behalten den Schutz für ausgehende Verbindungen: lokale Namen, echte private Adressen und Hosts mit Steuerzeichen werden abgelehnt. Seit 0.1.61 wird auf einem Mac, dessen Proxy oder VPN DNS mit Fake-Adressen (198.18.0.0/15) beantwortet, ein Name, der über https auf Port 443 angefragt wird und dessen Adressen alle in diesem Block liegen, durchgelassen, während schlichtes http oder ein anderer Port zu einem solchen Namen abgelehnt wird. Bei einem solchen Namen entscheidet der Proxy, wohin die Anfrage wirklich geht; was weiterhin gilt, ist TLS, gegen den echten Namen geprüft.

Quelle: Suchreihenfolge und blockierte Suchen; Suchen der Anbieter; Schutz für ausgehende Verbindungen und Fake-IP-Ausnahme.

Warum parallele Recherche weiterhin möglich ist

Die einheitliche Agent-Schleife enthält weiterhin eingeschränkte temporäre Worker mit rein lesendem Zugriff. In v0.1.63 sind höchstens 4 Aufträge pro Gruppe und 2 gleichzeitig laufende Worker erlaubt. Ihre Werkzeuge sind auf Suche und Webseitenextraktion beschränkt. Sie schreiben weder Dateien noch persönliche Erinnerungen und können nicht rekursiv weitere Worker erzeugen. Der Hauptassistent prüft und integriert ihre Ergebnisse.

Diese Delegation eignet sich für voneinander unabhängige Informationsabfragen. Ihr Lebenszyklus unterscheidet sich von den früheren dauerhaften Expertenfiguren: Nutzer müssen vorher kein Expertenteam auswählen oder verwalten, und nicht jede Nachricht wird zwingend an einen anderen „Experten“ weitergeleitet. Ob Parallelität sinnvoll ist, hängt weiterhin von der Zerlegbarkeit der Aufgabe und den zusätzlichen Aufrufkosten ab.

Hintergrundaufgaben, Zeitplanung und Heartbeat

Hintergrund-Jobs trennen längere Ausführungen vom aktuellen Chat und verwenden dieselbe Modell-, Werkzeug- und Abnahmelogik. Geplante Aufgaben speichern dauerhaft, wann eine Ausführung beginnen soll. Heartbeat ist eine Form regelmäßiger Checklistenprüfung, standardmäßig ausgeschaltet und für Prüfungen sowie Vorschläge zuständig. Ein zeitgesteuerter Start macht aus einem Vorschlag keinen genehmigten Schreibzugriff oder Befehl. Seit 0.1.63 ist jeder geplante Lauf eine gewöhnliche Arslan-Runde, in der niemand gefragt werden kann: In dieser Version führt er überhaupt keinen Terminalbefehl aus, was auch immer zuvor erlaubt war, schreibt nur in Arslans eigenem Ordner, kann nicht auf dem Mac handeln und führt nur MCP-Werkzeuge aus, die ihr Server als nur lesend kennzeichnet; ein Schritt, der mehr braucht, wird abgelehnt und im Posteingang aufgeführt.

Chat-Antworten und Hintergrundaufgaben halten an einem Dollar-Limit pro Aufgabe an (standardmäßig eingeschaltet, 2 $; sie beginnen bei etwa zwei Dritteln davon mit dem Abschluss; nur Modelle mit bekanntem Preis zählen), das sich in den Einstellungen ändern lässt. Eine Chat-Antwort wird für lange Arbeit nicht mehr in den Hintergrund geschoben: Hintergrundarbeit ist dieselbe Arbeit an anderer Stelle, wenn Sie oder das Modell sie wählen.

Die aktuelle Zeitplanung läuft im lokalen Dienst. Sie überspringt Überschneidungen, pausiert bei Fehlern und bereinigt Zustände nach Neustarts. Verpasste Zyklen werden nicht einzeln nachgeholt. Ist die vorige Ausführung einer Aufgabe noch nicht beendet, wird keine weitere darübergelegt. Dieses Verhalten passt zu einer persönlichen Desktopanwendung; ihre Betriebsbedingungen unterscheiden sich damit von denen eines dauerhaft erreichbaren Servers.

Implementierung: Werkzeugregister und read_skill; Fähigkeiten als Schalter; Vertrag des Plugin-Manifests; MCP-Verbindung und Konfiguration; find_tools und use_tool; gleichzeitige Lesevorgänge; MCP-Start und Zustände; MCP-Aufrufe und Freigabe nach den Kennzeichnungen des Servers; Umformung der MCP-Werkzeugbeschreibungen; die zwei mitgelieferten Skills; Worker mit rein lesendem Zugriff; Hintergrundaufgaben; Lokale Zeitplanung; Heartbeat.

09 / Ausführungs- und SicherheitsgrenzenVom Modellvorschlag zur tatsächlichen Aktion

Arslan kann Dateien lesen und schreiben, Befehle ausführen und über Browser sowie native Apps arbeiten. Sein Sicherheitsentwurf beruht auf einer Unterscheidung: Das Modell schlägt den nächsten Schritt vor; vertrauenswürdiger Code entscheidet, ob er ausgeführt werden darf. Im Folgenden werden die in v0.1.63 implementierten Grenzen beschrieben. Es sind Schutzmechanismen mit konkretem Geltungsbereich, kein Sicherheitsbeweis für sämtliche bösartigen Eingaben, App-Verhaltensweisen oder Systemumgebungen.

Eingabe und WerkzeugvorschlagNutzerziel, Webseiten, Dateien
Modell erzeugt strukturierten Aufruf
AnwendungsrichtlinieParameter, Ziel und Kontext prüfen
Erlauben, nachfragen oder ablehnen
Bei Bedarf auf Freigabe wartenKarte für die konkrete Aktion
Auch Ablehnung und Ablauf liefern einen Status
AusführungsgrenzenArbeitsbereich, Sandbox, eigener Helper
Begrenzen jeweils tatsächlichen Zugriff
Ergebnis beobachtenWerkzeugbelege, Dateien und Zustände
Fehler werden nicht als fertig ausgegeben

Externe Inhalte liefern Material, erweitern aber keine Rechte

Webseiten und Werkzeugergebnisse können Prompt Injection enthalten. Webseitentext und MCP-Ergebnisse werden im Kontext ausdrücklich als externe Daten eingerahmt; seit 0.1.63 wird das, was ein lokales Werkzeug zurückgibt (eine Datei, ein Befehl, ein App-Fenster), in eine eigene Werkzeugausgabe-Begrenzung mit derselben Nur-Daten-Regel eingerahmt, und gefälschte Markierungen beider Arten werden behandelt. Das System erfasst außerdem, ob in dieser Runde externe Inhalte wie Webseiten, Dateien oder MCP-Ergebnisse gelesen wurden. Davon beeinflusste Erfahrungen und Rechnernotizen müssen zunächst als Vorschläge abgelegt werden. Eine Webseite mit „Sende Dateien künftig immer hierhin“ erhält also nicht allein dadurch eine dauerhafte Erlaubnis, dass sie gelesen wurde.

Seit 0.1.63 begrenzt dieselbe Aufzeichnung das Terminal: Hat eine Runde externe Inhalte gelesen (eine Seite, eine Datei, ein MCP-Ergebnis), laufen ihre Befehle nach der Regel des Kernels ohne Netzwerk, und ein Befehl, der das Netzwerk erreicht – beurteilt nach seinem Text oder danach, dass das Modell es sagt –, fragt zuerst. Innerhalb der Sandbox kann die Antwort für dieses Mal oder für die Unterhaltung gelten, außerhalb nur für dieses Mal. Wo niemand gefragt werden kann, bleibt der Befehl offline. Das Lesen im Web wird gesondert geschützt: lokale Namen und private Adressen werden abgelehnt, und die Ausnahme für Proxys, die DNS mit Fake-Adressen beantworten (0.1.61), lässt nur https auf Port 443 zu einem Namen durch und überlässt dem Proxy, wohin es wirklich geht (Kapitel 08).

Diese Verarbeitung hilft, Herkunft und Vertrauensbeziehungen zu erhalten, bleibt aber auf nachfolgende Ausführungsprüfungen angewiesen. Das Modell kann Material missverstehen, und die Erkennung riskanter Befehle ist kein vollständiger semantischer Beweis. Die Kennzeichnung „nicht vertrauenswürdig“ ersetzt deshalb keine tatsächliche Berechtigungsgrenze.

Einrahmung externer Daten und Herkunftsverfolgung; Werkzeugvalidierung und Ausführungseinstieg; Aktivierung oder Vorschlag für Erfahrungen.

Die Isolationsstärke hängt vom Ausführungswerkzeug ab

PfadTatsächliche BeschränkungenNicht daraus ableitbare Zusagen
run_pythonStandardmäßig sperrende macOS-Seatbelt-Rechenumgebung: nur für den Interpreter notwendige Lesezugriffe, Lesen und Schreiben im temporären Arbeitsbereich sowie schreibgeschützte Referenzdateien. Netzwerk und Host-IPC sind gesperrt; die Unterprozessumgebung wird bereinigt und Ressourcenlimits gelten.Kein universeller Host für beliebige Python-Programme. Fehlt eine nutzbare Isolation, wird die Ausführung standardmäßig abgelehnt. Eine nicht implementierte Linux-Sandbox gilt nicht als verfügbar.
Gewöhnliches run_commandFührt eine echte Shell aus. Die Richtlinie hat drei Schichten: forbid (nie, ob in der Sandbox oder außerhalb: die Festplatte, den Home-Ordner oder einen Systemordner löschen, rohe Schreibzugriffe auf Datenträger, den Mac herunterfahren, Passwörter aus dem Schlüsselbund lesen, Arslans eigene Schlüsseldateien berühren, alles, was sudo braucht); ask, nur dieses Mal (senden oder veröffentlichen, außerhalb des Arbeitsordners löschen, Programme zwangsweise beenden, Start- oder Systemeinstellungen ändern, andere Apps steuern, Apps oder Links außerhalb der Sandbox öffnen, den Bildschirm oder die Zwischenablage lesen, Shell-Start-, SSH-, Zugangsdaten- oder Einstellungsdateien anderer Agenten schreiben und jeder Befehl, dessen Text sich nicht lesen lässt, etwa bei unausgewogener Anführung, eval oder aus dem Netz geladenem Code, der in eine Shell geleitet wird); und run. Geprüft wird jeder Befehl einer Kette (&&, ;, |, ||, &), nicht nur der erste. Eine Karte für einen Befehl, der auf eine Regel trifft, gilt nur für dieses eine Mal: Keine Antwort wird für ihn gespeichert. Ab 0.1.63 fragt standardmäßig jeder neue Befehl zuerst (Einstellung „Wann fragen“: „Vor jedem Befehl fragen“); nur mit „Nur bei riskanten Befehlen fragen“ läuft ein Befehl, den die Richtlinie mit run beantwortet, ohne Karte: in der Sandbox oder, wo dieses Gespräch sie verlassen darf, außerhalb. Die standardmäßige Arbeitsbereichssandbox begrenzt Schreibzugriffe auf Arbeits-, temporäre und Cache-Verzeichnisse, verweigert das Senden von Apple Events und sperrt zusätzlich die Pfade von Arslan-Daten und -Schlüsseln, des Hands-Sockets und der Zugangsdaten des Nutzers (SSH-Schlüssel, Keychain-Dateien, Cloud- und CLI-Zugangsdaten wie AWS, gcloud, kube, gh, GnuPG, npm und netrc-Dateien, Browserprofile, Safari und Cookies). Seit 0.1.59 sperrt sie bei ausgeschaltetem „Desktop, Documents, Downloads“ außerdem diese drei Ordner für Lese- und Schreibzugriffe, auch über /System/Volumes/Data und Symlinks; ein Arbeitsordner innerhalb dieser Ordner bleibt les- und schreibbar, die Ordner aktiver Projekte bleiben nur lesbar.Lesen an anderen Orten, Programmausführung und Netzwerk bleiben offen, und ein Befehl, den der Nutzer außerhalb der Sandbox laufen lässt, unterliegt weder dem Ordnerschalter noch den gesperrten Zugangsdatenpfaden (ssh, git push und gh brauchen sie); er läuft unter einem minimalen Profil, das Arslans eigene Daten, Schlüssel und den Hands-Ordner weiterhin sperrt und Apple Events verweigert. Ist die Sandbox nicht verfügbar, fragt ein Befehl zuerst (mit „Nur bei riskanten Befehlen fragen“ gilt ein Ja „In diesem Gespräch“ auch für die späteren Befehle dieses Gesprächs, die die Richtlinie mit run beantwortet); einmal freigegeben, läuft er ohne Sandbox und gibt sandbox=unavailable zurück. Dieser Pfad sperrt deshalb nicht durchgehend bei fehlendem Schutz.
Installierter MCP-Server (0.1.57)Startet unter einem standardmäßig sperrenden Seatbelt-Profil: eigener Ordner und temporäres Verzeichnis, die freigegebenen Ordner, Arslans fest versionierte Laufzeitumgebungen nur lesend; geschützte Pfade bleiben auch innerhalb eines freigegebenen Ordners gesperrt. HOME zeigt in den eigenen Ordner.Das Netzwerk ist nur offen, wenn der Server angegeben hat, dass er einen Schlüssel für einen Onlinedienst benötigt – und dann zu jedem Host (Seatbelt kann es nicht auf einen beschränken). Von Hand hinzugefügte Server werden in 0.1.57 nicht in diese Sandbox verlegt. Seit 0.1.63 fragen die Werkzeugaufrufe danach, was der Server über die Wirkung des Werkzeugs angibt (Kapitel 08), und diese Angabe ist die eigene des Servers und nicht überprüft.
Offline-Befehle beim AbschlussIn der Abschlussphase dürfen bereits beschaffte Daten verarbeitet und Ergebnisse gespeichert werden; zusätzlich wird das Netzwerk gesperrt.Fehlt die benötigte Sandbox, wird die Ausführung abgelehnt. Die Fallback-Regel gewöhnlicher Befehle gilt hier nicht.
AppleScript / ShortcutsIn einem Terminalbefehl fragen osascript und shortcuts run in ihren üblichen Schreibweisen (mit Pfad, über command, exec oder xargs, mit Umleitung) immer, nur dieses Mal. Die Sandbox verweigert Apple Events, sodass eine Schreibweise, die Arslan nicht erkennt, in ihr scheitert. Nur ein einfacher, freigegebener Aufruf läuft ohne Sandbox-Hülle: ein Skript, das mit Erinnerungen, Kalender, Notizen oder Kontakten spricht und sonst nichts Riskantes tut, oder ein einfaches shortcuts run, dessen Dateien in Arslans Ordner bleiben; er lässt sich nur per Klick im Mac-Fenster freigeben. Hands eigenes AppleScript-Werkzeug fragt jedes Mal, wobei das ganze Skript gezeigt wird, wird nur Hintergrundarbeit angeboten und lehnt ein Skript ab, das eine gesperrte App nennt oder seine App über einen berechneten Namen wählt.Ein freigegebener Shortcut läuft als der Nutzer außerhalb der Sandbox, und Arslan kann nicht sehen, was er tut. Dass der Befehl in einer Dateisandbox läuft, bedeutet nicht, dass die angesprochene App demselben Dateiumfang unterliegt.
Arslan HandsEin eigener Helper hält Accessibility. Er prüft App, Aktion, Feld und Stoppzustand nochmals selbst. Seit 0.1.60 kann ein Blick ein Bild genau dieses einen Fensters mitführen, das nur im Arbeitsspeicher gehalten wird.Der Bedienungshilfenbaum bildet nicht die vollständige fachliche Bedeutung ab, und ein Fensterbild wird vom Modell gelesen, nicht von Code geprüft. Verfügbare bedienbare Knoten beeinflussen die Nutzbarkeit; ein Fenster auf einem anderen Schreibtisch (Space) erreicht Hands nur, indem es ihn nach den Regeln für das Ausleihen besucht (Kapitel 08).

Das Verlassen der Befehlssandbox verlangt einen ausdrücklichen Klick zur Freigabe: entweder für die aktuelle Aktion oder auf Nutzerwahl für die laufende Sitzung. Diese Freigabe wird mit dem Gespräch gespeichert (sie übersteht einen Neustart), gilt auch für seine Hintergrundaufgaben und lässt sich in den Einstellungen zurücknehmen. Die Quellcode-Entwicklungsumgebung hat zusätzlich eine ausdrücklich zu aktivierende Ausnahmeeinstellung für Python ohne Sandbox. Die Desktop-App schließt diesen Ausweg. Keiner der beiden Mechanismen erlaubt dem Modell, Schutzvorkehrungen eigenständig auszuschalten.

Seit 0.1.62 folgen write_file und edit_file nie einem Link aus dem Arbeitsordner hinaus: Ein Schreibzugriff über einen Link, der nach außen zeigt, wird abgelehnt, eine Datei mit einem zweiten Namen anderswo (ein Hardlink) wird im Arbeitsordner ersetzt, und der andere Name behält seinen alten Inhalt, neue Dateien sind nie ausführbar, und eine bestehende Datei behält ihre Berechtigungen. Die Datei wird in eine neue Datei daneben geschrieben und eingetauscht, sodass ein fehlgeschlagener Schreibvorgang die alte unberührt lässt. Seit 0.1.63 sichert die erste Änderung, die eine Runde am Arbeitsordner vornimmt, einen Checkpoint, und „Diesen Zug rückgängig machen“ spielt die Dateien zurück und nimmt die Runde aus der Unterhaltung. Das ist ein Auffangnetz, keine Grenze: Es sichert nur einen Ordner mit höchstens 20.000 Dateien und 5 GB (ohne Python-Umgebungen, node_modules, Build-Ausgaben und Caches, die es auslässt und nie zurückspielt), kopiert nie Dateien in der Form von Geheimnissen, deckt nur den Arbeitsordner ab, macht nichts rückgängig, was den Mac verlassen hat, und sagt „Not saved“, wenn es nicht sichern konnte. Checkpoints werden sieben Tage aufbewahrt.

Beschränkte Rechenumgebung und Entwicklungsausnahme; Regeln für Arbeitsbereich und geschützte Verzeichnisse; Sandbox installierter Server; Fallback normaler Befehle und Ablehnung im Offline-Modus; Befehlsrichtlinie; Schreiben ohne Links zu folgen; Checkpoints; Diesen Zug rückgängig machen.

Freigaben gelten für konkrete Aktionen; Hintergrundarbeit erbt nicht alle Erleichterungen

Eine Freigabekarte ist über call_id und Aktionsart zugeordnet. Eine Antwort der falschen Art kann keine andere Karte freigeben. Sehen Mac-Fenster und Telefon dieselbe Karte, zählt die erste gültige Antwort; an die übrigen Ansichten wird ihr Abschluss gesendet. Ohne Antwort bleibt sie 30 Minuten offen, und dass die Zeit abläuft, ist kein Nein (seit 0.1.61; frühere Versionen: Ablauf nach 300 Sekunden). Seit 0.1.61 sieht eine Karte im Fenster, im Posteingang, in der Island und auf dem iPhone gleich aus: Einmal (oder Für diese Aufgabe, je nachdem, was die Karte zuerst anbietet), In diesem Gespräch, Immer und Nein mit einer Anmerkung, die an Arslan geht; eine Nachricht, die im Chat getippt wird, während eine Karte wartet, beantwortet sie mit Nein, mit dieser Nachricht als Anmerkung, und ein Klick beantwortet eine Karte. Manche Arten bieten weniger Auswahlmöglichkeiten: Ein Befehl, der auf eine Regel trifft, Geld, eine Übernahme und ein riskanter Schritt in einer App werden nur für dieses Mal beantwortet, und das Verlassen der Sandbox, eine Website, ein Shortcut und ein MCP-Werkzeug bieten nie „Immer“ an. Die Karten einer Hintergrundaufgabe bieten dieselben Auswahlmöglichkeiten wie die des Fensters; seit 0.1.63 (S4a) nutzt eine aus einem Gespräch gestartete Hintergrundaufgabe die Freigaben dieses Gesprächs, auch das Verlassen der Sandbox. Ein Lauf, in dem niemand gefragt werden kann (ein geplanter Lauf), nimmt keinen dieser Schritte: Keine frühere Antwort zählt dort, der Schritt wird sofort abgelehnt, und was er nicht tun konnte, wird im Posteingang aufgeführt. In dieser Version führt ein geplanter Lauf überhaupt keinen Terminalbefehl aus. Schlägt das Modell eine MCP-Verbindung, die Registrierung eines entfernten Rechners oder einen anderen Ausführungszugang vor, bleiben Vorschlag und tatsächliche Aktivierung der Verbindung getrennt.

Bei externen Nebenwirkungen ist das Absenden einer Anfrage ebenfalls nicht gleichbedeutend mit der abgeschlossenen Aktion. Bei Wiederaufnahme werden ausstehende Aktionen mit ungeklärtem Ergebnis als ungewiss markiert. Ein Prozessneustart allein darf keine automatische Wiederholung auslösen. Das Ziel sind klare Regeln für Wiederholung und Wiederaufnahme, keine Zusage, beliebige externe Systeme könnten Aktionen rückgängig machen.

Seit 0.1.55 steht jede wartende Karte – ob aus einem Fenster, einer Hintergrundaufgabe oder vom iPhone – zusätzlich in einer gemeinsamen Warteschlange und im Posteingang und lässt sich dort über ihre call_id beantworten. Die Antwort wird aus der Art der Karte selbst gebildet; sie kann also nur genau diese Karte bestätigen oder abbrechen, und die weiteren Auswahlmöglichkeiten (In diesem Gespräch, Immer) lassen sich nur auf einer Karte wählen, die sie anbietet: Das iPhone und die Island geben nur die erste Auswahlmöglichkeit der Karte, nie „Immer“, und der Posteingang kann jede Auswahlmöglichkeit geben, die die Karte selbst angeboten hat. Die Island kann Karten für Ordner, Apps, Bildschirm, MCP-Werkzeuge, Zeitplan, Websites und Shortcuts sowie für einen Befehl oder Schreibzugriff im Arbeitsbereich beantworten, der nicht zu den riskanten Arten gehört. Sie kann kein Geld, kein Senden, kein Löschen, keinen riskanten Schritt in einer App, keine Übernahme, kein Verlassen der Sandbox, keinen Befehl, der auf eine Terminal-Ask-Regel trifft oder sich nicht lesen lässt, keinen Befehl, der zusätzlich das Netzwerk verlangt, nichts auf einem entfernten Rechner, keine Systemänderungen, keine Einstellungen anderer Agenten, kein Installieren einer Fähigkeit, kein AppleScript, keinen Befehl, der ohne Sandbox um sich laufen würde, und keine Kartenart freigeben, die die Prüfung nicht kennt. Solche Karten zeigen „Open in Arslan“, und der Server lehnt eine Freigabe aus der Island für sie ab – nicht nur die Island-Oberfläche. Eine Karte, die ein freigegebenes einfaches AppleScript oder einen Shortcut ohne Sandbox-Hülle ausführen würde, und eine, die eine Fähigkeit installiert, werden nur im Mac-Fenster freigegeben; das Ja des iPhones zu einer solchen Karte wird verschluckt. Im Fenster erlaubt ⌘⏎ und Esc lehnt ab; ein einfaches ⏎ beantwortet nie eine Karte.

Antworten aus Posteingang und Island; Kartenzuordnung, Ablauf und Antworten mehrerer Geräte; Ungewisse Nebenwirkungen bei Wiederherstellung; Verbindungsvorschläge und Freigabeeinstieg.

Hands bündelt Systemrechte in einem kleineren Prozess

Accessibility wird Arslan Hands.app erteilt, nicht der Haupt-App. Signierte Releases nehmen Anfragen über einen geschützten Unix-Socket, ein bei jedem Start erzeugtes Token und eine Prüfung der Peer-Signatur entgegen. Der Helper setzt seine Regeln selbst durch; das darunterliegende agent-desktop besitzt die Berechtigung nicht separat. Seit 0.1.61 sind das Ansehen einer App und das Handeln in ihr eine Karte pro App, die „für diese Aufgabe“ zuerst anbietet. Seit 0.1.60 darf auch eine Chatantwort handeln: bis 0.1.62 mit bis zu fünf Schritten in einer App, ab 0.1.63 innerhalb der Grenzen des Laufs selbst, wie ein Hintergrundjob, in mehr als einer App, und Stop hält sie an (ein geplanter Lauf kann nicht handeln: Niemand ist da, um es freizugeben); ein aus einer Sitzung gestarteter Job übernimmt das Ja dieser Sitzung. Handeln im Browser, das Ausführen von Shortcuts und AppleScript werden weiterhin nur Hintergrundarbeit angeboten. Eine App wird nach ihrer Identität beurteilt; sie mit .app oder einem vollständigen Pfad oder in anderer Groß- und Kleinschreibung zu nennen, umgeht also weder die Sperrliste noch eine fehlende Freigabe. Sensible Schaltflächen wie Löschen, Senden, Bezahlen, Kaufen, Überweisen und Absenden verlangen anhand ihres tatsächlichen Labels jedes Mal eine Rückfrage. Passwortfelder werden nicht befüllt; Passwortmanager, Systemsicherheitsoberflächen und ähnliche Apps stehen auf der Sperrliste.

Der Stoppzugang setzt eine Stoppsperre, die nachfolgende Aktionen prüfen müssen. Aktivitätsaufzeichnungen halten Aktionsspuren fest; bei eingegebenem Text wird nur die Länge protokolliert. Auch die Grenzen sind dokumentiert: Ein Fenster in einem anderen Space erreicht Hands nur, indem es ihn nach den Regeln für das Ausleihen besucht; Klicks auf eine Bildschirmposition und Ziehen werden nicht angeboten; große Fenster können 10–20 Sekunden zum Auslesen benötigen. Durch Stop abgeschnittene Aufrufe können ohne zugehörige Trace-Zeile bleiben. Das Auditprotokoll ist daher keine Zusage vollständiger forensischer Nachweise für jeden Unterbrechungsfall.

Seit 0.1.56 führt Hands jede Anfrage höchstens einmal aus: Antworten auf eine Anfrage-ID werden zehn Minuten lang aufbewahrt, eine wiederholte ID wird von dort beantwortet, und hat das Backend eine Antwort verloren, ruft es diese ab, statt die Aktion erneut zu senden. Das Anhängen an ein Feld, dessen Text sich nicht lesen lässt, wird abgelehnt, statt den Inhalt zu ersetzen; Return wird nur gedrückt, wenn dieses Feld den Fokus hat; und eine Aktion, die gesendet, aber nicht zurückgelesen wurde, wird als „sent, not confirmed“ gemeldet, nicht als erledigt. Hands führt agent-desktop aus, gebaut aus Arslans Fork auf einem fest versionierten Commit; die Cua-Driver-Engine wurde in 0.1.63 aus Hands herausgelöst, sodass der Helper sie nicht mehr sucht oder startet (ihr ungenutztes Modul liegt noch im Quellcode des Helpers). Seit 0.1.60 kann eine einzige Karte bis zu acht Apps für eine Arbeit abdecken, ein aus einer Unterhaltung gestarteter Hintergrundjob übernimmt das Ja dieser Unterhaltung, und Apps lassen sich unter Einstellungen › Hands dauerhaft erlauben. Ein Klick, eine Auswahl oder ein letzter Menüpunkt mit der Beschriftung Löschen, Senden, Bezahlen, Kaufen, Absenden, Überweisen, Signieren, Posten, Veröffentlichen oder Bestätigen (in mehreren Sprachen), die entsprechenden Tastenkürzel, Return in Apps, die mit Return senden, eine Übernahme und jedes AppleScript verlangen weiterhin jedes Mal eine Rückfrage.

Auch der lokale Dienst hat Grenzen. Das Release-Paket erzeugt Zugriffstoken für REST und WebSocket; die Installationsabnahme prüft die Ablehnung nicht authentifizierter Anfragen. Der Einstellungsendpunkt, der das Token anzeigt, gibt es nur an einen direkten Loopback-Aufrufer heraus, der es bereits mitbringt (0.1.54); Loopback allein genügt nicht, weil auch ein Befehl in der Sandbox einen Loopback-Socket öffnen kann. Der Server der Desktop-App verlangt stets sein Token, akzeptiert keine andere Website als Aufrufer (kein Cross-Origin und kein WebSocket ohne Origin), vertraut nur localhost als Hostnamen, ignoriert die Host- und Origin-Variablen und andere Einstellungen, die aus der startenden Umgebung geerbt wurden, stellt keinen API-Explorer bereit und hält das Token aus seinem Log heraus (0.1.63). Im Entwicklungsmodus aus dem Quellcode gibt es einen bequemen localhost-Pfad ohne Token, wobei eine Host- oder Origin-Variable, die * oder null nennt, den Start nun verweigert. „Lauscht nur lokal“ und „ist authentifiziert“ sind unterschiedliche Aussagen. Eine bereits kompromittierte Hostumgebung mit denselben Rechten wie der aktuelle Nutzer wird durch ein lokales Token nicht automatisch vertrauenswürdig.

Socket-, Token-, Peer- und Stoppprüfungen; Gesperrte Apps und Einstufungen; Wörter und Tasten, die immer nachfragen; Praxistests und Grenzen von Hands; API- und WebSocket-Authentifizierung.

10 / iPhone und Mac BridgeAufträge und Ergebnisse auf dem Telefon, Ausführung auf dem Mac

Über die mobile Bridge kann ein gekoppeltes iPhone Mac-Aufgaben ansehen, Arbeiten anstoßen, Freigaben beantworten und Ergebnisse lesen. Ausgeführt wird weiterhin durch Arslan auf dem Mac. Das Telefon ist weder ein zusätzlicher Cloud-Agent-Dienst noch legt es die HTTP-Schnittstelle des Mac offen oder ruft sie direkt auf. Dieses Kapitel bezieht sich auf das öffentliche Protokoll und den Quellcode der Mac-Version v0.1.63. Die Mac Bridge wurde bereits in früheren Releases ausgeliefert. Ihre öffentlichen Release Notes bezeichnen die iPhone-App weiterhin als demnächst im Store verfügbar. Daraus wird hier weder eine abgeschlossene App-Store-Veröffentlichung noch eine vollständige Abnahme des Produktionsablaufs abgeleitet. Änderungen seit 0.1.60 sind dort, wo sie vorkommen, mit ihrer Version gekennzeichnet; die Notes zu 0.1.61 sagen, dass die Mac-Seite mit Arslan für iPhone 1.0 zusammenarbeitet, das weiterhin als demnächst im App Store verfügbar beschrieben wird.

iPhoneSwiftUI-Ansichten und lokale Authentifizierung
Verschlüsselung, Ausgang, Statusansichten
CloudKitPrivate Datenbank, Zone ArslanBridge
Asynchrone Speicherung verschlüsselter Umschläge
Mac BridgePrüfung, Entschlüsselung, Protokollabbildung
Lokales HTTP / WebSocket
Arslan-BackendAufgaben, Werkzeuge, Freigaben und Artefakte
Strukturierte Ergebnisse über denselben Rückweg

CloudKit dient als Postfach; Geräteidentität prüft weiterhin das Protokoll

v1 verwendet die private CloudKit-Datenbank derselben Apple ID. Der Mac muss eingeschaltet, online und ausführungsbereit sein. Andernfalls warten Nachrichten auf Verarbeitung; das Telefon kann einen ausgeschalteten Mac nicht weiterarbeiten lassen. Bonjour im lokalen Netzwerk ist eine künftige Entwicklungsrichtung und kein alternativer Direktkanal dieser Version. Der Mac-Helper ist eine eigenständige ArslanBridge.app, die zusammen mit der Anwendung läuft. Sie erhält das lokale API-Token über stdin und verbindet sich damit zum Backend. Das Telefon besitzt dieses Token nicht und erhält auch keinen Modell-API-Schlüssel.

Zu den in der Cloud sichtbaren Indexfeldern eines Umschlags gehören Sender- und Empfängergerät, Sequenznummer, grobes kind, Benachrichtigungsmarkierung und Zeit. Der eigentliche Nachrichtentyp, Text und Dateiinhalt liegen im auf Anwendungsebene verschlüsselten Teil. „Ende-zu-Ende-Verschlüsselung“ beschreibt damit den Nachrichtenschutz zwischen gekoppelten Geräten. Sie bedeutet weder Metadatenfreiheit noch, dass Modellaufrufe des Backends den vom Nutzer konfigurierten KI-Dienst umgehen.

Transport, Umschläge und Mac-Anbindung; CloudKit-Speicherimplementierung; Laufzeiteinstieg der Bridge.

Der QR-Code beginnt die Kopplung lediglich

Der QR-Code enthält eine einmalige pairing_id, die öffentlichen Signatur- und Austauschschlüssel des Mac, einen 32 Byte langen Kopplungsschlüssel, eine feste Containerkennung und eine Frist. Er gilt höchstens 600 Sekunden. Das Telefon lehnt abgelaufene Angaben, falsche Container und nicht regelkonforme Inhalte ab und bindet sich an die öffentlichen Mac-Schlüssel aus dem QR-Code. Anschließend erzeugt es eigene Identitäts- und Austauschschlüssel und sendet eine verschlüsselte Kopplungsanfrage. Nach deren Prüfung muss der Mac sie weiterhin dem Nutzer anzeigen. Erst ein Klick auf dem Mac entscheidet über Annahme oder Ablehnung.

Eine Wiederholung derselben Anfrage muss dieselbe Entscheidung liefern und darf keine zweite Autorisierung erzeugen. Nach Annahme kommunizieren die Geräte anhand ihrer Identitäten; der Kopplungscode ist verbraucht. Der Mac kann das Telefon widerrufen. Koppelt sich dasselbe iPhone erneut, nennt es seine früheren IDs, und der Mac entfernt diese Einträge, statt zwei nebeneinander zu führen. Wird ein Telefon entfernt, löscht der Mac auch die Nachrichten, die er in iCloud für es hinterlegt hatte; beim Start räumt der Mac außerdem auf, was noch für nicht mehr gekoppelte Telefone wartet. Unter Einstellungen › Verbindungen › iPhone erscheint jedes Telefon als Connecting…, bis der Mac eine authentifizierte Nachricht von ihm gelesen hat, danach als Connected mit dem Zeitpunkt, zu dem es zuletzt gesehen wurde. Private Geräteschlüssel liegen jeweils in der Keychain. Vertrauen entsteht aus einmaligem Kopplungsmaterial und Nutzerbestätigung, nicht allein daraus, dass beide Geräte dasselbe iCloud-Konto verwenden. Seit 0.1.60 gilt: Hebt das iPhone die Kopplung selbst auf, vergisst der Mac dieses Telefon wie nach Einstellungen › Entfernen, ignoriert alles Weitere von ihm und aktualisiert die Liste.

Nachrichten prüfen Inhalt, Herkunft und Kontext gemeinsam

Jede neue Nachricht handelt mit einem temporären X25519-Schlüssel ein gemeinsames Geheimnis aus. HKDF-SHA256 leitet daraus einen 32 Byte langen Schlüssel ab; ChaCha20-Poly1305 verschlüsselt und authentifiziert, anschließend wird mit Ed25519 signiert. Der Header besteht aus längencodierten UTF-8-Feldern, damit sprachabhängige Unterschiede in der JSON-Sortierung die Prüfung nicht beeinflussen. Headerfelder sind sowohl durch Signatur als auch AEAD-Authentifizierung gebunden. Dieses Anwendungsprotokoll nutzt CryptoKit-Primitive. Es implementiert keine Signal Double Ratchet; allein aus temporären Schlüsseln folgt auch keine Zusage von Forward Secrecy in allen Szenarien.

Die Empfangsreihenfolge ist festgelegt: Struktur und Empfänger prüfen, Signatur verifizieren, dann entschlüsseln. Danach wird die Übereinstimmung von Klartext und Headerfeldern geprüft; vorhandene Anhänge folgen anschließend. Scheitert ein Schritt, darf keine teilweise fachliche Wirkung zurückbleiben. Dateien sind auf 20 MiB begrenzt. Prüfsumme des Chiffretexts, Authentifizierungstag, Klartextgröße und Klartextprüfsumme müssen stimmen, bevor Zwischenspeicherung oder Vorschau erlaubt sind.

Kopplung, Kryptoverfahren und Prüfreihenfolge; Mac-Codierung und Kryptoprotokoll; Einmalige Kopplung und Nutzerentscheidung.

Erfolgreiche Zustellung, abgeschlossene Aktion und endgültiger UI-Status sind getrennt

MechanismusAufgabeGrenze
Persistenz und Wiederholung desselben PaketsWiederholungen verwenden dieselbe Umschlag-ID, seq und denselben Chiffretext. Wichtige Zustände wie Sequenznummern werden vorher gespeichert, damit Netzwerkfehler keinen Zustandsrückschritt bewirken.Ein Zustellprotokoll ersetzt keine Transaktion eines externen Fachsystems.
Replay-FensterBehält je Absender die letzten 1024 Sequenznummern. Neue Pakete innerhalb des Fensters dürfen in abweichender Reihenfolge eintreffen; doppelte und zu alte Pakete werden abgewiesen.Eine gültige neue Sequenznummer bedeutet nicht zwingend einen neueren fachlichen Zustand. Alter Fortschritt kann verspätet gesendet werden.
ACKBestätigt die Zustellung eines Umschlags. Doppelte Pakete können erneut bestätigt werden. Nach Bestätigung wird der ursprüngliche Datensatz gelöscht; ein ACK erhält selbst kein weiteres ACK.ACK bedeutet weder Aufgabenerfolg noch abgeschlossene Ausführung einer genehmigten Aktion.
Fachliche Kennungen und Ergebnisseclient_msg_id und client_task_id verhindern Duplikate. approval.result, Aufgabenereignisse und Ergebnisse tragen den fachlichen Zustand.Die Zuordnung dieser Kennungen enthält in v0.1.63 flüchtigen Speicherzustand. Eine globale Exactly-once-Garantie unter beliebigen Abstürzen besteht nicht.

Mac-Statussnapshots führen nur noch laufende Aufgaben auf. Der normale Heartbeat-Abstand beträgt 60 Sekunden; nach 90 Sekunden ohne Aktualisierung bewertet das Telefon den Mac als offline. Fortschrittsmeldungen werden gedrosselt und zusammengefasst, Endzustände sollen zeitnah gesendet werden. Der Client muss deshalb Duplikate und vertauschte Reihenfolgen behandeln und zugleich Aufgabenlisten, Freigabekarten und Verlauf zu einem konsistenten Zustand führen. „Der zuletzt empfangene Text überschreibt den vorherigen“ genügt dafür nicht.

Sequenznummern, Verarbeitungsaufzeichnungen, ACK und Bereinigung; Fachliche Deduplizierung und Ergebniszuordnung; Snapshots und Heartbeats.

Mobile Freigaben verwenden die bestehende Mac-Autorisierung und Ausführung

Das Telefon zeigt die konkrete action, target und risk an. Eine Zustimmung erfordert lokale biometrische Authentifizierung, eine Ablehnung nicht. Nach dem Senden der Antwort muss es weiterhin auf approval.result vom Mac warten. Dieser prüft, ob die Karte noch gültig ist, und bildet die Antwort auf die ursprüngliche confirm- oder cancel-Aktion ab. Das Telefon erteilt keine dauerhafte Befehlsfreigabe. Spracheingabe kann einen zu bestätigenden Text erzeugen, ersetzt aber keine Zustimmung.

Seit 0.1.61 gibt es überall eine einzige Freigabekarte (Chatfenster, Posteingang, Island und iPhone). Das Telefon zeigt die eigene Frage der Karte, entnommen aus ihrem Titel, und was ihr Ja abdeckt. Es antwortet einmal oder für diese Aufgabe, wo das die erste Auswahlmöglichkeit der Karte ist (Karten für eine App, eine Website oder einen Shortcut: Die Überschrift endet dann mit „(for this task)“), und nie „In diesem Gespräch“ oder „Immer“. Eine Karte wartet auf dem Mac 30 Minuten (vor 0.1.61 waren es 5); der Ablauf der Zeit wird als expired gemeldet, was Arslan als „niemand hat geantwortet“ behandelt, nicht als Ablehnung. Eine Karte, die darum bittet, eine neue Fähigkeit zu installieren, erreicht das Telefon nie. Antwortet zuerst der Mac (in einem Fenster, im Posteingang oder in der Island), trägt das approval.result des Telefons answered_on_mac.

Versionsgrenze: Seit v0.1.54 wertet der Mac eine Antwort nur dann als Zustimmung, wenn sie das Merkmal faceid oder touchid trägt (Touch ID beim iPhone SE), und teilt dies in seinen Fähigkeiten mit; jedes andere Merkmal gilt als Ablehnung. Vor 0.1.54 wurde eine Zustimmung per Touch ID als Abbruch behandelt. high_risk_mac_only ist im Protokoll dieser Version fest auf false gesetzt und noch kein vom Nutzer konfigurierbarer Schalter. Gemeinsames Protokoll und Testvektoren prüfen Interoperabilität und Negativfälle. Sie ersetzen keine durchgängige Abnahme mit finalem Distributionspaket, echtem iCloud, Push und Geräteauthentifizierung.

Dateien, laufende Unterhaltungen und Kurswechsel vom Telefon aus

Das sind additive Protokolltypen (Abschnitt 5.7 des Protokolldokuments); ein Mac ohne sie antwortet mit unknown_type, und der Mac sendet die neuen Ereignisse nur an ein Telefon, dessen hello-Fähigkeiten sie angefordert haben.

  • Dateien vom Telefon (0.1.61). Eine Datei oder ein Foto, das von Arslan für iPhone gesendet wird (bis zu 20 MiB, höchstens 10 pro Nachricht), wird wie jedes Asset geprüft und auf dem Mac im Arbeitsordner unter Inbox/iPhone gespeichert, in einem Ordner pro Datum. Arslan liest sie zusammen mit der Nachricht; Bilder können als Bilder an das Modell gehen. Treffen nicht alle Dateien einer Nachricht innerhalb von 120 Sekunden ein, wird sie nicht ausgeführt, und das Telefon kann sie erneut senden.
  • Laufende Unterhaltungen (0.1.61). Der Mac hält seine 20 neuesten Unterhaltungen und jede mit einer laufenden Aufgabe verknüpft, sodass das Telefon sie auflistet und Antworten, Fortschritt und Karten verfolgt, während Arslan arbeitet. Das Telefon kann eine Unterhaltung löschen (die Remote-Unterhaltung wird nie gelöscht). Ein Verlauf, der für eine Nachricht zu lang ist, lässt seine ältesten Nachrichten weg und sagt, dass er gekürzt wurde.
  • Antworten, während sie geschrieben werden (0.1.63). Für ein Telefon, das darum gebeten hat, trifft die Antwort als partial-Ereignisse ein, die die gesamte bisherige Antwort tragen, höchstens einmal pro Sekunde und nicht über 100 KB hinaus; die endgültige Nachricht ersetzt sie. Am Mac getippte Wörter werden auf dem Telefon als vom Mac stammend gekennzeichnet gezeigt und lassen es nie klingeln.
  • Kurswechsel (0.1.63). Eine Nachricht, die gesendet wird, während eine Antwort läuft, erreicht diese Antwort bei ihrem nächsten Schritt, statt zu warten; das iPhone, das Mac-Fenster und Halten-zum-Sprechen tun dies alle. Während die Antwort ihre Schlussantwort schreibt, gibt es keinen Schritt mehr, die Nachricht läuft also direkt danach. Bekannte Grenze in 0.1.63: Eine im Mac-Fenster während einer Antwort hinzugefügte Nachricht erscheint auf dem iPhone erst ab der nächsten Antwort, und das iPhone zeigt weiterhin „Queued behind the current turn“, nachdem seine eigene Nachricht hinzugefügt wurde.
  • Dateien an das Telefon (0.1.63). Wenn Sie um eine Datei bitten (Screenshot, Diagramm, Export, Dokument), hängt Arslan sie an seine Antwort an: eine Dateikarte im Mac-Fenster und die Datei selbst auf dem iPhone, unter dem Limit von 20 MiB.

Abbildung von Freigabemerkmalen auf bestehende Aktionen; Bereinigung beim Entfernen oder erneuten Koppeln eines Telefons; Status, Fähigkeitsfelder, Eingang für Dateien vom Telefon und laufende Unterhaltungen; laufende Verknüpfungen, Dateien vom Telefon und Teilantworten; Unabhängige Protokollreferenz; Öffentlicher Auslieferungsstand von 0.1.54.

11 / Prüfung und SoftwareauslieferungVon lauffähigem Quellcode zur installierbaren und aktualisierbaren App

Die Auslieferungseinheit einer Desktopsoftware ist das Anwendungspaket. Python-Module, Systemwerkzeuge und alte Datenbanken aus der Entwicklungsumgebung können ein Paket mit fehlenden Ressourcen scheinbar funktionsfähig machen. Arslan trennt die Prüfung deshalb in Quellcode, Plattform, gebündelte Artefakte, frische Nutzerumgebung und Distribution. Dieses Kapitel dokumentiert den Ablauf von v0.1.63 und die zugehörigen Release-Belege.

CI prüft Verhalten, Plattform und Abhängigkeitsgrenzen

PrüfgruppeWesentlicher InhaltZweck
Linux-BackendPython 3.11, uv frozen lock, Ruff, pytest; ausdrückliche Installation und Prüfung der OCR-Testabhängigkeiten.Vollständige Backendtests ausführen und den Plattform-Negativfall erhalten: Ohne macOS-Isolation muss abgelehnt werden.
macOSTypprüfung des Swift-Sprachhelpers, Bridge-Build und -Tests, Rust fmt/test/clippy, Hands-Prüfungen und native Python-Testfälle.Vision, Seatbelt und Hostcode auf der tatsächlichen Zielplattform regelmäßig prüfen.
FrontendNode 22, npm ci, TypeScript-Typprüfung, Vitest und Produktionsbuild.Zustands- und Komponentenverhalten prüfen und sicherstellen, dass Produktionsressourcen erzeugt werden können.
Historie und Lieferkettegitleaks prüft die gesamte Git-Historie mit bereinigter Ausgabe. Hands fixiert den Upstream-Commit und prüft übernommene Dateien; cargo-deny kontrolliert Abhängigkeiten.Nicht nur den neuesten Diff prüfen und verhindern, dass ein Build unbemerkt wechselnden externen Quellcode verwendet.

Bei macOS genügt nicht allein der pytest-Exitcode. Die Pipeline wertet JUnit aus und verlangt, dass 60 festgelegte Plattformfälle tatsächlich ausgeführt werden – ohne übersprungene oder fehlgeschlagene Tests. Fehlen Abhängigkeiten und werden dadurch alle Fälle übersprungen, wird die Prüfung ebenfalls nicht bestanden. Python und Rust teilen Hands-Vertragsbeispiele. Mac, iOS und eine unabhängige Python-Referenz verwenden gemeinsame Bridge-Testvektoren. So lassen sich Parameterabbildung, Signaturen, Empfängerprüfung, Manipulation und Replay sprachübergreifend abgleichen.

Die Aussagekraft bleibt begrenzt: Eine Swift-Typprüfung validiert keine Mikrofonberechtigung, ein Linux-Unit-Test keinen macOS-Kernel und ein simuliertes Postfach kein produktives CloudKit. Testzahlen sind auch keine Gesamtdeckungsquote. Überlappende Testsuiten dürfen nicht zu einer Zahl unabhängiger Szenarien addiert werden.

Vier CI-Gruppen und Prüfung tatsächlicher Ausführung; Sprachübergreifendes Hands-Vertragsbeispiel; Bridge-Referenzimplementierung.

Ein Release beginnt beim exakten Quellcode-Commit

Quellcode-CommitExakte Release-SHA
Erfolgreiche CI liegt vor
App bauenFrontend, Python-Sidecar
Swift- / Rust-Helper
Signieren und notarisierenEingebettete Programme → App → DMG
notarize, staple, Gatekeeper
Tatsächliches Paket prüfenIsoliertes frisches HOME
Authentifizierung, Ressourcen, Ausführungspfade
Veröffentlichen und aktualisierenSigniertes Archiv und Manifest
Veröffentlichung nach Draft-Prüfung

Der Release-Workflow fragt ab, ob für genau die zu veröffentlichende SHA eine erfolgreiche CI vorliegt. Der Erfolg eines anderen Commits genügt nicht. Der Build verwendet durch Lockdateien gebundene Abhängigkeiten. Python wird ausdrücklich als eigenständiger, von uv verwalteter Interpreter gewählt, damit der Runner nicht zufällig einen Framework-Build verwendet. PyInstaller bündelt das Backend als onedir; statische Frontendressourcen sowie Swift- und Rust-Helper werden mit der Tauri-App zusammengestellt.

Signierung und Notarisierung erfüllen unterschiedliche Aufgaben. Eingebettete Mach-O-Dateien müssen zuerst signiert werden, bevor die äußere App sie umschließt. Für die Distribution werden Developer ID, Hardened Runtime und Zeitstempel verwendet. Das DMG wird bei Apple zur Notarisierung eingereicht, anschließend wird das Ticket per staple angeheftet und Gatekeeper prüft das Ergebnis. Das Buildskript erlaubt weiterhin unsignierte Entwicklungspakete und Warnpfade bei teilweise fehlenden Zugangsdaten. Ein erfolgreicher Build erfüllt deshalb nicht automatisch alle Voraussetzungen öffentlicher Distribution; beim offiziellen Release müssen die tatsächlichen Artefakte geprüft werden.

Für das Updatemanifest gelten eigene Bedingungen: Tag und Tauri-Version müssen übereinstimmen. Ein entsprechendes Manifest entsteht nur mit Updater-Signatur. Der Ablauf erzeugt zunächst ein GitHub Draft Release. Erst nach der offiziellen Veröffentlichung sehen installierte Apps das Update bei einer späteren Prüfung.

Prüfung der exakten SHA, Versionsabgleich und Draft Release; Bündelung, Zusammenstellung, Signierung, Notarisierung und Rückfallpfade; PyInstaller-Abhängigkeiten und Ressourcen.

Die Neuinstallationsabnahme startet unmittelbar das Anwendungspaket

fresh_install_check.py startet mit temporärem HOME und minimaler Umgebung das tatsächliche arslan-desktop im Paket. Es startet nicht stellvertretend den Dienst aus einer Quellcode-venv. Geprüft werden unter anderem, dass keine Nutzerdatenbank oder geheimen Dateien im Paket liegen, die Erstinitialisierung, Tokenerzeugung und Dateirechte, Ablehnung nicht authentifizierter Anfragen, ein echter WebSocket-101-Handshake sowie korrekter Abruf des Frontend-JavaScripts. HTTP 200 kann lediglich die SPA-Fallbackseite sein; eine Ressourcenprüfung darf sich daher nicht auf den Statuscode beschränken.

Dasselbe Skript prüft native OCR, eingebettete Helper, Bridge-Selbsttest und zugehörige Signaturen. In einem früheren gebündelten Paket fehlte eine dynamisch geladene WebSocket-Abhängigkeit: Der Health-Endpunkt funktionierte, der Chat konnte die Verbindung jedoch nicht hochstufen. Erfolgreicher Import, laufender Dienst und mitgelieferte Kernfunktion sind also drei unterschiedliche Nachweise.

App-Start und Paketabnahme; Explizite Aufnahme dynamischer WebSocket-Abhängigkeiten.

Nutzer starten die Updateinstallation; der Download wird verifiziert

Der Tauri-Updater findet Updates über die öffentliche latest.json und prüft die Archivsignatur mit dem in die App einkompilierten öffentlichen Schlüssel. Einmal beim Start wird geprüft; zusätzlich ist eine manuelle Prüfung im Menü möglich. Diese Version besitzt keinen Timer für regelmäßige Prüfungen. Bei einer neuen Version erscheint ein Hinweis. Erst nach dem Installationsklick folgen Download, Signaturprüfung, Austausch und Neustart. Eine fehlgeschlagene automatische Prüfung kann auf eine vorübergehend fehlende Verbindung zurückgehen; ein Installationsfehler muss dem Nutzer dagegen klar gemeldet werden.

Die frühen Versionen 0.1.0/0.1.1 registrierten nur das Updater-Plugin, riefen die Prüffunktion aber nicht aktiv auf und konnten deshalb neue Versionen nicht automatisch entdecken. Die aktuelle Implementierung verbindet Prüfung, Installationsbereitschaft, Downloadfehler und Neustart zu einem ausdrücklichen Ablauf. Eine vorhandene Signaturkonfiguration bedeutet noch nicht, dass dieser Ablauf ausgelöst wurde.

Zustände für Prüfung, Installation und Neustart; Updateadresse und öffentlicher Schlüssel.

Auf welche Artefakte sich die Auslieferungsbelege von 0.1.63 beziehen

Die GitHub-Actions-Läufe zum Release-Commit zeigen: Der Release-Quellstand ist 9bbb6ad6 auf main; die CI auf main bestand beim ersten Versuch (Run 40502155919), einschließlich der 60 festgelegten Plattformfälle des macOS-Jobs ohne übersprungene Tests; im Backend bestanden 9.469 Tests, 124 wurden übersprungen. Das Pushen des Tags startete keinen eigenen CI-Lauf, deshalb nutzte das Gate den Lauf auf main für denselben Commit. Der Release-Workflow (Run 40505601007) bestand Quellprüfung, Build und Veröffentlichung; das DMG wurde zur Notarisierung angenommen, das Ticket angeheftet und von Gatekeeper akzeptiert. Der Fresh-Install-Test der ausgelieferten App meldet 92 bestandene und 0 fehlgeschlagene Prüfungen, einschließlich der Annahme der Verbindung des signierten Backends durch Hands und des Bridge-Selbsttests.

Die beiden Releases davor: 0.1.61 wurde aus main bei fb6d7230 erstellt (CI auf main Run 38489348597, Tag-CI Run 38498094635, Release Run 38498094628; 54 Plattformfälle; Backend 8.466 bestanden und 124 übersprungen; Fresh-Install 89/0). 0.1.62 wurde aus release/0.1.62 bei a4fca23b erstellt (Branch-CI Run 39112567104, Tag-CI Run 39114206598, Release Run 39114206588; 55 Plattformfälle; Backend 8.747 bestanden und 125 übersprungen; Fresh-Install 89/0). Beide bestanden beim ersten Versuch, wurden notarisiert, mit dem Ticket versehen und von Gatekeeper akzeptiert.

Die geprüften Objekte unterscheiden sich, und die Aufzeichnungen benennen das. Die öffentlichen Notes zu 0.1.63 sagen, dass auf einem Release Candidate eine kurze Liste von Prüfungen von Hand durchgegangen wurde und dass zwei davon nicht bestanden (eine dritte Folgebearbeitung, die mehr änderte als verlangt, und eine einzeilige Änderung in einer langen Datei über das Terminal); sie sagen nicht, dass genau das DMG von 0.1.63 von Hand installiert und vollständig bedient wurde, und dieses Dokument tut es auch nicht, ebenso wenig einen vollständigen Durchlauf vom iPhone zum Mac mit der ausgelieferten App. Die Notes zu 0.1.61 und 0.1.62 enthalten keinen manuellen Durchlauf auf einem echten Mac, auf den sich dieses Dokument stützt. Zum Vergleich: Die Verification von 0.1.53 dokumentierte einen Durchlauf auf einem echten Mac, bei dem Hands eine Notiz in Notes erstellte und wieder las, während eine Freigabe 36 Sekunden lang wartete – mit dem Build-only-Paket von 43751254, nicht mit dem finalen DMG. Automatische Paketabnahme, Funktionstest eines früheren Builds und manuelle Abnahme des exakten Distributionspakets müssen getrennt benannt werden und ersetzen einander nicht.

12 / Tests und ValidierungWoran sich erkennen lässt, ob eine Aufgabe richtig erledigt wurde

Dass eine Aufgabe beendet wurde, eine Datei geöffnet werden kann und ein Bericht inhaltlich richtig ist, sind drei unterschiedliche Feststellungen. Arslan dokumentiert mit Ausführungsprotokollen, was geschehen ist, prüft anhand von Artefakten und Verträgen die bestimmbaren Eigenschaften und untersucht die Modellleistung anschließend mit realen Aufgaben. Eine bestandene Ebene ersetzt keine andere.

Dieses Kapitel fasst öffentlichen Quellcode, Versionshinweise und historische Versuchsaufzeichnungen zusammen. Zahlen gelten für die jeweils angegebenen Versionen und Umgebungen. Sie bedeuten weder, dass beim Verfassen sämtliche Tests erneut ausgeführt wurden, noch, dass alle Funktionen mit echten Geräten und Modellen abgenommen wurden.

„Erledigt“ zuerst in überprüfbare Belege zerlegen

Hat die Ausführung stattgefunden?

Hat der Werkzeugaufruf ein Ergebnis geliefert? Welchen Exitcode? War die Aktion eindeutig erfolgreich, eindeutig fehlgeschlagen oder ist ihr Ergebnis unbekannt? Ein „Erledigt“ des Modells ersetzt keinen Werkzeugbeleg. Auch ein Seiteneffekt mit unbekanntem Ergebnis darf nicht als gefahrlos wiederholbar gelten.

Ist das Ergebnisartefakt gültig?

Existiert die Datei, gehört sie zur Aufgabe, stimmen Bytezahl und Hash, lässt sich das Format parsen? Eine lesbare Tabelle enthält nicht zwangsläufig richtige Daten, und korrekte Bildabmessungen belegen kein gutes Layout.

Sind die Anforderungen erfüllt?

Sind zehn gültige Ergebnisse gefordert, reichen sechs nicht aus. Zitierte Quellen müssen die Schlussfolgerungen stützen; eine gelesene Webseite belegt nicht automatisch eine bestimmte Aussage. Dafür bleiben aufgabenspezifische Prüfungen und menschliche Beurteilung erforderlich.

Das Abnahmesystem unterscheidet regelbasierte Prüfungen, Modellbewertungen und menschliche Kontrolle. Text, JSON, Dateiintegrität, Bildabmessungen und tatsächliche Ausführungsergebnisse lassen sich deterministisch prüfen. Modellbewertungen dürfen nur geeignete Aspekte beurteilen und nicht eine ausgebliebene Prüfung nachträglich als bestanden markieren. Erfolgreiches Parsen belegt eine lesbare Struktur, ein Quellenabrufprotokoll den Empfang von Inhalten. Beides beweist nicht automatisch sachliche Richtigkeit oder visuelle Qualität.

Grenzen von Abnahmeregeln und Artefaktprüfungen; 0.1.53: Unvollständige Aufgaben zeigen ausdrücklich Not done.

Testebenen: Jede beantwortet eine eigene Frage

BelegebenePrüfgegenstand und BeispieleWas sich daraus nicht ableiten lässt
Unit- und VertragstestsParameterprüfung, Zustandsübergänge, Fehlerklassifikation, Serialisierung, Berechtigungsentscheidungen; gültige Eingaben und negative Fälle wie Manipulation oder ReplayDass ein reales Modell stets das richtige Werkzeug wählt oder alle Drittdienste dauerhaft kompatibel bleiben
DienstintegrationTatsächliche Verbindung von Datenbank, Ausführungsprotokollen, Abbruch, Artefaktexport, Wiederherstellung und Berechtigungsrückrufen; das Modell darf ein deterministischer Ersatz seinDass ein erfolgreicher Test mit einem Double die Lösung einer natürlichsprachlichen Aufgabe durch ein echtes Modell belegt
PlattformausführungmacOS-Sandbox und Systemschnittstellen laufen tatsächlich in der vorgesehenen Umgebung; fehlende Abhängigkeiten oder übersprungene Tests gelten nicht als ErfolgDass alle Systemversionen, Berechtigungskombinationen und Apps kompatibel sind
Endgültiges InstallationspaketEingefrorene Abhängigkeiten, Frontend-Ressourcen, Authentifizierung, echter WebSocket-Handshake und Helper werden mit dem Paket ausgeliefertDass Abschlussquoten und Interaktionsqualität sämtlicher realer Aufgaben geprüft wurden
Bewertung realer AufgabenFestgelegte Modelle, Aufgaben, Freigaben und Prüfregeln; mehrere Durchläufe mit gespeicherten Erfolgen und FehlschlägenDass eine kleine Stichprobe die allgemeine Erfolgsquote abbildet oder eine generelle Überlegenheit gegenüber anderen Produkten beweist
Abnahme des exakten Artefakts auf realer HardwareDas benannte Distributionspaket durchläuft die Kette auf echten Geräten mit tatsächlichen Berechtigungen und DienstenDass ein benachbarter Build oder ein Simulator alle Hardwareprüfungen dieses Distributionspakets ersetzen kann

Die Zuverlässigkeitsarbeit im September 2026 stellte beispielsweise 30 feste Verträge ohne externe Modellkosten bereit. Dabei wurden Speicher-, Abbruch-, Artefakt-, Backup- und Berechtigungscode tatsächlich ausgeführt, allerdings mit deterministischen Provider-Doubles. Das sind Belege für technische Verträge, keine 30 Ende-zu-Ende-Aufgaben mit echten Modellen. Spätere kostenpflichtige Bewertungen gehören zu einer anderen Belegebene und dürfen nicht in dieselbe Erfolgsquote eingehen.

Tests müssen auch belegen, dass sie tatsächlich ausgeführt wurden. Die macOS-CI von v0.1.63 wertet JUnit-Berichte aus und verlangt, dass 60 festgelegte Plattformfälle tatsächlich laufen und keiner übersprungen wird. Die Python- und Rust-Seiten von Hands verwenden gemeinsame Vertragsbeispiele, beide Bridge-Seiten gemeinsame Protokollvektoren. Für wichtige Schutzmaßnahmen beschädigen Mutationstests vorübergehend die Regeln und prüfen, ob die Tests fehlschlagen. So lassen sich Fälle erkennen, die nur die sichtbare Implementierung bestätigen, ohne das Verhalten wirksam abzusichern.

Technische Verträge und Modellqualität unterscheiden; Anzahl der Plattformfälle und Prüfung auf übersprungene Tests; Regressions- und Mutationstests für Quellenprüfung.

Release-Validierung muss an Quellcode und Artefakt gebunden sein

Quellcode und CIBackend / Frontend / macOS
Zugangsdatenprüfung der ganzen Historie
Prüfung desselben SHAZu veröffentlichender Commit
Passende erfolgreiche CI
Build und SignaturSPA, Python, helpers
App und Installationspaket
InstallationsabnahmeNotarisierung, staple, Gatekeeper
Echter Start mit isolierter Konfiguration
Verteilung und UpdatesRelease und Update-Manifest
Signatur des Update-Artefakts

Die Fresh-install-Prüfung startet die App mit einem isolierten, neuen HOME und prüft Authentifizierung, den echten WebSocket-101-Handshake, Frontend-Ressourcen, OCR und Helper. Ein HTTP-200-Ergebnis des Health-Endpunkts allein genügt nicht: Frühere Pakete konnten trotz laufendem HTTP-Dienst überhaupt keine Chatverbindung herstellen.

Das Release v0.1.63 entspricht Commit 9bbb6ad6: Die CI auf main war beim ersten Versuch erfolgreich (Run 40502155919; das Pushen des Tags startete keinen eigenen CI-Lauf); Quellcodeprüfung, Build und Release-Schritt des Release-Workflows (Run 40505601007) waren erfolgreich; das DMG wurde zur Notarisierung angenommen und mit dem Ticket versehen, Gatekeeper akzeptierte es. Die Fresh-install-Prüfung der ausgelieferten App ergab 92 bestanden, 0 fehlgeschlagen, einschließlich Hands-Start und Bridge-Selbsttest. (0.1.61 und 0.1.62 bestanden jeweils mit 89 von 89: Läufe Run 38498094628 und Run 39114206588. 0.1.53 benötigte wegen einer reihenfolgeabhängigen Testschwankung einen zweiten CI-Versuch; 0.1.54 behob die Ursache – Tests, die eine gemeinsame Datenbanksitzung durchsickern ließen – und ergänzte eine Schutzprüfung, die jeden Test mit diesem Verhalten scheitern lässt.)

Die Belege zur Interaktion auf echter Hardware stammen aus einem anderen, ausdrücklich benannten Build.Im Notes-Test erstellte ein Hintergrundjob über Hands eine Notiz und las sie zurück. Die erste Freigabekarte konnte nach 36 Sekunden Wartezeit noch fortgesetzt werden. Die Dateiumbenennung erfolgte mit mv, ohne das Finder-Fenster zu bedienen. Diese Tests nutzten ein früheres Build-only-Paket aus Commit 43751254, das sich vom veröffentlichten Commit nur in Versionsnummer und Dokumentation unterscheidet. Es hat nicht denselben SHA wie die endgültige Veröffentlichung. Die Versionshinweise von 0.1.60 legten außerdem offen, dass das exakte endgültige DMG vor der Veröffentlichung nicht manuell installiert und vollständig durchgespielt wurde. Installationsprüfungen und der Notes-Praxistest des früheren Builds sind daher getrennt darzustellen.

Der eigene Test von 0.1.63 vor dem Release verfehlte zwei Hürden, und die Notes sagen das. Neun Aufgaben, je drei Läufe, auf DeepSeek und auf Claude, mit eingeschaltetem „Nur bei riskanten Befehlen fragen“: Die Aufgabe „einen anderen Weg finden nach einem abgelehnten Löschen“ bestand auf Claude 0 von 3 (in 0.1.62 3 von 3), weil ein Löschen per Name nach dem Wechsel in den Arbeitsordner absichtlich ohne Karte lief, da „Diesen Zug rückgängig machen“ die Dateien zurückbringen kann; und die Aufgabe „drei Folgebearbeitungen an einem Dokument“ bestand auf DeepSeek 1 von 3 und auf Claude 0 von 3, weil die Prüfung einen auf unter 60 % seiner Länge gekürzten Abschnitt verlangt und die Aufgabe nur darum bittet, ihn kürzer zu machen (die Prüfung blieb bestehen). Die ausgelieferte Voreinstellung, vor jedem neuen Befehl zu fragen, ist nicht das, was diese Runden ausführten. Ergebnisse dieser Art zeigen Schwachstellen auf; sie sind kein Ranking.

Release Notes zu 0.1.63; Release-Pipeline; Installationsprüfung; Paketierung und Signatur.

Daten realer Aufgaben: Vergleichsergebnisse und Schwächen bewahren

Die Bewertung von 0.1.51 am 3. Oktober 2026 verwendete deepseek-v4-pro im Vergleich mit Hermes in derselben Versuchsrunde. Vier Aufgabentypen wurden jeweils dreimal ausgeführt. „Abnahme bestanden“ bedeutet checker score=3 und ist nicht mit dem Laufstatus done gleichzusetzen. Kosten und Zeit sind Mittelwerte aus den drei Läufen je Typ einschließlich Fehlschlägen; die Kosten basieren auf dem damaligen Nebentarif. Die Zeit reicht vom Beginn der ersten bis zum Ende der letzten Modellanfrage. Sie ist weder die Ende-zu-Ende-Dauer der gesamten Aufgabe noch reine Modellrechenzeit.

AufgabeArslan: Abnahme bestanden / 3Hermes: Abnahme bestanden / 3Mittlere Kosten und Modellaufrufspanne: Arslan / HermesAussage dieser Belege
Erinnerungen3/32/3$0.025, 76 s / $0.058, 142 sBesseres Ergebnis in dieser Runde; weiterhin sehr kleine Stichprobe
Tabelle zur Stellenrecherche1/33/3$0.167, 313 s / $0.093, 160 sLücken bei Ergebnisanzahl und Vollständigkeit der Recherche
Apple-Finanztabelle3/33/3$0.041, 77 s / $0.026, 36 sBeide bestehen; beim Vergleich sind Anfragespanne und Kosten geringer
Download-Ordner aufräumen3/33/3$0.053, 113 s / $0.046, 100 sGleiche Anzahl bestandener Abnahmen

Diese Versuche helfen, Verbesserungsmöglichkeiten zu erkennen, rechtfertigen aber keine allgemeine Produktrangliste. Modell, Aufgabe, Umgebung und Freigabepolitik beeinflussen das Ergebnis. In dieser Runde war zudem das Guthaben zwischenzeitlich aufgebraucht; die Läufe wurden anschließend fortgesetzt. Vier fehlgeschlagene Anfragen ohne Kosten wurden aus dem zur Zeitmessung verwendeten usage log entfernt; das ursprüngliche Protokoll blieb erhalten. Die öffentlichen Versuchsaufzeichnungen dokumentieren diese Rahmenbedingungen, die bei der Auswertung mitberücksichtigt werden sollten.

Auch Versionsvergleiche erfordern Zurückhaltung: Die Erinnerungsstichprobe stieg von 1/3 in 0.1.49 auf 3/3 in 0.1.50; in dieser Phase wurden Wiederherstellungswege und Kontextzustand verbessert. Zwischen den Versionen änderten sich jedoch mehrere Dinge. Die gesamte Differenz lässt sich deshalb nicht streng einem einzigen Prompt oder Modul zuschreiben.

Versuchsmethode und Ablauf für 0.1.51; Zusammenfassung der vier Aufgaben; Zwischenbewertung der Wiederherstellungswege.

Auch Modellbewertungen müssen geprüft werden

Bei der Kalibrierung der Quellenprüfung in 0.1.41 entstanden zu 13 Berichten 14 Hinweise: 1 korrekt, 2 grenzwertig und 11 falsch; zugleich blieben zwei vorab registrierte bekannte Fehler unerkannt. Die Funktion blieb deshalb standardmäßig abgeschaltet. Ein weiteres Modell aufzurufen ergibt nicht automatisch einen zuverlässigen Faktenprüfer. Ein gültiges Format und vorhandene Anker garantieren keine berechtigte Kritik.

Die Validierung des Erfahrungslernens in 0.1.52 zeigt eine andere Grenze: Nach einer abgelehnten AppleScript-Aktion wurde die Erfahrung gespeichert, abgerufen und beim nächsten Versuch direkt EventKit gewählt. Das belegt einen Einfluss der Erfahrung auf die Ausführung. Nachfolgende Skriptänderungen und Prüfungen verursachten jedoch zusätzliche Aufrufe; eine Beschleunigung wurde nicht gemessen. Um die Effizienzsteigerung durch die Erfahrung selbst zu beurteilen, sind gepaarte Wiederholungen derselben Aufgabe mit und ohne Erfahrung nötig. Die damalige Aufzeichnung weist ausdrücklich darauf hin, dass dieser faire Geschwindigkeitsvergleich noch nicht durchgeführt wurde.

Belastbarere Qualitätsaussagen erfordern vorab festgelegte Aufgaben, Ergebnisse und Prüfmaßstäbe, Aufzeichnungen zu Modell und Konfiguration, Aufrufspuren, tatsächlichen Kosten und Fehlerursachen sowie unabhängige menschliche Bewertungen zur Kalibrierung der Modellnoten. Formal ungültige Bewertungen, nicht ausgeführte Prüfungen und nicht verfügbare Belege müssen ihren eigenen Status behalten. Sie dürfen nicht für eine schönere Zusammenfassung als bestanden zählen.

Öffentliche Kalibrierungsergebnisse der Quellenprüfung; Belegte und unbelegte Aspekte des Erfahrungslernens; Bewertungsbedingungen für belastbarere Qualitätsaussagen.

13 / Technische WeiterentwicklungVon vorhandenen Fähigkeiten zu verlässlicheren Ergebnissen

Arslan verfügt über drei Grundlagen: Ausführung, fortlaufende Aufgaben und Gedächtnis. Als Nächstes ist zu prüfen, ob diese Fähigkeiten auch in komplexeren Situationen konsistente Zustände und verlässliche Ergebnisse ermöglichen und dabei die Kontrolle beim Nutzer belassen. Die folgende Grafik trennt vorhandene Implementierungen, noch zu validierende Bereiche und mögliche technische Weiterentwicklungen. Sie dient der technischen Diskussion und ist keine terminierte Veröffentlichungszusage. Das Kapitel gibt den Stand von v0.1.63 wieder; was für 0.1.64 geplant ist, ist als geplant gekennzeichnet, nicht als gebaut.

Für 0.1.64 geplant (nur ein Plan, nicht gebaut; aus dem freigegebenen Plan für 0.1.64): Zuerst eine Sandbox für Befehle, Python und installierte Werkzeuge, die standardmäßig alles verweigert. Danach kommt „Nur bei riskanten Befehlen fragen“ zurück. Anschließend ein optionaler Modus „Auto“, in dem ein prüfendes Modell einen Teil der Karten beantwortet: Er ist standardmäßig aus, erscheint nur, wenn er vorab festgelegte Mindestwerte erreicht, und genehmigt nie etwas, das die Sandbox verlässt, etwas nach außen sendet oder ins Netz geht. Es gäbe fünf Modi, pro Unterhaltung neben dem Eingabefeld gewählt: Planen, Bei jedem Schritt fragen, Automatisch bearbeiten, Voller Zugriff und Auto; die Einstellungen behielten nur die Vorgabe für neue Unterhaltungen. Geplante Aufgaben dürften wieder nur lesende Befehle ausführen. Bis dahin fragt jeder neue Befehl zuerst, und geplante Aufgaben führen keine Befehle aus. Eine Seite, die gemerkte Antworten auflistet und rückgängig macht, und eine Einstellung für erlaubte Ordner werden erwogen, stehen aber nicht im Plan. Die Notes zu 0.1.63 nennen außerdem zwei Korrekturen für bekannte Grenzen: Ein Löschen nach einem Ordnerwechsel im selben Befehl wird fälschlich als innerhalb des Arbeitsordners behandelt, und eine einzeilige Änderung in einer langen Datei läuft über das Terminal statt über das Bearbeitungswerkzeug.

Entwicklungsbild für Arslans Ergebnislieferung Implementiert · v0.1.63Noch zu validierenPerspektiven · ohne Termin AusführenEin Loop, Dateien, Terminal, Web, HandsStreaming, Kurswechsel, Werkzeugrückgaben Geräteübergreifend fortsetzeniOS-App-Release, EndzustandsabgleichVerteilung und Gesamtkette prüfen Mehr reale Aufgaben abschließenVollständige Recherche, QuellenprüfungRegressionen mit festen Aufgaben prüfen Fortlaufend arbeitenJobs, Dollar-Limit, Zug rückgängig, FortsetzenDauerbetrieb, Zeitpläne, Vorschläge Wiederherstellung konsolidierenReplay, Freigabe, Endzustand, CacheNeustarts und Reihenfolgefehler prüfen Belegbare WiederherstellungStabile IDs, Crash-Tests, EffektabgleichRetry-/Fortsetzungsgrenzen offenlegen ErinnernPräferenzen, Rechnernotizen, RAG, PraxisHerkunft, Rechte, Vorschläge, Widerruf Lerneffekt weiter validierenErfahrungen werden abgerufen und befolgtTempo- und Kostenvorteil noch unbelegt Kontrollierte LernvergleicheGleiche Aufgabe mit/ohne ErfahrungenErfolg, Kosten, falsche Rechte prüfen In jeder Phase: sichtbar, autorisierbar, stoppbar und nachvollziehbarArbeitsbereich und Systemrechte / Ausführungsbelege / Budgets und Kosten / Datenkontrolle / CI zum Quellstand, PaketabnahmeProduktziel: vom Nutzerwunsch zum gelieferten Ergebnis; Wirkung zählt mehr als die Zahl der Funktionen oder Versionen.

Abbildung 4 · Entwicklungsbild. Textfassung: Ausführung, fortlaufende Aufgaben und Gedächtnis als vorhandene Grundlagen → geräteübergreifende Funktion und Zuverlässigkeit validieren → reale Erfolgsquoten, Wiederherstellungsverträge und kontrollierte Lernexperimente als empfohlene Schwerpunkte. Die Empfehlungen sind keine Zusagen bereits verfügbarer Funktionen.

Ergebnisse bei realen Aufgaben

Ein fester Aufgabensatz sollte die Vollständigkeit der Suche, den Zusammenhang zwischen Zitaten und Schlussfolgerungen, die Nutzbarkeit von Dateien, die tatsächliche Wirkung von Systemaktionen und einen ehrlichen Abschluss bei Fehlschlägen prüfen. Vorhandene Vergleiche haben Schwächen bei Rechercheaufgaben aufgezeigt, und der Test von 0.1.63 vor dem Release (neun Aufgaben, je drei Läufe, auf DeepSeek und Claude) verfehlte zwei seiner eigenen Hürden: einen anderen Weg finden nach einem abgelehnten Löschen (Claude 0 von 3, weil ein Löschen innerhalb des Arbeitsordners mit „Nur bei riskanten Befehlen fragen“ ohne Karte läuft) und drei Folgebearbeitungen an einem Dokument (DeepSeek 1 von 3, Claude 0 von 3). Bevor weitere Werkzeuge hinzukommen, sollte geklärt werden, an welcher Stelle etwas nicht gefunden, nicht vollständig gelesen, nicht geprüft oder nicht korrekt geliefert wurde. Das hilft gezielter, die Abschlussquote zu verbessern.

Wiederherstellung und Konsistenz über Gerätegrenzen

Netzwerkwiederholungen, doppelte Nachrichten, App-Neustarts und Abbrüche durch Nutzer können gleichzeitig auftreten. Weitere Prüfungen können sich auf stabile fachliche IDs, den Schutz endgültiger Zustände vor alten Nachrichten, das Verhalten nach abgebrochenen Freigaben und die Prüfung unklarer Seiteneffekte konzentrieren. Gezielte Abstürze und negative Protokollfälle sollen klären, was automatisch verarbeitet werden kann und wann erneut eine Bestätigung des Nutzers erforderlich ist. Ein Teil ist bereits ausgeliefert: Seit 0.1.63 wird ein Checkpoint gesichert, bevor eine Runde den Arbeitsordner erstmals ändert, und „Diesen Zug rückgängig machen“ stellt die Dateien wieder her und entfernt die Runde. Das ist begrenzt: Es sichert nur einen Ordner mit höchstens 20.000 Dateien und 5 GB (ohne Python-Umgebungen, node_modules, Build-Ausgaben und Python-Caches) und sagt sonst „Not saved“; es deckt nur den Arbeitsordner ab, nicht Wirkungen außerhalb davon.

Messbarer Nutzen des Lernens

Gespeicherte Erfahrungen sind erst der Anfang. Unter gleichen Aufgaben- und Modellbedingungen müssen Abschlussquote, Aufrufkosten, Zeitbedarf und Fehlverhalten wiederholt mit und ohne Erfahrungen verglichen werden. Ebenso ist zu prüfen, ob veraltete Erfahrungen korrigiert werden, ob externe Texte sie verfälschen können und ob gelöschte Erfahrungen weiterhin abgerufen werden.

Aufwand für Plattformen und Erweiterungen

Tauri stellt einen plattformübergreifenden Host bereit. Seatbelt, Vision, Accessibility, Apple Events und CloudKit haben jedoch plattformspezifische Eigenschaften. Eine Erweiterung auf andere Desktop-Systeme erfordert Ersatz und Validierung dieser Fähigkeiten; eine erfolgreiche Kompilierung für eine andere Plattform belegt noch keine vollständige Übertragung der Produktfunktionen. Mehr externe Werkzeuge bedeuten zudem mehr Zugangsdaten, Berechtigungen und Fehlermöglichkeiten.

Diese technischen Perspektiven beruhen auf vorhandenen Implementierungen und Testergebnissen. Maßgeblich für konkrete Prioritäten und Termine sind spätere offizielle Versionshinweise.

14 / GlossarVon Fachbegriffen zur konkreten Implementierung

Die Begriffe unterscheiden verschiedene Mechanismen. Die folgenden Tabellen erklären sie knapp und ordnen sie Arslans Implementierung zu. Historische Mechanismen sind ausdrücklich gekennzeichnet.

KI und Kontext

BegriffEinfach erklärtVerwendung in Arslan
LLMGroßes Modell zum Verstehen und Erzeugen von SpracheStammt von einem vom Nutzer eingerichteten Anbieter; Arslan stellt die Anwendung und das Ausführungssystem bereit
AgentAusführungsprozess, der anhand von Ergebnissen den nächsten Schritt bestimmtModell aufrufen, Werkzeuge ausführen, Ergebnisse prüfen, fortfahren oder abschließen
OrchestratorKoordinator, der verschiedene Fähigkeiten zusammenführtKoordiniert Modell, Kontext, Werkzeuge, Berechtigungen und Aufgabenstatus
Tool callingStrukturierte Anforderung eines Werkzeugs durch das ModellWerkzeugname und JSON-Parameter werden vor der Ausführung validiert
Native tool protocolDas offiziell vom Anbieter definierte Format für Werkzeugnachrichten verwendenOrdnet tool call ID, Ergebnis und Fortsetzung des Reasonings korrekt einander zu
TrajectoryStrukturierter Verlauf der Interaktion zwischen Modell und WerkzeugenOpenAI-kompatible Anbieter nutzen native history; andere Provider behalten ihre eigenen Pfade
Context windowInformationsumfang, den das Modell bei einem Aufruf sehen kannNicht sämtliche Verläufe, Erinnerungen und langen Ausgaben passen unbegrenzt hinein
CompactionÄlteren Kontext in eine begrenzte Zusammenfassung verdichtenBegrenzt den Anfrageumfang und erhält aktuelle Inhalte; löscht nicht das ursprüngliche Gespräch
RAGZuerst relevante Unterlagen finden, dann das Modell antworten lassenSucht Ausschnitte aus importiertem Wissen und liefert deren Quellen mit
FTS5Volltextsuche von SQLiteFindet Wortübereinstimmungen und ermöglicht Dokumentensuche auch ohne Vektoren
EmbeddingBedeutung von Text in Zahlenvektoren umwandelnHilft, unterschiedlich formulierte Inhalte mit ähnlicher Bedeutung zu finden
Cosine similarityVergleichen, wie ähnlich die Richtungen von Vektoren sindEine Methode zur Ähnlichkeitsberechnung bei semantischer Suche
RRFErgebnisse mehrerer Suchverfahren anhand ihrer Rangfolge zusammenführenVerbindet FTS- und Vektorranglisten, ohne verschieden skalierte Punktwerte direkt zu mischen
SkillWiederverwendbare Anleitung zur VorgehensweiseSKILL.md mit optionalen Skripten und Referenzen; kein zusätzliches Modell
MCPStandardschnittstelle zwischen Agent und externen WerkzeugenBindet externe Fähigkeiten über stdio oder HTTP an; die Anwendung muss weiterhin Freigaben kontrollieren. Seit 0.1.63 läuft ein Werkzeug, das sein Server als nur lesend kennzeichnet, ohne Karte, ein zerstörerisches fragt jedes Mal, und die übrigen fragen einmal pro Unterhaltung
On-demand toolsWerkzeuge, die nicht mit jeder Anfrage gesendet, sondern bei Bedarf nachgeschlagen werdenSeit 0.1.63 sind selten genutzte Werkzeuge und MCP-Werkzeuge nicht in jeder Anfrage enthalten; das Modell findet sie (find_tools) und ruft sie (use_tool) unter ihrem echten Namen mit denselben Freigaben auf
StreamingEine Antwort anzeigen, während das Modell sie schreibtSeit 0.1.63 für OpenAI-kompatible Anbieter, Claude und Gemini; bricht ein Stream auf halbem Weg ab, bleibt, was Sie gesehen haben, und die Antwort wird als unterbrochen gekennzeichnet. Prüfungen, die die Antwort früher zurückgehalten haben, ergänzen nun danach eine Korrektur
SteeringEine Aufgabe umlenken, während sie läuftSeit 0.1.63 erreicht eine während einer Antwort getippte Nachricht diese bei ihrem nächsten Schritt; eine Nachricht, die gesendet wird, während die Schlussantwort geschrieben wird, läuft direkt danach
Dollar limit per taskEine Obergrenze für die Modellausgaben einer AufgabeSeit 0.1.63 standardmäßig eingeschaltet: 2 $ pro Chat-Antwort oder Hintergrundaufgabe, Abschluss bei etwa zwei Dritteln; nur Modelle mit bekanntem Preis zählen; änderbar unter Einstellungen › Hintergrund
BYOKDer Nutzer bringt seinen eigenen Modell-API-Schlüssel mitDer Nutzer wählt den Anbieter und trägt die jeweiligen Modellkosten
Prompt injectionWebseiten- oder Werkzeuginhalte als neue Anweisungen an den Agent tarnenExterne Inhalte gelten als Daten; unbestätigte, extern beeinflusste Erfahrungen werden meist als Vorschläge behandelt. Das belegt keine vollständige Immunität
Learned practiceVorgehensweise, die aus einer Korrektur oder einem erfolgreichen Umweg festgehalten wird„AppleScript funktioniert auf diesem Rechner nicht; EventKit versuchen.“ Verändert keine Modellgewichte
Shadow modeEine Bewertung nur protokollieren, ohne das tatsächliche Verhalten zu verändernDie Bewertungsebene führt ihr Register für kleine Entscheidungen; die Schatten-Freigabeempfehlung für Befehlskarten wurde in 0.1.63 entfernt, und jede Karte wartet auf Ihren Klick
Held-out evaluationMit Aufgaben prüfen, die nicht zur Anpassung der Prompts verwendet wurdenHistorischer Entwurf der früheren Expertenentwicklung; kein fester Schritt jeder heutigen Gesprächsrunde

Softwarearchitektur, Zustand und Zuverlässigkeit

BegriffEinfach erklärtVerwendung in Arslan
SPAZwischen Ansichten und Zuständen innerhalb einer Web-Anwendung wechselnDer lokale Dienst liefert die statischen Ressourcen der React-Arbeitsoberfläche aus
SidecarHilfsprozess, der gemeinsam mit der Hauptanwendung startetDas lokale Python-Backend läuft neben Tauri
IPCKommunikation zwischen Prozessen auf demselben RechnerPipes und Unix socket; nicht alle Module kommunizieren über die Cloud
REST / HTTPMit einer Anfrage eine Ressource abrufen oder verändernSchnittstellen für Einstellungen, Verlauf, Aufgaben und Dateiverwaltung
WebSocketInformationen fortlaufend über eine bidirektionale Verbindung übertragenAntwortstreams, Werkzeugstatus, Freigaben und Fortschrittsereignisse
Async I/OWährend I/O-Wartezeiten die Ereignisschleife für andere Aufgaben freigebenPython asyncio, asynchrone APIs und Datenbankzugriffe; keine unbegrenzte Parallelisierung von CPU-Aufgaben
Schema / ContractKlare Vereinbarung über Eingaben, Ausgaben und zulässige ZuständePydantic, Werkzeugparameter und Verträge zur Aufgabenabnahme
State machineDen Fortschritt eines Ablaufs durch endlich viele Zustände beschreibenEtwa queued, running, waiting_user, verifying und succeeded
CheckpointFesthalten, wie weit die Arbeit ist, was erledigt wurde und was noch ausstehtWiederherstellung nutzt Verweise, Belege und Budgets; Seiteneffekte mit unbekanntem Ergebnis werden nicht blind wiederholt. Eine zweite Art seit 0.1.63: eine gesicherte Kopie des Arbeitsordners, die vor der ersten Änderung durch eine Runde angelegt wird und die „Diesen Zug rückgängig machen“ wiederherstellt (nur für einen Ordner mit höchstens 20.000 Dateien und 5 GB; sonst sagt das Rückgängig-Fenster „Not saved“)
AttemptEin einzelner Ausführungsversuch einer AufgabeWiederherstellung erzeugt einen neuen Versuch; alte asynchrone Ergebnisse dürfen dessen Zustand nicht überschreiben
Optimistic concurrencyVor dem Schreiben prüfen, ob die Daten noch der zuvor gelesenen Version entsprechenrow version und attempt ID verhindern, dass alte Ergebnisse einen Abbruch oder eine Aktualisierung überschreiben
IdempotencyWiederholte Anfragen sollen keine unbeabsichtigten doppelten Aktionen auslösenNachrichten-/Aufgaben-IDs verhindern Duplikate; unbekannte externe Wirkungen müssen zusätzlich geprüft werden
ACKDie Empfangsseite bestätigt: „Dieses Paket ist angekommen“Belegt weder den erfolgreichen Aufgabenabschluss noch eine wirksame Freigabe
Single-flightDieselbe Arbeit nicht erneut parallel starten, solange der vorherige Lauf noch läuftVerhindert, dass sich wiederholte Ausführungen geplanter Aufgaben aufstauen
BackoffNach Fehlschlägen die Abstände zwischen Wiederholungen vergrößernWartet bei Ratenbegrenzungen und Dienstfehlern, beachtet Retry-After; wiederholt Authentifizierungsfehler nicht blind
WALSQLite schreibt zunächst ein Protokoll, damit Lesen und Schreiben besser nebeneinander möglich sindLokale Datenpersistenz; gleichzeitige Schreibzugriffe bleiben begrenzt
MigrationEine alte Datenbankstruktur sicher auf eine neue umstellenExplizit versionierter Runner, Sicherung vor dem Upgrade, Ablehnung unbekannter Schemas
ProvenanceHerkunft einer InformationDokumentenquellen, Herkunft von Erinnerungen und reale Ausführungsspuren
ObservabilityBei Problemen erkennen können, was geschehen istVerknüpfung von Run/Step, Activity, usage, Fehlern und Artefakten

Betriebssystem, Sicherheit und Auslieferung

BegriffEinfach erklärtVerwendung in Arslan
Sandbox / SeatbeltDas Betriebssystem beschränkt die Ressourcen, auf die ein Prozess zugreifen darfBerechnungs- und Befehlssandbox haben unterschiedliche Regeln; Netzwerk- und Rückfallverhalten werden getrennt erläutert
Fail-closedAusführung verweigern, wenn die Schutzschicht nicht verfügbar istGilt für die standardmäßige Python-Sandbox und den Offline-Abschlusspfad; nicht pauschal für alle normalen Befehle
Accessibility treeVom System bereitgestellte Struktur von Fenstern, Schaltflächen, Texten und ähnlichen ElementenHands liest und findet Bedienelemente über diese Struktur, ohne Pixel in Screenshots erkennen zu müssen
TCCDas Datenschutz- und Berechtigungssystem von macOSBedienungshilfen, Mikrofon und Apple Events lassen sich nicht allein durch einen Schalter in der App freigeben
SSRFEinen Dienst dazu verleiten, unerlaubte interne Adressen aufzurufenWebextraktion und externe URLs benötigen Prüfungen von Ziel, Weiterleitungen und Netzwerkgrenzen
AEADVerschlüsselung, die Vertraulichkeit und Integrität des Inhalts zugleich schütztBridge verwendet ChaCha20-Poly1305; manipulierte Inhalte bestehen die Prüfung nicht
Key agreement / SignatureDas erste vereinbart Verschlüsselungsmaterial, das zweite prüft die Identität des AbsendersX25519 und Ed25519 erfüllen unterschiedliche Aufgaben und dürfen nicht gleichgesetzt werden
Replay protectionVerhindern, dass ein Angreifer alte Nachrichten erneut wirksam zustelltSignaturen, Empfängerprüfung, gleitendes Sequenznummernfenster und dauerhafte Deduplizierung wirken zusammen
CI / CDBuilds, Prüfungen und Verteilung automatisierenErfolgreiche CI muss zum zu veröffentlichenden SHA gehören; das fertige Paket wird zusätzlich geprüft
Contract testPrüfen, ob beide Seiten einer Schnittstelle denselben Vertrag einhaltenPython/Rust und Mac/iPhone verwenden gemeinsame positive und negative Testvektoren
Mutation testingSchutzlogik absichtlich beschädigen und prüfen, ob die Tests das erkennenBelegt die Aussagekraft bestimmter Assertions; kein bloß umbenannter Unit-Test
Code signingHerkunft der Software und Unverändertheit des Artefakts prüfenApp und eingebettete Helper benötigen korrekte Signaturen
Notarization / StapleApple prüft das Distributionspaket; anschließend wird das Ticket daran angeheftetUnterscheidet sich vom Signieren; das Ergebnis muss außerdem mit Gatekeeper geprüft werden
Fresh-install acceptanceEinen neuen Nutzer ohne Entwicklungsumgebung und Altdaten nachbildenPrüft Authentifizierung, WebSocket, Ressourcen und Helper des tatsächlichen Installationspakets

Das heutige System besteht überwiegend aus einem lokal geschichteten Monolithen und eigenständigen Helpern. SQLite und prozessinterne asynchrone Planung passen zur Installation und zum Betrieb eines persönlichen Desktop-Produkts. Die Begriffe sind in diesem Bereitstellungsmaßstab zu verstehen.

15 / Häufige FragenWas beim Einsatz und Verständnis von Arslan leicht verwechselt wird

Wie unterscheidet sich Arslan vom Chat auf der Website eines Modellanbieters?

Arslan ergänzt das Modell um lokale Dateien, Werkzeuge, Aufgabenstatus, Gedächtnis, Freigaben und Desktop-Integration. Das Modell beurteilt und erzeugt Inhalte; die Anwendung setzt Werkzeuganforderungen kontrolliert um und protokolliert die Ergebnisse. Ihr Nutzen hängt davon ab, ob dieser gesamte Ablauf konkrete Aufgaben abschließt.

Wird das Projekt von einer Person mit KI entwickelt?

Ja. Der Autor entwickelt Arslan eigenständig und fortlaufend mit KI-Unterstützung, auch Vibe Coding genannt. Das Produkt nutzt Open-Source-Frameworks, Komponenten Dritter und externe Modelle. Herkunft und Lizenzen sind in den jeweiligen Projektdokumenten vermerkt.

Bleibt alles auf dem eigenen Rechner?

Die primäre Datenspeicherung und die Koordination der Ausführung erfolgen lokal. Bei Cloud-Modellen, Suche, entfernten MCP-Diensten und ähnlichen Funktionen gehen die zugehörigen Anfragen an die jeweiligen Dienste. Für die Cloud-Nutzung von Erinnerungen gelten eigene Freigaben und Sensibilitätsregeln. Lokal ausgerichtet bedeutet nicht vollständig offline. Seit 0.1.63 sucht eine Claude-Unterhaltung über Anthropics eigene API mit Anthropics eigener Websuche. Eine Unterhaltung mit einem lokalen Modell sendet ihre Suchanfragen nie an die eigene Suche eines Anbieters; Tavily oder SearXNG, in den Einstellungen gewählt, können die einzige Suche oder eine Ersatzsuche sein, und ohne bewusste Wahl steht ein Best-Effort-Scraping von DuckDuckGo an letzter Stelle.

Kann ich das Modell wechseln oder ein lokales Modell anbinden?

Unterstützte Anbieter und kompatible Endpunkte lassen sich konfigurieren, darunter lokale Dienste mit OpenAI-kompatibler Schnittstelle. Ein erreichbarer Endpunkt belegt nur die funktionierende Übertragung. Werkzeugaufrufe, Bilder, Fortsetzung des Reasonings und Kontextlänge müssen ebenfalls vom Modell und dessen Adapterpfad unterstützt werden.

Warum beschreiben ältere Dokumente viele Experten, während heute nur ein Arslan zu sehen ist?

Das Produkt wurde auf einen gemeinsamen Ansatz konzentriert. 0.1.44 beendete die Erstellung und Einplanung von Experten, 0.1.46 schaltete die alte automatische Entwicklungsschleife ab, und 0.1.48 entfernte den vorgeschalteten Router. 0.1.63 löschte dann den Code aus der Expertenzeit, den keine Antwort mehr erreichen konnte (Anlegen von Experten, ihre Vorlagen und die Engine, die Evolutions- und Kurationsmaschinerie, die Recherchenprüfung und „Destillieren“ im Unterhaltungsmenü); von früheren Experten gestartete Aufgaben setzt Arslan fort, wenn sie wieder aufgenommen werden. Frühere Methoden lassen sich in Skills überführen; historische Daten bleiben kompatibel. Begrenzte, ausschließlich lesende Worker werden weiterhin für eigenständige Recherchen verwendet.

Sind Gedächtnis, Wissensbasis und Chatverlauf dasselbe?

Nein. Der Chatverlauf hält Gespräche fest; der Arbeitskontext wählt aktuelle Inhalte und Zusammenfassungen daraus aus. Das persönliche Gedächtnis speichert Präferenzen, Fakten und Regeln samt Herkunft und Berechtigungen. Die Wissenssuche findet relevante Ausschnitte in importierten Unterlagen. Speicherung, Abruf und Löschung haben jeweils unterschiedliche Bedeutungen.

Trainiert das Lernen aus Erfahrungen das Modell oder verschafft es ihm selbstständig mehr Rechte?

Nein. Der aktuelle Lernmechanismus speichert wiederverwendbare Vorgehensweisen und ruft sie in späteren Aufgaben ab. Er verändert weder die Gewichte des Basismodells noch die Ausführungsfreigaben. Vorhandene Aufzeichnungen zeigen, dass Erfahrungen erfasst, abgerufen und befolgt werden können. Allgemeine Geschwindigkeits- oder Kostenvorteile benötigen weitere kontrollierte Vergleiche.

Laufen alle Befehle in einer Sandbox ohne Netzwerk?

Nein. Die standardmäßige Python-Berechnungssandbox verweigert Netzwerkzugriffe. Die Arbeitsbereichssandbox des normalen Terminals lässt Netzwerkzugriffe in der Regel zu und besitzt ein eigenes Rückfallverhalten. Werkzeugberechtigungen, Befehlsrichtlinien, Systemrechte und Sandbox sind verschiedene Ebenen. Die Unterschiede erläutert das Sicherheitskapitel. Seit 0.1.63 zeigt jeder neue Terminalbefehl standardmäßig zuerst eine Karte („Nur bei riskanten Befehlen fragen“ ist eine ausdrückliche Wahl, die sagt, was sie übersieht), und geplante Aufgaben führen überhaupt keine Befehle aus: Ein solcher Schritt wird übersprungen und im Posteingang aufgeführt.

Was geschieht mit Aufgaben, wenn ich das Chatfenster schließe?

Verbindungen und Aufgaben werden getrennt verwaltet. Hintergrundjobs können weiterlaufen, solange der Anwendungsdienst läuft; ein geschlossenes Fenster bedeutet nicht zwangsläufig einen beendeten Prozess. Seit 0.1.63 bleibt lange Arbeit im Chat, statt automatisch in den Hintergrund verschoben zu werden, und nach zehn Minuten teilt eine Antwort mit, dass sie noch arbeitet. Wird der Dienst beendet oder geht der Mac in den Ruhezustand, kann die lokale Ausführung nicht fortgesetzt werden. Nach einem Neustart werden Unterbrechungen anhand der Aufzeichnungen geprüft und Aufgaben über unterstützte Wege ausdrücklich fortgesetzt.

Führt eine Wiederherstellung automatisch alle früheren Aktionen erneut aus?

Nein. Bei der Wiederherstellung müssen bereits ausgeführte Schritte und externe Wirkungen geprüft werden; unklare Seiteneffekte werden zuerst abgeglichen. Ausführungsversuche, Aktionsstatus, Checkpoints und Versionsbedingungen helfen zu verhindern, dass alte Ergebnisse neue Zustände überschreiben. Sie können jedoch nicht für sämtliche externen Systeme eine genau einmalige Ausführung garantieren.

Kann Hands jede Mac-App bedienen?

Die Kompatibilität hängt von den Accessibility-Strukturen der App, den Systemfreigaben und Arslans Aktionsregeln ab. Lesbare Bedienelemente belegen nicht, dass sämtliche fachlichen Aktionen sicher ausführbar sind. Sensible Schaltflächen und Tastendrücke lösen genauere Bestätigungen aus; manche Apps oder Bedienelemente werden möglicherweise nicht unterstützt. Seit 0.1.61 fragt Hands einmal, um eine App anzusehen und in ihr zu handeln (zuerst für diese Aufgabe); Löschen, Senden, Bezahlen und Absenden fragen weiterhin jedes Mal, ebenso das AppleScript-Werkzeug von Hands.

Kann das iPhone Aufgaben übernehmen, während der Mac ausgeschaltet ist?

Im Mac-Bridge-Pfad führt weiterhin der Mac die Aufgaben aus. Ist er nicht verfügbar, warten Nachrichten in iCloud. v0.1.53 lieferte die Mac-Seite der Bridge aus, und v0.1.54 machte sie bereit für die iPhone-App, und 0.1.61 ergänzte auf der Mac-Seite Dateien vom Telefon und laufende Unterhaltungen; die Release Notes beschreiben Arslan für iPhone 1.0 weiterhin als demnächst im App Store verfügbar, was nicht bedeutet, dass es dort ist. Auch eine Empfangsbestätigung auf dem Telefon bedeutet nicht, dass die Aufgabe abgeschlossen wurde.

Kann ich rückgängig machen, was Arslan mit meinen Dateien getan hat?

Teilweise. Seit 0.1.63 sichert Arslan einen Checkpoint, bevor eine Runde Ihren Arbeitsordner erstmals ändert, und „Diesen Zug rückgängig machen“ (unter ⋯ an der Antwort) stellt die Dateien wieder her und nimmt die Runde aus der Unterhaltung. Der Ordner wird nur gesichert, wenn er höchstens 20.000 Dateien und 5 GB umfasst (ohne Umgebungen, node_modules, Build-Ausgaben und Caches), und das Rückgängig-Fenster sagt „Not saved“, wenn es nicht sichern konnte. Es deckt den Arbeitsordner ab, nicht Wirkungen anderswo, etwa gesendete Nachrichten.

Kann ich verhindern, dass eine Aufgabe zu viel ausgibt?

Jede Chat-Antwort und jede Hintergrundaufgabe hält seit 0.1.63 standardmäßig bei 2 $ Modellausgaben an und beginnt bei etwa zwei Dritteln mit dem Abschluss. Ändern lässt sich das unter Einstellungen › Hintergrund › Dollar-Limit pro Aufgabe. Nur Modelle mit bekanntem Preis zählen dafür.

Kann ich den Kurs ändern, während Arslan arbeitet?

Ja, seit 0.1.63. Eine Nachricht, die im Mac-Fenster, auf dem iPhone oder per Halten-zum-Sprechen getippt wird, erreicht die laufende Antwort bei ihrem nächsten Schritt, und die noch nicht begonnenen Schritte werden übersprungen. Schreibt die Antwort bereits ihre Schlussantwort, läuft Ihre Nachricht direkt danach.

Bedeuten bestandene Tests, dass jede reale Aufgabe gelöst werden kann?

Tests gelten nur für ihre jeweiligen Bedingungen: Unit-Tests prüfen lokale Logik, Protokolltests die Übereinstimmung an Schnittstellen, Installationsprüfungen die Pakete und reale Aufgabenvergleiche die Leistung unter bestimmten Modell- und Aufgabenbedingungen. Modelle, Webseiten, Systemrechte und externe Apps können das Ergebnis verändern.

Warum lautet die Versionsnummer noch immer 0.1.x?

Das Projekt befindet sich noch in der fortlaufenden Entwicklungsphase vor v1. Mehr als fünfzig Versionsnummern spiegeln den bisherigen Weg wider. Für die Reife sind konkrete Fähigkeiten, Fehlerbehandlung, Testumfang und Veröffentlichungsstatus gemeinsam zu bewerten. Der vollständige Versionsanhang hält diese Unterschiede fest.

16 / VersionsanhangVollständiger Änderungsverlauf von 0.1.0 bis 0.1.63

Dieser Anhang umfasst die 64 Versions-Tags im stabilen Nummernformat von v0.1.0–v0.1.63 sowie den Vorschauzweig von 0.1.40 und die Betas von 0.1.59. Nach Abgleich der öffentlichen Veröffentlichungen am 2026-10-27 sind auf GitHub derzeit 63 stabile Releases und 6 Vorabversionen sichtbar, insgesamt 69. Für v0.1.39 existiert ein Versions-Tag, aber derzeit kein entsprechendes öffentliches Release.

Die neueste stabile Version v0.1.63 wurde nach Pekinger Zeit am 2026-10-27 um 22:26:31 veröffentlicht; der ursprüngliche UTC-Zeitpunkt ist 2026-10-27 um 14:26:31. Die folgende Tabelle verwendet einheitlich das Datum nach Pekinger Zeit. Abgesehen vom ausdrücklich gekennzeichneten Tag-Datum von v0.1.39 stammen alle Daten aus dem Release-Feld published_at; Commit-Daten ersetzen keine Veröffentlichungsdaten.

Versionsänderungen lassen sich nicht zu den heutigen Fähigkeiten aufsummieren. Die Tabelle beschreibt die damaligen Änderungen jeder Version. Die Expertenkoordination wurde in 0.1.44–0.1.48 stillgelegt; frühere Expertenmethoden können in Skills überführt werden. Auch der separate Vorleseschalter aus 0.1.32 wurde in 0.1.48 entfernt. Für das heutige Verhalten sind die Implementierung von 0.1.63 und ihre ausdrücklich genannten Grenzen maßgeblich.
Jedes Release, maßstabsgetreu2026-07-27 → 2026-10-27
AugSepOkt27 Julv0.1.0 · 2026-07-27 · 1,125 Commitsv0.1.1 · 2026-07-27 · 4 Commitsv0.1.2 · 2026-07-27 · 1 Commitsv0.1.3 · 2026-07-27 · 2 Commitsv0.1.4 · 2026-07-27 · 7 Commitsv0.1.5 · 2026-07-27 · 2 Commitsv0.1.6 · 2026-07-27 · 2 Commitsv0.1.10 · 2026-07-28 · 2 Commitsv0.1.7 · 2026-07-28 · 5 Commitsv0.1.8 · 2026-07-28 · 2 Commitsv0.1.9 · 2026-07-28 · 9 Commitsv0.1.11 · 2026-07-29 · 7 Commitsv0.1.12 · 2026-07-31 · 16 Commitsv0.1.13 · 2026-08-01 · 11 Commitsv0.1.14 · 2026-08-01 · 2 Commitsv0.1.15 · 2026-08-02 · 2 Commitsv0.1.16 · 2026-08-03 · 7 Commitsv0.1.17 · 2026-08-03 · 3 Commitsv0.1.18 · 2026-08-03 · 4 Commitsv0.1.19 · 2026-08-04 · 6 Commitsv0.1.20 · 2026-08-09 · 60 Commitsv0.1.21 · 2026-08-13 · 8 Commitsv0.1.22 · 2026-08-16 · 12 Commitsv0.1.23 · 2026-08-17 · 3 Commitsv0.1.24 · 2026-08-20 · 6 Commitsv0.1.25 · 2026-08-20 · 4 Commitsv0.1.26 · 2026-08-21 · 5 Commitsv0.1.27 · 2026-08-21 · 5 Commitsv0.1.28 · 2026-08-23 · 3 Commitsv0.1.29 · 2026-08-23 · 5 Commitsv0.1.30 · 2026-08-31 · 2 Commitsv0.1.31 · 2026-08-31 · 2 Commitsv0.1.32 · 2026-08-31 · 2 Commitsv0.1.33 · 2026-09-01 · 2 Commitsv0.1.34 · 2026-09-01 · 2 Commitsv0.1.35 · 2026-09-02 · 2 Commitsv0.1.36 · 2026-09-02 · 2 Commitsv0.1.37 · 2026-09-03 · 5 Commitsv0.1.38 · 2026-09-14 · 18 Commitsv0.1.39 · 2026-09-14 · 3 Commits · nur Tag, kein öffentliches Releasev0.1.40-beta.3 · 2026-09-20 · Vorabversionv0.1.40-beta.5 · 2026-09-23 · Vorabversionv0.1.40-beta.6 · 2026-09-23 · Vorabversionv0.1.40 · 2026-09-26 · 267 Commitsv0.1.41 · 2026-09-27 · 6 Commitsv0.1.42 · 2026-09-28 · 9 Commitsv0.1.43 · 2026-09-30 · 4 Commitsv0.1.44 · 2026-09-30 · 4 Commitsv0.1.45 · 2026-09-30 · 3 Commitsv0.1.46 · 2026-09-30 · 3 Commitsv0.1.47 · 2026-09-30 · 12 Commitsv0.1.48 · 2026-10-01 · 13 Commitsv0.1.49 · 2026-10-02 · 22 Commitsv0.1.50 · 2026-10-03 · 17 Commitsv0.1.51 · 2026-10-03 · 11 Commitsv0.1.52 · 2026-10-03 · 13 Commitsv0.1.53 · 2026-10-06 · 60 Commitsv0.1.54 · 2026-10-08 · 13 Commitsv0.1.55 · 2026-10-08 · 29 Commitsv0.1.56 · 2026-10-09 · 12 Commitsv0.1.57 · 2026-10-09 · 21 Commitsv0.1.58 · 2026-10-09 · 14 Commitsv0.1.59-beta.2 · 2026-10-10 · Vorabversionv0.1.59-beta.3 · 2026-10-10 · Vorabversionv0.1.59-beta.4 · 2026-10-10 · Vorabversionv0.1.59 · 2026-10-11 · 17 Commitsv0.1.60 · 2026-10-11 · 90 Commitsv0.1.61 · 2026-10-14 · 148 Commitsv0.1.62 · 2026-10-18 · 22 Commitsv0.1.63 · 2026-10-27 · 361 Commitsv0.1.0v0.1.63 · neueste

Release · Höhe = Commits seit dem vorigen Tag (logarithmisch)Vorabversionnur Tag, kein öffentliches Releaseneueste

Zeige auf eine Linie für Version, Datum und Commits; Klick öffnet das Release.

VersionPekinger ZeitVeröffentlichungsstatusWesentliche Änderungen
v0.1.632026-10-27Stabiles ReleaseMitten in der Antwort umlenken, Antworten beim Schreiben, einen Zug rückgängig machen
Jeder neue Terminalbefehl fragt standardmäßig zuerst, und geplante Aufgaben führen keine Befehle aus; eine während einer Antwort getippte Nachricht erreicht diese bei ihrem nächsten Schritt; Antworten werden gestreamt, während sie geschrieben werden (OpenAI-kompatible Anbieter, Claude, Gemini); bis zu vier aufeinanderfolgende Lesevorgänge laufen gleichzeitig; „Diesen Zug rückgängig machen“ stellt den Arbeitsordner aus einem Checkpoint wieder her; Dateien kommen als Anhänge zurück, auch auf dem iPhone; zuerst die eigene Suche des Modells; weniger Werkzeuge in jeder Anfrage; bei MCP-Werkzeugen wird danach gefragt, was sie tun; ein Limit von 2 $ pro Aufgabe; der Server der Desktop-App abgeriegelt; der Code aus der Expertenzeit entfernt (12.514 Produktzeilen weniger als in 0.1.62). Die Notes nennen, was auf 0.1.64 verschoben wurde, und zwei Hürden vor dem Release, die verfehlt wurden.
v0.1.622026-10-18Stabiles ReleaseLange Befehle werden fertig, weniger „braucht Ihre Prüfung“, MCP-Werkzeuge können keinen Chat mehr brechen
Ein Korrektur-Release. Ein Terminalbefehl läuft so lange, wie er angefordert hat (standardmäßig 2 Minuten, höchstens 10), und ein Zeitlimit behält, was er ausgegeben hat; „braucht Ihre Prüfung“ nur, wenn eine Aktion außerhalb des Mac eine Spur hinterlassen haben könnte und Arslan das nicht beurteilen kann; MCP-Werkzeugbeschreibungen werden für Anthropic, OpenAI-kompatible Anbieter und Gemini umgeformt, und ein Werkzeug, das ein Anbieter dennoch ablehnt, wird weggelassen, statt die Antwort scheitern zu lassen; osascript und shortcuts run in den gängigen Terminalschreibweisen fragen jedes Mal; das Schreiben einer Datei folgt nie einem Link aus dem Arbeitsordner hinaus. Korrigiert zwei Zeilen der Notes zu 0.1.61.
v0.1.612026-10-14Stabiles ReleaseEine Freigabekarte überall, MCP-Server, die sich selbst starten, Claude funktioniert wieder
Modelle ab Claude Opus 4.7 bekommen keinen 400-Fehler mehr für eine Einstellung temperature, die sie ablehnen (sie wird nur an Modelle gesendet, die sie akzeptieren, und wird entfernt und gemerkt, wenn ein Anbieter eine optionale Einstellung nicht mehr akzeptiert); jeder MCP-Server, den Sie eingeschaltet haben, startet im Hintergrund (höchstens vier gleichzeitig) mit einem Zustand, den die Seite Capabilities und das Modell gemeinsam lesen; dieselbe Freigabekarte im Chat, im Posteingang, in der Island und auf dem iPhone, mit Einmal oder Für diese Aufgabe, In diesem Gespräch, Immer und Nein … mit einer Anmerkung, 30 Minuten zum Antworten, und dass die Zeit abläuft, ist kein Nein; iPhone-Dateien, die auf dem Mac unter Inbox/iPhone gespeichert werden, und laufende Unterhaltungen auf dem Telefon; Webseiten, die hinter einem Fake-IP-Proxy lesbar sind, mit Seitenabrufen, die sich selbst benennen.
v0.1.602026-10-11Stabiles ReleaseHands v2: Mac-Apps eher so bedienen, wie der Nutzer es täte
Ein Bild des einen Fensters, in dem Hands arbeitet (nie der ganze Bildschirm, nie gespeichert); Stapel, direkte Menüauswahl und im Hintergrund geöffnete Apps; eine Karte für mehrere Apps und dauerhaft erlaubte vertrauenswürdige Apps, während Löschen, Senden, Bezahlen und Absenden weiterhin jedes Mal nachfragen; den Vordergrund für etwa eine Sekunde ausleihen und einen anderen Schreibtisch besuchen (beides abschaltbar) sowie den Bildschirm für bis zu 30 Minuten übernehmen – das nur nach einem Ja des Nutzers; eine neue Ersteinrichtung; das Aufheben der Kopplung auf dem iPhone entfernt es auch auf dem Mac.
v0.1.592026-10-11Stabiles ReleaseEin Chat, der mithält, in der Sprache des Nutzers antwortet, und Arbeit, die als erledigt zählt
Eine lange Antwort ist nicht mehr „Interrupted“, und eine zweite Nachricht wartet, bis sie an der Reihe ist; Arslan antwortet in der Sprache, in der der Nutzer schreibt; Hintergrundarbeit, die ihre Aufgabe erfüllt hat, zählt als erledigt (Ordner werden auf der Festplatte geprüft, gelesene Dateien mitgezählt); „Desktop, Documents, Downloads: Off“ sperrt diese Ordner auch für Befehle; eine Freigabe, die angefragt wird, während Arslan nicht im Vordergrund ist, wartet, statt die Runde scheitern zu lassen. Vorausgegangen sind vier Betas.
v0.1.582026-10-09Stabiles ReleaseLesbare Antworten, Dateien zum Öffnen, jedes beliebige Modell
Was Arslan getan hat, steht als eine unaufdringliche Zeile unter der Antwort, die sich zu einfachen Sätzen aufklappen lässt; geschriebene Dateien kommen als Karten zurück; eine Arbeitsfläche (Task, Files, Browser) mit einer Leseansicht für Text, Tabellen, Bilder, PDF und HTML in der Sandbox; jedes Modell jedes Anbieters pro Unterhaltung, mit „Set as default“ und einem Kontextring; eine Etappe wird nicht mehr abgeschlossen, solange Prüfpunkte offen sind.
v0.1.572026-10-09Stabiles ReleaseWachsende Fähigkeiten
Braucht ein Schritt etwas, das Arslan nicht kann, durchsucht es die MCP Registry, GitHub und geprüfte Skill-Bibliotheken, fragt per Karte nach, installiert fest versioniert ohne Code zur Installationszeit, prüft die Installation, führt sie in einer standardmäßig sperrenden Sandbox aus, testet sie einmal und wiederholt den Schritt. Discover, „Arslan found“ und ein Dossier pro Fähigkeit auf der Seite Capabilities; GitHub-Skills auf einen Commit festgelegt.
v0.1.562026-10-09Stabiles ReleaseProjekte in zwei Ebenen
Ein Board (Idea, Shaping, Doing, Done) für alle Projekte und Etappen für jedes einzelne, ohne Modell aus dem Projekttyp entworfen. Arslan hakt Prüfpunkte anhand von Dateien, Aussagen des Nutzers und abgeschlossenen Ausführungen ab; der Abschluss einer Etappe ist ein Vorschlag, Done und Dropped entscheidet der Nutzer. Hands führt jede Anfrage höchstens einmal aus und meldet ehrlich „sent, not confirmed“.
v0.1.552026-10-08Stabiles ReleaseEin Erscheinungsbild für alles, was fragt
Alle Karten, Dialoge und Hinweise folgen einem gemeinsamen Design; Karten warten in einer gemeinsamen Warteschlange; ⌘⏎ erlaubt, Esc lehnt ab. Island v2 beantwortet Karten, außer bei riskanten Schritten, die sich in Arslan öffnen. Der Posteingang sammelt, was auf eine Entscheidung wartet; die Einstellungen sind auf sieben Bereiche verteilt; das Gedächtnis ist eine einzige Seite; Capabilities erscheinen als Schalter; Arslan kennt seine eigene Version.
v0.1.542026-10-08Stabiles ReleaseBereit für Arslan auf dem iPhone, strengeres Terminal-Gate
Freigaben per Touch ID zählen; koppelt sich dasselbe iPhone erneut, ersetzt es seinen alten Eintrag; das Entfernen eines Telefons löscht, was in iCloud für es wartet; die Einstellungen zeigen Connecting…/Connected. Das Terminal-Gate prüft jeden Befehl einer Kette, verlangt für „Nicht mehr fragen“ die Abdeckung aller getroffenen Regeln, gibt das Zugriffstoken nur an Aufrufer heraus, die es bereits besitzen, und hält Hintergrundaufgaben in der Sandbox. Die iPhone-App ist weiterhin als demnächst im App Store verfügbar angekündigt.
v0.1.532026-10-06Stabiles ReleaseArslan Hands und die Mac-Seite der iPhone-Anbindung
Ein eigenständiger macOS helper hält die Accessibility-Berechtigung, liest AX-Bäume und bedient Mac-Apps. Freigaben gelten pro App; sensible Aktionen benötigen jeweils Bestätigung und bleiben stoppbar und nachvollziehbar. Die Mac-Seite der Bridge ist enthalten; die iPhone-App wird als demnächst verfügbar bezeichnet.
v0.1.522026-10-03Stabiles ReleaseErinnerungen gelangen tatsächlich ins Modell
„Über dich“ und „Arslans Notizen zu diesem Mac“ bleiben im Kontext; frühere Gespräche sind durchsuchbar. Korrekturen und erfolgreiche Alternativwege werden zu widerrufbaren learned practices. Gewöhnliche Sandbox-Skripte verursachen weniger Unterbrechungen.
v0.1.512026-10-03Stabiles ReleaseIsland an der Notch und Befehlssandbox
Island zeigt Aufgaben und Fortschritt an der Notch, beim Überfahren mit der Maus den Plan, klappt auf, wenn eine Bestätigung nötig ist, und meldet, wenn die Arbeit erledigt oder gestoppt ist. run_command begrenzt Schreibzugriffe standardmäßig auf Arbeitsverzeichnis, temporäre Bereiche und Cache, schützt Schlüsseldateien und benötigt für Zugriffe außerhalb dieser Grenzen die Freigabe des Nutzers.
v0.1.502026-10-03Stabiles ReleaseKontext und geordnete Ergebnisübergabe
Ergänzt agent_status, update_plan, Alternativwege bei Fehlschlägen, Korrekturen übertriebener Fähigkeitsangaben, Linkprüfung und zuverlässigeres Schreiben von Dateien. Überarbeitet die Activity-Statistik.
v0.1.492026-10-02Stabiles ReleaseAusführungsschicht mit nativem Werkzeugprotokoll
OpenAI-compatible nutzt native tool calling und normgerechte Werkzeughistorien. Erhält reasoning, behandelt Kürzungen, wiederholt mit Backoff, verwendet einen Streaming-watchdog und speichert lange Ausgaben vollständig. Korrigiert die Suche.
v0.1.482026-10-01Stabiles ReleaseEinheitlicher Agent-Loop
Entfernt den vorgeschalteten router und die Experten-Ausführungskette; jede Nachricht geht direkt an den agent. Vereinheitlicht Standardarbeitsverzeichnis ~/Arslan, Terminal, automatische Browservorbereitung, Activity und Aufgabenarbeitsbereiche.
v0.1.472026-09-30Stabiles ReleaseProaktiver Posteingang
Erkennt deterministisch unerledigte Aufgaben, fehlgeschlagene Zeitpläne sowie Änderungen an Webseiten oder Verzeichnissen und erstellt belegte Inbox-Vorschläge. Hintergrundarbeit beginnt erst, wenn der Nutzer die Bearbeitung auswählt.
v0.1.462026-09-30Stabiles ReleaseKompakte Einstellungen und Ende unnötiger Kosten
Fixiert die Settings-Seitenleiste und lässt den rechten Bereich unabhängig scrollen. Beendet den Ressourcenverbrauch der Selbstentwicklung stillgelegter Experten im Hintergrund.
v0.1.452026-09-30Stabiles ReleaseBrowser- und Mac-Aktionen
Ergänzt eigene Browseraktionen, Shortcuts und AppleScript. Aktionen laufen im Hintergrund; Websites und Kurzbefehle fragen jeweils beim ersten Mal, AppleScript fragt jedes Mal.
v0.1.442026-09-30Stabiles ReleaseOne Arslan
Beendet die Erstellung und Einplanung von Experten. Frühere Experten können in Skills überführt werden; geplante Aufgaben führt einheitlich Arslan aus. Fehlgeschlagene Lesezugriffe beenden nicht mehr die gesamte Runde; Seiteneffekte mit unbekanntem Ergebnis werden nicht wiederholt.
v0.1.432026-09-30Stabiles ReleaseBeim Erreichen des Budgets geordnet abschließen
Hintergrundaufgaben erhalten eigene Budgets. An der weichen Grenze wird die Suche beendet und das vorhandene Ergebnis geliefert; ein harter Stopp erfolgt erst bei tatsächlichem Kontrollverlust.
v0.1.422026-09-28Stabiles ReleaseHintergrundarbeit und freie Unterhaltung
Verlagert längere Arbeiten in Hintergrundjobs, während der Chat nutzbar bleibt. Zeigt Abschlusskriterien, Fortschritt und Stop; bis zu 3 Jobs laufen parallel. Markiert nach Neustarts Unterbrechungen ausdrücklich.
v0.1.412026-09-27Stabiles ReleaseDauerhaft in der Menüleiste
Das Schließen des Fensters blendet es aus und lässt die Arbeit weiterlaufen. Ergänzt Desktop-Benachrichtigungen und verhindert automatischen Ruhezustand während der Ausführung. Quellenprüfung wird zu standardmäßig deaktivierten Vorschlägen nach dem Speichern.
v0.1.402026-09-26Stabiles ReleaseStabile Version des alltäglichen Rechercheassistenten
Führt Projektgedächtnis, Aufgabenfortsetzung, Belege zu Dokumentenquellen und Arbeitsbereiche in der stabilen Version zusammen. Prüft Backups vor Migrationen automatisch und bietet native manuelle Sicherungen.
v0.1.392026-09-14 (Tag-Datum)Tag vorhanden; derzeit kein öffentliches ReleaseFokussierte Desktop-Einstellungen (tag)
Verbessert das Layout der Desktop-Settings, die seitliche Navigation und die API-Key-Anzeige. Der Versions-Tag existiert, die Version fehlt jedoch in der derzeit öffentlichen Release-Liste. Das Datum ist das Tag-Datum.
v0.1.382026-09-14Stabiles ReleaseGrundlagen der Zuverlässigkeit
Stärkt die standardmäßig verweigernde Python-Sandbox, die eigenständige Berechnungslaufzeit, persistente Runs/Checkpoints/Artefakte, gemeinsame Ausführungsbudgets, recipes und Wiederherstellung. Ergänzt native Werkzeugaufrufe für Gemini sowie Authentifizierungsschutz für HTTP/WebSocket außerhalb von Loopback und eingeschränkte MCP-Umgebungen.
v0.1.372026-09-03Stabiles ReleaseHalbduplex-Sprachgespräch
Fügt Sprachgespräche hinzu, bei denen nach dem Sprechen gesendet wird. Korrigiert Mikrofonberechtigungen und die Sprachauswahl beim Vorlesen.
v0.1.362026-09-02Stabiles ReleaseZum Sprechen gedrückt halten
Führt Spracheingabe mit Aufnahme während des Gedrückthaltens ein.
v0.1.352026-09-02Stabiles ReleaseProxy-Erkennung in der installierten App
Korrigiert die Erkennung des System-Proxys durch die paketierte Anwendung.
v0.1.342026-09-01Stabiles ReleaseMigrationskorrektur
Behebt Migrationen, die als erfolgreich protokolliert, aber nicht tatsächlich abgeschlossen worden waren.
v0.1.332026-09-01Stabiles ReleaseVerbindungsstatus anhand realer Prüfungen
Vereinheitlicht den Provider-Verbindungsstatus und prüft ihn beim Start, damit Grün tatsächliche Nutzbarkeit bedeutet.
v0.1.322026-08-31Stabiles ReleaseSprachausgabe
Antworten können vorgelesen werden.
v0.1.312026-08-31Stabiles ReleaseGängige Ordner standardmäßig lesbar
Erweitert den standardmäßigen Lesezugriff auf Desktop, Documents und Downloads.
v0.1.302026-08-31Stabiles ReleaseAblehnungen des Modelldiensts erklären
Übersetzt Ablehnungen der drei Provider-Familien in verständliche Gründe.
v0.1.292026-08-23Stabiles ReleaseVorhandene Inhalte durchsuchen
Durchsucht vorhandene Ressourcen. Der Gedächtnis-Posteingang erhält Tastaturbedienung und Schutz vor versehentlichem Löschen. Hebt nach Validierung die Versionsobergrenzen für FastAPI/Starlette auf.
v0.1.282026-08-23Stabiles ReleaseEinschränkungen direkt bei der Ausstattung erklären
Erklärt am Ausstattungseinstieg, wenn ein Provider keine Werkzeuge aufrufen kann. Behebt sichtbar gewordene i18n-Schlüssel in mehreren Seitentiteln.
v0.1.272026-08-21Stabiles ReleaseNetzwerkerkennung und SSH
Ergänzt Netzwerkerkennung, Einträge für entfernte Rechner und SSH-Ausführung. Fragt vor jeder entfernten Ausführung nach und korrigiert die Zuordnung paralleler aiosqlite-Fehler.
v0.1.262026-08-21Stabiles ReleaseZeitgesteuerte Arbeit in natürlicher Sprache
Arslan kann geplante Aufgaben anlegen, die selbst angelegten Aufgaben auflisten und eine Checkliste führen, die es in festen Abständen erneut liest (standardmäßig aus). Ergänzt Freigabekarten für Zeitpläne, Ausgabebudgets und Fehlererklärungen.
v0.1.252026-08-20Stabiles ReleaseLokalen Arbeitsbereich lesen und schreiben
Liest den Arbeitsbereich und führt Schreibzugriffe nach Gesprächsfreigabe aus. Verbessert Erklärungen zu Discover-Ergebnissen.
v0.1.242026-08-20Stabiles ReleaseErweiterungsmanifest und sichtbare Ausstattung
Erkennt arslan.plugin.json, bestätigt die Ausstattung je MCP server, zeigt die Konfiguration des Erweiterungsautors an und informiert Arslan über die tatsächlich verfügbaren Fähigkeiten.
v0.1.232026-08-17Stabiles ReleaseAusführung läuft beim Chatwechsel weiter
Erhält laufende Antwortrunden durch turn journal und Wiedergabe beim erneuten Anbinden. Die paketierte App findet npx.
v0.1.222026-08-16Stabiles ReleaseOAuth und Ersteinrichtung
Verbindet Remote-MCP-OAuth, OpenRouter-Anmeldung und die vierstufige Ersteinrichtung. Der Status der Update-Prüfung wird sichtbar; die Desktop-Shell wird bei jedem push kompiliert.
v0.1.212026-08-13Stabiles ReleaseOberfläche für Modellplätze und Verbindungskorrekturen
Macht aufgabenspezifische Modellplätze bedienbar, korrigiert die Übertragung von Anthropic-Werkzeugschemas und unterstützt selbst gehostetes SearXNG mit SSRF-Beschränkungen.
v0.1.202026-08-09Stabiles ReleaseDrei Schlüsselzustände, Suche und Modellrollen
Unterscheidet nicht konfigurierte, entschlüsselbare und nicht entschlüsselbare Schlüssel und stabilisiert die Migration des Datenbank-Salts. Ergänzt eine Suche ohne API-Key als Rückfalloption, Suchquellen und -fehler, aufgabenspezifische Modellplätze und die Anzeige des antwortenden Modells.
v0.1.192026-08-04Stabiles ReleaseStartanimation und neues Gespräch
Spielt beim Laden des Backends eine Startanimation ab, startet in einem neuen Gespräch und entfernt ungenutzte leere Gespräche. Eine blob-URL behebt, dass das Startvideo in WebKit nicht abgespielt wurde; außerdem wurde eine Paketierungsprüfung korrigiert.
v0.1.182026-08-03Stabiles ReleaseOberflächenregressionen und bessere Einstellungen
Behebt selbstständig verschwindende Overlays und verbessert LLM-Layout, Systemdesign, OCR-Auswahl und zugehörige Hinweise.
v0.1.172026-08-03Stabiles ReleaseKontinuität früherer Experten-Testgespräche
Die Rückkehr zum Hauptgespräch zerstört das Expertentestgespräch nicht mehr. Frühere Experten können die letzte Runde des Hauptgesprächs als schreibgeschützten Hintergrund lesen.
v0.1.162026-08-03Stabiles ReleaseKonsistente Interaktion mit Overlays
Korrigiert über den Rand ragende Menüs und ihr Schließverhalten; verhindert unbemerkten Änderungsverlust in Bearbeitungsdialogen und korrigiert die Port-Erkennung.
v0.1.152026-08-02Stabiles ReleaseGespräche nach Neustart wiederherstellen
Erhält Gespräche über Neustarts hinweg und bewahrt nach Antworten auf Rückfragen den Einladungsstatus früherer Experten.
v0.1.142026-08-01Stabiles ReleaseEinstellungen neu ordnen
Gruppiert Settings neu und bündelt die Verbrauchssteuerung an einer Stelle.
v0.1.132026-08-01Stabiles ReleaseLeerzustände, Internationalisierung, Budget- und Kürzungskorrekturen
Behebt abgeschnittene Skill-Einbindung und die Budgetrückgabe bei paralleler Expertenentwicklung; ergänzt Leerzustände und Backend-Internationalisierung.
v0.1.122026-07-31Stabiles ReleaseFähigkeiten und Oberfläche ergänzen
Fügt eine Fähigkeitsmatrix, Brain-Suche, OCR-Sprachauswahl und eine Playwright-MCP-Vorlage hinzu. Begrenzt die Kosten der Entwicklungsbewertungen und ergänzt einen Funktionstest des Pakets.
v0.1.112026-07-29Stabiles ReleaseSystem-OCR als Rückfalloption
Verwendet macOS Vision OCR, wenn das visuelle Modell nicht lesen kann. Ergänzt Systemsprachfilter und Paketabnahme.
v0.1.102026-07-28Stabiles ReleaseDetails von Modellfehlern erhalten
Übernimmt den ursprünglichen Fehlertext des Providers in die Ausnahme, statt nur einen allgemeinen Fehlschlag zu melden.
v0.1.92026-07-28Stabiles ReleaseBilder und gescannte PDFs
Führt Bilder durch Eingabe, drei Provider-Familien, Chat und frühere Expertenpfade. Gescannte PDFs werden mit begrenzter Seitenzahl für visuelle Modelle gerastert.
v0.1.82026-07-28Stabiles ReleaseRegressionen bei Chat und Fenstern
Behebt drei Regressionen: leere Chats, funktionslose Ablagebereiche und nicht verschiebbare Fenster.
v0.1.72026-07-28Stabiles ReleaseWebSocket-Hotfix für das Installationspaket
Behebt fehlende WebSocket-Verbindungen, die Chats in der installierten App verhinderten. Zeigt das Einlesen nicht mehr als erfolgreich an, wenn die Datei nicht tatsächlich gespeichert wurde.
v0.1.62026-07-27Stabiles ReleaseLayout und Barrierefreiheit
Behebt überlaufende Skills, doppelte Überschriften, Namen interaktiver Elemente und Layoutdetails.
v0.1.52026-07-27Stabiles ReleaseNicht blockierender Update-Hinweis
Führt einen kompakten Update-Hinweis in einer Ecke statt eines blockierenden Dialogs ein und korrigiert den Zustand vor der Update-Prüfung.
v0.1.42026-07-27Stabiles ReleaseDesktop-Ausrichtung und Internationalisierung
Richtet die Installationsbeschreibung auf den Desktop aus. Das Backend liefert stabile Übersetzungsschlüssel; verbleibender fest codierter chinesischer Text wird entfernt und durch Regressionstests abgesichert.
v0.1.32026-07-27Stabiles ReleaseInstallation und schwebendes Fenster
Verhindert den direkten Start aus dem DMG; korrigiert Titelleiste und Berechtigungen zum Verschieben des schwebenden Fensters.
v0.1.22026-07-27Stabiles ReleaseUpdate-Prüfung wird tatsächlich aufgerufen
Ergänzt den Aufruf zur Update-Prüfung. Zuvor war die Update-Pipeline vorhanden, die Prüfung wurde jedoch nicht ausgelöst.
v0.1.12026-07-27Stabiles ReleaseChat beim ersten Start und Entwürfe
Behebt das Senden beim ersten Start, erhält Chatentwürfe, ordnet das Settings-Layout und ergänzt die Lokalisierung von Brain/Diagnostics.
v0.1.02026-07-27Stabiles ReleaseErste installierbare Desktop-Version
Verpackt die bisherigen Meta-Agent-, Gedächtnis-, Werkzeug- und Recherchefähigkeiten als Tauri-Desktop-App. Das Python-Backend wird als PyInstaller-Sidecar mitgeliefert; Signierung, Notarisierung, Installationsabnahme und Artefakte für automatische Updates werden eingerichtet.

Vorschauzweig 0.1.40: Eine Nummer bedeutet noch keine Veröffentlichung

Öffentliche Vorabversionen sind beta.3, beta.5 und beta.6. Für beta.1 und beta.2 bestehen Kandidaten-Tags und Aufzeichnungen. beta.4 wurde nicht separat veröffentlicht; seine Änderungen gingen in beta.5 ein. Die sechs Nummern stehen daher nicht für sechs öffentliche Vorabveröffentlichungen an Nutzer.

VorschauversionPekinger ZeitBelegstatusÄnderungen und Umfang
Aufzeichnung zu v0.1.40-beta.1— (kein öffentliches Veröffentlichungsdatum)Unveröffentlichter Kandidat; Tag erhaltenVorschaukandidat für personal companion
Projekt-/Gedächtnis-/Aufgabenarbeitsbereiche, anpassbare Seitenpanels, öffentliche Webseiten mit Lesezugriff und begrenzte Dateieingaben. Der beta.2-Entwurf nennt beta.1 ausdrücklich unveröffentlicht; dessen Cloud-Build wurde wegen eines AnyIO-Hinweises abgebrochen. Der tag blieb erhalten.
Aufzeichnung zu v0.1.40-beta.2— (kein öffentliches Veröffentlichungsdatum)Unveröffentlichter Kandidat; Tag erhaltenSicherheitspatch-Kandidat; CI verhindert Veröffentlichung
Korrigiert die festgeschriebene AnyIO-Version. Signierter Build und 65 fresh-install-Prüfungen bestanden, die CI desselben Tags jedoch nicht. Der Entwurf sagt ausdrücklich DO NOT PUBLISH. Ein erfolgreiches Paket ersetzt keine CI für denselben Commit.
v0.1.40-beta.32026-09-20Öffentliche VorabversionErste derzeit sichtbare öffentliche Vorschau
Vereint Arbeitsbereiche, nur lesendes Browsen, Dateiquellen, Ressourcen für sechs Sprachen und Sicherheitskorrekturen. Vor dem Signieren wird nun erfolgreiche exact-source CI zwingend verlangt. companion v1.2 ist damit weiterhin nicht abgeschlossen.
Aufzeichnung zu v0.1.40-beta.4— (kein öffentliches Veröffentlichungsdatum)Nicht separat veröffentlicht; Entwurf der HinweiseNicht separat veröffentlichte Klärung von Identität und Vertrauen
Settings zeigt die tatsächlich laufende Clientversion und den stabilen bzw. Vorschaukanal; eine kompakte Identitätsübersicht lässt sich kopieren. beta.5 enthält ausdrücklich die Änderungen der unpublished beta.4; eine separate Installation ist nicht nötig.
v0.1.40-beta.52026-09-23Öffentliche VorabversionRecherchebelege und Kontinuität
Kennzeichnungen für gelesen/ungelesen/teilweise gelesen, beschränkte Quellenlinks, Extraktion des aktuellen Word-Textes mit Offenlegung von Änderungen sowie Toleranz gegenüber beschädigten Trajektorien. Ein begrenzter Modell-pilot liegt vor, aber kein vollständiger Erfolg von 12/12.
v0.1.40-beta.62026-09-23Öffentliche VorabversionVisueller Feinschliff und App-Identität
Aktualisiert das Symbol und bietet mattes Orange oder reine Einfarbigkeit. Korrigiert WebKit-Rundungen beim Start und Typografie. Die Vorschau wird manuell installiert; der stabile automatische Update-Kanal bleibt unverändert.

beta.2 zeigt, weshalb der Veröffentlichungsstatus getrennt dokumentiert werden muss: Signierter Build und Installationsprüfungen bestanden, die CI des Tags jedoch nicht; der Entwurf untersagte die Veröffentlichung ausdrücklich. beta.3 ergänzte anschließend die Vorgabe, dass für den zu veröffentlichenden Commit erfolgreiche CI vorliegen muss. beta.5 erklärt zudem, dass die Änderungen der unveröffentlichten beta.4 enthalten sind und beta.4 nicht zuvor installiert werden muss.

Eine Änderung zurückverfolgen

Einträge stabiler Veröffentlichungen verlinken das jeweilige Release, v0.1.39 den Versions-Tag. Die Zusammenfassungen verbinden offizielle Versionshinweise mit den Commits zwischen benachbarten Tags. Funktionen, die nur in Planungsdokumenten stehen, werden nicht als ausgeliefert dargestellt. Für Implementierungsprüfungen sollte der jeweilige Tag oder Release-Commit fixiert werden; das veränderliche main eignet sich nicht zur Erklärung früherer Versionen.

Einige Release-Entwürfe im Repository enthalten weiterhin HOLD-Vermerke oder Hinweise aus der Zeit vor dem Build. Sie erklären den damaligen Prozess, reichen aber allein nicht zur Beurteilung aus, ob eine Version heute öffentlich veröffentlicht ist. Der öffentliche Release-Status und die abschließenden Validierungsaufzeichnungen müssen gemeinsam geprüft werden. „Derzeit kein öffentliches Release“ beschreibt den zum Zeitpunkt der Prüfung sichtbaren Stand; laut den Release-Dokumenten gab es für v0.1.39 und beta.2 einmal unveröffentlichte Release-Entwürfe, die nicht mehr in der Release-Liste stehen.

Alle öffentlichen Releases; Versions-Tags; CI-Prüfung desselben Commits in beta.3; Hinweis von beta.5 zur unveröffentlichten beta.4; Aktuelle stabile Version.

17 / Versionsbasis und QuellcodezugängeAussagen der Dokumentation bis zu ihren Belegen zurückverfolgen

Diese Dokumentation beschreibt die Implementierung einer festgelegten Version und gleicht öffentliche Veröffentlichungen, Git-Tags und -Historie, den Quellcode des Release-Commits, Architekturentscheidungen und öffentliche Abnahmeunterlagen miteinander ab. Frühere Entwürfe erklären die Entwicklung; Verhalten, das späterer Code ersetzt hat, ist als historisch gekennzeichnet. Die Angabe zur eigenständigen Entwicklung mit KI-Unterstützung stammt vom Autor.

GegenstandVerwendete Grundlage
Stabile Versionv0.1.63 · 9bbb6ad653b48f8c1e63c649b6f7217f074d6dad
VeröffentlichungszeitPekinger Zeit (UTC+8) 2026-10-27 22:26:31; UTC 2026-10-27 14:26:31
Stand der Prüfung2026-10-27. Datumsangaben verwenden standardmäßig Pekinger Zeit; Implementierungsstände in Git und Veröffentlichungsdaten der Releases werden getrennt ausgewiesen.
Entwicklung nach dem ReleaseÄnderungen auf main nach 9bbb6ad6 werden erst dann zu v0.1.63 gezählt, wenn ein Release sie ausliefert.
Versionsumfangv0.1.0–v0.1.63 umfasst 64 aufeinanderfolgende Tags und 63 derzeit öffentlich verfügbare stabile Releases; 0.1.39 ist gesondert als reine Tag-Version gekennzeichnet. Hinzu kommen die sechs Beta-Nummern von 0.1.40 und die vier Betas von 0.1.59 mit ihrem jeweiligen Veröffentlichungsstatus.

Die passende Implementierung zur Frage finden

  1. Wie sich das Projekt entwickelt hat: Öffentliche Releases; Frühester nachverfolgbarer Commit; One Arslan; Einheitlicher Loop.
  2. Wie das Programm startet: Desktop-Lebenszyklus; Einstiegspunkt des lokalen Dienstes; Agent-Einstiegspunkt; Werkzeugschleife.
  3. Wie Modelle angebunden werden: Adapter; Werkzeugtrajektorie; Ausführungsbudget.
  4. Wie Aufgaben gespeichert und wiederhergestellt werden: Aufgabenverträge; Zustand, Persistenz, Abgrenzung von Versuchen und Checkpoints; Abnahme; Ungültigmachen von Freigaben und Isolieren von Aufgaben nach einer Backup-Wiederherstellung.
  5. Wie Erinnerungen genutzt und gelöscht werden: Persönlicher Kontext; Dokumentensuche; Erfahrungen; Gedächtnispersistenz; Versionierte Migrationen.
  6. Wie Fähigkeiten erweitert werden: Integrierte Ausführer; Plugin-Manifest; MCP; Nur lesende Worker.
  7. Wer Berechtigungen durchsetzt: Terminalrichtlinie; Befehlssandbox; Ausführung und Rückfallverhalten; Hands helper.
  8. Wie sich das Telefon verbindet: Bridge-Protokoll; Bridge-Lebenszyklus; Abbildung von Ereignissen und Freigaben.
  9. Wie bewertet und veröffentlicht wird: 0.1.51: Vergleich realer Aufgaben; 0.1.52: Abnahme; Installationsabnahme; Release-Workflow.
  10. Open-Source-Herkunft und Rückmeldungen: Lizenz; Quellenangaben zu Drittanbietern; Richtlinie für Sicherheitsmeldungen; Projekt-Issues.

Diese Dokumentation beschreibt eine bestimmte Version und ihre überprüfbaren Grenzen. Für spätere Versionen sollten die jeweiligen Releases und der zugehörige Quellcode gemeinsam gelesen werden. Architekturrichtung, Entwurfsabsichten, Testumfang und offizielle Auslieferung werden getrennt erläutert, damit erkennbar bleibt, für welchen Bereich eine Aussage gilt.

Arslan-Dokumentation · Stand v0.1.63 (Quellcode 9bbb6ad653b4), geprüft am 2026-10-27. Wird mit jedem Release aktualisiert; die Quelldateien liegen im Ordner docs-site/ des Repositorys.