I Ivy Tendril omvandlas ett GitHub-issue till en pull request genom en fast sekvens av faser: ärendet anländer till Inbox via webhook, en agent tar fram ett planutkast, en utvecklare granskar och godkänner planen, en agent exekverar den i ett isolerat git worktree, automatisk verifiering körs, utvecklaren granskar den resulterande diffen och en agent öppnar en pull request. Människor agerar vid exakt två tillfällen: vid planen och vid diffen. Allt annat hanteras av agenter, och många ärenden rör sig genom sekvensen samtidigt. Denna artikel följer ett ärende genom varje steg.
Livscykeln i korthet
Ivy kallar detta arbetsflöde för en mjukvarufabrik: en förutbestämd sekvens av steg där agenter utför arbetet och människor inspekterar resultatet vid definierade kontrollpunkter. Faserna, vem som agerar och villkoret som avslutar respektive steg listas nedan. Den fullständiga referensen finns i livscykeldokumentationen.
| Fas | Vem agerar | Slutvillkor |
|---|---|---|
| Inbox | Agent (webhook) | Ärendet sparas med titel, brödtext, etiketter och länk |
| Draft plan | Agent (CreatePlan) | Ett utkast med mål, omfattning, berörda filer och verifieringssteg har skapats |
| Plan review, kontrollpunkt 1 | Människa | Utvecklaren godkänner planen, efter eventuella kommentarer och omskrivningar |
| Execute | Agent (ExecutePlan) | Agenten rapporterar planen som slutförd i sitt worktree |
| Verify | Agent | Tester och lint har körts och diffen är redo för granskning (verifieringsgrindar) |
| Diff review, kontrollpunkt 2 | Människa | Utvecklaren godkänner diffen |
| Pull request | Agent (CreatePr) | En pull request finns på GitHub för planens gren, öppnad via REST-API:et för pull requests |
| Merge och rensning | Människa mergar, agent rensar | Worktreet tas bort och lärdomar sparas i minnet |
Från issue till godkänd plan
Ärendet anländer
En användare registrerar issue #418 i kodförrådet: "Export to CSV drops rows with commas in the description field." GitHub-integrationen skickar det till Tendrils Inbox via webhook. Ingenting körs än. Inbox är en lista över inkommande ärenden, och en utvecklare avgör vilka som ska bli planer. Felrapporter från jam.dev tas emot på samma sätt.
CreatePlan skapar ett planutkast
Utvecklaren markerar ärendet och väljer Create plan. Promptwaren CreatePlan läser ärendet, sitt eget minne av kodförrådet samt relevant källkod och skriver ett utkast. Ett typiskt utkast anger målet, filerna som förväntas ändras (src/export/csv.ts och dess testfil), angreppssättet (citera fält som innehåller avgränsaren enligt RFC 4180) samt verifieringsstegen (lägg till ett test med kommatecken i beskrivningen, kör befintliga exporttester). Utkastet visas i Drafts.
Kontrollpunkt 1: Utvecklaren granskar planen
Detta är den första av två mänskliga kontrollpunkter. Utvecklaren läser utkastet och upptäcker ett problem: planen föreslår att endast beskrivningsfältet ska citeras, men samma bugg påverkar alla fritextkolumner. Istället för att skriva om planen manuellt markerar utvecklaren stycket och lägger till en anteckning: "Apply the quoting to all string columns, not just description." Promptwaren UpdatePlan skriver om planen med anteckningen tillämpad, och det reviderade utkastet är redo för en ny genomgång.
Om utkastet saknar detaljer kan utvecklaren köra ExpandPlan. Om anteckningarna visar att ärendet i själva verket består av två separata uppgifter – exempelvis en buggfix och en separat migrering av exportmodulen till ett gemensamt CSV-bibliotek – delar SplitPlan upp det i två planer som fortsätter oberoende av varandra. När utvecklaren är nöjd godkänns planen. Den utgör nu den bindande specifikationen för körningen, och agenten behöver inte tolka det ursprungliga ärendet på nytt.
Exekvering och verifiering
ExecutePlan körs i ett isolerat worktree
Vid godkännande skapar Tendril ett git worktree för planen på en egen gren och startar den valda agenten i det. Utvecklaren väljer agent per plan: Claude Code, OpenAI Codex CLI, GitHub Copilot CLI, Google Gemini CLI, OpenCode eller någon annan CLI-agent. Arbetsflödet är detsamma oavsett vilken agent som väljs.
Worktreet är avgörande eftersom andra planer körs samtidigt. Varje plan har sin egen arbetskatalog och gren, vilket innebär att en halvfärdig ändring i en plan inte kan påverka en annan, och huvudgrenen (main) förblir orörd fram till granskningen. Skälen till denna design förklaras i git worktrees för parallella AI-agenter.
Medan agenten arbetar strömmar Jobs-vyn dess utdata och verktygsanrop i realtid: lästa filer, körda kommandon, exekverade tester samt förbrukade tokens och kostnad hittills. Utvecklaren kan titta på, eller granska en annan plan under tiden. Med en Cloudflare Quick Tunnel aktiverad är samma ström tillgänglig direkt i mobilen.
Verifiering körs
När agenten rapporterar att planen är klar körs automatisk verifiering i dess worktree: testsviten och lintern exekveras, och den resulterande diffen samlas in för granskning. Resultaten presenteras i Review-vyn under tre flikar: tests, lint och diff. Ett misslyckat test eller ett linterfel syns innan någon människa lägger tid på att läsa koden. Pro- och Enterprise-abonnemang kan även importera verifieringsresultat från CI. Argumenten för att behandla verifiering som en strikt grind snarare än en rekommendation finns i verifieringsgrindar för AI-genererad kod.
Granskning, pull request och rensning
Kontrollpunkt 2: Utvecklaren granskar diffen
Detta är den andra mänskliga kontrollpunkten. I Review granskar utvecklaren diffen sida vid sida med planen och verifieringsresultaten. För ärende #418 berör diffen src/export/csv.ts, lägger till en hjälpfunktion för citering och utökar testfilen med tre testfall: ett kommatecken, ett citattecken och en radbrytning inuti ett fält. Testerna passerar och lintern är grön. Utvecklaren godkänner diffen.
Om diffen inte godtas håller utvecklaren inne godkännandet, uppdaterar planen med vad som saknades och kör igen. Ingenting når GitHub utan detta godkännande.
CreatePr öppnar en pull request
Promptwaren CreatePr öppnar pull requesten från planens gren. Härifrån tar teamets normala gransknings- och mergeprocess på GitHub vid. Tendrils Pull Requests-vy spårar statusen för varje öppen PR som skapats på detta sätt.
Efter merge
När pull requesten mergas tar Tendril automatiskt bort det tillhörande worktreet. Promptwaren ExecutePlan skriver sedan ned vad den lärt sig i minnet. För detta ärende sparas en post i stil med "The export module has an integration test that needs the fixtures in test/fixtures/export/; run it with pnpm test:export", och nästa plan som berör exportmodulen läser informationen innan arbetet påbörjas.
Hela kedjan, för ett ärende av denna storlek, tar några minuters agenttid och två korta manuella granskningar. Ivy rapporterar att det egna teamet gick från cirka 10 till fler än 100 pull requests per dag efter att ha infört detta arbetsflöde, med de två kontrollpunkterna intakta.
Så kommer du igång
Installera Tendril, koppla på GitHub-integrationen så att ärenden kommer in i Inbox och kör ett första ärende genom flödet med en enskild agent innan du kör planer parallellt.
curl -sSf https://cdn.ivy.app/install-tendril.sh | sh
På Windows kör du irm https://cdn.ivy.app/install-tendril.ps1 | iex. Den kostnadsfria versionen, tillgänglig med öppen källkod under Functional Source License, inkluderar hela livscykeln. Pro och Enterprise tillför teamfunktioner, import av verifiering från CI och lokal on-premise-drift.
Vanliga frågor
Kan agenten hoppa över en kontrollpunkt om ändringen är liten?
Nej. De två kontrollpunkterna gäller för varje plan. En enradig fix genomgår plangodkännande och diffgodkännande precis som alla andra planer. Mindre planer tar helt enkelt kortare tid att granska.
Vad händer när två parallella planer ändrar i samma fil?
Varje plan arbetar i sitt eget worktree och på en egen gren, så konflikten uppstår inte under själva körningen. Den uppdagas när den andra pull requesten rebasas eller mergas, och löses på sedvanligt git-manér. Genom att dela upp planer modulärt minimeras risken för konflikter.
Måste ärendet komma från GitHub?
Nej. Planer kan skapas utifrån en inskriven idé, en felrapport från jam.dev, CLI, REST-API:et eller MCP-servern. Webhooken från GitHub är bara en av flera ingångar till Inbox.
Kom igång med Ivy Tendril
Är du redo för parallell agentorkestrering på utvecklarnivå?
- Utforska källkoden: Upptäck Ivy Tendril på GitHub (Open Source).
- Läs dokumentationen: Hitta integrationsguider på tendril.ivy.app.
- Boka arkitekturgenomgång: Kontakta renco@ivy.app för en 30-minuters teknisk konsultation.