Прозрачен вариант на лицето от изображението на котката 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

Между възлагането и реалното изпълнение – път за наблюдение и възстановяване.

Работните сигнали стават профили и инструкции за агентите, а одобрението на предложение за поддръжка се държи отделно от възлагането на изпълнението му. Когато дейността по възложена задача спре, тя се иска отново със задачата и отговорника, а повтарящата се липса на отговор води до лимит, период на изчакване и преценка от човек.

Превръщат работните сигнали в инструкции за агентите и свързват като отделни стъпки предложенията за поддръжка, човешкото одобрение, възлагането и възстановяването на блокирали изпълнения. Планирах и разработих този поток.

Първи запис в хранилището: 3 април 2026 г. · ангажимент с pinxlab до 26 май 2026 г.

Работи като плъгин в Paperclip на екипа; MCP сървър отговаря за събирането от Slack.

Карта на потока на изпълнение · по непубличните записи за реализацията
Kiki: сигнали · одобрение · възстановяване на изпълнениетоОт достъпната история на каналите в Slack се извличат работни модели, които стават профили на компании и инструкции за всеки агент. Агент за анализ на поддръжката разглежда целеви проект и оставя предложения като задачи в backlog без отговорник; всяко предложение се публикува в Slack, където човек го одобрява или отхвърля с реакция. Щом одобрена задача бъде възложена на агент, работата се извършва от външна система за изпълнение, а stage reaper следи последната дейност. Ако дейността спре, възлагането се иска отново със задачата и отговорника; когато поредните липси на отговор достигнат лимита, повторните извиквания спират и случаят отива при ръководител или оператор.Сигнали от SlackДостъпна история на каналитеВъзложен агентВъншно изпълнениеЦелеви проектСъдържанието не е показаноЧовек · одобрява, отхвърляРеакция в SlackРъководител · операторПревъзлагане · известиеСъбиране на сигналиИзвличане на модели · без ботовеСъстояние на компаниятаСливане на профила на компаниятаСъстояние на агентаИнструкции за всеки агентНаблюдение на изпълнениятаПоследни изпълнения · дейностАнализ на поддръжкатаИзвикване на PO · промпт с обхватСистема за задачиПредложение · backlogЗадача за изпълнение · todoПубликуване на предложенияСъпоставяне съобщение ↔ задачаStage reaperПроверка за застой · heartbeatИзвикване за възстановяванеЗадача + отговорникСъстояние на липсата на отговорЛипси на отговор · по задачиЛимитСпиране на повторните извиквания · изчакванеСигнали → инструкцииВъншно изпълнениеПредложение → човешко одобрениеВъзстановяване · ескалация1 история на каналите · Сигнали от Slack → Извличане на модели · без ботове12 сливане на профила · Извличане на модели · без ботове → Сливане на профила на компанията23 регенериране · Сливане на профила на компанията → Инструкции за всеки агент34 вкарване на инструкциите · Инструкции за всеки агент → Възложен агент41 целеви обхват · Целеви проект → Извикване на PO · промпт с обхват12 задача с предложение · Извикване на 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Спиране на повторните извиквания · изчакванеЛимит

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

  8. Спиране на повторните извиквания · изчакванеЛимитИзпълнение · преценка: превъзлагане · известиеРъководител · оператор

    Превъзлага на ръководител, където е възможно, и връща in_progress в todo само когато тази функция е включена. Иначе оставя коментар и известие без гаранция и записва период на изчакване след лимита.

  9. Проверка за застой · heartbeatStage reaperНаблюдение · отчет: само предупреждениеРъководител · оператор

    Когато етап продължи твърде дълго, за операторите се оставя само предупредителен коментар. Състоянието не се променя автоматично.

Всички връзки с еднаква дебелина. Изберете поток, за да се откроят само неговият път и номерираните стъпки.

  • Плътна · посока на входа, резултатите и записите
  • Прекъсната · изпълнение, преценка, заявка
  • Дълга пунктирна · наблюдение и отчитане, отделно от преценката
  • Къса прекъсната · неуспех, спиране, лимит
  • Дебела черна линия · избраният поток; числата показват реда
  • Кутия · граница на код или състояние, с името в заглавието
  • Вътрешен етикет · компонент на тази граница
  • Пунктирна кутия · извън тази граница
  • Оранжев контур · където решава модел
  • Извикване на агент · извикване за възстановяване
  • Състояние · записи
  • Проверка за застой · лимит
  • Събиране · публикуване

Начертано по непубличните записи за реализацията и разработката. Идентификатори на екипа, задачите и Slack и оригинални съобщения не са показани; внедряването, контейнерите и идентификационните данни принадлежат на отговорник извън този плъгин.

Едно наблюдение
Доклад от 28 април 2026 г.: при ръчна диагностика преди промяната за една задача, която не беше изпълнявана 67 часа, възлагането беше поискано отново със задачата и отговорника и ново изпълнение влезе в опашката до 5 секунди. Завършването, средното време за възстановяване и ефектът след разгръщането не са измерени.
Ограничения на обработката на одобрението
За разлика от извикването за възстановяване обработката на одобрението отбелязва съпоставянето като одобрено, без да проверява кода на отговора. Тя не е описана като атомарна или затваряща при грешка транзакция за одобрение.
Кога се спазва лимитът
Лимитът от 3 извиквания е реализация, която се спазва при наличие на hooks за състоянието. Той не гарантира точно една ескалация при всеки неуспех.