
Kiki
Pracovní signály a provádění agentů
Aby se návrh stal činností řešitele.
Plugin pro Paperclip a kolektor ze Slacku, které týmu pomáhají provozovat agenty 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
Mezi přidělením a skutečným provedením: cesta k pozorování a obnově.
Pracovní signály se mění na profily a direktivy pro agenty a schválení návrhu údržby je odděleno od přidělení jeho provedení. Když aktivita přiděleného tiketu ustane, znovu se o něj požádá s tiketem a řešitelem a opakované neodpovídání vede k limitu, cooldownu a lidskému posouzení.
Mění pracovní signály na direktivy pro agenty a jako samostatné kroky propojují návrhy údržby, lidské schválení, přidělení a obnovu zaseknutých běhů. Plánování a vývoj tohoto toku jsou mou prací.
První záznam v repozitáři April 3, 2026 · spolupráce s pinxlab do May 26, 2026
Běží jako plugin uvnitř týmového Paperclip; sběr ze Slacku obstarává server MCP.
Signály → direktivy
Profily a direktivy pro agenty vznikají z historie Slacku. Direktivy jsou kontextem agenta a nezobrazují se jako příčina žádného návrhu.
Signály SlackÚdaje: historie kanálůVytěžení vzorců · bez botů
Sběr signálůShromažďuje se dostupná historie kanálů a zprávy botů a o připojení či odchodu se odfiltrují. Původní zprávy se na této stránce nezobrazují.
Vytěžení vzorců · bez botů
Sběr signálůÚdaje: sloučení profiluSloučení profilu firmyStav firmyVytěžené vzorce se stanou záplatou profilu sloučenou do profilu firmy. Jde o heuristické vzorce, nikoli o hodnocení výkonu zaměstnanců.
Sloučení profilu firmy
Stav firmyÚdaje: regeneraceDirektivy pro agentyStav agentaDirektivy pro jednotlivé agenty se ze sloučeného profilu vygenerují znovu a uloží.
Direktivy pro agenty
Stav agentaSpuštění · rozhodnutí: vložení direktivPřidělený agentDirektivy se dostanou do kontextu agenta při jeho vytvoření. Neznamená to, že určitý návrh vzešel z určitého signálu Slack.
Návrh → schválení → přidělení
Návrh nejprve existuje jako nepřidělený tiket v backlogu, reakce člověka žádá o změnu stavu a přidělení a provedení patří externímu systému.
Cílový projektÚdaje: rozsah cíleVolání PO · prompt s vymezeným rozsahem
Analýza údržbyÚloha údržby volá agenta PO s promptem vymezeným na cílový projekt. Obsah zdrojů se nezobrazuje.
Volání PO · prompt s vymezeným rozsahem
Analýza údržbyÚdaje: tiket s návrhemNávrh · backlogSystém tiketůPrompt žádá o návrhy jen s ověřenými cestami, ve formě nepřidělených tiketů v backlogu, a zakazuje spouštět migrace DB. Jde o pokyn produktovému agentovi, nikoli o deterministický mechanismus vynucení.
Návrh · backlog
Systém tiketůÚdaje: zveřejnění návrhuMapování zpráva ↔ tiketZveřejňování návrhůKaždý návrh se zveřejní ve Slacku a mapování zprávy na tiket se uloží. Již zveřejněné návrhy se znovu nezveřejňují a uložené mapování drží posledních 50.
Mapování zpráva ↔ tiket
Zveřejňování návrhůÚdaje: zpráva SlackČlověk · schvaluje, odmítáČlověk vidí zveřejněný návrh ve Slacku.
Člověk · schvaluje, odmítáSpuštění · rozhodnutí: reakceMapování zpráva ↔ tiket
Zveřejňování návrhůReakce na zprávu najde tiket přes mapování. Automatické schvalování neexistuje.
Mapování zpráva ↔ tiket
Zveřejňování návrhůSpuštění · rozhodnutí: schválení → todoTiket k provedení · todoSystém tiketůPři schválení se odešle žádost o přesun čekajícího tiketu s návrhem do todo a aktualizuje se mapování a upozornění ve vlákně. Tento handler označí mapování jako schválené bez kontroly kódu odpovědi, takže nejde o transakci, která se při selhání uzavře.
Mapování zpráva ↔ tiket
Zveřejňování návrhůSpuštění · rozhodnutí: odmítnutí → cancelledNávrh · backlogSystém tiketůPři odmítnutí se odešle žádost o přesun téhož tiketu do cancelled. Tiket existoval už před schválením; schválení ho nevytváří.
Tiket k provedení · todo
Systém tiketůSpuštění · rozhodnutí: přiděleníPřidělený agentPřidělení a provedení tiketu todo patří externímu prováděcímu systému. Přesun tiketu do todo nezaručuje, že práce začala.
Uvíznutí → obnova → člověk
O přidělený tiket, jehož aktivita ustala, se znovu požádá s tiketem a řešitelem; když po sobě jdoucí neodpovědi dosáhnou limitu, přejde na člověka.
Přidělený agentPozorování · zpráva: záznamy běhůNedávné běhy · aktivita
Pozorování běhůBěhy přiděleného agenta a nedávné signály se zaznamenávají jako pozorování. Aktivita není dokladem dokončení.
Nedávné běhy · aktivita
Pozorování běhůPozorování · zpráva: poslední aktivitaKontrola uvíznutí · heartbeatStage reaperReaper sleduje jen tikety, které nejsou done, cancelled ani blocked a mají řešitele, a počítá stáří posledního signálu a fáze.
Kontrola uvíznutí · heartbeat
Stage reaperÚdaje: neodpověď +1Neodpovědi · na tiketStav neodpovídáníPo sobě jdoucí neodpovědi se počítají pro každou dvojici agent–tiket a ukládají do stavu.
Nedávné běhy · aktivita
Pozorování běhůPozorování · zpráva: nová aktivita → resetNeodpovědi · na tiketStav neodpovídáníNová aktivita počet vynuluje.
Kontrola uvíznutí · heartbeat
Stage reaperSpuštění · rozhodnutí: opakované voláníTiket + řešitelObnovovací voláníPokud byl heartbeat překročen a počet je pod limitem, provede se obnovovací volání.
Tiket + řešitel
Obnovovací voláníSpuštění · rozhodnutí: tiket + řešitelTiket k provedení · todoSystém tiketůO přidělení se znovu požádá s tiketem, přiděleným agentem a vysvětlujícím komentářem a odpověď HTTP se zkontroluje. Cesta legacy to nahrazuje jediným budicím voláním.
Neodpovědi · na tiket
Stav neodpovídáníSelhání · limit: po 3Zastavit volání · cooldownLimitKdyž po sobě jdoucí neodpovědi dosáhnou limitu (výchozí 3), opakovaná volání ustanou. Limit platí jen tehdy, když stavové hooky počet čtou a zapisují, a neúspěšné uložení ho může oslabit.
Zastavit volání · cooldown
LimitSpuštění · rozhodnutí: nové přidělení · upozorněníVedoucí · operátorPodle možností přidělí případ znovu vedoucímu a in_progress vrátí do todo jen tehdy, když je tato funkce zapnutá. Jinak zanechá komentář a upozornění best-effort a po dosažení limitu zaznamená cooldown.
Kontrola uvíznutí · heartbeat
Stage reaperPozorování · zpráva: jen varováníVedoucí · operátorKdyž fáze trvá příliš dlouho, operátorům se zanechá jen varovný komentář. Stav se automaticky nemění.
Každé spojení se stejnou váhou. Výběr toku zvýrazní jen jeho cestu s očíslovanými kroky.
- Plná čára · směr vstupu, výsledků a záznamů
- Přerušovaná čára · spuštění, rozhodnutí, požadavek
- Dlouhé tečky · pozorování a vykazování, odděleně od rozhodnutí
- Krátké čárky · selhání, zastavení, limit
- Silná černá čára · zvolený tok; čísla udávají pořadí
- Rámeček · hranice kódu nebo stavu, pojmenovaná v záhlaví
- Vnitřní štítek · komponenta této hranice
- Tečkovaný rámeček · mimo tuto hranici
- Oranžový obrys · místo, kde rozhoduje model
- Volání agenta · obnovovací volání
- Stav · záznamy
- Kontrola uvíznutí · limit
- Sběr · zveřejňování
Nakresleno podle neveřejných záznamů implementace a vývoje. Identifikátory týmu, tiketů a Slacku a původní zprávy se nezobrazují; nasazení, kontejnery a přihlašovací údaje patří vlastníkovi mimo tento plugin.
- Jedno pozorování
- Zpráva z April 28, 2026: při ruční diagnóze před změnou se u jednoho tiketu, který 67 hodin neběžel, znovu požádalo o přidělení s tiketem a řešitelem a nový běh se do 5 sekund zařadil do fronty. Dokončení, průměrná doba obnovy ani efekt po nasazení se neměřily.
- Meze zpracování schválení
- Na rozdíl od obnovovacího volání zpracování schválení označí mapování jako schválené bez kontroly kódu odpovědi. Nepopisuje se jako atomická transakce schválení ani jako transakce, která se při selhání uzavře.
- Kdy limit platí
- Limit 3 volání je implementace, která platí, když jsou přítomny stavové hooky. Nezaručuje právě jednu eskalaci při každém selhání.