Transparent ansiktsutsnitt härlett från Kiki-kattbilden som författaren tillhandahållit
Tillbaka till salen

Kiki

Arbetssignaler och agentexekvering

Så att ett förslag blir den ansvariges exekvering.

Ett Paperclip-plugin och en Slack-insamlare som hjälper ett team att driva sina AI-agenter.

2026.04 — 2026.05

pinxlab AI-FoU, frilans · planering och utveckling av arbetsflöden, utredning av exekvering som stannat och design av återställningsvägen

  • PluginImplementerad · Paperclip
  • MCP-serverImplementerad · Slack-insamlare

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

Mellan tilldelning och faktisk exekvering: en väg för att observera och återställa.

Arbetssignaler blir profiler och agentdirektiv, och godkännandet av ett underhållsförslag hålls åtskilt från tilldelningen av dess exekvering. När aktiviteten i ett tilldelat ärende stannar begärs det igen med ärendet och den ansvarige, och upprepade uteblivna svar går vidare till en gräns, en cooldown och en människas bedömning.

De omvandlar arbetssignaler till agentdirektiv och kopplar samman underhållsförslag, mänskligt godkännande, tilldelning och återställning av körningar som stannat som separata steg. Jag planerade och utvecklade detta flöde.

Första loggen i repositoryt 3 april 2026 · uppdrag hos pinxlab till och med 26 maj 2026

Körs som plugin inuti teamets Paperclip; en MCP-server sköter insamlingen från Slack.

Karta över exekveringsflödet · utifrån privata implementationsloggar
Kiki: signaler · godkännande · återställning av exekveringArbetsmönster extraheras ur tillgänglig kanalhistorik i Slack till företagsprofiler och direktiv per agent. En agent för underhållsanalys tittar på ett målprojekt och lämnar förslag som otilldelade backlog-ärenden; varje förslag publiceras i Slack, där en människa godkänner eller avböjer det med en reaktion. När ett godkänt ärende har tilldelats en agent utför ett externt exekveringssystem arbetet och en stage reaper bevakar den senaste aktiviteten. Om aktiviteten stannar begärs tilldelningen igen med ärendet och den ansvarige; när uteblivna svar i följd når gränsen stoppas nya anrop och ärendet går till en lead eller operatör.Slack-signalerTillgänglig kanalhistorikTilldelad agentExtern exekveringMålprojektInnehållet visas intePerson · godkänn, avböjSlack-reaktionLead · operatörOmfördela · aviseraSignalinsamlingMönsterextraktion · inga bottarFöretagstillståndSammanslagning av företagsprofilAgenttillståndDirektiv per agentKörningsobservationSenaste körningar · aktivitetUnderhållsanalysPO-anrop · avgränsad promptÄrendesystemFörslag · backlogKörningsärende · todoPublicering av förslagMappning meddelande ↔ ärendeStage reaperKontroll av stillestånd · heartbeatÅterställningsanropÄrende + ansvarigTillstånd för uteblivna svarUteblivna svar · per ärendeGränsStoppa nya anrop · cooldownSignaler → direktivExtern exekveringFörslag → mänskligt godkännandeÅterställning · eskalering1 kanalhistorik · Slack-signaler → Mönsterextraktion · inga bottar12 sammanslagning av profil · Mönsterextraktion · inga bottar → Sammanslagning av företagsprofil23 generera om · Sammanslagning av företagsprofil → Direktiv per agent34direktiv in1målomfång2 förslagsärende · PO-anrop · avgränsad prompt → Förslag · backlog23publicera förslag4Slack-meddelande5reaktion6godkänn → todo7avböj → cancelled8tilldelning1körloggar2senaste aktivitet3uteblivet svar +14ny aktivitet → nollställ5 nytt anrop · Kontroll av stillestånd · heartbeat → Ärende + ansvarig56ärende + ansvarig7efter 38omfördela · avisera9endast varning

Signaler → direktiv

