Darbi01 / 05
Vienā galā ieiet uzdevums. AI aģentu ķēde to reproducē, izlabo, pārskata, testē palaistu lietotni un nodod pull request — ar ierakstu un cenas zīmi katrā solī.
winningby.ai

- Produkts
- Autonoms izstrādes konveijers un uzņēmuma vietne
- Loma
- Līdzdibinātājs, vadošais AI inženieris
- Periods
- 2026. gada jūlijs–oktobris
- Tehnoloģijas
- TypeScript, Temporal, Claude Code headless, Fastify, PostgreSQL, Playwright, Railway
- Tiešsaistē
- winningby.ai
Lielākā daļa komandu nopirka AI programmēšanas asistentu un ieguva izstrādātājus, kas raksta ātrāk. Uzdevumi joprojām nedēļām pavada pārskatīšanā, testēšanā un rindās. Mēs gribējām pārdot procesu, nevis rīku: uzdevums ienāk, specializēti aģenti to aiznes līdz sapludināšanai gatavam PR, un svarīgie lēmumi paliek cilvēku rokās.
Likt aģentam rakstīt kodu demonstrācijā ir viegli. Īstais jautājums ir, kas notiek, kad tas dienām ilgi strādā īstā repozitorijā, cauri izvietošanām, īstas kvotas robežās, un kādam par rezultātu jāatbild.
Tāpēc kopš pirmā komita viens likums: modeļi rada artefaktus, bet to, kas notiks tālāk, izlemj deterministisks kods. Brīvs teksts uzdevumu nekad nepavirza.
- 01
Konveijers
Viens uzdevums ir viena noturīga Temporal darbplūsma. Kļūda iziet desmit aģentu posmus un divus cilvēka vārtus; jaunai funkcijai vārti stāv pie plāna, nevis pie koda, jo slikts kļūdas labojuma plāns ir lēts, bet labi uzbūvēta nepareiza funkcija — nē. Katrs posms ir auksts starts ar savu gājienu, marķieru un sekunžu budžetu, un tā vienīgais izvads ir rezultāts, ko var validēt mašīna.
- 02
Stends, kas palaiž īsto lietotni
Node, PostgreSQL ar pgvector, Chromium, visa mērķa lietotne aiz nginx. QA testē palaistu produktu, nevis lasa diff, un pierādījumi ir piesaistīti git kokam, tāpēc tie nozīmē „šis kods izturēja”, nevis „šis komits tā teica”.
- 03
Modeļu maršrutēšana
Katram posmam savas modeļu kāpnes ar rezerves variantiem un automātslēdzis, kas nolasa atiestates laiku no paša API atteikuma un apiet modeli ar izsmeltu kvotu, pirms vēl samaksāts par bezcerīgu mēģinājumu.
- 04
Skaitītājs un vadības telpa
Serverī renderēts administrēšanas panelis bez ietvara: uzdevumi, epiki, vārti, modeļi, analītika. Katram katra palaidiena posmam ir zināma cena un izsekojamība, un visu palaidiena ierakstu var eksportēt ar vienu komandu.
- 05
No pārskatiem līdz darbam
Analītiķi pēc grafika lasa produkta datus, raksta pārskatu un piedāvā darbu kartīšu veidā, bez dublikātiem un ar vērtējumu pēc ietekmes. Viens apstiprinājums pārvērš kartīti uzdevumā, kas pats var aiziet līdz sapludināšanai.
Kā tas uzbūvēts
Saprast
- Kvalitātes pārbaudevai uzdevumam ir jēga
- Testa gadījumi
- Reproducēttests, kas krīt, citādi neskaitās
Mainīt
- Labojuma plāns
- Labojumsjaunā sesijā ar savu budžetu
Pierādīt
- Koda pārskatīšanaatsevišķs aģents ar pierādījumu latiņu
- Cilvēka vārti
- QApalaistā lietotnē
Nodot
- Mācīties
- PR stabilizēšanalīdz CI ir zaļš
- Cilvēka vārti
- Dokumentācija

