ภาพใบหน้าโปร่งใสที่ดัดแปลงจากภาพแมว Kiki ที่ผู้เขียนให้มา
กลับไปที่ห้องจัดแสดง

Kiki

สัญญาณงานและการรันของเอเจนต์

เพื่อให้ข้อเสนอกลายเป็นการลงมือของผู้รับผิดชอบ

ปลั๊กอิน Paperclip และตัวเก็บข้อมูลจาก Slack ที่ช่วยให้ทีมดำเนินงานเอเจนต์ AI ของตน แปลงสัญญาณงานเป็นคำสั่งสำหรับเอเจนต์ และเชื่อมข้อเสนอการบำรุงรักษา การอนุมัติของคน การมอบหมาย และการกู้คืนการรันที่ค้าง เป็นขั้นตอนที่แยกกัน วางแผนและพัฒนาโฟลว์นี้

2026.04 — 2026.05

ฟรีแลนซ์ AI R&D ของ pinxlab · วางแผนและพัฒนาเวิร์กโฟลว์ สืบสวนการรันที่ค้าง และออกแบบเส้นทางการกู้คืน

  • ปลั๊กอินพัฒนาแล้ว · 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 ของทีม โดยเซิร์ฟเวอร์ MCP ดูแลการเก็บข้อมูลจาก Slack

แผนที่ขั้นตอนการรัน · จากบันทึกการพัฒนาที่เป็นส่วนตัว
สัญญาณ · การอนุมัติ · การกู้คืนการรันของ Kikiรูปแบบการทำงานถูกสกัดจากประวัติช่อง Slack ที่เข้าถึงได้ เป็นโปรไฟล์ของบริษัทและคำสั่งรายเอเจนต์ เอเจนต์วิเคราะห์การบำรุงรักษาดูโปรเจกต์เป้าหมายและทิ้งข้อเสนอไว้เป็นอิสชู backlog ที่ยังไม่มีผู้รับผิดชอบ ข้อเสนอแต่ละรายการถูกโพสต์ลง Slack ซึ่งคนอนุมัติหรือปฏิเสธด้วยรีแอคชัน เมื่ออิสชูที่อนุมัติแล้วถูกมอบหมายให้เอเจนต์ ระบบการรันภายนอกจะทำงานนั้น และ stage reaper เฝ้าดูกิจกรรมล่าสุด หากกิจกรรมหยุด จะขอการมอบหมายอีกครั้งพร้อมอิสชูและผู้รับผิดชอบ เมื่อการไม่ตอบสนองติดต่อกันถึงขีดจำกัด จะหยุดเรียกซ้ำและส่งกรณีไปยัง lead หรือผู้ดูแลระบบสัญญาณจาก Slackประวัติช่องที่เข้าถึงได้เอเจนต์ที่ได้รับมอบหมายการรันภายนอกโปรเจกต์เป้าหมายไม่แสดงเนื้อหาคน · อนุมัติ ปฏิเสธรีแอคชันใน SlackLead · ผู้ดูแลระบบมอบหมายใหม่ · แจ้งเตือนการเก็บสัญญาณสกัดรูปแบบ · ไม่รวมบอตสถานะของบริษัทรวมโปรไฟล์บริษัทสถานะของเอเจนต์คำสั่งรายเอเจนต์การสังเกตการรันการรันล่าสุด · กิจกรรมการวิเคราะห์การบำรุงรักษาเรียก PO · พรอมต์ที่จำกัดขอบเขตตัวติดตามอิสชูข้อเสนอ · backlogอิสชูการรัน · todoการโพสต์ข้อเสนอการแมปข้อความ ↔ อิสชูStage reaperตรวจการค้าง · heartbeatการเรียกเพื่อกู้คืนอิสชู + ผู้รับผิดชอบสถานะการไม่ตอบสนองการไม่ตอบสนอง · ต่ออิสชูขีดจำกัดหยุดเรียกซ้ำ · cooldownสัญญาณ → คำสั่งการรันภายนอกข้อเสนอ → การอนุมัติของคนการกู้คืน · การ escalate1 ประวัติช่อง · สัญญาณจาก Slack → สกัดรูปแบบ · ไม่รวมบอต12รวมโปรไฟล์3สร้างใหม่4ใส่คำสั่ง1 ขอบเขตเป้าหมาย · โปรเจกต์เป้าหมาย → เรียก PO · พรอมต์ที่จำกัดขอบเขต12 อิสชูข้อเสนอ · เรียก PO · พรอมต์ที่จำกัดขอบเขต → ข้อเสนอ · backlog23โพสต์ข้อเสนอ4ข้อความ Slack5รีแอคชัน6อนุมัติ → todo7ปฏิเสธ → cancelled8การมอบหมาย1บันทึกการรัน2กิจกรรมล่าสุด3ไม่ตอบ +14กิจกรรมใหม่ → รีเซ็ต5 เรียกซ้ำ · ตรวจการค้าง · heartbeat → อิสชู + ผู้รับผิดชอบ56อิสชู + ผู้รับผิดชอบ7 หลัง 3 ครั้ง · การไม่ตอบสนอง · ต่ออิสชู → หยุดเรียกซ้ำ · cooldown78มอบหมายใหม่ · แจ้งเตือน9เตือนเท่านั้น

