Skip to content
← เอกสารข้อกำหนดทั้งหมด

การมอบหมายงาน

ขอบเขตเวอร์ชัน: หน้านี้เรียบเรียงรุ่นสัญญา v7 ในรุ่น v7.9.0 แหล่งอ้างอิงหลัก: V7_CONTRACT.md และ delegation.md ของ flow execute หากหน้านี้กับไฟล์เหล่านั้นแตกต่างกัน ให้ยึดไฟล์เป็นหลัก

เวอร์ชัน 7.0.0 สถานะ: เสถียร v7 เป็นรุ่นสัญญาใหม่ของ ชั้นบันทึก ไม่ใช่วงจรชีวิตใหม่: ทุกสิ่งในเอกสารสัญญา วงจรชีวิต บริบท และทรัพยากรของ v6 ยังคงใช้บังคับ เว้นแต่หน้านี้จะระบุไว้เป็นอย่างอื่น การไม่มอบหมายงานถูกต้องเสมอ คำสำคัญ MUST, MUST NOT, SHOULD, SHOULD NOT และ MAY ให้ตีความตามที่อธิบายไว้ใน RFC 2119

สิ่งที่ v7 เพิ่มเข้ามา

v7 เพิ่มสองสิ่งพอดีให้กับชั้นบันทึก

  1. ฟิลด์งานแบบเลือกได้หนึ่งฟิลด์ในสัญญา คือ parallel_safe ซึ่งเผยแพร่ใน plan-contract/v7
  2. ประเภทเหตุการณ์ journal หนึ่งประเภท คือ delegation ซึ่งเผยแพร่ใน journal-event/v7

ไบต์ของ schema v1, v2, v5 และ v6 ไม่เปลี่ยนแปลง แผนที่ไม่เคยมอบหมายงานแยกไม่ออกจากแผน v6 ยกเว้น URL ของ schema

parallel_safe

parallel_safe (boolean ค่าเริ่มต้น false) ยืนยันว่างานหนึ่งรันใน delegate ได้โดยไม่สลับปนกับงานพี่น้อง มันถูกกำหนดโดย create ไม่เคยถูกอนุมานระหว่างการดำเนินงาน และกำหนดได้เฉพาะเมื่อเงื่อนไขทั้งหมดนี้เป็นจริง

  • repository เปิดใช้ addon สำหรับการมอบหมายงาน (agentkit หรือ Herdr) ใน ทะเบียน addon ของตน
  • พื้นผิวที่แตะต้องของงานไม่ทับซ้อนกับงานพี่น้องที่อาจกำลังดำเนินอยู่ในเวลาเดียวกัน
  • งานประกาศเอาต์พุตที่มีขอบเขตจำกัด
  • gate ของงานรันในแผนนี้

การทำเครื่องหมายงานไม่เปลี่ยนอำนาจใด ๆ: สัญญาที่ไม่มีสิทธิ์ agent_delegation อาจมีเครื่องหมายเหล่านี้ได้ และเครื่องหมายเหล่านั้นไม่อนุญาตสิ่งใดเลย

เหตุการณ์ delegation

มีการบันทึกหนึ่งเหตุการณ์ต่อการเปลี่ยนสถานะหนึ่งครั้งของ delegate หนึ่งตัว

ฟิลด์ ความหมาย
task งาน T-* ที่ delegate ทำงานให้
delegation_id เชื่อมโยงการเริ่มต้นเข้ากับการเปลี่ยนสถานะสุดท้าย
transport headless (agentkit) หรือ interactive (Herdr)
via คีย์ addon ที่เป็นตัวส่ง
state launched จากนั้นหนึ่งในสถานะ completed, failed, cancelled เพียงหนึ่งเดียว
kind, profile แบบเลือกได้: ชนิดและโปรไฟล์ของเอเจนต์เขียนโค้ด
target แบบเลือกได้: working directory (headless) หรือ machine:pane (interactive)
worktree git worktree ของ delegate เอง หรือ null สำหรับ delegate แบบอ่านอย่างเดียว
prompt_digest ตอนเริ่มต้น: SHA-256 ของ prompt ซึ่งถูกบันทึกก่อนที่จะพึ่งพา delegate
result_path, result_digest เมื่อ completed หรือ failed: ผลลัพธ์ที่เก็บรวบรวมมาและ digest ของมัน

การเปลี่ยนสถานะเป็นแบบปิด: หนึ่ง launched ต่อหนึ่งการมอบหมายงาน จากนั้นสถานะสุดท้ายเพียงหนึ่งเดียวพอดี การเพิ่มเหตุการณ์การมอบหมายงานลง journal โดยตรง MUST ถูกปฏิเสธ เหตุการณ์การมอบหมายงานมีได้ผ่านตัวเขียนที่มี gate เท่านั้น

การมอบหมายงานไม่ใช่หลักฐาน

