Ein lokaler Coding-Agent mit apfel
Eine Reihe über einen Coding-Agenten in Swift, dessen Sprachmodell vollständig auf dem eigenen Mac läuft — von apfel-CLI bis zur Xcode-Anbindung über MCP.
Jeder Apple-Silicon-Mac mit macOS 26 (Tahoe) bringt ein Foundation Model mit, das bisher nur Siri und ein paar Systemfunktionen nutzen. apfel öffnet dieses Modell als CLI und als OpenAI-kompatiblen Server. Diese Reihe baut darauf einen Coding-Agenten in Swift: Plan/Act/Observe-Loop, Tool-Calling, MCP-Anbindung, Hummingbird-Server, Integration mit Xcode 26.3 über das Model Context Protocol. Kein API-Key, kein Cloud-Endpunkt, keine Token-Abrechnung — aber auch kein Cloud-Tempo: zwei kritische Interludien (Art. 6 und Art. 11) ordnen ein, was das kleine on-device-Modell trägt und welche Plattform-Abhängigkeit der lokale Weg erkauft. Code lebt offen auf Codeberg, pro Artikel ein Tag zum Mitziehen. Zwölf Artikel plus Prolog.
- 0
Das Modell ist schon da — Prolog zum lokalen Coding-Agenten
Eine Reihe nimmt das Foundation Model in den Blick, das jeder Apple-Silicon-Mac mit macOS 26 mitbringt — und baut darauf einen Coding-Agenten in Swift, der lokal läuft.2. Jun 2026 - 1
apfel von der Kommandozeile
Wir installieren apfel, gehen die drei Modi (Prompt, Serve, Chat) durch, sehen wo das on-device-Modell trägt und wo es wackelt — Artikel 1 der Reihe „Ein lokaler Coding-Agent mit apfel".3. Jun 2026 - 2
Der Serve-Modus und das OpenAI-Protokoll
Wir starten apfel als lokalen OpenAI-kompatiblen Server, gehen alle Endpoints durch und sehen, wo das Protokoll von OpenAI abweicht — Artikel 2 der Reihe „Ein lokaler Coding-Agent mit apfel".3. Jun 2026 - 3
Der Swift-Client: erste Verbindung zum Modell
Wir legen ein Swift-Package an, bauen einen async HTTP-Client gegen apfel --serve und verarbeiten SSE-Streaming Token für Token — Artikel 3 der Reihe „Ein lokaler Coding-Agent mit apfel".4. Jun 2026 - 4
Tool-Calling verstehen: vom Schema zum Round-Trip
Wir bringen dem Agenten bei, Werkzeuge zu rufen — Tool-Definition im OpenAI-Schema, der Round-Trip aus Aufruf, Ausführung und Fortsetzung, und eine Tool-Abstraktion in Swift. Artikel 4 der Reihe „Ein lokaler Coding-Agent mit apfel".7. Jun 2026 - 5
Die ersten echten Werkzeuge: Dateisystem und Shell
Wir bauen die ersten Werkzeuge, mit denen der Agent etwas verändert, und sichern sie ab — Pfad-Sandbox, Bestätigungs-Gate, Diff vor dem Schreiben und Defense-in-Depth für die Shell. Artikel 5 der Reihe „Ein lokaler Coding-Agent mit apfel".7. Jun 2026 - 6
Der lokale Coding-Agent im Eval
Ein reproduzierbares Eval mit 15 Aufgaben in fünf Kategorien misst, wo das lokale Foundation Model als Coding-Agent überzeugt und wo es kippt. Mit Cloud-Stichprobe und einer eigenen Messung dessen, was das Modell über seinen eigenen Erfolg behauptet. Artikel 6 der Reihe „Ein lokaler Coding-Agent mit apfel".8. Jun 2026 - 7
Editieren, das funktioniert: Constrained Output statt Tool-Raten
Der naive Datei-Edit scheitert am kleinen Modell. Wir bauen den Agenten um diese Schwäche herum, mit Constrained Output und einem zweistufigen Edit-Workflow, und messen, wie viel sich zurückholen lässt. Artikel 7 der Reihe „Ein lokaler Coding-Agent mit apfel".8. Jun 2026 - 8
Die Agent-Schleife mit Done-Prüfung
Der naive Agent-Loop endet, wenn das Modell schweigt, und das ist nur eine Selbsteinschätzung. Wir bauen einen Loop, dessen Abbruch eine maschinelle Prüfung ist, mit Iterationslimit und Kontext-Budget als Schutzgrenzen. Artikel 8 der Reihe „Ein lokaler Coding-Agent mit apfel".9. Jun 2026 - 9
Die interaktive Terminal-Sitzung
Aus dem One-Shot-Kommando wird eine interaktive REPL-Sitzung. Der Schlüssel zur Testbarkeit ist die strikte Trennung von Render-Logik und Terminal-I/O. Artikel 9 der Reihe „Ein lokaler Coding-Agent mit apfel".10. Jun 2026 - 10
Werkzeuge, die der Agent nicht schreibt: MCP
MCP verschiebt das Schreiben von Werkzeugen aus dem Agenten zu eigenen Servern. Wir bauen einen kleinen MCP-Server, hängen ihn an apfel und messen, was MCP löst und was nicht. Artikel 10 der Reihe „Ein lokaler Coding-Agent mit apfel".11. Jun 2026