สัญญาณ → คำสั่ง

โปรไฟล์และคำสั่งของเอเจนต์ถูกสร้างจากประวัติ Slack คำสั่งเป็นบริบทของเอเจนต์ และไม่ได้วาดเป็นสาเหตุของข้อเสนอใด

  1. สัญญาณจาก Slackข้อมูล: ประวัติช่องสกัดรูปแบบ · ไม่รวมบอตการเก็บสัญญาณ

    เก็บประวัติช่องที่เข้าถึงได้ และกรองข้อความของบอต การเข้าร่วม และการออกจากช่องออก ไม่แสดงข้อความต้นฉบับในหน้านี้

  2. สกัดรูปแบบ · ไม่รวมบอตการเก็บสัญญาณข้อมูล: รวมโปรไฟล์รวมโปรไฟล์บริษัทสถานะของบริษัท

    รูปแบบที่สกัดได้กลายเป็น patch โปรไฟล์ที่รวมเข้ากับโปรไฟล์ของบริษัท เป็นรูปแบบเชิงฮิวริสติก ไม่ใช่คะแนนผลงานของพนักงาน

  3. รวมโปรไฟล์บริษัทสถานะของบริษัทข้อมูล: สร้างใหม่คำสั่งรายเอเจนต์สถานะของเอเจนต์

    คำสั่งรายเอเจนต์ถูกสร้างใหม่จากโปรไฟล์ที่รวมแล้วและจัดเก็บไว้

  4. คำสั่งรายเอเจนต์สถานะของเอเจนต์รัน · การตัดสิน: ใส่คำสั่งเอเจนต์ที่ได้รับมอบหมาย

    คำสั่งเข้าสู่บริบทของเอเจนต์เมื่อเอเจนต์ถูกสร้าง นี่ไม่ได้หมายความว่าข้อเสนอใดมาจากสัญญาณ Slack ใดโดยเฉพาะ

ข้อเสนอ → การอนุมัติ → การมอบหมาย

