holistechlabsOpenCode · SWE-bench Verified
DEEN

Messung · 13. und 14. Oktober 2026 · 80 Durchgänge

Qwen3.8-Flash-Next als Coding-Agent auf dem Mac Studio M1 Ultra

sushi 1.2.1 · Mac Studio M1 Ultra · OpenCode 2.0.26

Autoren

Dipl.-Ing. Sören GebbertInstitut für holistische Technologieforschung GmbH Claude Code Opus 5.5Anthropic

Maschine und Server

Mac Studio M1 Ultra

SoC
Apple M1 Ultra, 20 CPU-Kerne, 64 GPU-Kerne
Speicher
64 GiB Unified Memory, davon bis 56 GiB für die GPU
System
macOS 26.2, Netzbetrieb
Server
sushi 1.2.1, MTP an, KV-Cache 8 bit, Denkstufe xhigh
Gewichte
beamster/Qwen3.8-Flash-Next-Sushi-2.6bpw, alle 512 Experten

Protokoll

40 Issues, zwei Durchgänge

Agent
OpenCode 2.0.26
Aufgaben
SWE-bench Verified, Stufe „<15 min fix“, zufällig gezogen aus Django, sympy, Sphinx und pytest
Grenzen
262.144 Token Kontext, 60 bzw. 120 Minuten
Netz
gesperrt bis auf den eigenen Server
Gewertet
mit den Tests der Aufgabe wie bei SWE-bench

72von 80

Durchgänge gelöst 90,0 %, 95-%-Bereich 80,0 bis 97,5 %

10,4Minuten

Dauer eines Durchgangs Median, kürzester 2,1, längster 120 Minuten

539Token/s

Einlesen Median der Anfragen mit mindestens 2.048 neuen Token

44,2Token/s

Ausgabe Median aller Anfragen, Denken eingeschlossen

01 · Aufbau

Zufällig gezogene Issues, offline, gewertet mit den Tests von SWE-bench

Der Agent bekommt ein Repository auf dem Stand vor der Reparatur und das Issue im Wortlaut, dazu einen Satz: Löse das Issue, du darfst Befehle und die vorhandenen Tests ausführen, höre auf, wenn du fertig bist. Die Tests, mit denen gewertet wird, bekommt er nicht. Die Abhängigkeiten sind installiert; erreichbar ist nur der eigene Sprachmodell-Server.

Die Aufgaben stammen aus SWE-bench Verified, und zwar aus der leichtesten Stufe: Issues, für die ein erfahrener Entwickler laut Datensatz weniger als 15 Minuten braucht. Infrage kommen die 87 Aufgaben dieser Stufe aus Django, sympy, Sphinx und pytest, die unter Python 3.9 bis 3.11 laufen. Daraus sind 40 zufällig gezogen, geschichtet nach Repository, mit festem Startwert. Ausgewählt ist nichts nach Lösbarkeit. Eine Sphinx-Aufgabe ließ sich in der Umgebung der Wertung nicht prüfen und ist durch die nächste gezogene ersetzt.

Gewertet wird wie bei SWE-bench: Der Patch, den der Agent im Arbeitsbaum hinterlässt, kommt auf einen frischen Stand, dazu die Tests der Aufgabe. Gelöst ist eine Aufgabe, wenn die Tests zum Fehler bestehen (FAIL_TO_PASS) und kein vorher bestehender Test fällt (PASS_TO_PASS). Die Wertung läuft ohne Docker in einer Python-Umgebung nach der Harness von SWE-bench in Version 4.1.0. Jede der 40 Aufgaben bestand dort vorab mit der Referenzlösung.

Einstellungen: Kontext bis 262.144 Token, Ausgabe bis 32.768 Token je Anfrage, Temperatur 1,0, top_p 0,95, Denkstufe xhigh, automatische Kompaktierung an, Prompt-Cache auf der SSD (bis 20 GB, zu Beginn geleert). Erst laufen alle 40 Aufgaben einmal, dann alle ein zweites Mal, in derselben Reihenfolge, mit einem Serverstart für alle Durchgänge. Nebenher läuft nichts.

