Прозоре похідне зображення обличчя з картинки кота Kiki, наданої автором
Назад до зали

Kiki

Робочі сигнали й виконання агентами

Щоб пропозиція стала виконанням у відповідального.

Плагін Paperclip і збирач Slack, що допомагають команді керувати своїми AI-агентами.

2026.04 — 2026.05

pinxlab, фриланс в AI R&D · планування й розробка робочого процесу, розслідування застою виконання й проєктування шляху відновлення

  • ПлагінРеалізовано · Paperclip
  • MCP-серверРеалізовано · збирач Slack

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

Між призначенням і фактичним виконанням — шлях для спостереження й відновлення.

Робочі сигнали стають профілями й директивами агентам, а схвалення пропозиції з обслуговування тримається окремо від призначення її виконання. Коли активність призначеної задачі зупиняється, її запитують знову із задачею й відповідальним, а повторна відсутність відповіді веде до ліміту, cooldown і рішення людини.

Вони перетворюють робочі сигнали на директиви агентам і з’єднують пропозиції з обслуговування, схвалення людиною, призначення й відновлення завислих запусків як окремі кроки. Я спланував і розробив цей потік.

Перший запис у репозиторії April 3, 2026 · співпраця з pinxlab до May 26, 2026

Працює як плагін усередині Paperclip команди; збиранням зі Slack займається MCP-сервер.

Карта потоку виконання · за закритими записами реалізації
Kiki: сигнали · схвалення · відновлення виконанняРобочі шаблони витягуються з доступної історії каналів Slack у профілі компаній і директиви для кожного агента. Агент аналізу обслуговування переглядає цільовий проєкт і залишає пропозиції як непризначені задачі в backlog; кожну пропозицію публікують у Slack, де людина схвалює чи відхиляє її реакцією. Щойно схвалену задачу призначено агентові, роботу виконує зовнішня система виконання, а stage reaper стежить за нещодавньою активністю. Якщо активність зупиняється, призначення запитують знову із задачею й відповідальним; коли кількість поспіль відсутніх відповідей досягає ліміту, повторні виклики припиняються, і випадок переходить до керівника чи оператора.Сигнали SlackДоступна історія каналівПризначений агентЗовнішнє виконанняЦільовий проєктВміст не показаноЛюдина · схвалення, відхиленняРеакція в SlackКерівник · операторПерепризначення · сповіщенняЗбирання сигналівВитягування шаблонів · без ботівСтан компаніїОб’єднання профілю компаніїСтан агентаДирективи для кожного агентаСпостереження запусківНещодавні запуски · активністьАналіз обслуговуванняВиклик PO · обмежений промптТрекер задачПропозиція · backlogЗадача на виконання · todoПублікація пропозиційВідповідність повідомлення ↔ задачіStage reaperПеревірка застою · heartbeatВиклик відновленняЗадача + відповідальнийСтан відсутніх відповідейВідсутні відповіді · за задачеюЛімітПрипинити повторні виклики · cooldownСигнали → директивиЗовнішнє виконанняПропозиція → схвалення людиноюВідновлення · ескалація1 історія каналів · Сигнали Slack → Витягування шаблонів · без ботів12 об’єднання профілю · Витягування шаблонів · без ботів → Об’єднання профілю компанії23 перегенерування · Об’єднання профілю компанії → Директиви для кожного агента34 директиви на вхід · Директиви для кожного агента → Призначений агент41обсяг цілі2 задача-пропозиція · Виклик PO · обмежений промпт → Пропозиція · backlog23публікація пропозиції4повідомлення Slack5реакція6схвалити → todo7відхилити → cancelled8призначення1записи запусків2остання активність3немає відповіді +14нова активність → скидання5 повторний виклик · Перевірка застою · heartbeat → Задача + відповідальний56задача + відповідальний7після 38перепризначення · сповіщення9лише попередження

Сигнали → директиви

