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

Konveijera administrēšanas pārskats ar kopējām izmaksām, uzdevumiem un aģentu laiku
Vadības telpa, augusta momentuzņēmums. Jau publisks vietnē 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.

  1. 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.

  2. 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”.

  3. 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.

  4. 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.

  5. 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

  1. Saprast

    • Kvalitātes pārbaudevai uzdevumam ir jēga
    • Testa gadījumi
    • Reproducēttests, kas krīt, citādi neskaitās
  2. Mainīt

    • Labojuma plāns
    • Labojumsjaunā sesijā ar savu budžetu
  3. Pierādīt

    • Koda pārskatīšanaatsevišķs aģents ar pierādījumu latiņu
    • Cilvēka vārti
    • QApalaistā lietotnē
  4. Nodot

    • Mācīties
    • PR stabilizēšanalīdz CI ir zaļš
    • Cilvēka vārti
    • Dokumentācija
Analītikas skats ar izmaksām pēc uzdevuma tipa, posma un modeļa
Kur aiziet nauda: pārskatīšana un plānošana, nevis rakstīšana.

Tas, kas portfolio parasti nenonāk. Tas viss notika patiesībā, un tas viss ir komitu vēsturē.

  1. 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.
  2. 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ā.
  3. 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 ar null, un JavaScript valodā šis izteikums ir patiess. Kādu laiku katrs vesels palaidiens skaitījās atteikts.
  4. 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.
  5. 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 pgrep atrada 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
    --wait režī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.
  6. 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.

2026. g. jūl.2026. g. okt.
  1. Uzņēmuma vietnes karkass vienā dienā
  2. Konveijers sastopas ar īstu repozitoriju; pirmais uzdevums, astoņi palaidieni
  3. Epiki ar sakrautiem PR; šajā mēnesī sapludināti 53 PR
  4. Īsta pārbaude pārlūkā; pārskati pārvēršas darbā
  5. 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.

Uzrakstīt brīfu

Ātri atbildu WhatsApp un Telegram

Vai pajautājiet par to digitālajam prātam
Nākamais projektsBlackbrook Barns