Transparante gezichtsafgeleide van de Kiki-kattenafbeelding die de auteur aanleverde
Terug naar de zaal

Kiki

Werksignalen en uitvoering door agents

Zodat een voorstel uitmondt in uitvoering door de toegewezene.

Een Paperclip-plugin en een Slack-collector die een team helpen zijn AI-agents te laten draaien.

2026.04 — 2026.05

pinxlab AI R&D freelance · planning en ontwikkeling van de workflow, onderzoek naar vastgelopen uitvoering en ontwerp van het herstelpad

  • PluginGeïmplementeerd · Paperclip
  • MCP-serverGeïmplementeerd · Slack-collector

Kiki vocabulary

Lens
Agent Execution
Dispatch
Recovery
Work Signals
Signal Ingestion
Proposal
  1. assignment
  2. wake
  3. guardrail
  1. stage reaper
  2. zombie sweeper
  3. circuit breaker
  4. escalation
  1. observe
  2. signals
  3. profile
  4. directive
  1. proposal
  2. approval

Assignment: assigneeAgentId · PATCH /api/issues/:id · queueIssueAssignmentWakeup · issue.updated · CTO TRIAGE · AUTO-PROMOTE TO TODO · AUTO-REBALANCE · in_progress · REASSIGN WITHOUT WAKE · repatchAssignment · kiki-retry-issue · status: todoWake: queueIssueAssignmentWakeup · REASSIGN WITHOUT WAKE · ctx.agents.invoke · POST /api/agents/:id/wakeup · invokeOnce · INVOKE DEDUP · windowMs · HANDOFF-ACK · AT-LEAST-ONCE · HANDOFF_ACK_MAX_RETRIES · ORPHAN WAKE · lastRunAt · maxConsecutiveWakes · WAKE-STORM GUARD · heartbeat_runsGuardrail: issue.updated · in_progress · ORPHAN WAKE · SPEC COMPLETE · PO SPEC GATE · PO DELEGATION GATE · REVIEW SCORECARD · 30/30 · REWORK · PO ACCEPTANCE SCORECARD · findScorecardInComments · ANTI-DECEPTION RATCHET · WORKFLOW GUARDRAILStage Reaper: PATCH /api/issues/:id · lastRunAt · stage-reaper · repatchAssignment · heartbeatSeconds · maxConsecutiveWakes · COOLDOWN · lastSignalTime · stageEntryTime · LEVEL-TRIGGERED · WAKE-STORM GUARD · pipeline-reaper · stage-without-PATCH · kiki-retry-issue · LEAD REROUTEZombie Sweeper: zombie-sweeper · ZOMBIE_RUNNING_MAX_MIN · ZOMBIE_QUEUED_MAX_MIN · execution_run_id · RUN OWNERSHIP CONFLICT · heartbeat_runs · claude_local · execution_locked_at · SELF-HEALCircuit Breaker: CLOSED · HALF_OPEN · auth_fail · rate_limit · RETRY STORM · CB_FAILURE_THRESHOLD · KEY ROTATOR · HTTP 429 · process_lost · agent.run.failedEscalation: process_lost · agent.run.failed · ESCALATION COMMENT · LEAD REROUTE · QA FALLBACK · agent.status_changed · failed-run-escalator · PIPELINE NOTIFIER · pipeline-health-snapshot · SILENT STALLObserve: observe_channel · slack_read_channels · slack_read_thread · slack_read_reactions · slack_user_activity · .last_observed.json · DELTA TRACKING · oldest · SOCKET MODE · kiki-observe · NO RAW TEXTSignals: NO RAW TEXT · UserSignal · message_count · avg_response_time_minutes · active_hours · thread_participation_rate · topic_keywords · evidence_count · LLMExtractedSignal · FeedbackSignalProfile: FeedbackSignal · UserProfile · CommunicationStyle · DecisionPattern · WorkRhythm · focusBlocks · confidence · ContextMode · DELEGATION CHAINS · refresh-profilesDirective: AgentDirective · profileToDirectives · reportFormat · taskConstraints · directiveToSkillMarkdown · agent.created · PATCH /api/skills/{skillId} · grounding_policy · systemPrompt · NO USER PIIMaintenance Proposal: MaintenanceProposal · [MAINT] · daily-maintenance · run-maintenance · kiki-maintain · MAX 10 PROPOSALS · [SCHEMA APPROVAL REQUIRED] · P1/P2/P3 · DO NOT FABRICATE · BOUND TARGETHuman Approval: SOCKET MODE · [SCHEMA APPROVAL REQUIRED] · maint_approve · maint_deny · BLOCK KIT · reaction_added · white_check_mark · ProposalMapping · block_actions · approved · cancelled · status: todo

