
Kiki
Arbeidssignaler og agentutførelse
Slik at et forslag blir den ansvarliges utførelse.
En Paperclip-plugin og en Slack-innsamler som hjelper et team å drifte AI-agentene sine.
Kiki vocabulary
- assignment
- wake
- guardrail
- stage reaper
- zombie sweeper
- circuit breaker
- escalation
- observe
- signals
- profile
- directive
- proposal
- 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
Mellom tildeling og faktisk utførelse: en sti for å observere og gjenopprette.
Arbeidssignaler blir profiler og agentdirektiver, og godkjenning av et vedlikeholdsforslag holdes atskilt fra tildeling av utførelsen. Når aktiviteten i en tildelt sak stopper, bes det om den på nytt med saken og den ansvarlige, og gjentatte uteblitte svar går videre til en grense, en cooldown og en persons vurdering.
De gjør arbeidssignaler om til agentdirektiver og kobler vedlikeholdsforslag, menneskelig godkjenning, tildeling og gjenoppretting av kjøringer som har stoppet opp, sammen som separate steg. Jeg planla og utviklet denne flyten.
Første logg i repositoryet 3. april 2026 · oppdrag for pinxlab til og med 26. mai 2026
Kjører som plugin inne i teamets Paperclip; en MCP-server står for innsamlingen fra Slack.
Signaler → direktiver
Profiler og agentdirektiver bygges ut fra Slack-historikk. Direktiver er agentkontekst og er ikke tegnet som årsak til noe forslag.
Slack-signalerData: kanalhistorikkMønsteruttrekk · ingen boter
SignalinnsamlingTilgjengelig kanalhistorikk samles inn, og meldinger fra boter og om å bli med og forlate filtreres bort. Opprinnelige meldinger vises ikke på denne siden.
Mønsteruttrekk · ingen boter
SignalinnsamlingData: sammenslåing av profilSammenslåing av selskapsprofilSelskapstilstandUttrukne mønstre blir en profil-patch som slås sammen med selskapsprofilen. Dette er heuristiske mønstre, ikke prestasjonsscorer for ansatte.
Sammenslåing av selskapsprofil
SelskapstilstandData: generer på nyttDirektiver per agentAgenttilstandDirektiver per agent genereres på nytt ut fra den sammenslåtte profilen og lagres.
Direktiver per agent
AgenttilstandKjøring · vurdering: direktiver innTildelt agentDirektiver kommer inn i en agents kontekst når den opprettes. Det betyr ikke at et bestemt forslag kom fra et bestemt Slack-signal.
Forslag → godkjenning → tildeling
Et forslag finnes først som en ikke-tildelt backlog-sak, en persons reaksjon ber om en statusendring, og tildeling og utførelse hører til det eksterne systemet.
MålprosjektData: målomfangPO-kall · avgrenset prompt
VedlikeholdsanalyseVedlikeholdsjobben kaller PO-agenten med en prompt avgrenset til målprosjektet. Kildeinnhold vises ikke.
PO-kall · avgrenset prompt
VedlikeholdsanalyseData: forslagssakForslag · backlogSakssporingPrompten ber om forslag med bare verifiserte stier som ikke-tildelte backlog-saker og forbyr å kjøre DB-migreringer. Det er en instruks til en produktagent, ikke en deterministisk håndhevingsmekanisme.
Forslag · backlog
SakssporingData: publiser forslagKobling melding ↔ sakPublisering av forslagHvert forslag publiseres i Slack, og koblingen mellom melding og sak lagres. Forslag som allerede er publisert, publiseres ikke på nytt, og den lagrede koblingen beholder de siste 50.
Kobling melding ↔ sak
Publisering av forslagData: Slack-meldingPerson · godkjenn, avslåEn person ser det publiserte forslaget i Slack.
Person · godkjenn, avslåKjøring · vurdering: reaksjonKobling melding ↔ sak
Publisering av forslagEn reaksjon på meldingen finner saken via koblingen. Det finnes ingen automatisk godkjenning.
Kobling melding ↔ sak
Publisering av forslagKjøring · vurdering: godkjenn → todoKjøresak · todoSakssporingVed godkjenning sendes en forespørsel om å flytte den ventende forslagssaken til todo, og koblingen og trådvarselet oppdateres. Denne håndtereren markerer koblingen som godkjent uten å kontrollere svarkoden, så det er ikke en fail-closed-transaksjon.
Kobling melding ↔ sak
Publisering av forslagKjøring · vurdering: avslå → cancelledForslag · backlogSakssporingVed avslag sendes en forespørsel om å flytte samme sak til cancelled. Saken fantes før godkjenningen; godkjenningen oppretter den ikke.
Kjøresak · todo
SakssporingKjøring · vurdering: tildelingTildelt agentTildeling og utførelse av en todo-sak hører til det eksterne utførelsessystemet. Å flytte en sak til todo garanterer ikke at arbeidet har startet.
Stillstand → gjenoppretting → person
For en tildelt sak der aktiviteten har stoppet, bes det på nytt med saken og den ansvarlige; når uteblitte svar på rad når grensen, går den til en person.
Tildelt agentObservasjon · rapport: kjøreloggerSiste kjøringer · aktivitet
KjøreobservasjonDen tildelte agentens kjøringer og siste signaler registreres som observasjoner. Aktivitet er ikke belegg for fullføring.
Siste kjøringer · aktivitet
KjøreobservasjonObservasjon · rapport: siste aktivitetKontroll av stillstand · heartbeatStage reaperReaperen ser bare på saker som ikke er done, cancelled eller blocked, og som har en ansvarlig, og beregner alderen på det siste signalet og stage.
Kontroll av stillstand · heartbeat
Stage reaperData: uteblitt svar +1Uteblitte svar · per sakTilstand for uteblitte svarUteblitte svar på rad telles per agent og sak og lagres i tilstanden.
Siste kjøringer · aktivitet
KjøreobservasjonObservasjon · rapport: ny aktivitet → nullstillUteblitte svar · per sakTilstand for uteblitte svarNy aktivitet nullstiller tellingen.
Kontroll av stillstand · heartbeat
Stage reaperKjøring · vurdering: nytt kallSak + ansvarligGjenopprettingskallHvis heartbeat overskrides og tellingen er under grensen, gjøres et gjenopprettingskall.
Sak + ansvarlig
GjenopprettingskallKjøring · vurdering: sak + ansvarligKjøresak · todoSakssporingDet bes om tildelingen på nytt med saken, den tildelte agenten og en forklarende kommentar, og HTTP-svaret kontrolleres. En legacy-sti faller tilbake på ett enkelt vekkingskall.
Uteblitte svar · per sak
Tilstand for uteblitte svarFeil · grense: etter 3Stopp nye kall · cooldownGrenseNår uteblitte svar på rad når grensen (3 som standard), stopper nye kall. Grensen holder bare når tilstandshooks leser og skriver tellingen, og en mislykket lagring kan svekke den.
Stopp nye kall · cooldown
GrenseKjøring · vurdering: omtildel · varsleLead · operatørOmtildeler om mulig til en lead og flytter bare in_progress tilbake til todo når den funksjonen er slått på. Ellers legges det igjen en kommentar og et best-effort-varsel, og en cooldown registreres etter grensen.
Kontroll av stillstand · heartbeat
Stage reaperObservasjon · rapport: bare advarselLead · operatørNår en stage varer for lenge, legges det bare igjen en advarselskommentar til operatører. Status endres ikke automatisk.
Alle forbindelser med samme tykkelse. Velg en flyt for å fremheve bare dens vei, med nummererte steg.
- Heltrukket · retning for input, resultater og logger
- Stiplet · kjøring, vurdering, forespørsel
- Lange prikker · observasjon og rapportering, atskilt fra vurdering
- Korte streker · feil, stopp, grense
- Kraftig svart linje · den valgte flyten; tallene angir rekkefølgen
- Boks · kode- eller tilstandsgrense, navngitt i overskriften
- Indre chip · en komponent innenfor grensen
- Prikket boks · utenfor grensen
- Oransje kontur · der en modell tar beslutninger
- Agentkall · gjenopprettingskall
- Tilstand · logger
- Kontroll av stillstand · grense
- Innsamling · publisering
Tegnet ut fra private implementerings- og utviklingslogger. Team-, saks- og Slack-identifikatorer og opprinnelige meldinger vises ikke; utrulling, containere og påloggingsinformasjon tilhører en eier utenfor denne pluginen.
- Én observasjon
- Rapport fra 28. april 2026: i en manuell diagnose før endringen ble det for én sak som ikke hadde kjørt på 67 timer, bedt om tildelingen på nytt med sak og ansvarlig, og en ny kjøring ble satt i kø innen 5 sekunder. Fullføring, gjennomsnittlig gjenopprettingstid og effekt etter utrulling ble ikke målt.
- Begrensninger i håndteringen av godkjenninger
- I motsetning til gjenopprettingskallet markerer håndteringen av godkjenninger koblingen som godkjent uten å kontrollere svarkoden. Den beskrives ikke som en atomisk eller fail-closed godkjenningstransaksjon.
- Når grensen holder
- Grensen på 3 kall er en implementering som holder når tilstandshooks finnes. Den garanterer ikke nøyaktig én eskalering ved enhver feil.