Profiler och agentdirektiv byggs utifrån Slack-historik. Direktiv är agentkontext och ritas inte som orsak till något förslag.

  1. Slack-signalerData: kanalhistorikMönsterextraktion · inga bottarSignalinsamling

    Tillgänglig kanalhistorik samlas in och meddelanden från bottar samt om att gå med och lämna filtreras bort. Ursprungliga meddelanden visas inte på den här sidan.

  2. Mönsterextraktion · inga bottarSignalinsamlingData: sammanslagning av profilSammanslagning av företagsprofilFöretagstillstånd

    Extraherade mönster blir en profilpatch som slås samman med företagsprofilen. Det är heuristiska mönster, inte prestationspoäng för anställda.

  3. Sammanslagning av företagsprofilFöretagstillståndData: generera omDirektiv per agentAgenttillstånd

    Direktiv per agent genereras om utifrån den sammanslagna profilen och sparas.

  4. Direktiv per agentAgenttillståndKörning · bedömning: direktiv inTilldelad agent

    Direktiv kommer in i en agents kontext när den skapas. Det betyder inte att ett visst förslag kom från en viss Slack-signal.

Förslag → godkännande → tilldelning

Ett förslag finns först som ett otilldelat backlog-ärende, en människas reaktion begär en statusändring, och tilldelning och exekvering hör till det externa systemet.

  1. MålprojektData: målomfångPO-anrop · avgränsad promptUnderhållsanalys

    Underhållsjobbet anropar PO-agenten med en prompt avgränsad till målprojektet. Källinnehåll visas inte.

  2. PO-anrop · avgränsad promptUnderhållsanalysData: förslagsärendeFörslag · backlogÄrendesystem

    Prompten ber om förslag med endast verifierade sökvägar som otilldelade backlog-ärenden och förbjuder att köra DB-migreringar. Det är en instruktion till en produktagent, inte en deterministisk tvingande mekanism.

  3. Förslag · backlogÄrendesystemData: publicera förslagMappning meddelande ↔ ärendePublicering av förslag

    Varje förslag publiceras i Slack och mappningen mellan meddelande och ärende sparas. Förslag som redan publicerats publiceras inte igen, och den sparade mappningen behåller de senaste 50.

  4. Mappning meddelande ↔ ärendePublicering av förslagData: Slack-meddelandePerson · godkänn, avböj

    En människa ser det publicerade förslaget i Slack.

  5. Person · godkänn, avböjKörning · bedömning: reaktionMappning meddelande ↔ ärendePublicering av förslag

    En reaktion på meddelandet hittar ärendet via mappningen. Det finns inget automatiskt godkännande.

  6. Mappning meddelande ↔ ärendePublicering av förslagKörning · bedömning: godkänn → todoKörningsärende · todoÄrendesystem

    Vid godkännande skickas en begäran om att flytta det väntande förslagsärendet till todo, och mappningen och trådaviseringen uppdateras. Den här hanteraren markerar mappningen som godkänd utan att kontrollera svarskoden, så det är ingen fail-closed-transaktion.

  7. Mappning meddelande ↔ ärendePublicering av förslagKörning · bedömning: avböj → cancelledFörslag · backlogÄrendesystem

    Vid avböjande skickas en begäran om att flytta samma ärende till cancelled. Ärendet fanns före godkännandet; godkännandet skapar det inte.

  8. Körningsärende · todoÄrendesystemKörning · bedömning: tilldelningTilldelad agent

    Tilldelning och exekvering av ett todo-ärende hör till det externa exekveringssystemet. Att flytta ett ärende till todo garanterar inte att arbetet har startat.

Stillestånd → återställning → person

