
Kiki
Arbejdssignaler og agentudførelse
Så et forslag bliver til den ansvarliges udførelse.
Et Paperclip-plugin og en Slack-indsamler, der hjælper et team med at drive sine AI-agenter.
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
Mellem tildeling og faktisk udførelse: en sti til at observere og gendanne.
Arbejdssignaler bliver til profiler og agentdirektiver, og godkendelse af et vedligeholdelsesforslag holdes adskilt fra tildeling af dets udførelse. Når aktiviteten på et tildelt issue stopper, anmodes der igen med issue og ansvarlig, og gentagne udeblevne svar går videre til en grænse, en cooldown og en persons vurdering.
De omsætter arbejdssignaler til agentdirektiver og forbinder vedligeholdelsesforslag, menneskelig godkendelse, tildeling og gendannelse af kørsler, der er gået i stå, som separate trin. Jeg planlagde og udviklede dette forløb.
Første log i repositoryet 3. april 2026 · opgave for pinxlab til og med 26. maj 2026
Kører som plugin inde i teamets Paperclip; en MCP-server står for indsamlingen fra Slack.
Signaler → direktiver
Profiler og agentdirektiver bygges ud fra Slack-historik. Direktiver er agentkontekst og er ikke tegnet som årsag til noget forslag.
Slack-signalerData: kanalhistorikMønsterudtræk · ingen bots
SignalindsamlingTilgængelig kanalhistorik indsamles, og beskeder fra bots samt om at tilslutte sig og forlade kanalen frasorteres. Originale beskeder vises ikke på denne side.
Mønsterudtræk · ingen bots
SignalindsamlingData: fletning af profilFletning af virksomhedsprofilVirksomhedstilstandUdtrukne mønstre bliver til en profil-patch, der flettes ind i virksomhedsprofilen. Det er heuristiske mønstre, ikke medarbejderes præstationsscorer.
Fletning af virksomhedsprofil
VirksomhedstilstandData: regenerérDirektiver pr. agentAgenttilstandDirektiver pr. agent regenereres ud fra den flettede profil og gemmes.
Direktiver pr. agent
AgenttilstandKørsel · vurdering: direktiver indTildelt agentDirektiver kommer ind i en agents kontekst, når den oprettes. Det betyder ikke, at et bestemt forslag stammer fra et bestemt Slack-signal.
Forslag → godkendelse → tildeling
Et forslag findes først som et ikke-tildelt backlog-issue, en persons reaktion anmoder om en statusændring, og tildeling og udførelse hører til det eksterne system.
MålprojektData: målomfangPO-kald · afgrænset prompt
VedligeholdelsesanalyseVedligeholdelsesjobbet kalder PO-agenten med en prompt afgrænset til målprojektet. Kildeindhold vises ikke.
PO-kald · afgrænset prompt
VedligeholdelsesanalyseData: forslags-issueForslag · backlogIssue-trackerPrompten beder om forslag med kun verificerede stier som ikke-tildelte backlog-issues og forbyder at køre DB-migreringer. Det er en instruks til en produktagent, ikke en deterministisk håndhævelsesmekanisme.
Forslag · backlog
Issue-trackerData: slå forslag opKobling besked ↔ issueOpslag af forslagHvert forslag slås op i Slack, og koblingen mellem besked og issue gemmes. Forslag, der allerede er slået op, slås ikke op igen, og den gemte kobling rummer de seneste 50.
Kobling besked ↔ issue
Opslag af forslagData: Slack-beskedPerson · godkend, afvisEn person ser det opslåede forslag i Slack.
Person · godkend, afvisKørsel · vurdering: reaktionKobling besked ↔ issue
Opslag af forslagEn reaktion på beskeden finder issuet via koblingen. Der er ingen automatisk godkendelse.
Kobling besked ↔ issue
Opslag af forslagKørsel · vurdering: godkend → todoKørsels-issue · todoIssue-trackerVed godkendelse sendes en anmodning om at flytte det ventende forslags-issue til todo, og koblingen og trådbeskeden opdateres. Denne handler markerer koblingen som godkendt uden at kontrollere svarkoden, så det er ikke en fail-closed-transaktion.
Kobling besked ↔ issue
Opslag af forslagKørsel · vurdering: afvis → cancelledForslag · backlogIssue-trackerVed afvisning sendes en anmodning om at flytte samme issue til cancelled. Issuet fandtes før godkendelsen; godkendelsen opretter det ikke.
Kørsels-issue · todo
Issue-trackerKørsel · vurdering: tildelingTildelt agentTildeling og udførelse af et todo-issue hører til det eksterne udførelsessystem. At flytte et issue til todo garanterer ikke, at arbejdet er startet.
Stilstand → gendannelse → person
For et tildelt issue, hvis aktivitet er stoppet, anmodes der igen med issue og ansvarlig; når udeblevne svar i træk når grænsen, går det til en person.
Tildelt agentObservation · rapport: kørselslogsSeneste kørsler · aktivitet
KørselsobservationDen tildelte agents kørsler og seneste signaler registreres som observationer. Aktivitet er ikke belæg for fuldførelse.
Seneste kørsler · aktivitet
KørselsobservationObservation · rapport: seneste aktivitetKontrol af stilstand · heartbeatStage reaperReaperen ser kun på issues, der ikke er done, cancelled eller blocked, og som har en ansvarlig, og beregner alderen på det seneste signal og stage.
Kontrol af stilstand · heartbeat
Stage reaperData: udeblevet svar +1Udeblevne svar · pr. issueTilstand for udeblevne svarUdeblevne svar i træk tælles pr. agent og issue og gemmes i tilstanden.
Seneste kørsler · aktivitet
KørselsobservationObservation · rapport: ny aktivitet → nulstilUdeblevne svar · pr. issueTilstand for udeblevne svarNy aktivitet nulstiller tællingen.
Kontrol af stilstand · heartbeat
Stage reaperKørsel · vurdering: nyt kaldIssue + ansvarligGendannelseskaldHvis heartbeat overskrides, og tællingen er under grænsen, foretages et gendannelseskald.
Issue + ansvarlig
GendannelseskaldKørsel · vurdering: issue + ansvarligKørsels-issue · todoIssue-trackerDer anmodes igen om tildelingen med issue, den tildelte agent og en forklarende kommentar, og HTTP-svaret kontrolleres. En legacy-sti falder tilbage til et enkelt vækningskald.
Udeblevne svar · pr. issue
Tilstand for udeblevne svarFejl · grænse: efter 3Stop nye kald · cooldownGrænseNår udeblevne svar i træk når grænsen (som standard 3), stopper nye kald. Grænsen holder kun, når state-hooks læser og skriver tællingen, og en mislykket lagring kan svække den.
Stop nye kald · cooldown
GrænseKørsel · vurdering: omtildel · giv beskedLead · operatørOmtildeler om muligt til en lead og flytter kun in_progress tilbage til todo, når den funktion er slået til. Ellers efterlades en kommentar og en best-effort-notifikation, og en cooldown registreres efter grænsen.
Kontrol af stilstand · heartbeat
Stage reaperObservation · rapport: kun advarselLead · operatørNår en stage varer for længe, efterlades kun en advarende kommentar til operatører. Status ændres ikke automatisk.
Alle forbindelser med samme tykkelse. Vælg et flow for kun at fremhæve dets vej med nummererede trin.
- Fuldt optrukket · retning for input, resultater og logs
- Stiplet · kørsel, vurdering, anmodning
- Lange prikker · observation og rapportering, adskilt fra vurdering
- Korte streger · fejl, stop, grænse
- Kraftig sort linje · det valgte flow; tal angiver rækkefølgen
- Boks · kode- eller tilstandsgrænse, navngivet i overskriften
- Indre chip · en komponent inden for grænsen
- Prikket boks · uden for grænsen
- Orange kontur · hvor en model træffer beslutninger
- Agentkald · gendannelseskald
- Tilstand · logs
- Kontrol af stilstand · grænse
- Indsamling · opslag
Tegnet ud fra private implementerings- og udviklingslogs. Team-, issue- og Slack-identifikatorer og originale beskeder vises ikke; udrulning, containere og legitimationsoplysninger tilhører en ejer uden for dette plugin.
- Én observation
- Rapport fra 28. april 2026: i en manuel diagnose før ændringen blev der for ét issue, der ikke havde kørt i 67 timer, anmodet igen om tildelingen med issue og ansvarlig, og en ny kørsel blev sat i kø inden for 5 sekunder. Fuldførelse, gennemsnitlig gendannelsestid og effekt efter udrulning blev ikke målt.
- Begrænsninger i behandlingen af godkendelser
- I modsætning til gendannelseskaldet markerer behandlingen af godkendelser koblingen som godkendt uden at kontrollere svarkoden. Den beskrives ikke som en atomisk eller fail-closed godkendelsestransaktion.
- Hvornår grænsen holder
- Grænsen på 3 kald er en implementering, der holder, når state-hooks er til stede. Den garanterer ikke præcis én eskalering ved enhver fejl.