Tussen toewijzing en daadwerkelijke uitvoering een pad om te observeren en te herstellen.

Werksignalen worden profielen en agentrichtlijnen, en het goedkeuren van een onderhoudsvoorstel blijft gescheiden van het toewijzen van de uitvoering ervan. Stopt de activiteit van een toegewezen issue, dan wordt het opnieuw aangevraagd met het issue en de toegewezene, en herhaald uitblijven van een reactie leidt naar een limiet, een cooldown en het oordeel van een mens.

Ze zetten werksignalen om in agentrichtlijnen en verbinden onderhoudsvoorstellen, menselijke goedkeuring, toewijzing en het herstel van vastgelopen runs als aparte stappen. Ik heb deze stroom gepland en ontwikkeld.

Eerste vastlegging in de repository April 3, 2026 · opdracht bij pinxlab tot May 26, 2026

Draait als plugin binnen de Paperclip van het team; een MCP-server verzorgt het verzamelen uit Slack.

Kaart van de uitvoeringsstroom · op basis van niet-openbare implementatieverslagen
Kiki-signalen · goedkeuring · herstel van uitvoeringWerkpatronen worden uit toegankelijke Slack-kanaalgeschiedenis gehaald en omgezet in bedrijfsprofielen en richtlijnen per agent. Een agent voor onderhoudsanalyse bekijkt een doelproject en laat voorstellen achter als niet-toegewezen backlog-issues; elk voorstel wordt in Slack geplaatst, waar een mens het met een reactie goedkeurt of afwijst. Zodra een goedgekeurd issue aan een agent is toegewezen, doet een extern uitvoeringssysteem het werk en houdt een stage reaper de recente activiteit in de gaten. Stopt de activiteit, dan wordt de toewijzing opnieuw aangevraagd met het issue en de toegewezene; bereikt het aantal opeenvolgende keren zonder reactie de limiet, dan stoppen de herhaalde aanroepen en gaat de zaak naar een lead of operator.Slack-signalenToegankelijke kanaalgeschiedenisToegewezen agentExterne uitvoeringDoelprojectInhoud niet getoondMens · goedkeuren, afwijzenSlack-reactieLead · operatorOpnieuw toewijzen · meldenSignaalverzamelingPatroonextractie · zonder botsBedrijfstoestandSamenvoegen van bedrijfsprofielenAgenttoestandRichtlijnen per agentRunobservatieRecente runs · activiteitOnderhoudsanalysePO-aanroep · afgebakende promptIssuetrackerVoorstel · backlogUitvoeringsissue · todoPlaatsen van voorstellenKoppeling bericht ↔ issueStage reaperStilstandscontrole · heartbeatHerstelaanroepIssue + toegewezeneToestand bij geen reactieGeen reactie · per issueBovengrensHerhaalde aanroepen stoppen · cooldownSignalen → richtlijnenExterne uitvoeringVoorstel → menselijke goedkeuringHerstel · escalatie1 kanaalgeschiedenis · Slack-signalen → Patroonextractie · zonder bots12 profielsamenvoeging · Patroonextractie · zonder bots → Samenvoegen van bedrijfsprofielen23 opnieuw genereren · Samenvoegen van bedrijfsprofielen → Richtlijnen per agent34 richtlijnen injecteren · Richtlijnen per agent → Toegewezen agent41 doelafbakening · Doelproject → PO-aanroep · afgebakende prompt12 voorstelissue · PO-aanroep · afgebakende prompt → Voorstel · backlog23voorstel plaatsen4Slack-bericht5reactie6goedkeuren → todo7afwijzen → cancelled8toewijzing1runlogs2laatste activiteit3geen antwoord +14nieuwe activiteit → reset5 opnieuw aanroepen · Stilstandscontrole · heartbeat → Issue + toegewezene56issue + toegewezene7na 38opnieuw toewijzen · melden9alleen waarschuwing

Signalen → richtlijnen