การมอบหมายงานไม่มีป้ายความน่าเชื่อถือและไม่มีพาธหลักฐาน และไม่มีการปิดเกณฑ์ใดที่อ่านมัน ผลลัพธ์ของ delegate ยังคงเป็น asserted จนกว่าตัวรัน gate ของแผนนี้เองจะสังเกตมัน: แผนแม่รวมงานเข้ามา แล้วรัน gate ของงาน (ledger.py gate) ซึ่งเป็นสิ่งเดียวที่สร้างหลักฐาน observed และเป็นทางเดียวที่งานจะเสร็จสิ้นได้ การมอบหมายงานที่ completed ไม่เคยปิดเกณฑ์ ส่วนที่ failed คือผลลัพธ์ที่ถูกบันทึก และจากนั้นแผนแม่จะลงมือทำงานนั้นเอง

ตัวเขียนที่มี gate

ledger.py --plan <dir> delegate launch|observe|collect|cancel --task <T-id>:

การดำเนินการ เขียน ผล
launch ใช่ บันทึก launched หลังผ่านการตรวจด้านล่าง
observe ไม่ พิมพ์สถานะล่าสุดของการมอบหมายงานแต่ละรายการ
collect ใช่ บันทึก completed หรือ failed พร้อมพาธผลลัพธ์และ digest ของมัน
cancel ใช่ บันทึก cancelled

launch MUST ถูกปฏิเสธ และบันทึกการปฏิเสธไว้ เว้นแต่เงื่อนไข ทั้งหมด ต่อไปนี้เป็นจริง

  1. สัญญาเป็น v7
  2. สัญญาให้สิทธิ์ agent_delegation
  3. งานมีอยู่ เริ่มแล้ว และยังไม่เสร็จ
  4. งานเป็น parallel_safe หรือ delegate เป็นแบบอ่านอย่างเดียว (ไม่มี worktree)
  5. descriptor ของ addon ที่ระบุชื่อประกาศ transport ที่ร้องขอ
  6. ความสามารถที่มีผลระบุ addon นั้นเป็นแหล่งของ subagents (ทรัพยากรและความสามารถ)

collect และ cancel MUST ถูกปฏิเสธสำหรับการมอบหมายงานที่ไม่รู้จัก ที่เป็นของงานอื่น หรือที่อยู่ในสถานะสุดท้ายแล้ว การ launch ที่ถูกปฏิเสธไม่ใช่สิ่งที่ปิดกั้น: งานจะรันตามลำดับ

Transport

ไม่มีสิ่งใดใน ledger ที่รัน delegate ผู้รันคือ addon ที่เป็น transport

  • Headless (via: agentkit) — สำหรับงาน parallel_safe ที่มีขอบเขตและประกาศเอาต์พุตไว้: รัน ak run หนึ่งครั้งใน git worktree เฉพาะ แล้วจบการทำงาน delegate แบบอ่านอย่างเดียวถูกเริ่มด้วย --ask
  • Interactive (via: herdr) — สำหรับงานที่ต้องโต้ตอบ รันนาน หรือรันบนเครื่องอื่น: peer ของ herdr-peers ใน pane ของ Herdr ซึ่งส่งคำตอบที่ได้รับอนุญาตกลับมาเพียงหนึ่งครั้งพอดี

ข้อป้องกัน

  • หนึ่งผู้เขียนต่อหนึ่งพาธ delegate ที่เขียนข้อมูลทำงานเฉพาะใน worktree ของตนเอง เซสชันแม่เป็นผู้เขียน journal เพียงผู้เดียว
  • ความลึก 1 delegate ไม่เคยมอบหมายงานต่อ การกระจายงานถูกจำกัดโดย transport
  • ผลลัพธ์คือข้อมูล สิ่งที่ delegate ส่งกลับมาไม่ให้อำนาจใด ไม่ขยายขอบเขต และไม่เคยเปลี่ยนการยอมรับ
  • brief ที่สมบูรณ์ในตัว prompt สำหรับการเริ่มต้นระบุวัตถุประสงค์ของงาน เกณฑ์การยอมรับแบบคำต่อคำ และ worktree ที่อนุญาตให้เขียน และไม่เคยพกค่า secret

Orchestrator

orchestrator ไม่เคยมอบหมายงานของ แผนลูก: แผนลูกรันในเซสชันของตนเอง หนึ่งเอเจนต์ต่อหนึ่ง repository การมอบหมายงาน ของแผนเอง ภายใต้กฎข้างต้นทำได้ทั้งในแผน orchestrator และแผนเดี่ยว การรันหลายเลนที่ทำงานยาวนาน การรักษาให้เลนเหล่านั้นทำงานต่อเกินขีดจำกัดของบัญชี และการส่งต่อความเป็นผู้นำ อยู่ในบทของระเบียบวิธีเรื่อง orchestration และ ความเป็นอิสระของ swarm

ที่เกี่ยวข้อง