Grundgesamtheit und Ziehung
Projekt in Verified Python 3.9–3.11 davon „<15 min fix“ gezogen Kennungen
Django231823215G01–G15
sympy75752511G16–G26
Sphinx44442210M01–M10
pytest191984M11–M14
zusammen369220 8740

02 · Ergebnis

72 von 80 Durchgängen gelöst

Der Agent löst 72 von 80 Durchgängen, also 90,0 %. Der 95-%-Bereich reicht von 80,0 bis 97,5 %; er ist über die Aufgaben gezogen, nicht über die Durchgänge, weil zwei Durchgänge derselben Aufgabe nicht unabhängig sind. Die Quote gilt für die 87 Aufgaben, aus denen gezogen wurde, nicht für SWE-bench Verified insgesamt.

35 Aufgaben löst der Agent in beiden Durchgängen, 2 in einem und 3 in keinem.

Gelöst je Projekt
ProjektAufgaben Durchgänge gelöst Aufgaben zweimal gelöst
Django1527 / 3013
sympy1121 / 2210
Sphinx1016 / 208
pytest48 / 84

03 · Fehlschläge

Drei Aufgaben, an denen der Agent scheitert, und zwei mit wechselndem Ausgang

G01 (django__django-15127): Der Agent beendet beide Durchgänge nach 4,6 und 8,6 Minuten mit einem Patch, unter dem alle bisherigen Tests bestehen, der Test zum Fehler aber nicht.

G03 (django__django-15277): Im ersten Durchgang gelöst nach 3,9 Minuten. Im zweiten endet der Agent nach 6,9 Minuten mit einem Patch, unter dem alle bisherigen Tests bestehen, die zwei Tests zum Fehler aber nicht.

G18 (sympy__sympy-15875): Im ersten Durchgang dasselbe Bild wie bei G01, nach 33,5 Minuten und 82 Schritten. Der zweite Durchgang erreicht nach 131 Schritten die Zeitgrenze von 120 Minuten; der Patch bis dahin besteht alle Tests.

M08 (sphinx-doc__sphinx-7462): Von den zwei Tests zum Fehler besteht im ersten Durchgang einer, im zweiten keiner.

M04 (sphinx-doc__sphinx-8595): Der Agent legt in beiden Durchgängen eine Testdatei an, tests/roots/test-ext-autodoc/target/empty_all.py, die auch der Testpatch der Aufgabe anlegt. Der Testpatch lässt sich deshalb nicht anwenden, und der Durchgang zählt als nicht gelöst.

04 · Zeit

Wie lange ein Durchgang dauert und wohin die Zeit geht

Die Hälfte der Durchgänge ist nach 10,4 Minuten fertig. Django und sympy brauchen im Median 8,8, Sphinx und pytest 12,8 Minuten. Einzelne dauern viel länger: Die drei längsten brauchten 120,0, 91,9 und 59,5 Minuten. Alle 80 Durchgänge liefen in einem Stück und ohne Eingriff durch, in 20,6 Stunden einschließlich der Wertung.

Jeder Schritt des Agenten ist eine Anfrage an den Server: Er liest den neuen Teil des Verlaufs ein, meist die Ausgabe des letzten Werkzeugs, und schreibt Denken und den nächsten Werkzeugaufruf. Die Durchgänge selbst dauerten zusammen 19,9 Stunden. Davon entfallen 159 Minuten aufs Einlesen, 697 auf die Ausgabe und 339 auf Werkzeuge, vor allem die Tests, die der Agent selbst laufen lässt, und OpenCode. Die Ausgabe bleibt mit wachsendem Kontext fast gleich schnell; das Einlesen ist bei 64k bis 128k um 8 % langsamer als unter 32k.

Token je Sekunde nach Länge des Prompts, Median; Einlesen nur Anfragen mit mindestens 2.048 neuen Token, n = Zahl der Anfragen
PromptEinlesen Ausgabe
0k–32k548 n=30744,7 n=2.002
32k–64k518 n=8343,9 n=976
64k–128k504 n=2942,8 n=413
128k–256k463 n=343,7 n=59

05 · Verlauf

Kontext, Werkzeuge und Netz

Im Median braucht ein Durchgang 36 Schritte. Am tiefsten ging eine Sitzung mit 146.869 Token, gut die Hälfte des Kontextfensters von 262.144. Von 3.591 Werkzeugaufrufen scheiterten 32.

