Messung · 13. Oktober 2026 · 80 Durchgänge
Qwen3.8-Flash-Next als Coding-Agent auf dem HP ZBook Ultra G1a
halogen 0.18.0 · HP ZBook Ultra G1a · OpenCode 2.0.26
Autoren
Maschine und Server
HP ZBook Ultra G1a
- SoC
- Ryzen AI Max+ PRO 395, Radeon 8060S
- Speicher
- 128 GiB LPDDR5X-8000 als Unified Memory
- System
- Ubuntu 24.04
- Server
- halogen-flash-server 0.18.0, Denkstufe xhigh
- Gewichte
v2.hgn, 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 %
4,6Minuten
Dauer eines Durchgangs Median, kürzester 0,8, längster 120 Minuten
1.244Token/s
Einlesen Median der Anfragen mit mindestens 2.048 neuen Token
59,4Token/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 im Arbeitsspeicher. 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.
| Projekt | in Verified | Python 3.9–3.11 | davon „<15 min fix“ | gezogen | Kennungen |
|---|---|---|---|---|---|
| Django | 231 | 82 | 32 | 15 | G01–G15 |
| sympy | 75 | 75 | 25 | 11 | G16–G26 |
| Sphinx | 44 | 44 | 22 | 10 | M01–M10 |
| pytest | 19 | 19 | 8 | 4 | M11–M14 |
| zusammen | 369 | 220 | 87 | 40 |
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.
Die beiden Durchgänge einer Aufgabe gehen immer gleich aus: 36 Aufgaben löst der Agent beide Male, 4 keinmal, keine nur einmal.
| Projekt | Aufgaben | Durchgänge gelöst | Aufgaben zweimal gelöst |
|---|---|---|---|
| Django | 15 | 28 / 30 | 14 |
| sympy | 11 | 20 / 22 | 10 |
| Sphinx | 10 | 16 / 20 | 8 |
| pytest | 4 | 8 / 8 | 4 |
03 · Fehlschläge
Vier Aufgaben, an denen der Agent scheitert
G01 (django__django-15127): Der Agent beendet beide Durchgänge nach 1,8 und 2,1 Minuten mit einem Patch, unter dem alle bisherigen Tests bestehen, der Test zum Fehler aber nicht.
G18 (sympy__sympy-15875): dasselbe Bild nach 27,8 und 39,8 Minuten und 68 bzw. 90 Schritten.
M08 (sphinx-doc__sphinx-7462): Von den zwei Tests zum Fehler besteht im ersten Durchgang keiner, im zweiten einer.
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 4,6 Minuten fertig. Django und sympy brauchen im Median 4,2, Sphinx und pytest 5,9 Minuten. Einzelne dauern viel länger: Die drei längsten brauchten 120,0, 59,7 und 39,8 Minuten. Alle 80 Durchgänge liefen in einem Stück und ohne Eingriff durch, in 13,0 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 12,8 Stunden. Davon entfallen 49 Minuten aufs Einlesen, 403 auf die Ausgabe und 313 auf Werkzeuge, vor allem die Tests, die der Agent selbst laufen lässt, und OpenCode. Das Tempo des Servers ändert sich mit wachsendem Kontext kaum.
| Prompt | Einlesen | Ausgabe |
|---|---|---|
| 0k–32k | 1.257 n=250 | 60,0 n=1.878 |
| 32k–64k | 1.183 n=48 | 58,2 n=652 |
| 64k–128k | 1.186 n=19 | 58,8 n=253 |
| 128k–256k | 1.338 n=3 | 58,5 n=26 |
05 · Verlauf
Kontext, Werkzeuge und Netz
Im Median braucht ein Durchgang 29 Schritte. Am tiefsten ging eine Sitzung mit 140.268 Token, gut die Hälfte des Kontextfensters von 262.144. Von 2.992 Werkzeugaufrufen scheiterten 19.
Ein Durchgang endete an der Zeitgrenze: G20 im ersten Durchgang, nach 120 Minuten und nur 49 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 |
|---|---|---|---|---|---|---|---|---|
G01django__django-15127 | 1 | nicht gelöst | 0/1 | 1/1 | 1,8 | 20 | 14.890 | 5.219 |
| 2 | nicht gelöst | 0/1 | 1/1 | 2,1 | 30 | 15.129 | 5.904 | |
G02django__django-16333 | 1 | gelöst | 1/1 | 87/87 | 5,2 | 44 | 35.161 | 14.439 |
| 2 | gelöst | 1/1 | 87/87 | 3,4 | 25 | 29.043 | 9.888 | |
G03django__django-15277 | 1 | gelöst | 2/2 | 158/158 | 11,0 | 18 | 26.356 | 2.857 |
| 2 | gelöst | 2/2 | 158/158 | 13,4 | 25 | 69.157 | 9.172 | |
G04django__django-15930 | 1 | gelöst | 1/1 | 88/88 | 24,3 | 142 | 140.268 | 70.021 |
| 2 | gelöst | 1/1 | 88/88 | 59,7 | 88 | 132.000 | 53.937 | |
G05django__django-16595 | 1 | gelöst | 1/1 | 37/37 | 10,7 | 52 | 52.645 | 30.559 |
| 2 | gelöst | 1/1 | 37/37 | 7,2 | 32 | 40.770 | 19.971 | |
G06django__django-17029 | 1 | gelöst | 1/1 | 43/43 | 3,3 | 25 | 18.111 | 8.891 |
| 2 | gelöst | 1/1 | 43/43 | 1,6 | 16 | 11.705 | 4.781 | |
G07django__django-16569 | 1 | gelöst | 2/2 | 111/111 | 2,2 | 24 | 15.622 | 6.281 |
| 2 | gelöst | 2/2 | 111/111 | 2,1 | 25 | 15.495 | 6.060 | |
G08django__django-15572 | 1 | gelöst | 1/1 | 10/10 | 4,3 | 32 | 27.246 | 12.423 |
| 2 | gelöst | 1/1 | 10/10 | 2,2 | 20 | 17.043 | 5.984 | |
G09django__django-15987 | 1 | gelöst | 1/1 | 52/52 | 3,5 | 29 | 22.200 | 10.402 |
| 2 | gelöst | 1/1 | 52/52 | 3,9 | 26 | 22.369 | 11.724 | |
G10django__django-16429 | 1 | gelöst | 4/4 | 21/21 | 2,9 | 21 | 49.914 | 7.575 |
| 2 | gelöst | 4/4 | 21/21 | 3,9 | 32 | 40.994 | 10.638 | |
G11django__django-16139 | 1 | gelöst | 1/1 | 86/86 | 13,7 | 68 | 77.877 | 37.559 |
| 2 | gelöst | 1/1 | 86/86 | 9,7 | 45 | 46.764 | 27.033 | |
G12django__django-15380 | 1 | gelöst | 1/1 | 133/133 | 3,4 | 20 | 25.812 | 10.210 |
| 2 | gelöst | 1/1 | 133/133 | 16,5 | 47 | 80.043 | 55.114 | |
G13django__django-15467 | 1 | gelöst | 1/1 | 62/62 | 4,8 | 39 | 31.889 | 13.077 |
| 2 | gelöst | 1/1 | 62/62 | 3,3 | 23 | 20.463 | 8.164 | |
G14django__django-15851 | 1 | gelöst | 1/1 | 8/8 | 1,4 | 14 | 12.657 | 3.907 |
| 2 | gelöst | 1/1 | 8/8 | 1,8 | 25 | 15.211 | 5.170 | |
G15django__django-15569 | 1 | gelöst | 2/2 | 242/242 | 6,0 | 29 | 35.581 | 17.584 |
| 2 | gelöst | 2/2 | 242/242 | 8,0 | 43 | 47.567 | 23.426 | |
G16sympy__sympy-16886 | 1 | gelöst | 1/1 | 42/42 | 0,8 | 10 | 8.934 | 2.157 |
| 2 | gelöst | 1/1 | 42/42 | 1,1 | 13 | 10.137 | 2.975 | |
G17sympy__sympy-24562 | 1 | gelöst | 1/1 | 105/105 | 6,3 | 23 | 26.796 | 15.075 |
| 2 | gelöst | 1/1 | 105/105 | 4,2 | 20 | 23.936 | 11.474 | |
G18sympy__sympy-15875 | 1 | nicht gelöst | 0/1 | 80/80 | 27,8 | 68 | 71.248 | 44.558 |
| 2 | nicht gelöst | 0/1 | 80/80 | 39,8 | 90 | 110.034 | 82.105 | |
G19sympy__sympy-24539 | 1 | gelöst | 1/1 | 62/62 | 5,7 | 22 | 16.022 | 5.820 |
| 2 | gelöst | 1/1 | 62/62 | 1,8 | 14 | 12.062 | 3.578 | |
G20sympy__sympy-16450 | 1 | gelöst, Zeitgrenze | 1/1 | 38/38 | 120,0 | 49 | 35.030 | 17.782 |
| 2 | gelöst | 1/1 | 38/38 | 14,3 | 35 | 50.338 | 34.858 | |
G21sympy__sympy-12481 | 1 | gelöst | 1/1 | 7/7 | 4,0 | 31 | 25.809 | 9.429 |
| 2 | gelöst | 1/1 | 7/7 | 4,3 | 22 | 25.979 | 12.329 | |
G22sympy__sympy-23534 | 1 | gelöst | 1/1 | 11/11 | 4,5 | 41 | 28.785 | 12.179 |
| 2 | gelöst | 1/1 | 11/11 | 2,9 | 34 | 19.220 | 7.536 | |
G23sympy__sympy-21847 | 1 | gelöst | 1/1 | 9/9 | 5,2 | 27 | 31.387 | 13.748 |
| 2 | gelöst | 1/1 | 9/9 | 2,7 | 17 | 20.391 | 6.867 | |
G24sympy__sympy-13372 | 1 | gelöst | 1/1 | 44/44 | 3,9 | 19 | 21.041 | 8.773 |
| 2 | gelöst | 1/1 | 44/44 | 3,8 | 24 | 23.396 | 8.449 | |
G25sympy__sympy-12096 | 1 | gelöst | 1/1 | 43/43 | 24,0 | 44 | 41.821 | 26.349 |
| 2 | gelöst | 1/1 | 43/43 | 29,9 | 58 | 56.292 | 35.769 | |
G26sympy__sympy-14711 | 1 | gelöst | 1/1 | 2/2 | 3,8 | 23 | 18.675 | 7.150 |
| 2 | gelöst | 1/1 | 2/2 | 4,5 | 18 | 20.089 | 7.392 | |
M01sphinx-doc__sphinx-9698 | 1 | gelöst | 1/1 | 45/45 | 4,9 | 31 | 22.290 | 7.581 |
| 2 | gelöst | 1/1 | 45/45 | 1,7 | 19 | 15.538 | 4.965 | |
M02sphinx-doc__sphinx-8269 | 1 | gelöst | 1/1 | 5/5 | 4,8 | 23 | 31.462 | 14.988 |
| 2 | gelöst | 1/1 | 5/5 | 6,7 | 37 | 41.891 | 20.792 | |
M03sphinx-doc__sphinx-7910 | 1 | gelöst | 1/1 | 16/16 | 8,8 | 34 | 39.804 | 27.993 |
| 2 | gelöst | 1/1 | 16/16 | 13,4 | 56 | 53.540 | 34.201 | |
M04sphinx-doc__sphinx-8595 | 1 | nicht gelöst, Testpatch nicht anwendbar | – | – | 2,3 | 31 | 17.572 | 6.542 |
| 2 | nicht gelöst, Testpatch nicht anwendbar | – | – | 8,2 | 45 | 31.446 | 11.828 | |
M05sphinx-doc__sphinx-10435 | 1 | gelöst | 1/1 | 74/74 | 4,8 | 25 | 27.438 | 13.627 |
| 2 | gelöst | 1/1 | 74/74 | 15,1 | 54 | 64.009 | 40.907 | |
M06sphinx-doc__sphinx-8475 | 1 | gelöst | 1/1 | 17/17 | 3,9 | 30 | 26.692 | 11.664 |
| 2 | gelöst | 1/1 | 17/17 | 3,6 | 24 | 26.765 | 10.740 | |
M07sphinx-doc__sphinx-8459 | 1 | gelöst | 1/1 | 17/17 | 5,8 | 54 | 50.903 | 15.936 |
| 2 | gelöst | 1/1 | 17/17 | 4,3 | 51 | 41.529 | 11.548 | |
M08sphinx-doc__sphinx-7462 | 1 | nicht gelöst | 0/2 | 49/49 | 15,2 | 43 | 60.699 | 39.410 |
| 2 | nicht gelöst | 1/2 | 49/49 | 11,4 | 53 | 47.728 | 25.778 | |
M09sphinx-doc__sphinx-7440 | 1 | gelöst | 1/1 | 12/12 | 16,2 | 71 | 75.983 | 35.674 |
| 2 | gelöst | 1/1 | 12/12 | 18,8 | 80 | 118.921 | 44.390 | |
M10sphinx-doc__sphinx-9367 | 1 | gelöst | 1/1 | 25/25 | 1,5 | 23 | 15.296 | 4.243 |
| 2 | gelöst | 1/1 | 25/25 | 4,0 | 22 | 17.016 | 4.903 | |
M11pytest-dev__pytest-7205 | 1 | gelöst | 10/10 | 16/16 | 2,8 | 30 | 21.718 | 8.098 |
| 2 | gelöst | 10/10 | 16/16 | 13,7 | 57 | 45.942 | 29.874 | |
M12pytest-dev__pytest-7982 | 1 | gelöst | 1/1 | 78/78 | 8,4 | 25 | 20.119 | 10.964 |
| 2 | gelöst | 1/1 | 78/78 | 2,7 | 17 | 18.540 | 8.178 | |
M13pytest-dev__pytest-7432 | 1 | gelöst | 1/1 | 77/77 | 13,1 | 19 | 44.471 | 33.862 |
| 2 | gelöst | 1/1 | 77/77 | 1,6 | 12 | 14.345 | 4.537 | |
M14pytest-dev__pytest-6202 | 1 | gelöst | 1/1 | 72/72 | 6,1 | 21 | 14.701 | 6.068 |
| 2 | gelöst | 1/1 | 72/72 | 8,9 | 33 | 26.025 | 13.017 |
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 neu; Kapitel 06 zeigt diesen Durchgang.