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

สั่งงานเอเจนต์รีวิวเวอร์

คู่มือนี้แสดงวิธีสั่งงานเอเจนต์รีวิวเวอร์ให้รีวิว pull request

  1. เปิด PR แล้วไปที่แท็บ ภาพรวม ของมัน
  2. เปิดเมนู ⋯ แล้วเลือก ถาม AI

การทำเช่นนี้จะเริ่มไปป์ไลน์ pr_review ที่มาพร้อมระบบ ซึ่งเปิดสเปซรีวิวของ PR และกระจายรีวิวเวอร์ตามระดับรีวิวของเวิร์กสเปซ — ค่าเริ่มต้นคือสามตัว (เอเจนต์ qa, architect และ engineer ที่มาพร้อมระบบ) — จากนั้นให้เอเจนต์หัวหน้า รวบรวมผล เส้นทางนี้คุณไม่ได้เลือกบทบาทเอง หากต้องการควบคุมว่าบทบาทใดจะรัน และ แต่ละตัวดูไฟล์ใด ให้ใช้เครื่องมือ MCP หรือขั้นตอนไปป์ไลน์ด้านล่าง

เรียกมันจากภายในสเปซรีวิวที่มีอยู่แล้ว:

dispatch_reviewers(
space_id: "...",
workspace_id: "...",
reviewers: [
{role: "reviewer"},
{role: "security", scope: "src/auth/**"}
]
)

space_id, workspace_id และ reviewers จำเป็นทั้งหมด สเปกของรีวิวเวอร์แต่ละตัว รับ role พร้อม scope แบบ glob ของไฟล์ (ไม่บังคับ) และ prompt_override ที่ แทนที่บรีฟเริ่มต้น concurrency แบบไม่บังคับ (1–8) จำกัดจำนวนการสั่งงานพร้อมกัน เมื่อไม่ระบุ การตั้งค่า review_concurrency ของเวิร์กสเปซจะมีผล (ค่าเริ่มต้น 3 ตั้งค่าที่ การตั้งค่า → เวิร์กสเปซ → ทั่วไป)

เครื่องมือจะคืนค่ากลับมาทันทีพร้อมรายการ dispatched และ unmatched รีวิวเวอร์ที่ ถูกสั่งงานทุกตัวจะถูกเพิ่มเข้าไปในสเปซในฐานะผู้เข้าร่วม ประกาศด้วยข้อความระบบ และ สั่งงานพร้อมบรีฟของมัน ข้อค้นพบจะลงเป็นข้อความ review_node ในสเปซนั้น

เปิด การตั้งค่า → เวิร์กสเปซ → เทมเพลตไปป์ไลน์ เปิดเทมเพลต จากนั้น:

  1. เพิ่มโหนด Reviewer (prompt) จากพาเลตต์
  2. เลือกเอเจนต์ที่จะสั่งงาน แล้วเขียนพรอมต์ของรีวิวเวอร์ โดยใช้ตัวยึดตำแหน่ง {{key}} สำหรับเอาต์พุตต้นทาง (ตัวอย่างเช่น {{repo_local_path}}, {{pr_number}})
  3. ตั้งคีย์เอาต์พุต (ค่าเริ่มต้น reviewer_findings) เพื่อให้ขั้นตอนปลายทางอ่าน ข้อค้นพบได้

ขั้นตอนนี้จะสั่งงานเอเจนต์และพักไว้จนกว่ารันนั้นจะเสร็จ จากนั้นเอนจินจะเก็บเพย์โหลด submit_output ของรันเข้าสู่สถานะไปป์ไลน์ภายใต้คีย์เอาต์พุตของโหนด (คำอธิบายใน พาเลตต์ยังบอกว่าขั้นตอนนี้รอการเรียก complete_task — เครื่องมือนั้นไม่มีอยู่จริง ไม่ต้องสนใจข้อความนั้น)

กระจายสาขาโดยเชื่อมโหนดรีวิวเวอร์หลายตัวเข้ากับขั้นตอนต้นทางเดียวกัน แล้วรวม เอาต์พุตของพวกมันด้วยโหนด Consolidate (join)

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