Ein Durchgang endete an der Zeitgrenze: G18 im zweiten Durchgang, nach 120 Minuten und 131 Schritten. Der Patch, den der Agent bis dahin geschrieben hatte, besteht alle Tests und zählt deshalb als gelöst, wie bei SWE-bench.

Außer zum eigenen Server kam in keinem Durchgang eine Verbindung zustande. Die Sandbox des Betriebssystems sperrt jedes andere Ziel; eine Netzwache prüft das je Durchgang.

06 · Alle Zahlen

Alle 80 Durchgänge

Je Durchgang: Ergebnis der Wertung, Wandzeit, Schritte des Agenten, höchster Kontext der Sitzung und erzeugte Token einschließlich Denken. Aus dieser Tabelle sind alle Zahlen dieses Berichts gerechnet, das Tempo zusätzlich aus dem Protokoll des Servers.

Aufgabe Durchgang Ergebnis FAIL_TO_PASS PASS_TO_PASS Wandzeit (min) Schritte Kontext max. Token erzeugt
G01
django__django-15127
1nicht gelöst0/11/14,62420.9979.043
2nicht gelöst0/11/18,62443.71815.877
G02
django__django-16333
1gelöst1/187/877,03323.35213.407
2gelöst1/187/876,92533.82913.276
G03
django__django-15277
1gelöst2/2158/1583,91717.5127.205
2nicht gelöst0/2158/1586,93428.38513.015
G04
django__django-15930
1gelöst1/188/8812,34444.44325.104
2gelöst1/188/8822,38190.40841.640
G05
django__django-16595
1gelöst1/137/378,83236.74916.865
2gelöst1/137/3710,53940.71920.224
G06
django__django-17029
1gelöst1/143/4312,13839.38923.632
2gelöst1/143/4313,03846.67824.814
G07
django__django-16569
1gelöst2/2111/1115,43024.45210.164
2gelöst2/2111/1113,32617.3116.074
G08
django__django-15572
1gelöst1/110/1019,86064.49039.072
2gelöst1/110/105,91630.30211.959
G09
django__django-15987
1gelöst1/152/528,93835.44418.284
2gelöst1/152/524,32222.9108.886
G10
django__django-16429
1gelöst4/421/2110,038105.42913.045
2gelöst4/421/213,42035.7395.053
G11
django__django-16139
1gelöst1/186/8614,36057.52625.730
2gelöst1/186/8612,05341.64022.117
G12
django__django-15380
1gelöst1/1133/1338,52845.97516.689
2gelöst1/1133/1337,61930.90915.695
G13
django__django-15467
1gelöst1/162/627,64031.39212.239
2gelöst1/162/625,63129.37610.025
G14
django__django-15851
1gelöst1/18/82,81617.0625.007
2gelöst1/18/83,42518.3306.005
G15
django__django-15569
1gelöst2/2242/2426,53445.31711.600
2gelöst2/2242/2424,82121.6849.375
G16
sympy__sympy-16886
1gelöst1/142/422,61413.1405.094
2gelöst1/142/422,12012.4783.546
G17
sympy__sympy-24562
1gelöst1/1105/1055,72020.2309.001
2gelöst1/1105/10516,15353.96430.926
G18
sympy__sympy-15875
1nicht gelöst0/180/8033,58287.48053.254
2gelöst, Zeitgrenze1/180/80120,0131146.86996.403
G19
sympy__sympy-24539
1gelöst1/162/629,33632.42513.769
2gelöst1/162/629,73625.49911.268
G20
sympy__sympy-16450
1gelöst1/138/3814,53937.63915.923
2gelöst1/138/3859,58981.53248.965
G21
sympy__sympy-12481
1gelöst1/17/718,56780.83437.978
2gelöst1/17/723,68372.49938.339
G22
sympy__sympy-23534
1gelöst1/111/1110,42927.1979.124
2gelöst1/111/114,72023.1896.571
G23
sympy__sympy-21847
1gelöst1/19/910,33549.43319.856
2gelöst1/19/912,14654.78823.523
G24
sympy__sympy-13372
1gelöst1/144/4414,23133.44916.082
2gelöst1/144/445,12725.64210.357
G25
sympy__sympy-12096
1gelöst1/143/4391,99758.75333.282
2gelöst1/143/4324,92534.51519.944
G26
sympy__sympy-14711
1gelöst1/12/25,22622.4887.364
2gelöst1/12/224,72544.02520.317
M01
sphinx-doc__sphinx-9698
1gelöst1/145/453,11721.4535.017
2gelöst1/145/455,53439.7799.464
M02
sphinx-doc__sphinx-8269
1gelöst1/15/510,94646.04922.512
2gelöst1/15/511,52945.67424.370
M03
sphinx-doc__sphinx-7910
1gelöst1/116/1630,35986.25654.313
2gelöst1/116/1630,77886.56858.212
M04
sphinx-doc__sphinx-8595
1nicht gelöst, Testpatch nicht anwendbar––7,74031.19715.670
2nicht gelöst, Testpatch nicht anwendbar––12,86442.10022.323
M05
sphinx-doc__sphinx-10435
1gelöst1/174/7419,45356.06829.953
2gelöst1/174/7420,74261.32439.979
M06
sphinx-doc__sphinx-8475
1gelöst1/117/175,12726.2869.827
2gelöst1/117/174,82429.9299.317
M07
sphinx-doc__sphinx-8459
1gelöst1/117/1728,69895.28951.544
2gelöst1/117/1717,25665.46827.652
M08
sphinx-doc__sphinx-7462
1nicht gelöst1/249/4921,36469.79036.796
2nicht gelöst0/249/4911,24739.80321.036
M09
sphinx-doc__sphinx-7440
1gelöst1/112/1234,478107.70160.908
2gelöst1/112/1237,081109.31263.300
M10
sphinx-doc__sphinx-9367
1gelöst1/125/257,22923.9538.903
2gelöst1/125/258,04430.93214.301
M11
pytest-dev__pytest-7205
1gelöst10/1016/1620,17957.03534.970
2gelöst10/1016/167,43227.90214.560
M12
pytest-dev__pytest-7982
1gelöst1/178/7811,73034.70618.123
2gelöst1/178/7816,14547.13527.075
M13
pytest-dev__pytest-7432
1gelöst1/177/7713,45048.72926.625
2gelöst1/177/7712,94239.01821.463
M14
pytest-dev__pytest-6202
1gelöst1/172/723,62017.6376.645
2gelöst1/172/7213,13730.31114.212

