Tool: readiness, handoff, pack, pending, timeline — หาทิศทางก่อนเริ่มงานโดยไม่ต้องถามผู้ใช้ซ้ำ

ภาพประกอบ: Tool: readiness, handoff, pack, pending, timeline — หาทิศทางก่อนเริ่มงานโดยไม่ต้องถามผู้ใช้ซ้ำ

คำสั่ง orientation ช่วย agent ทำความเข้าใจสถานะงานก่อนเริ่ม โดยมองจากห้ามุม: ความพร้อม งานส่งต่อ ภาพรวม สิ่งที่ค้าง และลำดับเหตุการณ์ (readiness, handoff, pack, pending, timeline)

ปัญหาที่ทั้ง 5 tool นี้ร่วมกันแก้

Agent ที่เริ่ม session ใหม่ (หรือรับช่วงงานจาก agent ตัวก่อนหน้า) ไม่รู้อะไรเลยเกี่ยวกับสถานะปัจจุบันของโปรเจกต์ — 5 tool นี้แต่ละตัวตอบคำถามคนละแบบเกี่ยวกับ “ตอนนี้อยู่ตรงไหน” ให้เลือกใช้ตามสถานการณ์จริง แทนที่จะมี tool เดียวที่พยายามตอบทุกอย่าง

endeavor_memory_readiness — เช็คสุขภาพเครื่องก่อนทำอะไรทั้งสิ้น

Preflight ตัวเดียวที่บอก: role ของเครื่องนี้ (Main/Backup), สุขภาพฐานข้อมูล/FTS, ความครอบคลุมของ embedding, สถานะ ANN sidecar, ความสดของเอกสารที่ track ไว้ และ next_actions เรียงตามลำดับความสำคัญ — จุดสำคัญคือไม่มีผลข้างเคียงเลย: ไม่ bootstrap, ไม่ backfill, ไม่ warm companion, ไม่สร้าง ANN, ไม่เขียนฐานข้อมูล เป็นแค่การอ่านสถานะล้วนๆ — ผลลัพธ์สรุปเป็น ready/attention/blocked ให้ตัดสินใจได้ทันทีว่าควรทำอะไรต่อ ตาม next_actions ที่ให้มา (ห้าม auto-prune เอกสารที่ orphan ไปเองแม้ readiness จะรายงานว่ามี)

endeavor_memory_handoff — resume แบบเบา

คืน session + checkpoint ล่าสุดของ session ที่ resolve ได้ (ทั้งคู่เป็น null ได้ตามปกติถ้าโปรเจกต์ไม่มี session ค้างอยู่) — เลือก resolve ได้ 3 แบบ: project (unambiguous handoff ของโปรเจกต์นั้น), session (หลังผู้ใช้เลือก session ที่ต้องการ resume แล้ว), หรือ all_paused=true (คิว resume ข้ามทุกโปรเจกต์ — แหล่งความจริงที่ authoritative สำหรับ “มีอะไรค้างอยู่บ้าง”) จุดสำคัญ: โปรเจกต์ที่กำกวมจะถูกปฏิเสธ ไม่ใช่เดาเอาเอง — ป้องกัน agent resume ผิด session โดยไม่รู้ตัว

endeavor_memory_pack — briefing เต็มรูปแบบเมื่อ handoff อย่างเดียวไม่พอ

ถ้า handoff ให้ข้อมูลน้อยเกินไปสำหรับงานที่ไม่ trivial ให้ใช้ pack แทน — คืน handoff ที่เลือกแล้ว บวก actionable_records (งานค้างที่ lifecycle-aware แล้ว), open_records ดิบ (ระวัง: อาจมี record เก่าที่ historical ถูก resolve/supersede ไปแล้วก็ยังติดมาด้วย เพราะเป็นแค่สถานะ open ที่บันทึกไว้ ไม่ผ่านการ resolve lifecycle เหมือน actionable_records), knowledge ล่าสุด, และ activity — ทั้งหมดถูกจัดสรรภายในงบตัวอักษรที่กำหนด (ดีฟอลต์ 6,000 สูงสุด 50,000) พร้อม budget_omitted_counts บอกว่ามีอะไรถูกตัดทิ้งไปเพราะพื้นที่ไม่พอบ้าง — docstring เตือนว่าอย่าเรียกซ้ำระหว่างทำงานปกติ เพราะเป็น tool ที่ประมวลผลหนักกว่า handoff มาก เหมาะกับเรียกครั้งเดียวตอนเริ่มงานเท่านั้น

