
Kiki
Sygnały pracy i wykonanie agentów
Aby propozycja stała się działaniem osoby odpowiedzialnej.
Wtyczka Paperclip i kolektor Slack, które pomagają zespołowi obsługiwać agentów AI.
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
Między przydziałem a faktycznym wykonaniem: ścieżka obserwacji i przywracania.
Sygnały pracy stają się profilami i dyrektywami dla agentów, a zatwierdzenie propozycji utrzymaniowej jest oddzielone od przydzielenia jej wykonania. Gdy aktywność przydzielonego zgłoszenia ustaje, jest ono zlecane ponownie ze zgłoszeniem i osobą odpowiedzialną, a powtarzający się brak odpowiedzi prowadzi do limitu, cooldownu i oceny człowieka.
Zamieniają sygnały pracy w dyrektywy dla agentów i łączą jako osobne kroki propozycje utrzymaniowe, zatwierdzenie przez człowieka, przydział i przywracanie zablokowanych przebiegów. Planowanie i rozwój tego przepływu to moja praca.
Pierwszy zapis w repozytorium April 3, 2026 · współpraca z pinxlab do May 26, 2026
Działa jako wtyczka wewnątrz Paperclip zespołu; zbieraniem ze Slack zajmuje się serwer MCP.
Sygnały → dyrektywy
Profile i dyrektywy dla agentów powstają z historii Slack. Dyrektywy są kontekstem agenta i nie są przedstawiane jako przyczyna żadnej propozycji.
Sygnały SlackDane: historia kanałówWyodrębnianie wzorców · bez botów
Zbieranie sygnałówZbierana jest dostępna historia kanałów, a wiadomości botów oraz o dołączeniu i opuszczeniu są odfiltrowywane. Oryginalne wiadomości nie są pokazywane na tej stronie.
Wyodrębnianie wzorców · bez botów
Zbieranie sygnałówDane: scalanie profiluScalanie profilu firmyStan firmyWyodrębnione wzorce stają się łatką profilu scalaną z profilem firmy. To wzorce heurystyczne, a nie oceny wydajności pracowników.
Scalanie profilu firmy
Stan firmyDane: regeneracjaDyrektywy dla agentówStan agentaDyrektywy dla poszczególnych agentów są generowane na nowo ze scalonego profilu i zapisywane.
Dyrektywy dla agentów
Stan agentaUruchomienie · rozstrzygnięcie: wstrzyknięcie dyrektywPrzydzielony agentDyrektywy trafiają do kontekstu agenta przy jego tworzeniu. Nie oznacza to, że dana propozycja pochodzi z danego sygnału Slack.
Propozycja → zatwierdzenie → przydział
Propozycja najpierw istnieje jako nieprzydzielone zgłoszenie w backlogu, reakcja człowieka zleca zmianę statusu, a przydział i wykonanie należą do systemu zewnętrznego.
Projekt docelowyDane: zakres celuWywołanie PO · prompt o ograniczonym zakresie
Analiza utrzymaniowaZadanie utrzymaniowe wywołuje agenta PO z promptem ograniczonym do projektu docelowego. Zawartość źródeł nie jest pokazywana.
Wywołanie PO · prompt o ograniczonym zakresie
Analiza utrzymaniowaDane: zgłoszenie z propozycjąPropozycja · backlogSystem zgłoszeńPrompt prosi o propozycje wyłącznie ze zweryfikowanymi ścieżkami, w postaci nieprzydzielonych zgłoszeń w backlogu, i zabrania uruchamiania migracji DB. To instrukcja dla agenta produktu, a nie deterministyczny mechanizm egzekwowania.
Propozycja · backlog
System zgłoszeńDane: publikacja propozycjiMapowanie wiadomość ↔ zgłoszeniePublikowanie propozycjiKażda propozycja jest publikowana w Slack, a mapowanie wiadomości na zgłoszenie jest zapisywane. Już opublikowane propozycje nie są publikowane ponownie, a zapisane mapowanie przechowuje ostatnie 50.
Mapowanie wiadomość ↔ zgłoszenie
Publikowanie propozycjiDane: wiadomość SlackCzłowiek · zatwierdza, odrzucaCzłowiek widzi opublikowaną propozycję w Slack.
Człowiek · zatwierdza, odrzucaUruchomienie · rozstrzygnięcie: reakcjaMapowanie wiadomość ↔ zgłoszenie
Publikowanie propozycjiReakcja na wiadomość odnajduje zgłoszenie przez mapowanie. Nie ma automatycznego zatwierdzania.
Mapowanie wiadomość ↔ zgłoszenie
Publikowanie propozycjiUruchomienie · rozstrzygnięcie: zatwierdzenie → todoZgłoszenie do wykonania · todoSystem zgłoszeńPrzy zatwierdzeniu wysyłane jest żądanie przeniesienia oczekującego zgłoszenia z propozycją do todo, a mapowanie i powiadomienie w wątku są aktualizowane. Ten handler oznacza mapowanie jako zatwierdzone bez sprawdzania kodu odpowiedzi, więc nie jest to transakcja zamykająca się przy awarii.
Mapowanie wiadomość ↔ zgłoszenie
Publikowanie propozycjiUruchomienie · rozstrzygnięcie: odrzucenie → cancelledPropozycja · backlogSystem zgłoszeńPrzy odrzuceniu wysyłane jest żądanie przeniesienia tego samego zgłoszenia do cancelled. Zgłoszenie istniało przed zatwierdzeniem; zatwierdzenie go nie tworzy.
Zgłoszenie do wykonania · todo
System zgłoszeńUruchomienie · rozstrzygnięcie: przydziałPrzydzielony agentPrzydział i wykonanie zgłoszenia todo należą do zewnętrznego systemu wykonawczego. Przeniesienie zgłoszenia do todo nie gwarantuje, że praca się rozpoczęła.
Utknięcie → przywrócenie → człowiek
Przydzielone zgłoszenie, którego aktywność ustała, jest zlecane ponownie ze zgłoszeniem i osobą odpowiedzialną; gdy kolejne braki odpowiedzi osiągną limit, trafia do człowieka.
Przydzielony agentObserwacja · raport: zapisy przebiegówOstatnie przebiegi · aktywność
Obserwacja przebiegówPrzebiegi przydzielonego agenta i ostatnie sygnały są zapisywane jako obserwacje. Aktywność nie jest dowodem ukończenia.
Ostatnie przebiegi · aktywność
Obserwacja przebiegówObserwacja · raport: ostatnia aktywnośćKontrola utknięcia · heartbeatStage reaperReaper patrzy tylko na zgłoszenia, które nie są done, cancelled ani blocked i mają osobę odpowiedzialną, i oblicza wiek ostatniego sygnału i etapu.
Kontrola utknięcia · heartbeat
Stage reaperDane: brak odpowiedzi +1Braki odpowiedzi · na zgłoszenieStan braku odpowiedziKolejne braki odpowiedzi są liczone dla każdej pary agent–zgłoszenie i zapisywane w stanie.
Ostatnie przebiegi · aktywność
Obserwacja przebiegówObserwacja · raport: nowa aktywność → resetBraki odpowiedzi · na zgłoszenieStan braku odpowiedziNowa aktywność zeruje licznik.
Kontrola utknięcia · heartbeat
Stage reaperUruchomienie · rozstrzygnięcie: ponowne wywołanieZgłoszenie + osoba odpowiedzialnaWywołanie przywracająceJeśli przekroczono heartbeat, a licznik jest poniżej limitu, wykonywane jest wywołanie przywracające.
Zgłoszenie + osoba odpowiedzialna
Wywołanie przywracająceUruchomienie · rozstrzygnięcie: zgłoszenie + osoba odpowiedzialnaZgłoszenie do wykonania · todoSystem zgłoszeńPrzydział jest zlecany ponownie ze zgłoszeniem, przydzielonym agentem i komentarzem wyjaśniającym, a odpowiedź HTTP jest sprawdzana. Ścieżka legacy zastępuje to pojedynczym wywołaniem wybudzającym.
Braki odpowiedzi · na zgłoszenie
Stan braku odpowiedziAwaria · limit: po 3Wstrzymanie wywołań · cooldownLimitGdy kolejne braki odpowiedzi osiągną limit (domyślnie 3), ponowne wywołania ustają. Limit obowiązuje tylko wtedy, gdy hooki stanu odczytują i zapisują licznik, a nieudany zapis może go osłabić.
Wstrzymanie wywołań · cooldown
LimitUruchomienie · rozstrzygnięcie: ponowny przydział · powiadomienieLider · operatorPrzydziela ponownie liderowi, jeśli to możliwe, i przenosi in_progress z powrotem do todo tylko wtedy, gdy ta funkcja jest włączona. W przeciwnym razie zostawia komentarz i powiadomienie best-effort, a po osiągnięciu limitu zapisuje cooldown.
Kontrola utknięcia · heartbeat
Stage reaperObserwacja · raport: tylko ostrzeżenieLider · operatorGdy etap trwa zbyt długo, operatorom zostawiany jest tylko komentarz z ostrzeżeniem. Status nie jest zmieniany automatycznie.
Każde połączenie z tą samą wagą. Wybór przepływu wyróżnia tylko jego ścieżkę z ponumerowanymi krokami.
- Linia ciągła · kierunek wejścia, wyników i zapisów
- Linia przerywana · uruchomienie, rozstrzygnięcie, żądanie
- Długie kropki · obserwacja i raportowanie, oddzielnie od rozstrzygnięcia
- Krótkie kreski · awaria, zatrzymanie, limit
- Gruba czarna linia · wybrany przepływ; liczby podają kolejność
- Ramka · granica kodu lub stanu, nazwana w nagłówku
- Wewnętrzny element · komponent tej granicy
- Kropkowana ramka · poza tą granicą
- Pomarańczowy obrys · miejsce, w którym decyduje model
- Wywołanie agenta · wywołanie przywracające
- Stan · zapisy
- Kontrola utknięcia · limit
- Zbieranie · publikowanie
Narysowano na podstawie niepublicznych zapisów implementacji i rozwoju. Identyfikatory zespołu, zgłoszeń i Slack oraz oryginalne wiadomości nie są pokazane; wdrożenie, kontenery i poświadczenia należą do właściciela spoza tej wtyczki.
- Jedna obserwacja
- Raport z April 28, 2026: w ręcznej diagnozie przed zmianą jedno zgłoszenie, które nie działało od 67 godzin, otrzymało ponowne zlecenie przydziału ze zgłoszeniem i osobą odpowiedzialną, a nowy przebieg trafił do kolejki w ciągu 5 sekund. Ukończenia, średniego czasu przywrócenia ani efektu po wdrożeniu nie mierzono.
- Granice obsługi zatwierdzeń
- W odróżnieniu od wywołania przywracającego obsługa zatwierdzeń oznacza mapowanie jako zatwierdzone bez sprawdzania kodu odpowiedzi. Nie jest opisywana jako atomowa ani zamykająca się przy awarii transakcja zatwierdzenia.
- Kiedy limit obowiązuje
- Limit 3 wywołań to implementacja, która obowiązuje, gdy obecne są hooki stanu. Nie gwarantuje dokładnie jednej eskalacji przy każdej awarii.