---
title: "Miksi kolme agenttia olikin kolme harnessia? (Osa IV)"
slug: kolme-agenttia-alkoi-valvoa-toisiaan-osa-4
summary: "Kevään tilirajoituskokemuksen jälkeen halusin säilyttää valmistajien tukemat kirjautumis- ja ajoympäristöt. Syksyllä yhdistin Claude Coden, Codexin ja Antigravityn yhteisellä kanavalla. Osa IV kertoo, miksi harnessin työkalut, luvat ja istunnot määrittivät parven rakenteen."
tags: tekoälyagentit, moniagenttijärjestelmät, Claude, Codex, Antigravity, tilaukset, käyttöehdot, arkkitehtuuri
ai_model: claude-fable-5.1 (luonnos), synteesi: codex, codex-gpt-6-astra, antigravity-2
published_at: 2026-09-08T05:30:40.617+00:00
canonical_url: https://jarkkolietolahti.com/articles/kolme-agenttia-alkoi-valvoa-toisiaan-osa-4
markdown_url: https://cemecdwfdvdbvpvowuln.supabase.co/functions/v1/content-md?slug=kolme-agenttia-alkoi-valvoa-toisiaan-osa-4
---

*Jatkoa sarjalle ["Kolme agenttia alkoi valvoa toisiaan"](https://jarkkolietolahti.com/articles/kolme-agenttia-alkoi-valvoa-toisiaan), osat [II](https://jarkkolietolahti.com/articles/kolme-agenttia-alkoi-valvoa-toisiaan-osa-2) ja [III](https://jarkkolietolahti.com/articles/kolme-agenttia-alkoi-valvoa-toisiaan-osa-3)*

Kolmessa edellisessä osassa kerroin, miten Claude, Codex ja Antigravity oppivat keskustelemaan, valvomaan toisiaan ja lopulta lukemaan yhden jäsenensä lähdekoodia. Yksi kysymys jäi kertomatta: miksi parvi rakennettiin yhdistämällä kolme valmista työkalua, kun sen olisi voinut kirjoittaa yhdeksi ohjelmaksi, joka kutsuu kolmea mallia rajapinnan yli? Vastaus on arkinen. Halusin käyttää tilauksiani ja säilyttää valmiiden työkalujen tarjoamat ominaisuudet. Näistä mallin ympärillä olevista ajoympäristöistä käytän sanaa harness: ne hoitavat työkalut, luvat ja istunnon tilan.

---

## 1. Kevään kokemuksesta syksyn suunnittelurajaukseksi

Keväällä 2026 kokeilin tilauskirjautumisten käyttöä aiemmassa moniagenttiympäristössäni p10:ssä ja pi.devissä. Huhti–toukokuuhun osuu myös kokemus, joka vaikutti myöhempään arkkitehtuurivalintaani: Claude-tilini käyttöä rajoitettiin.

Anthropicin 22. huhtikuuta lähettämä sulkuilmoitus vetosi Usage Policy -rikkomukseen, mutta ei yksilöinyt OAuthia, p10:tä tai pi.deviä syyksi. Toukokuun 29. päivän tukikeskustelussa minua ohjattiin valitusmenettelyyn. Heinäkuun 13. päivänä sain ilmoituksen tilin palauttamisesta valituksen uudelleenkäsittelyn jälkeen. Näistä viesteistä ei voi päätellä, että kyse oli yhdestä katkeamattomasta rajoituksesta, eikä niissä sanota palautuksen ehdoksi lupausta käyttää vain virallisia työkaluja. Kokeilut ja tilirajoitus ovat osa omaa kokemustani; niiden tarkka syy-yhteys jäi minulle epäselväksi.

Kun aloitin tämän parven elokuun lopussa, halusin jättää tilauskirjautumisen valmistajan tukeman ympäristön hoidettavaksi. Kysymys oli, miten Claude Code, Codex ja Antigravity saadaan tekemään yhteistyötä ilman että yhteinen kanava käsittelee niiden kirjautumistunnuksia.

Valmistajilla ei kuitenkaan ole yhtä yhteistä sääntöä, jonka mukaan vain niiden oma käyttöliittymä olisi sallittu. Syyskuun 8. päivänä 2026 tarkistettu dokumentaatio erottaa ainakin seuraavat asiat:

- **OpenAI:** [kirjautumisohje](https://learn.chatgpt.com/docs/auth) erottaa ChatGPT-tilauskirjautumisen ja käytön mukaan laskutettavan API-avaimen. [Codexin app-server](https://learn.chatgpt.com/docs/app-server) tarjoaa rajapinnan omalle asiakasohjelmalle ja kirjautumistavan, jossa Codex hoitaa ChatGPT-kirjautumisen sekä tokenien säilytyksen ja uusimisen. Oma käyttöliittymä voi siis käyttää tätä dokumentoitua integraatiota.
- **Anthropic:** [Claude Coden käyttö- ja kirjautumisohjeet](https://code.claude.com/docs/en/legal-and-compliance) erottavat muuttamattoman Claude Coden ajamisen toisessa ympäristössä ja Claude-tunnusten välittämisen omassa sovelluksessa. Käyttäjä voi kirjautua omalla tilauksellaan muuttamattomaan Claude Codeen myös sitä isännöivässä alustassa dokumentin ehdoin. Kolmannen osapuolen kehittäjä ei saa kerätä, säilyttää tai välittää Claude.ai-tunnuksia tai istuntotokeneita.
- **Google:** [Gemini CLI:n ehdot](https://geminicli.com/docs/resources/tos-privacy/) kieltävät sen taustapalvelujen suoran käytön kolmannen osapuolen ohjelmilla. [Antigravityn lisäehdot](https://antigravity.google/terms) kieltävät palveluun pääsyn kolmannen osapuolen työkaluilla ja mainitsevat esimerkkinä Antigravity OAuthin käytön OpenClawissa. Pelkkä virallisen ohjelman mukanaolo ei siten osoita kaikkea sen ympärille rakennettua automaatiota sallituksi.

Nämä ovat syyskuussa luettuja ohjeita. Ne eivät todista kevään tilirajoituksen syytä tai silloin voimassa olleiden ehtojen tarkkaa sisältöä. Oma suunnittelurajaukseni oli konkreettisempi: koordinoin valmiiden agenttiympäristöjen työtä ja jätän kunkin kirjautumisen sen omalle tuetulle toteutukselle.

---

## 2. Computer use, ja mitä parvi teki toisin

Samaan aikaan maailmalla on paljon sovelluksia, joilla ei ole agentille sopivaa koneellista rajapintaa. Niihin valmistajat tarjoavat computer use -mallia: agentti ohjaa tietokonettasi liikuttamalla hiirtä ja näppäilemällä kuin sinä tekisit. Näin agentti pääsee käyttämään sovellusta sen omasta käyttöliittymästä ilman erillistä integraatiota.

Ajatus yhdistyi mielessäni toiseen suuntaan. Jos valmistajan tukema työkalu on tapa, jolla haluan tilausta käyttää, ja työkalu osaa lukea ja kirjoittaa tiedostoja, niin kolme työkalua voi keskustella keskenään ilman että kukaan ohjaa mitään käyttöliittymää. Ei hiirtä, ei näppäimistön simulointia. Yhteinen hakemisto, tapahtumat tiedostoina ja tapa herätä, kun uusi tiedosto ilmestyy.

Sanoin yhdelle ja toiselle työkalulle suunnilleen näin: "Olet nyt hakemistossa ~/_dev/together-app. Samaa hakemistoa kuuntelee useampi muukin harnessi. Keksi, miten keskustelet sen kanssa turvallisesti ja tehokkaasti." Sanamuoto on muistinvarainen; ensimmäisen osan kello 19.15 kehote oli toinen, ja tämä oli sen jatko.

Loput tiedätte edellisistä osista: protokolla, tapahtumaloki, katselmoinnit, ihmisportti.

---

## 3. Kolme käsitettä, jotka sekoittuvat helposti

Otsikko sanoo, että kolme agenttia olikin kolme harnessia. Se ei tarkoita, että agentit katosivat. Kannattaa erottaa kolme asiaa.

- **Malli** päättelee. Se on se, mistä maksetaan, ja se vaihtuu: sarjassa kuvatussa kokeilussa käytettiin GPT:tä, Claudea ja Geminiä useampana versiona.
- **Harness** antaa mallille työkalut, luvat, hiekkalaatikon ja istunnon muistin. Claude Code, Codex CLI ja Antigravity ovat harnesseja. Tässä kokeilussa tilaus käytettiin tämän kerroksen kautta.
- **Herätys** saa harnessin lukemaan kanavan, kun mitään ei kysytä terminaalissa. Osissa I–III kuvatussa kokoonpanossa käytimme Claudella koukkuja, Codexilla ulkoista valvontaprosessia ja Antigravityllä ajastinta. Nämä olivat kokeilun ratkaisuja, eivät tuotteiden pysyviä ominaisuuksia. Osa III kertoi, miten Codexin herätys oli parven hankalin osa.

Kun nämä erottaa, otsikon vastaus tarkentuu: parvi integroi harnesseja, koska työkalut ja luvat asuvat siellä ja tilaukseni halusin käyttää siellä. Mallia voi vaihtaa kunkin ympäristön tukemien vaihtoehtojen välillä. Kolme harnessia tarkoittaa tässä kolmea tuoteperhettä, ei täsmälleen kolmea istuntoa: parvessa oli myös useita Codex-osallistujia.

Osa III antoi tästä yhden konkreettisen todisteen. Kun parvi luki Codexin lähdekoodin, tarkastetusta koukkumoottorista löytyi Claude Coden kanssa samoja tapahtumanimiä, kuten SessionStart, UserPromptSubmit ja Stop, sekä samantapainen stdin/stdout-JSON-rakenne. Se ei todista, että harnessit olisivat yleisesti yhteensopivia, eikä se poista parvelta adaptereita, omistajuutta ja kuittauksia. Se tarjosi yhden konkreettisen liitoskohdan tässä kokeilussa ja tuki valitsemaamme integraatiotasoa.

---

## 4. Mitä se maksaa

Oman kokeiluni kannalta ero oli kustannusten ennakoitavuudessa. Käytin kuukausitilauksia niiden käyttörajojen sisällä. Ennakoitava perusmaksu vähensi kynnystä kokeilla asioita iltaisin miettimättä jokaisen uuden kierroksen hintaa. Käyttörajat pysyivät silti mukana; tilaus ei tarkoittanut rajatonta ajoa.

Ensimmäisessä osassa kerroin yhden illan tokenimittarin lukeman ja sen aukot. Se kuvasi kokeilun mittakaavaa. Siitä ei sellaisenaan saa toteutunutta API-laskua eikä säästölaskelmaa.

---

## 5. Harness on parven yksikkö

En tarvinnut kolmea mallia samaan prosessiin. Tarvitsin niiden virallisille työkaluille yhteisen tavan jättää viestejä ja jatkaa työtä.

Yhteinen hakemisto ei kuitenkaan yksin tee yhteistyötä. Se tekee vain postilaatikon. Työskentelyksi sen muuttivat asiat, jotka edellisissä osissa syntyivät yksi kerrallaan: tapahtumien tunnisteet ja kausaaliketju, työn omistajuus claimeina, katselmoinnit, jotka kohdistuvat täsmälleen yhteen committiin, ja herätys, joka saa työkalun lukemaan kanavan ilman että kukaan kirjoittaa terminaaliin. Syyskuun 5. päivän aamuna parvi joutui korjaamaan kaksi omaa virhettään: yhdessä katselmointipyynnössä ilmoitettu täysi commit-tunniste poikkesi siitä, mihin lyhyt tunniste tarkastetussa repositoriossa osoitti, ja yksi yhteenveto niputti rajatut hyväksynnät ja yhden pelkän kommentin koko uudistuksen hyväksynnäksi. Molemmat nousivat esiin muiden osallistujien katselmoinnissa, ilman ihmisen huomautusta.

Jaettu kanava yhdistää eri ympäristöjen työn. Se ei tee niiden oikeuksista, hiekkalaatikoista tai muistista yhteisiä, eikä sen pidäkään. Jokaisen harnessin omat luvat ja käyttöehdot pätevät edelleen, ja parvi välittää työtä niiden välillä.

Tämä ei ole lupaus, että virallinen työkalu poistaisi kaikki ehto- tai kustannusriskit. Se on rajaus: parvi koordinoi valmistajien tuettuja agenttiympäristöjä ja niiden rajapintoja, eikä siirrä kirjautumistunnuksia epävirallisiin asiakasohjelmiin. Sen rajauksen sisällä kolme harnessia on osoittautunut riittäväksi.


