ข้ามไปยังเนื้อหา

มอบงานให้เอเจนต์

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

  1. สร้างตั๋วงานด้วยชื่อและคำอธิบายที่ ละเอียดพอจะลงมือทำได้
  2. ตั้ง ผู้รับมอบหมาย เป็นเอเจนต์ เพื่อให้ความเป็นเจ้าของถูกบันทึกไว้
  3. เปิด (หรือสร้าง) สเปซ แล้ว @-mention เอเจนต์ตัวนั้น
  4. อ้างอิงตั๋วงานด้วย # mention ในข้อความของคุณ — ช่องเขียนข้อความเติมตั๋วงาน ของเวิร์กสเปซให้อัตโนมัติ — แล้วบอกว่าคุณต้องการให้ทำอะไร

เอเจนต์หยิบงานขึ้นมาจากบทสนทนา ความคืบหน้าของมันจะสตรีมเข้าสู่สเปซนั้น

  • ข้อความของคุณ รวมถึงการอ้างอิงตั๋วงานที่คุณแท็กไว้
  • สเปซสำหรับทำงานและรายงานผล
  • worktree ที่แยกออกมาต่างหากจากรีโปที่เชื่อมโยงกับเวิร์กสเปซ
  • โหมด ของสเปซ ซึ่งเป็นสิ่งที่กำหนดพื้นผิวเครื่องมือของการรัน

โหมดเป็นคุณสมบัติของสเปซ ไม่ใช่ของตั๋วงาน — ตั๋วงานไม่มี โหมด เอเจนต์ตัวเดียวจึงอยู่ใน chat ในสเปซหนึ่งและอยู่ใน plan ในอีกสเปซ ได้ เลือกโหมดจากดรอปดาวน์โหมดของช่องเขียนข้อความ (เอเจนต์, แผน หรือ ประสานงาน); review ถูกตั้งโดยสเปซรีวิว PR และเลือกไม่ได้ ดูโหมด

สัญญาผลลัพธ์ถูกประกาศไว้ที่การสั่งงาน ไม่ใช่ที่ตั๋วงาน: expected_output_schema บวกกับ output_contract_mode (ค่าเริ่มต้นคือ strict) เอเจนต์ทำตามสัญญาโดยเรียก submit_output ซึ่งตรวจสอบเพย์โหลดเทียบกับสคีมา และปฏิเสธเพย์โหลดที่ไม่เป็นไปตามนั้น

ทั้งผลลัพธ์ที่ยอมรับและการปฏิเสธทั้งหมดจะไปอยู่บน บันทึกการรันของเอเจนต์ สถานะของตั๋วงานเองไม่ถูกแตะต้องจากสิ่งนี้ — สัญญาที่ล้มเหลวไม่ทำให้ตั๋วงาน ล้มเหลว

  • สเปซ — กิจกรรมสดของเอเจนต์ ซึ่งเป็นมุมมองหลัก
  • ตั๋วงาน — สถานะของมัน ตามที่ผู้ที่เลื่อนสถานะกำหนด
  • การสังเกตการณ์ → สด (/workspaces/<workspace-id>/observability) — รายชื่อเอเจนต์สด
  • การสังเกตการณ์ → ข้อมูลเชิงลึก — บันทึกการรัน พร้อมต้นทุนและระยะเวลา

ไม่มีหน้าจอแดชบอร์ด URL ของเวิร์กสเปซเปล่า ๆ จะเปลี่ยนเส้นทางไปยังกล่อง ขาเข้า

เอเจนต์ที่เจอปัญหาย่อยจะมอบหมายงานต่อด้วยเครื่องมือ MCP delegate_task มันสร้างตั๋วงานลูกที่มอบหมายให้เอเจนต์ตัวอื่น และ — เมื่อคุณส่ง parent_ticket_id — บันทึกสายงานไว้เพื่อให้ตัวป้องกันมองเห็นได้

ตัวป้องกันเชิงโครงสร้างสองตัวทำงานที่จุดคอขวดของการจัดการตั๋วงานเสมอ ไม่เคยทำงานตามคำสั่งในพรอมต์:

  • เพดานความลึก — สายงานที่ลึกเกิน 3 การกระโดดจะถูกปฏิเสธ
  • การตรวจจับวงจร — การกระโดดกลับไปยังเอเจนต์ที่อยู่ในสายแล้วจะถูกปฏิเสธ

เมื่อคุณส่ง from_agent_id ตัวป้องกันอีกสองตัวจะทำงาน (โปรดักชันจัดหา พอร์ตรีโซลเวอร์เสมอ):

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

การปฏิเสธดังชัดเจน: เครื่องมือส่งคืนเหตุผลของตัวป้องกันแบบคำต่อคำ เอเจนต์ที่ มอบหมายจึงเห็นสาเหตุได้อย่างชัดเจน ฟิลด์ delegatedByAgentId บันทึกว่าใครเป็น ผู้มอบหมาย เกิดเป็นแผนภูมิต้นไม้การมอบหมาย

เพดานความลึกของการมอบหมายที่ 3 นี้เป็นขีดจำกัดที่ต่างจากเพดานการซ้อนของ ซับเอเจนต์ของฮาร์เนสในตัวที่ 2 — ตัวหนึ่งจำกัดตั๋วงานระหว่างเอเจนต์ อีกตัวจำกัด ซับเอเจนต์ภายในรันเดียว

เพิ่มพวกมันเป็น ผู้ร่วมงาน บนตั๋วงาน (บทบาท: assignee, collaborator, reviewer) นั่นคือรายชื่อ — บันทึกว่าใครเกี่ยวข้อง — และไม่ได้ให้สิทธิ์ใด ๆ โดยตัวมันเอง

หากต้องการให้เอเจนต์อยู่ในบทสนทนาเดียวกันจริง ๆ ให้เพิ่มพวกมันเป็นผู้เข้าร่วม จากส่วนหัวของสเปซ จากนั้นพวกมันจะ @-mention กันและกันได้ที่นั่น ดู สเปซ

ไม่มีโหนดใดในพาเลตต์ของไปป์ไลน์ที่สร้างตั๋วงาน ไปป์ไลน์จึงไม่สามารถกระจายงาน ออกเป็นตั๋วงานที่มีผู้รับมอบหมายได้

เส้นทางที่มีอยู่จริงคือการประสานงาน: การอนุมัติข้อเสนอจะสร้างโปรเจกต์และทีม คอมไพล์ DAG ของตั๋วงานย่อยในข้อเสนอให้เป็น เทมเพลตไปป์ไลน์ (หนึ่งขั้นตอน promptAgent ต่อตั๋วงานย่อยหนึ่งใบ ไม่ใช่แถว Ticket ต่อใบ) และเริ่มรันนั้น ดูรันการประสานงาน