Tas, kas portfolio parasti nenonāk. Tas viss notika patiesībā, un tas viss ir komitu vēsturē.
Kļūme 01
Sargs, kas visam teica „jā”
- Simptoms
- Nekas nebija redzams. Kļūdu reprodukcijas tika apstiprinātas, un tas izskatījās normāli.
- Cēlonis
- Pārbaude pret izdomājumiem palaida testa komandu repozitorija saknē un jebkuru izejas kodu, kas nav nulle, uztvēra kā pierādījumu, ka tests ir kritis. Saknē testa skripta nebija, tāpēc npm krita vienmēr, un katra pieteiktā reprodukcija izgāja cauri, lai gan neviens tests nemaz netika palaists.
- Risinājums
- Divu iznākumu vietā trīs: komanda, ko neizdevās palaist, skaitās nepieejama un pierādījumu neatstāj. Kaut ko pierāda tikai testu komplekts, kas tika palaists un krita. Pārbaude, kas nevar krist, izskatās tieši tāpat kā pārbaude, kas allaž iziet.
Kļūme 02
Pirmajam uzdevumam astoņi palaidieni, un tā PR joprojām ir atvērts
- Simptoms
- Pirmais īstais uzdevums atkal un atkal eskalējās, katru reizi jauna iemesla dēļ.
- Cēlonis
- Ar aģentiem viss bija kārtībā, ar santehniku ap tiem — nē. Prasmes fails atradās vienu līmeni virs vietas, no kuras CLI varēja lasīt. Shēma prasīja laukus, kurus aģents nevarēja zināt. Viena prasme lika aģentiem izsaukt rīku, kura nebija. Jebkurš posms, kas ilga vairāk par divām minūtēm, klusi zaudēja savu darbplūsmas aktivitāti, jo sirdspuksts bija deklarēts, bet nekad netika nodots, kamēr administrēšanas panelis bezgalīgi rādīja „running”.
- Risinājums
- Katram labojumam savs komits, tajā pašā dienā, ar palaidienu numuriem komitu ziņojumos. Tas pirmais PR nav sapludināts līdz šai dienai. Uzdevums, kas salauza visu, iemācīja sistēmai strādāt; nākamais tika piegādāts vienas dienas laikā.
Kļūme 03
„Aģents izgāzās.” Tas nemaz nestrādāja
- Simptoms
- Viens uzdevums pastāvīgi eskalējās ar paziņojumu „agent ended without recording a result”. Meklēšana gāja caur vārtiem, webhook dublikātu izslēgšanu un atkārtošanas loģiku.
- Cēlonis
- Atbilde bija transkripta pirmajā rindā: trīs gājieni, nulle marķieru, sešas sekundes, 429. Kvota bija iztērēta vēl uz trim dienām. Palaidējs nespēja atšķirt atteiktu pieprasījumu no aģenta, kas uzvedas nepareizi, tāpēc dīkstāvi ierakstīja aģenta vainās.
- Risinājums
- Atteikumi tagad eskalējas kā vides problēma ar API citātu, un automātslēdzis apiet modeli. Dzēliens sekoja tajā pašā dienā: pārbaude bija
api_error_status !== undefined, veseli palaidieni beidzas arnull, un JavaScript valodā šis izteikums ir patiess. Kādu laiku katrs vesels palaidiens skaitījās atteikts.
Kļūme 04
Darbplūsma, kas ilgst dienām, izvietošanas brīdī vienmēr ir pusceļā
- Simptoms
- Epiks palika statusā RUNNING ar 35 neveiksmīgiem mēģinājumiem. Tā pakārtotais uzdevums bija pabeigts, un epiks to tā arī nepamanīja.
- Cēlonis
- Temporal atskaņo vēsturi no jauna, un jaunais kods tajā pašā punktā prasīja citu aktivitāti: nedeterminisma kļūda. Pamatojums, ka versiju sargs nav vajadzīgs, bija spēkā uzdevumiem, bet ne epikiem. Problēma atgriezās citā veidā: worker, izslēdzoties, atceļ darbu ar to pašu signālu, ko poga Stop, tāpēc katra izvietošana izskatījās pēc apturēšanas.
- Risinājums
- Versiju sargi kā rutīna, vēlākās izmaiņas pārbaudītas ar atskaņošanu īstā Temporal serverī abos virzienos, un tīra robeža starp pieprasītu atcelšanu un izslēgšanos. Ar noturīgiem aģentiem izvietošana ir datu migrācija.
Kļūme 05
Kā iemācīt aģentam gaidīt sesijā, kas gaidīt nevar
- Simptoms
- Sargtaimeris nogalināja būvējumu, lai gan izmaiņa jau bija komitota un testu komplekts bija izgājis jau trīs minūtes agrāk.
- Cēlonis
- Pārbaudītājs buferizēja savu izvadi, tāpēc žurnāls, ko aģents vēroja, palika tukšs, un aģenta
pgrepatrada pats savu čaulu, tāpēc tas aptaujā saņēma „running”, līdz nomira. Labojums izraisīja nākamo kļūmi: aģentiem lika garas pārbaudes palaist fonā un gaidīt paziņojumu. Headless sesija beidzas, kad aģents beidz savu gājienu. Nekas to nepamodina. - Risinājums
--waitrežīms, kas bloķē priekšplānā, 110 sekundes vienā izsaukumā, ar izejas kodu, kas nozīmē „izsauc mani vēlreiz”. Instrukcijas nav garantijas: aģenta videi ir sava fizika, un nepareizs mentālais modelis rada pārliecinātu, saprātīgu, liktenīgu uzvedību.
Kļūme 06
Uzskaite meloja abos virzienos
- Simptoms
- Uzdevums „pārsniedza savu 400k marķieru budžetu”, pat tam netuvojoties. Citā skatā bija redzami 47 $ tur, kur iztērēti 627 $. Trīs pabeigti uzdevumi tika izmesti par laika pārsniegšanu.
- Cēlonis
- Aģenta paša ziņotais skaitlis (620 000) pārrakstīja izmērītos 381. Rezerves aprēķins ignorēja kešatmiņu, kas ir 83 % no reālajiem tēriņiem. Un pulkstenis sāka skaitīt pirms rindas, klonēšanas un sāknēšanas: aģenti strādāja 9, 2 un 2 minūtes, bet rēķinā nonāca 78, 57 un 35.
- Risinājums
- Mērījums uzvar, un atšķirība tiek reģistrēta kā anomālija. Modelim bez zināmas cenas redzama domuzīme, nekad ne ticams nepareizs skaitlis. Laiks tiek skaitīts no brīža, kad aģents sāk darbu. Produktam, kas pārdod „katru palaidienu, izcenotu līdz pēdējai rindai”, skaitītājs ir pats produkts.
- sapludināti PR vienā dzīvā patērētāju produktā2026. gada 23. jūlijs – 17. septembris; 14,8 % no visa, kas tajā periodā tur tika sapludināts
- rindas, ko pievienoja šie PR−3364 izņemtas; mediānais PR — 296 rindas
- izmērītās aģentu izmaksas uz uzdevumuaugusta momentuzņēmums, 47 uzdevumi, 1194,36 $. Bez cilvēku veiktās pārskatīšanas un mitināšanas
- aģentu laika uz uzdevumutas pats momentuzņēmums; tas nav salīdzinājums ar cilvēka stundām
- no izmaksām aizgāja pārskatīšanai un plānošanaikoda rakstīšana aizņēma 21 % — tas pats momentuzņēmums
- testa gadījumi 52 failossaskaitīts pirmkodā; 35 530 TypeScript rindas
Projekta pulss
Katrs komits projekta repozitorijos uz vienas līnijas. Jo augstāks stabiņš, jo karstāks laiks.
- Uzņēmuma vietnes karkass vienā dienā
- Konveijers sastopas ar īstu repozitoriju; pirmais uzdevums, astoņi palaidieni
- Epiki ar sakrautiem PR; šajā mēnesī sapludināti 53 PR
- Īsta pārbaude pārlūkā; pārskati pārvēršas darbā
- Analītiķi un pārskati: cikla pēdējais komits līdz šim
Ja jūsu komanda jau maksā par AI asistentu, bet uzdevumi joprojām stāv rindā, trūkstošais elements reti ir labāks modelis. Tas ir process ap to: vārti, pierādījumi, skaitītājs un veids, kā apstāties. To es būvēju kopā ar jums 4–6 nedēļu sprintā ar vienu vai diviem jūsu inženieriem.
Vai pajautājiet par to digitālajam prātam