Profielen en agentrichtlijnen worden opgebouwd uit de Slack-geschiedenis. Richtlijnen zijn context voor agents en worden niet getekend als oorzaak van een voorstel.

  1. Slack-signalenGegevens: kanaalgeschiedenisPatroonextractie · zonder botsSignaalverzameling

    Toegankelijke kanaalgeschiedenis wordt verzameld en bot-, join- en leaveberichten worden eruit gefilterd. Oorspronkelijke berichten worden op deze pagina niet getoond.

  2. Patroonextractie · zonder botsSignaalverzamelingGegevens: profielsamenvoegingSamenvoegen van bedrijfsprofielenBedrijfstoestand

    Geëxtraheerde patronen worden een profielpatch die in het bedrijfsprofiel wordt samengevoegd. Het zijn heuristische patronen, geen prestatiescores van medewerkers.

  3. Samenvoegen van bedrijfsprofielenBedrijfstoestandGegevens: opnieuw genererenRichtlijnen per agentAgenttoestand

    Richtlijnen per agent worden opnieuw gegenereerd uit het samengevoegde profiel en opgeslagen.

  4. Richtlijnen per agentAgenttoestandUitvoeren · oordeel: richtlijnen injecterenToegewezen agent

    Richtlijnen komen in de context van een agent terecht wanneer die wordt aangemaakt. Dat betekent niet dat een bepaald voorstel uit een bepaald Slack-signaal voortkwam.

Voorstel → goedkeuring → toewijzing

Een voorstel bestaat eerst als niet-toegewezen backlog-issue, de reactie van een mens vraagt een statuswijziging aan, en toewijzing en uitvoering liggen bij het externe systeem.

  1. DoelprojectGegevens: doelafbakeningPO-aanroep · afgebakende promptOnderhoudsanalyse

    De onderhoudsjob roept de PO-agent aan met een prompt die is afgebakend tot het doelproject. Broninhoud wordt niet getoond.

  2. PO-aanroep · afgebakende promptOnderhoudsanalyseGegevens: voorstelissueVoorstel · backlogIssuetracker

    De prompt vraagt om voorstellen met alleen geverifieerde paden, als niet-toegewezen backlog-issues, en verbiedt het uitvoeren van DB-migraties. Het is een instructie aan een productagent, geen deterministisch handhavingsmechanisme.

  3. Voorstel · backlogIssuetrackerGegevens: voorstel plaatsenKoppeling bericht ↔ issuePlaatsen van voorstellen

    Elk voorstel wordt in Slack geplaatst en de koppeling van bericht naar issue wordt opgeslagen. Al geplaatste voorstellen worden niet opnieuw geplaatst, en de opgeslagen koppeling bewaart de laatste 50.

  4. Koppeling bericht ↔ issuePlaatsen van voorstellenGegevens: Slack-berichtMens · goedkeuren, afwijzen

    Een mens ziet het geplaatste voorstel in Slack.

  5. Mens · goedkeuren, afwijzenUitvoeren · oordeel: reactieKoppeling bericht ↔ issuePlaatsen van voorstellen

    Een reactie op het bericht vindt het issue via de koppeling. Er is geen automatische goedkeuring.

  6. Koppeling bericht ↔ issuePlaatsen van voorstellenUitvoeren · oordeel: goedkeuren → todoUitvoeringsissue · todoIssuetracker

    Bij goedkeuring wordt een verzoek verstuurd om het wachtende voorstelissue naar todo te zetten, en de koppeling en de threadmelding worden bijgewerkt. Deze handler markeert de koppeling als goedgekeurd zonder de responscode te controleren, dus het is geen fail-closed transactie.

  7. Koppeling bericht ↔ issuePlaatsen van voorstellenUitvoeren · oordeel: afwijzen → cancelledVoorstel · backlogIssuetracker

    Bij afwijzing wordt een verzoek verstuurd om hetzelfde issue naar cancelled te zetten. Het issue bestond al vóór de goedkeuring; goedkeuring maakt het niet aan.

  8. Uitvoeringsissue · todoIssuetrackerUitvoeren · oordeel: toewijzingToegewezen agent

    Toewijzing en uitvoering van een todo-issue liggen bij het externe uitvoeringssysteem. Een issue naar todo zetten garandeert niet dat het werk is begonnen.

Stilstand → herstel → mens

