
Kiki
สัญญาณงานและการรันของเอเจนต์
เพื่อให้ข้อเสนอกลายเป็นการลงมือของผู้รับผิดชอบ
ปลั๊กอิน Paperclip และตัวเก็บข้อมูลจาก Slack ที่ช่วยให้ทีมดำเนินงานเอเจนต์ 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
ระหว่างการมอบหมายกับการรันจริง มีเส้นทางสำหรับสังเกตและกู้คืน
สัญญาณงานกลายเป็นโปรไฟล์และคำสั่งสำหรับเอเจนต์ และการอนุมัติข้อเสนอการบำรุงรักษาแยกจากการมอบหมายการรัน เมื่อกิจกรรมของอิสชูที่มอบหมายแล้วหยุดลง จะขออีกครั้งพร้อมอิสชูและผู้รับผิดชอบ และการไม่ตอบสนองซ้ำ ๆ จะไปสู่ขีดจำกัด cooldown และการตัดสินของคน
บันทึกแรกในรีโพซิทอรี April 3, 2026 · ร่วมงานกับ pinxlab จนถึง May 26, 2026
รันเป็นปลั๊กอินภายใน Paperclip ของทีม โดยเซิร์ฟเวอร์ MCP ดูแลการเก็บข้อมูลจาก Slack
สัญญาณ → คำสั่ง
โปรไฟล์และคำสั่งของเอเจนต์ถูกสร้างจากประวัติ Slack คำสั่งเป็นบริบทของเอเจนต์ และไม่ได้วาดเป็นสาเหตุของข้อเสนอใด
สัญญาณจาก Slackข้อมูล: ประวัติช่องสกัดรูปแบบ · ไม่รวมบอต
การเก็บสัญญาณเก็บประวัติช่องที่เข้าถึงได้ และกรองข้อความของบอต การเข้าร่วม และการออกจากช่องออก ไม่แสดงข้อความต้นฉบับในหน้านี้
สกัดรูปแบบ · ไม่รวมบอต
การเก็บสัญญาณข้อมูล: รวมโปรไฟล์รวมโปรไฟล์บริษัทสถานะของบริษัทรูปแบบที่สกัดได้กลายเป็น patch โปรไฟล์ที่รวมเข้ากับโปรไฟล์ของบริษัท เป็นรูปแบบเชิงฮิวริสติก ไม่ใช่คะแนนผลงานของพนักงาน
รวมโปรไฟล์บริษัท
สถานะของบริษัทข้อมูล: สร้างใหม่คำสั่งรายเอเจนต์สถานะของเอเจนต์คำสั่งรายเอเจนต์ถูกสร้างใหม่จากโปรไฟล์ที่รวมแล้วและจัดเก็บไว้
คำสั่งรายเอเจนต์
สถานะของเอเจนต์รัน · การตัดสิน: ใส่คำสั่งเอเจนต์ที่ได้รับมอบหมายคำสั่งเข้าสู่บริบทของเอเจนต์เมื่อเอเจนต์ถูกสร้าง นี่ไม่ได้หมายความว่าข้อเสนอใดมาจากสัญญาณ Slack ใดโดยเฉพาะ
ข้อเสนอ → การอนุมัติ → การมอบหมาย
ข้อเสนอเกิดขึ้นก่อนเป็นอิสชู backlog ที่ยังไม่มีผู้รับผิดชอบ รีแอคชันของคนขอเปลี่ยนสถานะ และการมอบหมายและการรันเป็นหน้าที่ของระบบภายนอก
โปรเจกต์เป้าหมายข้อมูล: ขอบเขตเป้าหมายเรียก PO · พรอมต์ที่จำกัดขอบเขต
การวิเคราะห์การบำรุงรักษางานบำรุงรักษาเรียกเอเจนต์ PO ด้วยพรอมต์ที่จำกัดขอบเขตอยู่ที่โปรเจกต์เป้าหมาย ไม่แสดงเนื้อหาซอร์ส
เรียก PO · พรอมต์ที่จำกัดขอบเขต
การวิเคราะห์การบำรุงรักษาข้อมูล: อิสชูข้อเสนอข้อเสนอ · backlogตัวติดตามอิสชูพรอมต์ขอให้เสนอเฉพาะพาธที่ตรวจยืนยันแล้ว เป็นอิสชู backlog ที่ยังไม่มีผู้รับผิดชอบ และห้ามรัน DB migration เป็นคำสั่งต่อเอเจนต์ของผลิตภัณฑ์ ไม่ใช่กลไกบังคับแบบเชิงกำหนด
ข้อเสนอ · backlog
ตัวติดตามอิสชูข้อมูล: โพสต์ข้อเสนอการแมปข้อความ ↔ อิสชูการโพสต์ข้อเสนอข้อเสนอแต่ละรายการถูกโพสต์ลง Slack และการแมปข้อความกับอิสชูถูกจัดเก็บ ข้อเสนอที่โพสต์แล้วจะไม่ถูกโพสต์ซ้ำ และแมปที่เก็บไว้เก็บ 50 รายการล่าสุด
การแมปข้อความ ↔ อิสชู
การโพสต์ข้อเสนอข้อมูล: ข้อความ Slackคน · อนุมัติ ปฏิเสธคนเห็นข้อเสนอที่โพสต์ใน Slack
คน · อนุมัติ ปฏิเสธรัน · การตัดสิน: รีแอคชันการแมปข้อความ ↔ อิสชู
การโพสต์ข้อเสนอรีแอคชันบนข้อความจะค้นหาอิสชูผ่านการแมป ไม่มีการอนุมัติอัตโนมัติ
การแมปข้อความ ↔ อิสชู
การโพสต์ข้อเสนอรัน · การตัดสิน: อนุมัติ → todoอิสชูการรัน · todoตัวติดตามอิสชูเมื่ออนุมัติ จะส่งคำขอให้ย้ายอิสชูข้อเสนอที่รออยู่ไปเป็น todo และอัปเดตการแมปและประกาศในเธรด handler นี้ทำเครื่องหมายการแมปว่าอนุมัติแล้วโดยไม่ตรวจรหัสการตอบกลับ จึงไม่ใช่ทรานแซกชันแบบ fail-closed
การแมปข้อความ ↔ อิสชู
การโพสต์ข้อเสนอรัน · การตัดสิน: ปฏิเสธ → cancelledข้อเสนอ · backlogตัวติดตามอิสชูเมื่อปฏิเสธ จะส่งคำขอให้ย้ายอิสชูเดียวกันไปเป็น cancelled อิสชูมีอยู่ก่อนการอนุมัติ การอนุมัติไม่ได้สร้างมันขึ้น
อิสชูการรัน · todo
ตัวติดตามอิสชูรัน · การตัดสิน: การมอบหมายเอเจนต์ที่ได้รับมอบหมายการมอบหมายและการรันของอิสชู todo เป็นหน้าที่ของระบบการรันภายนอก การย้ายอิสชูไปเป็น todo ไม่ได้รับประกันว่างานเริ่มแล้ว
ค้าง → กู้คืน → คน
อิสชูที่มอบหมายแล้วซึ่งกิจกรรมหยุดลงจะถูกขออีกครั้งพร้อมอิสชูและผู้รับผิดชอบ เมื่อการไม่ตอบสนองติดต่อกันถึงขีดจำกัด จะส่งต่อให้คน
เอเจนต์ที่ได้รับมอบหมายการสังเกต · รายงาน: บันทึกการรันการรันล่าสุด · กิจกรรม
การสังเกตการรันการรันและสัญญาณล่าสุดของเอเจนต์ที่ได้รับมอบหมายถูกบันทึกเป็นการสังเกต กิจกรรมไม่ใช่หลักฐานของความเสร็จ
การรันล่าสุด · กิจกรรม
การสังเกตการรันการสังเกต · รายงาน: กิจกรรมล่าสุดตรวจการค้าง · heartbeatStage reaperreaper ดูเฉพาะอิสชูที่ไม่ใช่ done, cancelled หรือ blocked และมีผู้รับผิดชอบ และคำนวณอายุของสัญญาณและ stage ล่าสุด
ตรวจการค้าง · heartbeat
Stage reaperข้อมูล: ไม่ตอบ +1การไม่ตอบสนอง · ต่ออิสชูสถานะการไม่ตอบสนองการไม่ตอบสนองติดต่อกันถูกนับต่อเอเจนต์และอิสชู และจัดเก็บไว้ในสถานะ
การรันล่าสุด · กิจกรรม
การสังเกตการรันการสังเกต · รายงาน: กิจกรรมใหม่ → รีเซ็ตการไม่ตอบสนอง · ต่ออิสชูสถานะการไม่ตอบสนองกิจกรรมใหม่รีเซ็ตตัวนับ
ตรวจการค้าง · heartbeat
Stage reaperรัน · การตัดสิน: เรียกซ้ำอิสชู + ผู้รับผิดชอบการเรียกเพื่อกู้คืนหากเกิน heartbeat และตัวนับยังต่ำกว่าขีดจำกัด จะทำการเรียกเพื่อกู้คืน
อิสชู + ผู้รับผิดชอบ
การเรียกเพื่อกู้คืนรัน · การตัดสิน: อิสชู + ผู้รับผิดชอบอิสชูการรัน · todoตัวติดตามอิสชูขอการมอบหมายอีกครั้งพร้อมอิสชู เอเจนต์ที่ได้รับมอบหมาย และคอมเมนต์อธิบาย และตรวจการตอบกลับ HTTP เส้นทาง legacy จะถอยไปใช้การเรียกปลุกครั้งเดียว
การไม่ตอบสนอง · ต่ออิสชู
สถานะการไม่ตอบสนองความล้มเหลว · ขีดจำกัด: หลัง 3 ครั้งหยุดเรียกซ้ำ · cooldownขีดจำกัดเมื่อการไม่ตอบสนองติดต่อกันถึงขีดจำกัด (ค่าเริ่มต้น 3) การเรียกซ้ำจะหยุด ขีดจำกัดใช้ได้เฉพาะเมื่อ hook สถานะอ่านและเขียนตัวนับ และการบันทึกที่ล้มเหลวอาจทำให้ขีดจำกัดอ่อนลง
หยุดเรียกซ้ำ · cooldown
ขีดจำกัดรัน · การตัดสิน: มอบหมายใหม่ · แจ้งเตือนLead · ผู้ดูแลระบบมอบหมายใหม่ให้ lead หากทำได้ และย้าย in_progress กลับเป็น todo เฉพาะเมื่อเปิดฟีเจอร์นั้น มิฉะนั้นจะทิ้งคอมเมนต์และการแจ้งเตือนแบบ best-effort และบันทึก cooldown หลังถึงขีดจำกัด
ตรวจการค้าง · heartbeat
Stage reaperการสังเกต · รายงาน: เตือนเท่านั้นLead · ผู้ดูแลระบบเมื่อ stage ค้างนานเกินไป จะทิ้งเพียงคอมเมนต์เตือนให้ผู้ดูแลระบบ สถานะไม่ถูกเปลี่ยนโดยอัตโนมัติ
ทุกการเชื่อมต่อมีน้ำหนักเท่ากัน เลือกโฟลว์เพื่อไฮไลต์เฉพาะเส้นทางของโฟลว์นั้นพร้อมขั้นตอนที่มีหมายเลข
- เส้นทึบ · ทิศทางของอินพุต ผลลัพธ์ และบันทึก
- เส้นประ · รัน การตัดสิน คำขอ
- จุดยาว · การสังเกตและการรายงาน แยกจากการตัดสิน
- เส้นประสั้น · ความล้มเหลว การหยุด ขีดจำกัด
- เส้นดำหนา · โฟลว์ที่เลือก ตัวเลขบอกลำดับ
- กล่อง · ขอบเขตของโค้ดหรือสถานะ ระบุชื่อในส่วนหัว
- ชิปด้านใน · องค์ประกอบของขอบเขตนั้น
- กล่องจุด · อยู่นอกขอบเขตนั้น
- เส้นขอบสีส้ม · จุดที่โมเดลตัดสินใจ
- การเรียกเอเจนต์ · การเรียกเพื่อกู้คืน
- สถานะ · บันทึก
- ตรวจการค้าง · ขีดจำกัด
- การเก็บ · การโพสต์
วาดจากบันทึกการพัฒนาและงานที่เป็นส่วนตัว ไม่แสดงตัวระบุทีม อิสชู และ Slack และข้อความต้นฉบับ การดีพลอย คอนเทนเนอร์ และข้อมูลรับรองเป็นของผู้รับผิดชอบนอกปลั๊กอินนี้
- การสังเกตหนึ่งครั้ง
- รายงาน April 28, 2026: ในการวินิจฉัยด้วยมือก่อนการเปลี่ยนแปลง อิสชูหนึ่งรายการที่ไม่ได้รันมา 67 ชั่วโมงถูกขอการมอบหมายอีกครั้งพร้อมอิสชูและผู้รับผิดชอบ และการรันใหม่เข้าคิวภายใน 5 วินาที ไม่ได้วัดความเสร็จของงาน เวลากู้คืนเฉลี่ย และผลหลังนำไปใช้
- ข้อจำกัดของการจัดการการอนุมัติ
- ต่างจากการเรียกเพื่อกู้คืน การจัดการการอนุมัติทำเครื่องหมายการแมปว่าอนุมัติแล้วโดยไม่ตรวจรหัสการตอบกลับ จึงไม่ได้อธิบายว่าเป็นทรานแซกชันการอนุมัติแบบ atomic หรือ fail-closed
- เมื่อขีดจำกัดใช้ได้
- ขีดจำกัด 3 ครั้งเป็นการพัฒนาที่ใช้ได้เมื่อมี hook สถานะ ไม่ได้รับประกันการ escalate เพียงครั้งเดียวพอดีในทุกความล้มเหลว