Профілі й директиви агентам будуються з історії Slack. Директиви — це контекст агента, і їх не показано як причину будь-якої пропозиції.

  1. Сигнали SlackДані: історія каналівВитягування шаблонів · без ботівЗбирання сигналів

    Збирається доступна історія каналів, а повідомлення ботів, про приєднання й вихід відфільтровуються. Оригінальні повідомлення на цій сторінці не показано.

  2. Витягування шаблонів · без ботівЗбирання сигналівДані: об’єднання профілюОб’єднання профілю компаніїСтан компанії

    Витягнуті шаблони стають патчем профілю, що об’єднується з профілем компанії. Це евристичні шаблони, а не оцінки продуктивності працівників.

  3. Об’єднання профілю компаніїСтан компаніїДані: перегенеруванняДирективи для кожного агентаСтан агента

    Директиви для кожного агента перегенеровуються з об’єднаного профілю й зберігаються.

  4. Директиви для кожного агентаСтан агентаЗапуск · рішення: директиви на вхідПризначений агент

    Директиви потрапляють у контекст агента під час його створення. Це не означає, що певна пропозиція походить від певного сигналу Slack.

Пропозиція → схвалення → призначення

Пропозиція спершу існує як непризначена задача в backlog, реакція людини запитує зміну статусу, а призначення й виконання належать зовнішній системі.

  1. Цільовий проєктДані: обсяг ціліВиклик PO · обмежений промптАналіз обслуговування

    Завдання з обслуговування викликає агента PO з промптом, обмеженим цільовим проєктом. Вміст джерел не показано.

  2. Виклик PO · обмежений промптАналіз обслуговуванняДані: задача-пропозиціяПропозиція · backlogТрекер задач

    Промпт вимагає пропозицій лише з перевіреними шляхами, у вигляді непризначених задач у backlog, і забороняє запускати міграції БД. Це інструкція продуктовому агентові, а не детермінований механізм примусу.

  3. Пропозиція · backlogТрекер задачДані: публікація пропозиціїВідповідність повідомлення ↔ задачіПублікація пропозицій

    Кожну пропозицію публікують у Slack, а відповідність повідомлення задачі зберігають. Уже опубліковані пропозиції повторно не публікуються, а збережена відповідність тримає останні 50.

  4. Відповідність повідомлення ↔ задачіПублікація пропозиційДані: повідомлення SlackЛюдина · схвалення, відхилення

    Людина бачить опубліковану пропозицію в Slack.

  5. Людина · схвалення, відхиленняЗапуск · рішення: реакціяВідповідність повідомлення ↔ задачіПублікація пропозицій

    Реакція на повідомлення знаходить задачу через відповідність. Автоматичного схвалення немає.

  6. Відповідність повідомлення ↔ задачіПублікація пропозиційЗапуск · рішення: схвалити → todoЗадача на виконання · todoТрекер задач

    У разі схвалення надсилається запит перевести задачу-пропозицію, що очікує, у todo, а відповідність і сповіщення в треді оновлюються. Цей обробник позначає відповідність як схвалену, не перевіряючи код відповіді, тож це не транзакція, що закривається на збої.

  7. Відповідність повідомлення ↔ задачіПублікація пропозиційЗапуск · рішення: відхилити → cancelledПропозиція · backlogТрекер задач

    У разі відхилення надсилається запит перевести ту саму задачу в cancelled. Задача існувала до схвалення; схвалення її не створює.

  8. Задача на виконання · todoТрекер задачЗапуск · рішення: призначенняПризначений агент

    Призначення й виконання задачі в todo належать зовнішній системі виконання. Переведення задачі в todo не гарантує, що робота почалася.

Застій → відновлення → людина

