คอขวดของไอคอนเดียว
ลองจินตนาการถึงหน้าจอของคุณระหว่างช่วงที่กำลังเขียนโค้ดอย่างหนัก ในแท็บเทอร์มินัลหนึ่ง Claude Code กำลังทำ refactoring คอมโพเนนต์ React ในอีกแท็บหนึ่ง Codex กำลังเขียนโมดูล Python ใหม่ เอเจนต์ตัวที่สามกำลังสร้าง unit tests ตัวที่สี่กำลังรอ API key และตัวที่ห้าเพิ่งทำงาน linter ในพื้นหลังเสร็จสิ้น แถบเมนูของคุณ—หรือระบบ tray ใดๆ ที่คุณใช้—มีพื้นที่สำหรับไอคอนสถานะเพียงไอคอนเดียวเท่านั้น จุดเล็กๆ หรือป้ายกำกับเพียงอันเดียวถูกคาดหวังให้เป็นตัวแทนของเอเจนต์ทั้งฝูง คำถามคือ เซสชันไหนกันแน่ที่ควรค่าแก่การได้ครองพื้นที่ตรงนั้น
คำตอบแบบง่ายๆ คือการแสดงเซสชันที่เพิ่งมีการเคลื่อนไหวล่าสุด มันดูสมเหตุสมผล เพราะเมื่อมีบางอย่างเกิดขึ้น มันก็ควรจะเด้งขึ้นมา แต่สัญชาตญาณนั้นผิด และมันจะทำให้คุณเสียงาน ตัวตรวจจับไฟล์ (file watcher) ในพื้นหลังที่กำลังอัปเดต timestamp ไม่ใช่เสียงร้องขอความช่วยเหลือ ในขณะเดียวกัน เซสชันที่ติดข้อผิดพลาดเรื่องสิทธิ์การเข้าถึง (permission error) เมื่อสิบนาทีก่อน อาจจะกำลังนั่งรอคุณเงียบๆ โดยที่คุณไม่เห็น เพื่อให้คุณพิมพ์ "yes" หรือแก้ไข path หากคุณเรียงลำดับตามความใหม่ล่าสุด คุณกำลังซ่อนสิ่งที่ต้องการสมองของคุณจริงๆ ไว้ คุณจำเป็นต้องเรียงลำดับตาม "ความสามารถในการจัดการต่อ" (actionability) แทน
ทำไมการเรียงตามความใหม่ล่าสุดถึงล้มเหลว
นักพัฒนาเลือกใช้การประทับเวลา (timestamp) เพราะมันง่าย ทุกระบบผลิตมันออกมา ทุกฐานข้อมูลทำดัชนีมัน และการเรียงลำดับก็ใช้โค้ดเพียงบรรทัดเดียว แต่ความง่ายจะเลิกมีประโยชน์ทันทีที่คุณเริ่มควบคุมคนทำงานอิสระหลายๆ คนพร้อมกัน
นี่คือรูปแบบความล้มเหลวที่เห็นได้ชัด เซสชันที่ห้าเพิ่งเขียน log เพิ่มหนึ่งบรรทัดเพราะตัวตรวจจับ dependency สังเกตเห็นการเปลี่ยนแปลงไฟล์ใน node_modules ทำให้ timestamp ของมันอัปเดตเป็นเวลาปัจจุบัน แต่เซสชันที่สองกลับถามคำถามคุณเมื่อสามนาทีก่อนว่า: "Should I install this package? (y/n)" ซึ่งคุณยังไม่ได้ตอบ หากแถบเมนูของคุณแสดงเซสชันล่าสุด เซสชันที่ห้าจะได้แสงสีเขียวสว่างวาบ ส่วนเซสชันที่สองจะหายไปจากรายการ ไม่มีอะไรดูเหมือนพัง แต่เอเจนต์ตัวหนึ่งของคุณกลับหยุดชะงักเพื่อรอการตัดสินใจของคุณ ในขณะที่คุณกำลังวุ่นอยู่กับการเฝ้าดู linter ที่ไม่ได้ต้องการคุณเลย
ความใหม่ล่าสุด (Recency) วัดการเคลื่อนไหว แต่ความเร่งด่วน (Urgency) ต้องการความหมาย การเขียนไฟล์ไม่มีความหมายในตัวมันเอง เว้นแต่ว่ามันจะสร้างงานให้คุณ ในทางกลับกัน การรอคำสั่ง (prompt) คือความสามารถในการจัดการต่อที่แท้จริง คุณไม่สามารถส่งมอบโค้ดได้ด้วยการนั่งดูสิ่งต่างๆ เปลี่ยนแปลงไปในพื้นหลัง แต่คุณส่งมอบมันได้ด้วยการจัดการสิ่งที่เป็นอุปสรรคให้หมดไป การเปลี่ยนวิธีคิดขั้นแรกนั้นง่ายมาก: ให้ใช้การประทับเวลาเป็นเพียงตัวตัดสินในกรณีที่คะแนนเท่ากัน (tiebreaker) แต่อย่าใช้มันเป็นสัญญาณหลัก
จัดกลุ่มก่อน แล้วค่อยเรียงลำดับ
แนวทางที่ดีกว่าคือการใช้ตัวกรองสองขั้นตอน ขั้นแรก ให้ติดป้ายกำกับทุกเซสชันตามสิ่งที่มันต้องการจากคุณ ขั้นที่สอง ให้เรียงลำดับป้ายกำกับเหล่านั้น คุณจะดูที่เวลาก็ต่อเมื่อมีสองเซสชันที่มีป้ายกำกับเดียวกันเท่านั้น
สิ่งนี้จะบังคับให้คุณต้องนิยามว่า "ความเร่งด่วน" จริงๆ แล้วหมายถึงอะไรในเวิร์กโฟลว์ของคุณ เซสชันที่ติดข้อจำกัดด้านอัตราการใช้งาน (rate-limited) ไม่ใช่เรื่องเร่งด่วน แต่มันแค่กำลังหลับอยู่ เซสชันที่กำลังทำงานอยู่นั้นยุ่งอยู่ แต่ถ้ามันไม่ต้องรอการตัดสินใจ มันก็สามารถคำนวณต่อไปได้อย่างสงบ เซสชันที่หยุดชะงัก (stalled) นั้นเร่งด่วน เพราะข้อผิดพลาดจะปล่อยทิ้งไว้นานจนบานปลาย ส่วนการส่งต่องานที่ยังไม่ได้รับการตอบรับนั้นเร่งด่วน เพราะคุณคือเจ้าของขั้นตอนถัดไป และเอเจนต์ไม่สามารถดำเนินการต่อได้จนกว่าคุณจะลงมือ
การจัดกลุ่มจะเปลี่ยนแถบเมนูของคุณจากฟีดข่าวให้กลายเป็นรายการสิ่งที่ต้องทำ จากนั้นขั้นตอนการเรียงลำดับจะกลายเป็นเรื่องของกลไก คุณตัดสินใจไปแล้วว่าคนทำงานที่ติดขัดมีความสำคัญมากกว่าคนที่กำลังยุ่ง คุณตัดสินใจไปแล้วว่าคำถามที่ยังไม่เห็นมีความสำคัญมากกว่าคำถามที่เห็นแล้ว เวลาจะเข้ามามีบทบาทก็ต่อเมื่อมีสองเซสชันที่ส่งเสียงร้องขอความช่วยเหลือในระดับความสำคัญที่เท่ากันเท่านั้น เมื่อนั้นและเมื่อนั้นเท่านั้นที่เซสชันที่เก่ากว่าจะเป็นฝ่ายชนะ มันคือความยุติธรรมเล็กๆ น้อยๆ สำหรับระบบมาก่อนได้ก่อน แต่ลำดับความสำคัญของสถานะไม่ควรถูกลบล้างด้วยเรื่องนี้
มาตรวัดลำดับความสำคัญที่ใช้งานได้จริง
ใน Agent Island v1.7.1 ทีมงานได้กำหนดสิ่งนี้ให้เป็นมาตรวัด 5 ระดับที่ใครก็ตามที่รันเซสชัน AI หลายตัวสามารถนำไปใช้ได้:
- ต้องการคุณ (ยังไม่ได้ตอบรับ): 4. เซสชันได้ส่งงานบางอย่างกลับมาให้คุณและคุณยังไม่เห็นมัน คุณคือเจ้าของขั้นตอนถัดไป
- หยุดชะงัก: 3. เซสชันติดข้อผิดพลาด, ติดปัญหาเรื่องสิทธิ์ หรืออุปสรรคอื่นๆ มันต้องการให้คุณตรวจสอบเพราะมันไม่สามารถแก้ไขตัวเองได้
- กำลังทำงาน: 2. เซสชันกำลังคำนวณอย่างแข็งขัน มันไม่ได้รอคุณ ดังนั้นมันจะได้ไอคอนก็ต่อเมื่อไม่มีสิ่งที่เร่งด่วนกว่านี้เท่านั้น
- ต้องการคุณ (รับทราบแล้ว): 1. คุณเห็นคำสั่งหรือคำถามแล้วแต่ยังไม่ได้ตอบ คุณรับทราบแล้ว ดังนั้นความเร่งด่วนจึงลดลงหนึ่งระดับจากสิ่งที่ยังไม่เห็น
- ว่างงานหรือถูกจำกัดอัตราการใช้งาน: 0. เซสชันเป็นเพียงเสียงรบกวนในพื้นหลัง มันกำลังรอคิวหรือแค่ไม่ได้ทำอะไรเลย
มาตรวัดนี้สอดคล้องกับการกระทำของผู้ใช้ เมื่อคุณจัดการงานที่ส่งต่อมา เซสชันจะลดระดับลงไปอยู่ที่กำลังทำงานหรือว่างงาน เมื่อเซสชันที่กำลังทำงานเกิดข้อผิดพลาด มันจะกระโดดขึ้นไปที่หยุดชะงัก เมื่อคุณคลิกเพื่อรับทราบคำสั่งแต่ต้อง