ข้อเสนอเกิดขึ้นก่อนเป็นอิสชู backlog ที่ยังไม่มีผู้รับผิดชอบ รีแอคชันของคนขอเปลี่ยนสถานะ และการมอบหมายและการรันเป็นหน้าที่ของระบบภายนอก

  1. โปรเจกต์เป้าหมายข้อมูล: ขอบเขตเป้าหมายเรียก PO · พรอมต์ที่จำกัดขอบเขตการวิเคราะห์การบำรุงรักษา

    งานบำรุงรักษาเรียกเอเจนต์ PO ด้วยพรอมต์ที่จำกัดขอบเขตอยู่ที่โปรเจกต์เป้าหมาย ไม่แสดงเนื้อหาซอร์ส

  2. เรียก PO · พรอมต์ที่จำกัดขอบเขตการวิเคราะห์การบำรุงรักษาข้อมูล: อิสชูข้อเสนอข้อเสนอ · backlogตัวติดตามอิสชู

    พรอมต์ขอให้เสนอเฉพาะพาธที่ตรวจยืนยันแล้ว เป็นอิสชู backlog ที่ยังไม่มีผู้รับผิดชอบ และห้ามรัน DB migration เป็นคำสั่งต่อเอเจนต์ของผลิตภัณฑ์ ไม่ใช่กลไกบังคับแบบเชิงกำหนด

  3. ข้อเสนอ · backlogตัวติดตามอิสชูข้อมูล: โพสต์ข้อเสนอการแมปข้อความ ↔ อิสชูการโพสต์ข้อเสนอ

    ข้อเสนอแต่ละรายการถูกโพสต์ลง Slack และการแมปข้อความกับอิสชูถูกจัดเก็บ ข้อเสนอที่โพสต์แล้วจะไม่ถูกโพสต์ซ้ำ และแมปที่เก็บไว้เก็บ 50 รายการล่าสุด

  4. การแมปข้อความ ↔ อิสชูการโพสต์ข้อเสนอข้อมูล: ข้อความ Slackคน · อนุมัติ ปฏิเสธ

    คนเห็นข้อเสนอที่โพสต์ใน Slack

  5. คน · อนุมัติ ปฏิเสธรัน · การตัดสิน: รีแอคชันการแมปข้อความ ↔ อิสชูการโพสต์ข้อเสนอ

    รีแอคชันบนข้อความจะค้นหาอิสชูผ่านการแมป ไม่มีการอนุมัติอัตโนมัติ

  6. การแมปข้อความ ↔ อิสชูการโพสต์ข้อเสนอรัน · การตัดสิน: อนุมัติ → todoอิสชูการรัน · todoตัวติดตามอิสชู

    เมื่ออนุมัติ จะส่งคำขอให้ย้ายอิสชูข้อเสนอที่รออยู่ไปเป็น todo และอัปเดตการแมปและประกาศในเธรด handler นี้ทำเครื่องหมายการแมปว่าอนุมัติแล้วโดยไม่ตรวจรหัสการตอบกลับ จึงไม่ใช่ทรานแซกชันแบบ fail-closed

  7. การแมปข้อความ ↔ อิสชูการโพสต์ข้อเสนอรัน · การตัดสิน: ปฏิเสธ → cancelledข้อเสนอ · backlogตัวติดตามอิสชู

    เมื่อปฏิเสธ จะส่งคำขอให้ย้ายอิสชูเดียวกันไปเป็น cancelled อิสชูมีอยู่ก่อนการอนุมัติ การอนุมัติไม่ได้สร้างมันขึ้น

  8. อิสชูการรัน · todoตัวติดตามอิสชูรัน · การตัดสิน: การมอบหมายเอเจนต์ที่ได้รับมอบหมาย

    การมอบหมายและการรันของอิสชู todo เป็นหน้าที่ของระบบการรันภายนอก การย้ายอิสชูไปเป็น todo ไม่ได้รับประกันว่างานเริ่มแล้ว

ค้าง → กู้คืน → คน

อิสชูที่มอบหมายแล้วซึ่งกิจกรรมหยุดลงจะถูกขออีกครั้งพร้อมอิสชูและผู้รับผิดชอบ เมื่อการไม่ตอบสนองติดต่อกันถึงขีดจำกัด จะส่งต่อให้คน

  1. เอเจนต์ที่ได้รับมอบหมายการสังเกต · รายงาน: บันทึกการรันการรันล่าสุด · กิจกรรมการสังเกตการรัน

    การรันและสัญญาณล่าสุดของเอเจนต์ที่ได้รับมอบหมายถูกบันทึกเป็นการสังเกต กิจกรรมไม่ใช่หลักฐานของความเสร็จ

  2. การรันล่าสุด · กิจกรรมการสังเกตการรันการสังเกต · รายงาน: กิจกรรมล่าสุดตรวจการค้าง · heartbeatStage reaper

    reaper ดูเฉพาะอิสชูที่ไม่ใช่ done, cancelled หรือ blocked และมีผู้รับผิดชอบ และคำนวณอายุของสัญญาณและ stage ล่าสุด

  3. ตรวจการค้าง · heartbeatStage reaperข้อมูล: ไม่ตอบ +1การไม่ตอบสนอง · ต่ออิสชูสถานะการไม่ตอบสนอง

    การไม่ตอบสนองติดต่อกันถูกนับต่อเอเจนต์และอิสชู และจัดเก็บไว้ในสถานะ

  4. การรันล่าสุด · กิจกรรมการสังเกตการรันการสังเกต · รายงาน: กิจกรรมใหม่ → รีเซ็ตการไม่ตอบสนอง · ต่ออิสชูสถานะการไม่ตอบสนอง

    กิจกรรมใหม่รีเซ็ตตัวนับ

  5. ตรวจการค้าง · heartbeatStage reaperรัน · การตัดสิน: เรียกซ้ำอิสชู + ผู้รับผิดชอบการเรียกเพื่อกู้คืน

    หากเกิน heartbeat และตัวนับยังต่ำกว่าขีดจำกัด จะทำการเรียกเพื่อกู้คืน

  6. อิสชู + ผู้รับผิดชอบการเรียกเพื่อกู้คืนรัน · การตัดสิน: อิสชู + ผู้รับผิดชอบอิสชูการรัน · todoตัวติดตามอิสชู

    ขอการมอบหมายอีกครั้งพร้อมอิสชู เอเจนต์ที่ได้รับมอบหมาย และคอมเมนต์อธิบาย และตรวจการตอบกลับ HTTP เส้นทาง legacy จะถอยไปใช้การเรียกปลุกครั้งเดียว

  7. การไม่ตอบสนอง · ต่ออิสชูสถานะการไม่ตอบสนองความล้มเหลว · ขีดจำกัด: หลัง 3 ครั้งหยุดเรียกซ้ำ · cooldownขีดจำกัด

    เมื่อการไม่ตอบสนองติดต่อกันถึงขีดจำกัด (ค่าเริ่มต้น 3) การเรียกซ้ำจะหยุด ขีดจำกัดใช้ได้เฉพาะเมื่อ hook สถานะอ่านและเขียนตัวนับ และการบันทึกที่ล้มเหลวอาจทำให้ขีดจำกัดอ่อนลง

  8. หยุดเรียกซ้ำ · cooldownขีดจำกัดรัน · การตัดสิน: มอบหมายใหม่ · แจ้งเตือนLead · ผู้ดูแลระบบ

    มอบหมายใหม่ให้ lead หากทำได้ และย้าย in_progress กลับเป็น todo เฉพาะเมื่อเปิดฟีเจอร์นั้น มิฉะนั้นจะทิ้งคอมเมนต์และการแจ้งเตือนแบบ best-effort และบันทึก cooldown หลังถึงขีดจำกัด

  9. ตรวจการค้าง · heartbeatStage reaperการสังเกต · รายงาน: เตือนเท่านั้นLead · ผู้ดูแลระบบ

    เมื่อ stage ค้างนานเกินไป จะทิ้งเพียงคอมเมนต์เตือนให้ผู้ดูแลระบบ สถานะไม่ถูกเปลี่ยนโดยอัตโนมัติ