หากต้องการให้ไปป์ไลน์รีวิวเริ่มทำงานเอง:

  1. เปิดเทมเพลตที่ การตั้งค่า → เวิร์กสเปซ → เทมเพลตไปป์ไลน์
  2. ลาก เผยแพร่ PR หรือ เปิด PR ภายนอก จากส่วนทริกเกอร์ของไลบรารีโหนดมาวาง บนแคนวาส (หรือเลือกจากไทล์จาง เพิ่มทริกเกอร์)
  3. เลือกโหนดใหม่ แล้วเปิดสวิตช์ เปิดใช้ ในตัวตรวจสอบของมัน จากนั้นเปิดใช้งาน เทมเพลต

มีสองเหตุการณ์ที่สำคัญตรงนี้ และสลับกันไม่ได้:

เหตุการณ์ เกิดเมื่อ คีย์เพย์โหลด
PullRequestPublished PR ถูกเปิด ผ่าน Control Center — พื้นผิวการเขียน PR หรือเอเจนต์ที่เรียก pr_lifecycle.publish pr_id, workspace_id, repo_owner, repo_name
ExternalPrDetected บริการโพลล์ PR พบ PR ที่เปิดบน GitHub โดยตรง repo_owner, repo_name, pr_number, pr_title, author

PR ที่เปิดบน github.com ไม่เคยทำให้เกิด PullRequestPublished ดังนั้นเทมเพลตที่ เชื่อมไว้กับเฉพาะเหตุการณ์นั้นจะไม่เห็นมัน สังเกตด้วยว่า PullRequestPublished ไม่มี pr_number ติดมาด้วย — ขั้นตอนที่สคริปต์หรือพรอมต์อ้างถึง {{pr_number}} ต้องถูกป้อนด้วย ExternalPrDetected หรือด้วยการรันด้วยตนเองที่จัดหาให้

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

dispatch_reviewers ให้คะแนนเอเจนต์ทุกตัวในเวิร์กสเปซเทียบกับป้ายบทบาทที่ขอมาแต่ละ รายการ โดยไม่คำนึงถึงตัวพิมพ์เล็กใหญ่:

ความตรงกัน คะแนน
สกิลที่มีป้ายบทบาทอยู่ด้วย +3
ชื่อเรื่องที่มีป้ายบทบาทอยู่ด้วย +2
ชื่อเอเจนต์ที่มีป้ายบทบาทอยู่ด้วย +1

คะแนนจะสะสมและตัวที่มีผลรวมสูงสุดชนะ (หากเสมอกัน ใช้ผู้สมัครตัวแรกที่พบ) หากไม่มี ผู้สมัครตัวใดได้คะแนนมากกว่าศูนย์ สเปกจะกลับมาในรายการ unmatched ของเครื่องมือ แทนที่จะถูกสั่งงาน — บทบาทที่ไม่มีใครตรงจึงถูกรายงาน ไม่ถูกข้ามไปเงียบ ๆ

PR มีสเปซรีวิวเพียง หนึ่ง สเปซเท่านั้น ไม่ใช่หนึ่งสเปซต่อรีวิวเวอร์หนึ่งตัว มันถูกสร้างแบบ idempotent โดย pr.ensureSpace เชื่อมกับ PR ผ่าน ReviewSpaceAssociation และจัดเตรียมไว้กับ head ref ของ PR รีวิวเวอร์ที่ถูกสั่งงาน ทุกตัวจะเข้าร่วมสเปซนั้นและโพสต์ข้อค้นพบ review_node ของมันที่นั่น ซึ่งเป็นสิ่งที่ ทำให้ข้อค้นพบเปรียบเทียบกันได้ และทำให้เอเจนต์หัวหน้าเข้าถึงฉันทามติข้ามข้อค้นพบ เหล่านั้นได้

รีวิวเวอร์ที่ถูกสั่งงานแต่ละตัวมี AgentRunLog ของตัวเอง ติดตามความคืบหน้าได้ที่:

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