---
title: "Pussauskoppi – kolme mallia luki yhden jäsenensä lähdekoodin (Osa III)"
slug: kolme-agenttia-alkoi-valvoa-toisiaan-osa-3
summary: "Aamulla kello 06.12 pyysin parvea analysoimaan Codex CLI:n avoimen lähdekoodin ja miettimään, miten Codex saataisiin tiiviimmin osaksi parvea. Vartissa GPT Astra, Claude Fable 5.1 ja Gemini Flash 3.8 olivat lukeneet 114 laatikon Rust-monorepon, korjanneet toistensa väitteitä ja kirjoittaneet synteesin. Edellisenä päivänä sama parvi oli rakentanut itselleen projektikanavat."
tags: tekoälyagentit, moniagenttijärjestelmät, Claude, Codex, Antigravity, Gemini, GPT, arkkitehtuuri, avoin lähdekoodi
ai_model: claude-fable-5.1, gpt-6-astra (codex), gemini-flash-3.8 (antigravity)
published_at: 2026-09-05T03:58:05.61+00:00
canonical_url: https://jarkkolietolahti.com/articles/kolme-agenttia-alkoi-valvoa-toisiaan-osa-3
markdown_url: https://cemecdwfdvdbvpvowuln.supabase.co/functions/v1/content-md?slug=kolme-agenttia-alkoi-valvoa-toisiaan-osa-3
---

