<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://vheinitz.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://vheinitz.github.io/" rel="alternate" type="text/html" /><updated>2026-10-24T19:39:03+00:00</updated><id>https://vheinitz.github.io/feed.xml</id><title type="html">vheinitz</title><subtitle>Notizen zu KI, Automatisierung und Software-Engineering</subtitle><entry><title type="html">Drei Tage autonomer KI-Loop: Wie weit kommt eine KI ohne mich?</title><link href="https://vheinitz.github.io/2026/07/15/drei-tage-autonomer-ki-loop/" rel="alternate" type="text/html" title="Drei Tage autonomer KI-Loop: Wie weit kommt eine KI ohne mich?" /><published>2026-07-15T00:00:00+00:00</published><updated>2026-07-15T00:00:00+00:00</updated><id>https://vheinitz.github.io/2026/07/15/drei-tage-autonomer-ki-loop</id><content type="html" xml:base="https://vheinitz.github.io/2026/07/15/drei-tage-autonomer-ki-loop/"><![CDATA[<p>Ich wollte eine KI-Pause einlegen und den Computer ausnahmsweise nicht mit in den Urlaub nehmen. Die Claude-Max-Subscription sollte aber trotzdem etwas tun. Also schrieb ich – wiederum mit Hilfe von Pi + Claude – einen KI-Loop und startete ein Experiment: Wie weit kommt KI eigentlich selbständig?</p>

<p>Die Aufgabe: selbständige Weiterentwicklung bzw. Portierung einer realen Anwendung mit ca. 100 kLOC.</p>

<p>Der Loop sollte mit N Agenten zunächst die zehn nächsten TODOs festlegen. Entscheidungsgrundlage waren der Code der alten Software, eine Spezifikation, alte Dokumente, die bestehende Code-Basis und die Historie der KI-Sessions. Sollten die TODOs realen Code beitragen, schrieben M Agenten Unit-Tests und X Agenten den Code – anschließend wurde die beste Lösung ausgewählt.</p>

<p>Die Auswahl der besten Lösung – sei es für TODOs, Unit-Tests, Doku oder Code – läuft so: Nachdem die N Agenten mit ihrer Arbeit fertig sind, begutachten andere M Agenten die Lösungen und vergeben Noten samt Begründung. Danach liest ein unabhängiger Agent die M Beurteilungen und trifft die Entscheidung. Alle parallelen Arbeiten laufen mit Hilfe von Gits Work-Trees.</p>

<p>Einen Tag vor dem Urlaub war ich noch damit beschäftigt, den Loop zu optimieren. Und siehe da: Claudes Max-Subscription reicht bei solchen Experimenten hinten und vorne nicht aus. Ich hatte die Anzahl der parallelen Agenten auf jeweils drei konfiguriert – nach zwei bis drei Loops war das Max-Limit erreicht.</p>

<p>Also musste wieder Pi mit dem DeepSeek-Modell her. Jetzt trifft Claude nur noch die Entscheidungen, welche Lösung besser ist, und wählt aus N Vorschlägen nicht nur den besten aus, sondern versucht, alle guten Ansätze in den besten Vorschlag zu integrieren. Die Lösungsvorschläge macht Pi mit DeepSeek.</p>

<p>Zwei Tage lief mein Loop durch. Ich konnte ihn nur übers Handy anhand des Tokenverbrauchs beobachten, aber nicht eingreifen. Dann kam die Nachbarin die Fische füttern, wunderte sich, warum ein Laptop so viel Lärm macht – und zog den Stecker.</p>

<p>Gestern, nach dem Urlaub, startete ich den Loop wieder und ließ ihn die Nacht durchlaufen.</p>

<h2 id="die-bilanz-der-rund-drei-tage">Die Bilanz der rund drei Tage</h2>

<ul>
  <li><strong>260 Loop-Invocations</strong> (<code class="language-plaintext highlighter-rouge">runner.py</code>-Runs)</li>
  <li><strong>187 abgeschlossene Tasks</strong> – über die Pipelines <code class="language-plaintext highlighter-rouge">implement</code>, <code class="language-plaintext highlighter-rouge">write-tests</code>, <code class="language-plaintext highlighter-rouge">write</code> (docs), <code class="language-plaintext highlighter-rouge">design</code>, <code class="language-plaintext highlighter-rouge">fix-docs</code> und <code class="language-plaintext highlighter-rouge">decide</code>. Insgesamt liegen 260 Tasks in <code class="language-plaintext highlighter-rouge">docs/plan/done/</code> (73 davon stammen aus der Zeit davor). Neun liegen aktuell noch in <code class="language-plaintext highlighter-rouge">todo/</code>.</li>
  <li><strong>62 Runs hatten einen Stage-Failure</strong> (Build bzw. Tests eines Workers fehlgeschlagen oder Worker-Timeout) – alle haben sich selbst erholt, gemäß dem vorgesehenen Pfad „kein bestandener Worker → Lock freigeben, Task zum Retry in <code class="language-plaintext highlighter-rouge">todo/</code> belassen”. Kein einziger manueller Eingriff nötig.</li>
  <li><strong>148 neue <code class="language-plaintext highlighter-rouge">.cpp</code>/<code class="language-plaintext highlighter-rouge">.hpp</code>/<code class="language-plaintext highlighter-rouge">.h</code>-Dateien</strong></li>
  <li><strong>Diff <code class="language-plaintext highlighter-rouge">.cpp</code>/<code class="language-plaintext highlighter-rouge">.hpp</code>/<code class="language-plaintext highlighter-rouge">.h</code></strong>: 235 Dateien geändert, +56.178 / −986 Zeilen</li>
  <li><strong>Alle Dateien</strong> (inkl. Docs, Tests, CMake usw.): 868 Dateien geändert, +103.759 / −11.923 Zeilen</li>
</ul>

<p>Saubere LOC ohne die umfangreichen Doxygen-Kommentare (insbesondere die Datenmodelle wurden extensiv kommentiert): ca. 35.000. In den drei Tagen entstanden über 500 Commits.</p>

<p>Einzelne Codestellen und Unit-Tests habe ich mir angeschaut – die ergeben Sinn. Nur: Wer soll diese Menge an Code noch verstehen und beurteilen können?</p>

<p>Eine interessante Erfahrung habe ich aus dem Experiment auf jeden Fall mitgenommen: Der erzeugte Code kann beim gleichen Modell mit dem gleichen Prompt sehr unterschiedlich ausfallen. Hat man genug Tokens, lohnt es sich in jedem Fall, die Aufgabe mehrfach parallel bearbeiten zu lassen und die beste Lösung auszuwählen – oder sogar das Beste aus allen Ansätzen zu kombinieren.</p>]]></content><author><name></name></author><category term="ki" /><category term="automatisierung" /><summary type="html"><![CDATA[Ich wollte eine KI-Pause einlegen und den Computer ausnahmsweise nicht mit in den Urlaub nehmen. Die Claude-Max-Subscription sollte aber trotzdem etwas tun. Also schrieb ich – wiederum mit Hilfe von Pi + Claude – einen KI-Loop und startete ein Experiment: Wie weit kommt KI eigentlich selbständig?]]></summary></entry></feed>