Ett tilldelat ärende vars aktivitet har stannat begärs igen med ärendet och den ansvarige; när uteblivna svar i följd når gränsen går det till en människa.

  1. Tilldelad agentObservation · rapport: körloggarSenaste körningar · aktivitetKörningsobservation

    Den tilldelade agentens körningar och senaste signaler registreras som observationer. Aktivitet är inget belägg för slutförande.

  2. Senaste körningar · aktivitetKörningsobservationObservation · rapport: senaste aktivitetKontroll av stillestånd · heartbeatStage reaper

    Reapern tittar bara på ärenden som inte är done, cancelled eller blocked och som har en ansvarig, och beräknar åldern på den senaste signalen och stage.

  3. Kontroll av stillestånd · heartbeatStage reaperData: uteblivet svar +1Uteblivna svar · per ärendeTillstånd för uteblivna svar

    Uteblivna svar i följd räknas per agent och ärende och sparas i tillståndet.

  4. Senaste körningar · aktivitetKörningsobservationObservation · rapport: ny aktivitet → nollställUteblivna svar · per ärendeTillstånd för uteblivna svar

    Ny aktivitet nollställer räkningen.

  5. Kontroll av stillestånd · heartbeatStage reaperKörning · bedömning: nytt anropÄrende + ansvarigÅterställningsanrop

    Om heartbeat överskrids och räkningen är under gränsen görs ett återställningsanrop.

  6. Ärende + ansvarigÅterställningsanropKörning · bedömning: ärende + ansvarigKörningsärende · todoÄrendesystem

    Tilldelningen begärs igen med ärendet, den tilldelade agenten och en förklarande kommentar, och HTTP-svaret kontrolleras. En legacy-väg faller tillbaka på ett enda väckningsanrop.

  7. Uteblivna svar · per ärendeTillstånd för uteblivna svarFel · gräns: efter 3Stoppa nya anrop · cooldownGräns

    När uteblivna svar i följd når gränsen (3 som standard) stoppas nya anrop. Gränsen håller bara när tillståndshooks läser och skriver räkningen, och en misslyckad sparning kan försvaga den.

  8. Stoppa nya anrop · cooldownGränsKörning · bedömning: omfördela · aviseraLead · operatör

    Omfördelar om möjligt till en lead och flyttar bara tillbaka in_progress till todo när den funktionen är aktiverad. Annars lämnas en kommentar och en best-effort-avisering, och en cooldown registreras efter gränsen.

  9. Kontroll av stillestånd · heartbeatStage reaperObservation · rapport: endast varningLead · operatör

    När en stage pågår för länge lämnas bara en varningskommentar till operatörer. Status ändras inte automatiskt.

Alla kopplingar med samma tjocklek. Välj ett flöde för att bara markera dess väg, med numrerade steg.

  • Heldragen · riktning för indata, resultat och loggar
  • Streckad · körning, bedömning, begäran
  • Långa prickar · observation och rapportering, skilt från bedömning
  • Korta streck · fel, stopp, gräns
  • Kraftig svart linje · det valda flödet; siffrorna anger ordningen
  • Ruta · kod- eller tillståndsgräns, namngiven i rubriken
  • Inre chip · en komponent inom gränsen
  • Prickad ruta · utanför gränsen
  • Orange kontur · där en modell fattar beslut
  • Agentanrop · återställningsanrop
  • Tillstånd · loggar
  • Kontroll av stillestånd · gräns
  • Insamling · publicering

Ritad utifrån privata implementations- och utvecklingsloggar. Team-, ärende- och Slack-identifierare och ursprungliga meddelanden visas inte; driftsättning, containrar och autentiseringsuppgifter tillhör en ägare utanför detta plugin.

En observation
Rapport från 28 april 2026: i en manuell diagnos före ändringen begärdes tilldelningen igen med ärende och ansvarig för ett ärende som inte hade körts på 67 timmar, och en ny körning köades inom 5 sekunder. Slutförande, genomsnittlig återställningstid och effekt efter utrullning mättes inte.
Begränsningar i hanteringen av godkännanden
Till skillnad från återställningsanropet markerar hanteringen av godkännanden mappningen som godkänd utan att kontrollera svarskoden. Den beskrivs inte som en atomär eller fail-closed godkännandetransaktion.
När gränsen håller
Gränsen på 3 anrop är en implementation som håller när tillståndshooks finns. Den garanterar inte exakt en eskalering vid varje fel.