Призначену задачу, активність якої зупинилася, запитують знову із задачею й відповідальним; коли кількість поспіль відсутніх відповідей досягає ліміту, вона переходить до людини.

  1. Призначений агентСпостереження · звіт: записи запусківНещодавні запуски · активністьСпостереження запусків

    Запуски призначеного агента й нещодавні сигнали записуються як спостереження. Активність не є доказом завершення.

  2. Нещодавні запуски · активністьСпостереження запусківСпостереження · звіт: остання активністьПеревірка застою · heartbeatStage reaper

    Reaper переглядає лише задачі, що не мають статусу done, cancelled чи blocked і мають відповідального, та обчислює вік останнього сигналу й етапу.

  3. Перевірка застою · heartbeatStage reaperДані: немає відповіді +1Відсутні відповіді · за задачеюСтан відсутніх відповідей

    Поспіль відсутні відповіді рахуються для кожної пари агент–задача й зберігаються в стані.

  4. Нещодавні запуски · активністьСпостереження запусківСпостереження · звіт: нова активність → скиданняВідсутні відповіді · за задачеюСтан відсутніх відповідей

    Нова активність скидає лічильник.

  5. Перевірка застою · heartbeatStage reaperЗапуск · рішення: повторний викликЗадача + відповідальнийВиклик відновлення

    Якщо heartbeat перевищено, а лічильник нижчий за ліміт, виконується виклик відновлення.

  6. Задача + відповідальнийВиклик відновленняЗапуск · рішення: задача + відповідальнийЗадача на виконання · todoТрекер задач

    Призначення запитують знову із задачею, призначеним агентом і пояснювальним коментарем, і HTTP-відповідь перевіряється. Застарілий шлях замість цього робить один виклик пробудження.

  7. Відсутні відповіді · за задачеюСтан відсутніх відповідейЗбій · ліміт: після 3Припинити повторні виклики · cooldownЛіміт

    Коли кількість поспіль відсутніх відповідей досягає ліміту (типово 3), повторні виклики припиняються. Ліміт діє лише тоді, коли hooks стану читають і записують лічильник, і невдале збереження може його послабити.

  8. Припинити повторні виклики · cooldownЛімітЗапуск · рішення: перепризначення · сповіщенняКерівник · оператор

    Якщо можливо, перепризначає керівникові й повертає in_progress у todo лише тоді, коли цю функцію ввімкнено. Інакше залишає коментар і сповіщення best-effort, а після ліміту записує cooldown.

  9. Перевірка застою · heartbeatStage reaperСпостереження · звіт: лише попередженняКерівник · оператор

    Коли етап триває надто довго, операторам лишається тільки коментар-попередження. Статус автоматично не змінюється.

Усі зв’язки однакової товщини. Оберіть потік, щоб підсвітити лише його шлях із пронумерованими кроками.

  • Суцільна · напрямок входів, результатів і записів
  • Штрихова · запуск, рішення, запит
  • Довга пунктирна · спостереження й звітування, окремо від рішення
  • Коротка штрихова · збій, зупинка, ліміт
  • Товста чорна лінія · обраний потік; номери показують порядок
  • Рамка · межа коду чи стану, названа в заголовку
  • Внутрішня плашка · компонент цієї межі
  • Пунктирна рамка · поза цією межею
  • Помаранчевий контур · де вирішує модель
  • Виклик агента · виклик відновлення
  • Стан · записи
  • Перевірка застою · ліміт
  • Збирання · публікація

Накреслено за закритими записами реалізації й розробки. Ідентифікатори команди, задач і Slack та оригінальні повідомлення не показано; розгортання, контейнери й облікові дані належать власникові поза цим плагіном.

Одне спостереження
Звіт від April 28, 2026: під час ручної діагностики до зміни для однієї задачі, яка не виконувалася 67 годин, призначення запитали знову із задачею й відповідальним, і новий запуск став у чергу протягом 5 секунд. Завершення, середній час відновлення й ефект після впровадження не вимірювали.
Межі обробки схвалення
На відміну від виклику відновлення, обробка схвалення позначає відповідність як схвалену, не перевіряючи код відповіді. Її не описано як атомарну чи закриту на збої транзакцію схвалення.
Коли діє ліміт
Ліміт у 3 виклики — реалізація, що діє за наявності hooks стану. Він не гарантує рівно однієї ескалації за будь-якого збою.