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

@-mention เอเจนต์

คู่มือนี้แสดงวิธี @-mention เอเจนต์และเพื่อนร่วมทีมในสเปซ

พิมพ์ @ ในช่องเขียนข้อความแล้วเลือกเอเจนต์จากรายการเติมข้อความอัตโนมัติ หรือพิมพ์ชื่อเองก็ได้:

@alice fix the login bug

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

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

โทเค็นการกล่าวถึงถูกจับคู่แบบไม่สนตัวพิมพ์ ด้วยชื่อแบบตรงตัวหรือคำนำหน้า ดังนั้น @arch จึงไปถึงเอเจนต์ชื่อ architect และ @Alice ไปถึง alice

มีสองผลที่ควรวางแผนรับมือ:

  • โทเค็นสั้นไม่ถือเป็นข้อผิดพลาด หากเอเจนต์สองตัวใช้คำนำหน้าร่วมกัน ตัวที่พบ ก่อนจะเป็นผู้ชนะ และตัวที่ชนะนั้นขึ้นอยู่กับลำดับ — ไม่ใช่กฎตัดสินเสมอใด ๆ ใช้ชื่อเต็มทุกครั้งที่ชื่อซ้อนทับกัน
  • มีเพียงตัวอักษร ตัวเลข และขีดล่างเท่านั้นที่เป็นส่วนหนึ่งของโทเค็น ตัวแยก วิเคราะห์จับคู่ @(\w+) ดังนั้น @code-reviewer จึงถูกอ่านเป็นโทเค็น code และ @my agent เป็น my เอเจนต์ที่ชื่อมีเครื่องหมายขีด จุด หรือช่องว่าง ไม่สามารถถูกกล่าวถึงได้อย่างน่าเชื่อถือ — รวมถึงผ่านการเติมข้อความอัตโนมัติ ซึ่งแทรกชื่อเป็นข้อความล้วน ตั้งชื่อเอเจนต์เป็นคำเดียว หรือใช้ขีดล่าง

การกล่าวถึงจะถูกตัดออกจากข้อความก่อนที่ข้อความจะไปถึงเอเจนต์ ดังนั้นข้อความที่ _มีแต่_การกล่าวถึง (@alice) จึงไม่สั่งงานอะไรเลย — จงให้อะไรสักอย่างมันทำด้วย

@alice refactor the auth module. @bob write tests for it.

เอเจนต์ทั้งสองตัวถูกสั่งงานขนานกันเข้าไปในบทสนทนาเดียวกัน และทั้งคู่ได้รับ ข้อความเต็ม

พวกมันยังใช้ worktree ของสเปซนั้นร่วมกัน worktree ของรีโปถูกจัดเตรียมต่อ สเปซ ไม่ใช่ต่อเอเจนต์ เอเจนต์แต่ละตัวได้ไดเรกทอรีทำงานแบบโอเวอร์เลย์ของตัวเอง สำหรับ AGENTS.md สกิล และการกำหนดค่า โดยมีรีโปที่ใช้ร่วมกันถูกเชื่อมเข้ามา แบบอ่าน-เขียน ดังนั้นเอเจนต์สองตัวที่ถูกกล่าวถึงพร้อมกันจึงมองเห็น — และชนกันกับ — การแก้ไขของกันและกันได้

@token ใดก็ตามที่ไม่ตรงกับเอเจนต์จะถูกนำไปลองจับคู่กับสมาชิกที่เป็นมนุษย์ของ เวิร์กสเปซ ด้วยแฮนด์เดิล โดยใช้กฎชื่อตรงตัวหรือคำนำหน้าแบบไม่สนตัวพิมพ์เดียวกัน

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

ชื่อเอเจนต์ถูกนำมาลองก่อนเสมอ และโทเค็นที่เอเจนต์ยึดไปแล้วจะไม่ถูกเสนอให้รายชื่อ สมาชิกเลย — @word หนึ่งอันแปลงเป็นผู้กระทำได้เพียงรายเดียวเท่านั้น

เอเจนต์ที่ถูกสั่งงานจะได้รับบล็อก “Summons” ในพรอมต์ ซึ่งระบุว่าใครเรียกมันมาและ แสดงรายชื่อผู้เข้าร่วมของสเปซ — เอเจนต์ตัวอื่น (ที่ทำเครื่องหมายว่าระดับบนสุด หรือระดับรอง) และสมาชิกที่เป็นมนุษย์ — เพื่อให้มันรู้ว่าสามารถส่งต่องานให้ใครได้ บล็อกนี้ยังบอกมันด้วยว่าการกล่าวถึงเอเจนต์ตัวอื่นในการตอบกลับจะปลุกเอเจนต์ ตัวนั้น และการกล่าวถึงตัวเองจะถูกละเว้น

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

กฎนี้เข้มงวดกว่าของช่องเขียนข้อความโดยเจตนา เพราะไม่มีใครคอยเฝ้าดูเพื่อแก้ การเดาที่ผิด:

  • ชื่อแบบตรงตัวเท่านั้น ไม่มีการจับคู่คำนำหน้า @arch ไปถึง architect เมื่อมนุษย์พิมพ์ แต่จากเอเจนต์จะไปไม่ถึงใครเลย ชื่อที่ตรงกับเอเจนต์สองตัวก็ไป ไม่ถึงใครเช่นกัน
  • โค้ดไม่ใช่ข้อความร้อยเรียง การกล่าวถึงภายในบล็อกรั้วโค้ดหรือใน `backticks` จะถูกละเว้น ดังนั้นการอ้างอิงแอนโนเทชัน @Override หรือ pip install foo@1.2 จึงปลอดภัย รั้วที่ไม่ได้ปิดจะทำให้ทุกอย่างหลังจากนั้นว่างเปล่า
  • @ ที่ต่อติดกับโทเค็นก่อนหน้าไม่ถือเป็นการกล่าวถึง — sam@host.com, pkg/@scope และ node@20 ไปไม่ถึงใคร
  • เครื่องหมายขีดถูกเก็บไว้ ดังนั้น @code-reviewer จึงแปลงเป็นตัวเอง ไม่ใช่เป็นโทเค็น code
  • เอเจนต์ไม่เกินสามตัวต่อเทิร์น เอเจนต์ที่ไล่ชื่อเพื่อนร่วมทีมหกคนในบทสรุป กำลังไล่ชื่อ แต่ไม่ได้เรียกพวกมันมา

ห่วงโซ่การปลุกถูกจำกัดขอบเขตแบบเดียวกับการมอบงาน คือ ความลึก 3 และเอเจนต์ ที่อยู่ในห่วงโซ่แล้วจะถูกปลุกซ้ำโดยห่วงโซ่นั้นไม่ได้ (ไม่มี A → B → A) คู่ลำดับ ยังถูกจำกัดอัตราไว้ข้ามห่วงโซ่ด้วย การปลุกที่ถูกปฏิเสธจะโพสต์ข้อความระบบเข้าใน บทสนทนาเพื่อบอกว่าการกล่าวถึงใดไม่ถูกส่งถึงและเพราะเหตุใด — แต่ชื่อที่แปลงไม่ได้ จะไม่โพสต์ เพราะไม่เช่นนั้น @ ใดก็ตามในประโยคก็จะเล่าเรื่องตัวเอง

สำหรับการส่งต่องานที่ไม่ควรพึ่งพาข้อความร้อยเรียง — อย่างคำขอ/การตอบกลับ หรือ การไปถึงเอเจนต์นอกสเปซ — ให้ใช้เครื่องมือ send_to_agent, ask_agent และ delegate_task แทน