Een toegewezen issue waarvan de activiteit is gestopt, wordt opnieuw aangevraagd met het issue en de toegewezene; bereikt het aantal opeenvolgende keren zonder reactie de limiet, dan gaat het naar een mens.

  1. Toegewezen agentObservatie · rapport: runlogsRecente runs · activiteitRunobservatie

    De runs en recente signalen van de toegewezen agent worden vastgelegd als observaties. Activiteit is geen bewijs van voltooiing.

  2. Recente runs · activiteitRunobservatieObservatie · rapport: laatste activiteitStilstandscontrole · heartbeatStage reaper

    De reaper kijkt alleen naar issues die niet done, cancelled of blocked zijn en een toegewezene hebben, en berekent de leeftijd van het laatste signaal en de stage.

  3. Stilstandscontrole · heartbeatStage reaperGegevens: geen antwoord +1Geen reactie · per issueToestand bij geen reactie

    Opeenvolgende keren zonder reactie worden per agent en issue geteld en in de toestand opgeslagen.

  4. Recente runs · activiteitRunobservatieObservatie · rapport: nieuwe activiteit → resetGeen reactie · per issueToestand bij geen reactie

    Nieuwe activiteit zet de teller terug.

  5. Stilstandscontrole · heartbeatStage reaperUitvoeren · oordeel: opnieuw aanroepenIssue + toegewezeneHerstelaanroep

    Is de heartbeat overschreden en de teller onder de limiet, dan volgt een herstelaanroep.

  6. Issue + toegewezeneHerstelaanroepUitvoeren · oordeel: issue + toegewezeneUitvoeringsissue · todoIssuetracker

    De toewijzing wordt opnieuw aangevraagd met het issue, de toegewezen agent en een toelichtend commentaar, en de HTTP-respons wordt gecontroleerd. Een legacypad valt terug op één enkele wake-aanroep.

  7. Geen reactie · per issueToestand bij geen reactieMislukking · limiet: na 3Herhaalde aanroepen stoppen · cooldownBovengrens

    Als het aantal opeenvolgende keren zonder reactie de limiet bereikt (standaard 3), stoppen de herhaalde aanroepen. De limiet houdt alleen stand als state-hooks de teller lezen en schrijven, en een mislukte opslag kan haar verzwakken.

  8. Herhaalde aanroepen stoppen · cooldownBovengrensUitvoeren · oordeel: opnieuw toewijzen · meldenLead · operator

    Wijst waar mogelijk opnieuw toe aan een lead en zet in_progress alleen terug naar todo als die functie is ingeschakeld. Anders blijven een commentaar en een best-effort-melding achter, en na de limiet wordt een cooldown vastgelegd.

  9. Stilstandscontrole · heartbeatStage reaperObservatie · rapport: alleen waarschuwingLead · operator

    Duurt een stage te lang, dan blijft er alleen een waarschuwingscommentaar voor operators achter. De status wordt niet automatisch gewijzigd.

Alle verbindingen even zwaar. Kies een stroom om alleen het pad daarvan te markeren, met genummerde stappen.

  • Doorgetrokken · richting van input, resultaten en vastleggingen
  • Gestreept · uitvoeren, oordeel, verzoek
  • Lange punten · observatie en rapportage, los van het oordeel
  • Kort gestreept · mislukking, stop, limiet
  • Dikke zwarte lijn · de gekozen stroom; nummers geven de volgorde
  • Vak · code- of toestandsgrens, benoemd in de kop
  • Binnenchip · een component binnen die grens
  • Gestippeld vak · buiten die grens
  • Oranje omlijning · waar een model beslist
  • Agentaanroep · herstelaanroep
  • Toestand · vastleggingen
  • Stilstandscontrole · bovengrens
  • Verzameling · plaatsing

Getekend op basis van niet-openbare implementatie- en ontwikkelverslagen. Team-, issue- en Slack-ID’s en oorspronkelijke berichten worden niet getoond; uitrol, containers en inloggegevens vallen onder een eigenaar buiten deze plugin.

Eén observatie
Rapport van April 28, 2026: bij een handmatige diagnose vóór de wijziging werd voor één issue dat 67 uur niet had gedraaid de toewijzing opnieuw aangevraagd met het issue en de toegewezene, en binnen 5 seconden stond er een nieuwe run in de wachtrij. Voltooiing, gemiddelde hersteltijd en effect na de uitrol zijn niet gemeten.
Beperkingen van de goedkeuringsafhandeling
Anders dan de herstelaanroep markeert de goedkeuringsafhandeling de koppeling als goedgekeurd zonder de responscode te controleren. Ze wordt niet beschreven als een atomaire of fail-closed goedkeuringstransactie.
Wanneer de limiet standhoudt
De limiet van 3 aanroepen is een implementatie die standhoudt als state-hooks aanwezig zijn. Ze garandeert niet precies één escalatie bij elke mislukking.