
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
在分配与实际执行之间,设置观测与恢复的路径。
工作信号被转换为画像和智能体指令,维护提议的审批与其执行的分配相互分开。已分配 issue 的活动停止时,带上 issue 和负责人再次请求;反复无响应时,转入上限、冷却期和人工判断。
它们把工作信号转换为智能体指令,并将维护提议、人工审批、分配和停滞运行的恢复作为独立步骤衔接起来。这一流程由我规划并开发。
仓库首条记录 April 3, 2026 · pinxlab 合作至 May 26, 2026
作为插件在团队的 Paperclip 中运行;Slack 采集由 MCP 服务器负责。
信号 → 指令
画像和智能体指令由 Slack 历史构建。指令是智能体的上下文,不画作任何提议的原因。
Slack 信号数据: 频道历史模式提取 · 排除 bot
信号采集采集可访问的频道历史,并过滤掉 bot、加入和离开消息。本页不展示原始消息。
模式提取 · 排除 bot
信号采集数据: 画像合并合并公司画像公司状态提取出的模式形成画像补丁,合并到公司画像中。这些是启发式模式,不是员工绩效评分。
合并公司画像
公司状态数据: 重新生成各智能体指令智能体状态依据合并后的画像重新生成并保存各智能体的指令。
各智能体指令
智能体状态运行 · 判定: 注入指令被分配的智能体智能体创建时,指令进入其上下文。这并不表示某条提议源自某个 Slack 信号。
提议 → 审批 → 分配
提议首先以未分配的 backlog issue 形式存在,人的表情回应请求更改状态,分配与执行归外部系统负责。
目标项目数据: 目标范围PO 调用 · 限定范围的提示词
维护分析维护作业以限定于目标项目的提示词调用 PO 智能体。不展示源码内容。
PO 调用 · 限定范围的提示词
维护分析数据: 提议 issue提议 · backlogissue 跟踪器提示词要求只提出路径经过确认的提议,以未分配的 backlog issue 形式创建,并禁止执行 DB 迁移。这是给产品智能体的指示,而不是确定性的强制机制。
提议 · backlog
issue 跟踪器数据: 发送提议消息 ↔ issue 映射提议发送每条提议发送到 Slack,并保存消息与 issue 的映射。已发送的提议不会重复发送,保存的映射只保留最近 50 条。
消息 ↔ issue 映射
提议发送数据: Slack 消息人 · 批准、拒绝人在 Slack 中看到已发送的提议。
人 · 批准、拒绝运行 · 判定: 表情回应消息 ↔ issue 映射
提议发送对消息的表情回应会通过映射找到对应 issue。没有自动批准。
消息 ↔ issue 映射
提议发送运行 · 判定: 批准 → todo执行 issue · todoissue 跟踪器批准时,发送请求将待处理的提议 issue 移至 todo,并更新映射和线程通知。该 handler 不检查响应码就把映射标记为已批准,因此不是失败即关闭的事务。
消息 ↔ issue 映射
提议发送运行 · 判定: 拒绝 → cancelled提议 · backlogissue 跟踪器拒绝时,发送请求将同一 issue 移至 cancelled。issue 在批准前已存在;批准并不创建它。
执行 issue · todo
issue 跟踪器运行 · 判定: 分配被分配的智能体todo issue 的分配和执行由外部执行系统负责。把 issue 移至 todo 并不保证工作已开始。
停滞 → 恢复 → 人
活动停止的已分配 issue 会带上 issue 和负责人再次请求;连续无响应达到上限时,转交给人。
被分配的智能体观测 · 报告: 运行记录最近运行 · 活动
运行观测被分配智能体的运行和最近信号被记录为观测。活动不是完成的证据。
最近运行 · 活动
运行观测观测 · 报告: 最近活动停滞检查 · heartbeatStage reaperreaper 只查看状态不是 done、cancelled 或 blocked 且有负责人的 issue,并计算最新信号和 stage 的时长。
停滞检查 · heartbeat
Stage reaper数据: 无回复 +1无响应次数 · 按 issue无响应状态按智能体和 issue 统计连续无响应次数,并保存在状态中。
最近运行 · 活动
运行观测观测 · 报告: 新活动 → 重置无响应次数 · 按 issue无响应状态新活动会重置计数。
停滞检查 · heartbeat
Stage reaper运行 · 判定: 重新调用issue + 负责人恢复调用若超过 heartbeat 且计数低于上限,则发起恢复调用。
issue + 负责人
恢复调用运行 · 判定: issue + 负责人执行 issue · todoissue 跟踪器带上 issue、被分配的智能体和一条说明评论再次请求分配,并检查 HTTP 响应。legacy 路径则退回为一次唤醒调用。
无响应次数 · 按 issue
无响应状态失败 · 上限: 3 次之后停止重新调用 · 冷却期上限连续无响应达到上限(默认 3 次)时,停止重新调用。只有在状态 hook 读写计数时上限才成立,保存失败可能削弱它。
停止重新调用 · 冷却期
上限运行 · 判定: 重新分配 · 通知Lead · 运维人员尽可能重新分配给 Lead,仅在启用该功能时将 in_progress 移回 todo。否则留下评论和尽力而为的通知,并在达到上限后记录冷却期。
停滞检查 · heartbeat
Stage reaper观测 · 报告: 仅警告Lead · 运维人员某个 stage 持续过久时,只为运维人员留下一条警告评论。状态不会自动更改。
所有连接以相同粗细显示。选择一个流程,即只突出显示其路径,并标出步骤编号。
- 实线 · 输入、结果与记录的流向
- 虚线 · 运行、判定、请求
- 长点线 · 观测与报告,独立于判定
- 短虚线 · 失败、停止、上限
- 粗黑线 · 所选流程;数字表示顺序
- 方框 · 代码或状态边界,标题栏注明名称
- 内层小框 · 该边界中的组件
- 点线框 · 该边界之外
- 橙色轮廓 · 模型作出判断之处
- 智能体调用 · 恢复调用
- 状态 · 记录
- 停滞检查 · 上限
- 采集 · 发送
依据非公开的实现与开发记录绘制。不展示团队、issue 和 Slack 标识符以及原始消息;部署、容器和凭据归本插件之外的负责人所有。
- 一次观测
- 2026年4月28日报告:在变更前的手动诊断中,一个 67 小时未运行的 issue 在带上 issue 和负责人再次请求分配后,5 秒内排入了新的运行。未测量完成情况、平均恢复时间和上线后的效果。
- 审批处理的局限
- 与恢复调用不同,审批处理不检查响应码就把映射标记为已批准。它不被描述为原子的或失败即关闭的审批事务。
- 上限何时成立
- 3 次上限是在存在状态 hook 时才成立的实现,不保证在所有故障下都恰好升级一次。