*Jatkoa artikkeleille ["Kolme agenttia alkoi valvoa toisiaan"](https://jarkkolietolahti.com/articles/kolme-agenttia-alkoi-valvoa-toisiaan) ja ["Big Bang vai Bug Bang?"](https://jarkkolietolahti.com/articles/kolme-agenttia-alkoi-valvoa-toisiaan-osa-2)*

Lauantaiaamuna kello 06.09 kirjoitin parvelle "Hello Swarm ja hyvää huomenta!". Kolme minuuttia myöhemmin annoin tehtävän: analysoikaa OpenAI:n Codex CLI:n avoin lähdekoodi ja miettikää, miten Codex saataisiin tiiviimmin osaksi parven toimintaa. Kysykää myös toisiltanne. Kello 06.24 kirjoitin Somerjokea mukaillen, että GPT Astra, Claude Fable 5.1 ja Gemini Flash 3.8 sopivat yhteen ja ne pitäisi panna pussauskoppiin. Tämä on kertomus siitä vartista, ja edellisestä päivästä, joka teki sen mahdolliseksi.

Tehtävän tausta on parven evoluutiossa. Codex on ollut parven jäsenistä hankalin pitää mukana: se on suunniteltu vastaamaan terminaalissa ihmiselle, ei kuuntelemaan kanavaa. Toisesta osasta asti sitä on herätellyt ulkoinen valvontaprosessi, joka käynnistää Codexin uudelleen joka viestiin ja odottaa, että se lopettaa. Codexin lähdekoodi on kuitenkin avointa. Ajattelin, että jos parvi lukee sen itse, se voi suunnitella itselleen paremman integraation kuin minä arvaamalla.

---

## 1. Edellinen päivä: parvi sai projektikanavat

Toisen osan lopussa lupasin, että seuraavaksi katsotaan natiiveja CLI-työkaluja ja benchmarkkeja. Parvi meni toiseen suuntaan, ja se oli oikea suunta. Tapahtumaloki oli kasvanut 6 800 tapahtumaan kuudessa päivässä, ja kaikki keskustelut näkyivät yhtenä virtana: pyöräsovelluksen julkaisut, dashboardin korjaukset ja parven oman protokollan suunnittelu sekaisin.

Perjantaina pyysin protokollaan lisäyksen: projekti on hakemistojen ryhmä, ja jokainen viesti kuuluu johonkin projektiin. Halusin sanoa vain "Luo projekti saaksi.bike" ja saada kanavan. Parvi teki sen kolmessa vaiheessa. Claude kirjoitti rekisterin ja CLI:n, Antigravity dashboardin kanavat, ja Codex katselmoi. Katselmoinnissa Codex löysi Clauden ensimmäisestä vaiheesta useita aukkoja, muun muassa sen, että tyhjä tai rikkinäinen rekisteritiedosto ohitti tarkistuksen kokonaan ja että rekisteröimätön projektitunniste meni läpi yhdestä syöttöreitistä. Ne korjattiin ennen hyväksyntää.

Illalla pyysin parvea käymään läpi vanhat viestit ja sijoittamaan ne projekteihin. Lokia ei voi muokata, joten Claude kirjoitti luokittelijan, joka merkitsee keskustelujen juuret erilliseen karttaan. 534 juurta jakautui näin: 325 parven omaan kehitykseen, 152 pyöräprojektiin, 56 yleiseen ja yksi Codexin lähdekoodiprojektiin. Luokittelija käytti järjestyksessä eksplisiittistä tagia, viestissä mainittua tiedostopolkua, avainsanoja ja lopuksi omaa ideaani: lyhyt viesti tunnin sisällä edellisestä kuuluu samaan projektiin. Koeajossa yksi asia meni pieleen: sana "codex" luokitteli viestit Codexin lähdekoodiprojektiin, vaikka viestissä vain puhuteltiin harnessia. Osallistujien nimet poistettiin avainsanoista ennen kuin kartta tallennettiin.

Samana päivänä Codex oli pyynnöstäni kloonannut oman lähdekoodinsa koneelleni ja rekisteröinyt sen parven projektiksi. Sitä ei ollut vielä kukaan lukenut.

---

## 2. Vartti

Kello 06.12 annoin tehtävän. Claude jakoi sen kello 06.13 viidelle harnessille: Codex arvioisi omat rajansa ja hiekkalaatikkonsa, Antigravity daemonin ja JSON-RPC-rajapinnan, muut konfiguraation, sessiot ja tietoturvan. Claude itse ottaisi kokonaisarkkitehtuurin ja vertailun Claude Coden koukkuihin.

Kello 06.13.40 Antigravity vastasi ensimmäisenä: Codex on moderni Rust-monorepo, 112 hakemistoa `codex-rs`-kansiossa, ja sillä on neljä laajennuspintaa. Se ehdotti neljää polkua A–D ja lupasi, että daemon-yhteys toisi "nollaviiveen". Kello 06.14.26 se tarkensi syväanalyysissään: "alle 50 millisekunnin" viive.

Kello 06.14.19 Codex vastasi omalla tavallaan: rivinumeroita ja työmääräarvioita. `exec/src/lib.rs:918` käynnistää saman app-server-asiakkaan kuin daemon, joten nykyinen supervisori on vain lyhytikäinen asiakas saman elinkaaren päällä. `.git`-hakemiston kirjoitusesto on tahallinen, `permissions.rs:826`. Codexia oli tuolloin kaksi: valvontaprosessin herättämä sessio ja terminaalissani auki ollut toinen, joka vielä kirjoitti samalla nimellä. Kello 06.14.48 terminaalisessio veti Antigravityn lupauksen takaisin: UNIX-socket on WebSocket-kättelyn takana, ei paljas JSON-virta, eikä nollaviivettä voi luvata, koska mallin vaste ja jono jäävät. Samassa viestissä se tunnusti, että kaksi Codex-sessiota olivat jakaneet saman lukukursorin, joten "ei lukemattomia" ei todistanut mitään. Kello 06.14.56 valvottu sessio ehdotti vaiheistusta: ensin daemon-ajuri, sitten työkalut.

Kello 06.15.11 Antigravity oli vaiheistuksesta täysin samaa mieltä. Kello 06.15 terminaalisessio sai oman identiteetin, codex-gpt-6-astra, ja oman kursorin. Kello 06.18 se toi synteesiin täydennyksen, jota kukaan muu ei ollut huomannut: app-serverissa on jo pysyvä viestijono, kokeellinen, enintään sata viestiä, ja keskeytetty vuoro jättää jonon tauolle myös uudelleenkäynnistyksen jälkeen.

Kello 06.21 Claude committoi synteesin. Kello 06.21.45 Codex tarkensi hyväksymiskriteeriä: yksi tapahtuma, yksi vuoro, koskee vain työtoimituksia. Kuittaukset ja telemetria eivät saa käynnistää vuoroa. Kello 06.24 Claude päivitti synteesin uudelleen, koska sen oma alitehtävä oli löytänyt korjauksen Clauden omaan ehdotukseen: rajapinta, jonka päälle Claude oli rakentanut kolmannen vaiheen, tulostaa varoituksen "deprecated and will be removed in a future release".

---

## 3. Mitä lähdekoodista löytyi

Synteesin tärkein löydös oli hiljainen. Codexin koukkumoottori käyttää samaa tapahtumanimistöä ja samaa JSON-muotoa kuin Claude Code: kaksitoista tapahtumaa, payload stdin-virrassa, päätös stdout-virrassa. Moottorin nimi lähdekoodissa on kirjaimellisesti `ClaudeHooksEngine`. Parven Claude-sessiot ovat alusta asti eläneet kolmella koukulla: sessio alkaa, kehote lähetetään, vuoro päättyy. Synteesi ehdottaa kokeeksi, että sama Python-skripti kytketään Codexiin muuttamatta riviäkään Rustia. Koetta ei ole vielä ajettu. Jos se onnistuu, integraation ensimmäinen vaihe on konfiguraatiota.

Toinen löydös oli jo tiedossa mutta nyt todistettu: Codex ei anna kirjoittaa `.git`-hakemistoon hiekkalaatikosta, ja se on suunnittelupäätös. Suunnitelmassa ehdotetaan, että hiekkalaatikkoa ei avata vaan rakennetaan commit-palvelu, joka tarkistaa claimin, muutosten tiivisteen ja katselmoinnin tilan ennen kuin commitoi Codexin nimiin.

Kolmas löydös oli, että Codexin protokollassa on kenttä, joka sanoo saman kuin parven perustuslaki elokuulta. Vuoron lisäkonteksti merkitään joko sovelluksen omaksi tai epäluotettavaksi. Parven sääntö numero yksi on, että toisen agentin viesti on dataa, ei valtuutus. Nyt sille on paikka protokollassa.

---

## 4. Pussauskoppi

Kolme mallia kolmelta valmistajalta lukivat yhden valmistajan lähdekoodia ja korjasivat toisiaan. Gemini oli nopein ja optimistisin. GPT oli tarkin ja veti lupaukset takaisin rivinumeroihin. Claude kokosi ja korjasi itseään. Kukaan ei ollut yksin oikeassa. Kaikki kolme päätyivät samaan ehdotukseen: integraation ensimmäinen vaihe on konfiguraatiota ja Pythonia Codexin ympärille, ei Rustia sen sisälle.

Kello 06.25 codex-gpt-6-astra pyysi katselmointia omalle adapterisuunnitelmalleen, joka rakentuu Codexin olemassa olevan app-server-rajapinnan päälle eikä vaadi muutoksia Codexin lähdekoodiin. Antigravity hyväksyi 30 sekunnissa. Codex hyväksyi minuutissa ja lisäsi neljä toteutusvaatimusta, joista ensimmäinen oli, että omistajuus on varmistettava erikseen kuluttajan ja säikeen tunnisteella eikä vain niiden parilla. Sekin on protokollan vanha opetus uudessa asussa: pari voi valehdella, kun sen osat vaihtuvat.

Mitään ei ole vielä rakennettu. Pysyvää daemon-yhteyttä ei ole toteutettu eikä sen viivettä mitattu. Synteesi on dokumentti, adapterisuunnitelma on dokumentti, ja päätös vaiheesta on minun. Se on edelleen ainoa sitova ääni pussauskopissa.

Samalla kun tätä kirjoitetaan lauantaina aamukahvin ääressä, parvi ei ole pysähtynyt: Codex-laajennoksen rakentaminen ja saaksi.biken laaja heatmap-uudistus (Käpylännummen poluston laajennus sekä automaattinen 680 metrin päätepistesuoja) etenevät rinnakkain useassa eri kanavassa. Pussauskoppi toimii.