07 · Grenzen

Was diese Messung nicht zeigt

Nur leichte Aufgaben. Die Quote gilt für die 87 Aufgaben der Stufe „<15 min fix“ aus vier Projekten, nicht für SWE-bench Verified insgesamt und nicht für schwierigere Issues. Neben veröffentlichte Werte für Verified lässt sie sich nicht stellen.

Bekannte Aufgaben. Issues und Lösungen von SWE-bench Verified sind öffentlich. Ob Qwen3.8-Flash-Next sie aus dem Training kennt, lässt sich hier nicht prüfen.

Nachgebildete Wertung. Gewertet wurde ohne die Docker-Images von SWE-bench, in einer Umgebung nach den Vorgaben der Harness 4.1.0.

Nur bestandene Tests. Ob ein gelöster Patch die Ursache trifft oder nur den getesteten Fall, sagt die Wertung nicht. Eine Beurteilung der Patches enthält dieser Bericht nicht.

Zwei Durchgänge. Bei Temperatur 1,0 kann ein dritter Durchgang anders ausgehen. Der Bereich der Quote berücksichtigt die Streuung über die Aufgaben, nicht die innerhalb einer Aufgabe.

Grenzen des Agenten. Begrenzt sind Kontext (262.144 Token) und Zeit: 120 Minuten für Django und sympy, 60 für Sphinx und pytest. Die Zahl der Schritte begrenzt nichts: 79 Durchgänge liefen mit einer Grenze von 150 Schritten, die keiner erreichte und die OpenCode vorher nicht anwendet. Der eine Durchgang, der sie erreichte, lief ohne Grenze und mit einem eigenen Start des Servers neu; Kapitel 06 zeigt diesen Durchgang.