ทุกการเชื่อมต่อมีน้ำหนักเท่ากัน เลือกโฟลว์เพื่อไฮไลต์เฉพาะเส้นทางของโฟลว์นั้นพร้อมขั้นตอนที่มีหมายเลข

  • เส้นทึบ · ทิศทางของอินพุต ผลลัพธ์ และบันทึก
  • เส้นประ · รัน การตัดสิน คำขอ
  • จุดยาว · การสังเกตและการรายงาน แยกจากการตัดสิน
  • เส้นประสั้น · ความล้มเหลว การหยุด ขีดจำกัด
  • เส้นดำหนา · โฟลว์ที่เลือก ตัวเลขบอกลำดับ
  • กล่อง · ขอบเขตของโค้ดหรือสถานะ ระบุชื่อในส่วนหัว
  • ชิปด้านใน · องค์ประกอบของขอบเขตนั้น
  • กล่องจุด · อยู่นอกขอบเขตนั้น
  • เส้นขอบสีส้ม · จุดที่โมเดลตัดสินใจ
  • การเรียกเอเจนต์ · การเรียกเพื่อกู้คืน
  • สถานะ · บันทึก
  • ตรวจการค้าง · ขีดจำกัด
  • การเก็บ · การโพสต์

วาดจากบันทึกการพัฒนาและงานที่เป็นส่วนตัว ไม่แสดงตัวระบุทีม อิสชู และ Slack และข้อความต้นฉบับ การดีพลอย คอนเทนเนอร์ และข้อมูลรับรองเป็นของผู้รับผิดชอบนอกปลั๊กอินนี้

การสังเกตหนึ่งครั้ง
รายงาน April 28, 2026: ในการวินิจฉัยด้วยมือก่อนการเปลี่ยนแปลง อิสชูหนึ่งรายการที่ไม่ได้รันมา 67 ชั่วโมงถูกขอการมอบหมายอีกครั้งพร้อมอิสชูและผู้รับผิดชอบ และการรันใหม่เข้าคิวภายใน 5 วินาที ไม่ได้วัดความเสร็จของงาน เวลากู้คืนเฉลี่ย และผลหลังนำไปใช้
ข้อจำกัดของการจัดการการอนุมัติ
ต่างจากการเรียกเพื่อกู้คืน การจัดการการอนุมัติทำเครื่องหมายการแมปว่าอนุมัติแล้วโดยไม่ตรวจรหัสการตอบกลับ จึงไม่ได้อธิบายว่าเป็นทรานแซกชันการอนุมัติแบบ atomic หรือ fail-closed
เมื่อขีดจำกัดใช้ได้
ขีดจำกัด 3 ครั้งเป็นการพัฒนาที่ใช้ได้เมื่อมี hook สถานะ ไม่ได้รับประกันการ escalate เพียงครั้งเดียวพอดีในทุกความล้มเหลว