endeavor_memory_pending — งานค้างทั้งหมดแบบ lifecycle-aware

ต่างจาก pack/handoff ที่โฟกัสที่ session เดียว pending ให้ภาพรวมงานค้างทั้งหมด: presence ที่ active/last-known, session ที่ resumable/blocked, และ durable record ที่ยัง unresolved จริงๆ เท่านั้น (record ประวัติศาสตร์ที่ resolve ไปแล้วผ่าน lifecycle edge จะถูกกรองออก ต่างจาก pack’s open_records ที่ยังติดมา) — ต้องระบุ project หรือ all_projects=true อย่างใดอย่างหนึ่งเสมอ และมีคำเตือนสำคัญ: ห้าม resume session ที่ลิสต์มาแบบเงียบๆ เอง ถ้ามีมากกว่า 1 session ที่ resumable ต้องถามผู้ใช้ว่าจะเลือกอันไหน

endeavor_memory_timeline — ประวัติแบบ audit trail

ต่างจาก 4 tool ข้างบนที่โฟกัสที่ “ตอนนี้” timeline มองย้อนกลับ — ใครทำอะไรไปบ้างข้าม session ไหนบ้าง filter ได้ทั้งโปรเจกต์/agent/สถานะ session/session ID เฉพาะ แต่ละ record มี checkpoint_status (current = checkpoint ล่าสุดของ session นั้น, historical = ถูกแทนที่แล้ว) แยกจาก session_status (สถานะ lifecycle ของทั้ง session) — สำคัญคือ ผลลัพธ์ครอบคลุมเฉพาะ checkpoint ที่ยังถูกเก็บรักษาไว้เท่านั้น ไม่ใช่ activity_log ทั้งหมด (มี retention_notice กำกับเสมอ) เพราะ checkpoint ผ่านการ prune ตามนโยบายที่ตั้งไว้ (ยกเว้นอันที่ pin ไว้)

เลือก tool ไหนเมื่อไร

สถานการณ์ Tool ที่เหมาะ
เพิ่งเริ่มแตะโปรเจกต์นี้ ยังไม่รู้อะไรเลย readiness ก่อนเสมอ
อยากรู้แค่ “resume ตรงไหนต่อดี” แบบเบาๆ handoff
งานไม่ trivial ต้องการบริบทกว้างกว่า handoff pack
อยากรู้งานค้างทั้งหมดของโปรเจกต์/ทุกโปรเจกต์ pending
อยากรู้ประวัติว่าใครทำอะไรไปบ้าง timeline

ทำไมเรื่องนี้ถึงสำคัญ

การมี 5 tool ที่ตอบคำถาม “อยู่ตรงไหนแล้ว” คนละมุมแทนที่จะมี tool เดียวที่พยายามตอบทุกอย่าง สะท้อนหลักการที่เห็นซ้ำทั่วทั้ง ENDMEMEX: แต่ละ tool ควรมีขอบเขตชัดเจนและต้นทุนการประมวลผลที่คาดเดาได้readiness เบาและไม่มีผลข้างเคียงเลย เหมาะเรียกได้บ่อยๆ ในขณะที่ pack หนักกว่าและตั้งใจให้เรียกครั้งเดียว การแยกแบบนี้ทำให้ agent เลือก tool ที่คุ้มค่ากับสถานการณ์จริงได้ แทนที่จะเรียก tool ที่หนักที่สุดทุกครั้งเพราะไม่แน่ใจว่าตัวไหนพอ

อ่านเพิ่มเติม

ความคิดเห็น

กำลังโหลดความคิดเห็น...