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

แชทกับเอเจนต์

คู่มือนี้แสดงวิธีทำงานกับเอเจนต์ในสเปซ

  1. ไปที่ สเปซ ในแถบข้าง
  2. คลิกปุ่ม + ข้างหัวข้อสเปซ
  3. พิมพ์ ชื่อ — จำเป็นต้องระบุ หากปล่อยชื่อว่างจะถูกปฏิเสธ ไดอะล็อกจะยังเปิดอยู่
  4. เพิ่มเอเจนต์จากเวิร์กสเปซก็ได้ตามต้องการ
  5. หากเวิร์กสเปซมีรีโปอยู่ ตัวเลือกรีโปจะปรากฏขึ้น เริ่มต้นด้วยการเลือกรีโป ทุกตัว ให้จำกัดขอบเขตให้แคบลง (รวมถึงยกเลิกการเลือกรีโปเพียงตัวเดียว) ให้เหลือ เฉพาะรีโปที่สเปซนี้ควรจัดเตรียม worktree ให้
  6. ยืนยัน

Control Center จะเปิดสเปซและเริ่มจัดเตรียม worktree แบบ copy-on-write ให้แต่ละรีโปที่เลือกไว้ในเบื้องหลัง

พิมพ์ข้อความของคุณในช่องเขียนข้อความแล้วกด Enter เอเจนต์จะถูกสั่งงานและเริ่ม สตรีมคำตอบ

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

ขณะที่เอเจนต์ทำงาน คุณจะเห็นเทิร์นของมันสตรีมเข้ามา: ส่วนการให้เหตุผล การเรียก เครื่องมือ (อ่านไฟล์ เขียนไฟล์ คำสั่งเชลล์) และข้อความคำตอบ ทั้งหมดอยู่ในข้อความ เทิร์นของเอเจนต์ข้อความเดียว

ขณะเอเจนต์กำลังทำงาน ข้อความสนทนาธรรมดาจะ ไม่ ถูกจัดคิวเป็นเทิร์นใหม่ แต่จะกลายเป็นการ์ดชี้นำที่จัดคิวอยู่ในแถบเหนือช่องเขียนข้อความ และถูกฉีดเข้าไปใน รันที่กำลังทำงานที่ขอบเขตเทิร์นถัดไป ไม่มีการแจ้งเตือนแบบทอสต์ — การ์ดคือการตอบรับ

มีสามสิ่งเปลี่ยนพฤติกรรมนี้:

  • ข้อความที่มี @mention จะถูกส่งเป็นข้อความเสมอ ไม่ใช่ข้อความชี้นำ
  • ข้อความที่ขึ้นต้นด้วย คำสั่งสแลช จะถูกจัดการเป็นคำสั่งนั้นเสมอ
  • ข้อความที่มี ไฟล์แนบ จะถูกส่งเป็นข้อความเสมอ — คิวข้อความชี้นำรองรับเฉพาะ ข้อความ
  • หากรันที่กำลังทำงานทุกรันจบไปแล้ว ข้อความจะหลุดผ่านไปและถูกส่งเป็น ข้อความปกติ

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

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

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

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

แตะตัวเลือกเดียวเพื่อส่ง (หมายเลขต่อท้ายจะกลายเป็นลูกศรเมื่อวางเมาส์) การเลือกหลายตัวเลือกและคำตอบที่พิมพ์เองใช้ ดำเนินการต่อ (⌘↵ / Ctrl↵) ข้าม บอกให้เอเจนต์เลือกค่าเริ่มต้นที่สมเหตุสมผลและไม่ถามอีก

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

ขณะมีรันที่กำลังทำงาน ปุ่มส่งของช่องเขียนข้อความจะกลายเป็นปุ่ม หยุด ล้างช่องเขียนข้อความแล้วกดปุ่มนี้ — จะหยุดเอเจนต์ทุกตัวที่กำลังรันในบทสนทนานั้น

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

รันที่หยุดแล้วจะถูกทำเครื่องหมายว่าหยุด ส่งข้อความใหม่เพื่อสั่งงานอีกครั้ง

พิมพ์ / ในช่องเขียนข้อความเพื่อดูรายการคำสั่ง คำสั่งที่เปลี่ยนพฤติกรรมของ บทสนทนา:

คำสั่ง สิ่งที่คำสั่งทำ
/plan สลับสเปซเข้าสู่โหมดแผน /plan เดี่ยว ๆ แค่เตรียมโหมดให้พร้อม ส่วน /plan <request> จะเตรียมโหมดให้พร้อมและส่งส่วนที่เหลือเป็นข้อความของคุณ
/goal <text> บันทึกเป้าหมายการทำงานของบทสนทนา
/loop <text> วนทำงานหนึ่งจนกว่าจะเสร็จ
/compact พับประวัติเก่าเข้าเป็นบทสรุปที่ยึดเป็นหลัก แล้วทำต่อบนบริบทที่ถูกย่อ
/todo … ดูและแก้ไขรายการสิ่งที่ต้องทำที่บันทึกไว้ของบทสนทนานี้

สกิลจะปรากฏในรายการเดียวกันภายใต้เนมสเปซ skill: ของตัวเอง จึงไม่ชนกับคำสั่ง ข้างบนเลย — สกิลที่ชื่อ plan หรือ compact ยังเข้าถึงได้:

คำสั่ง สิ่งที่คำสั่งรัน
/skill:<name> สกิลที่ติดตั้งในเวิร์กสเปซ หรือที่ผูกไว้กับเอเจนต์
/skill:<repo>:<name> สกิลที่รีโปใดรีโปหนึ่งซึ่งเช็กเอาต์ในสเปซนี้มาด้วย

สกิลจากรีโปจะติดป้ายบอกว่ารีโปที่มา เพราะชื่ออย่างเดียวไม่ได้บอกว่ามันบรรจุ ธรรมเนียมของบริการไหนไว้ และรีโปสองแห่งอาจมี testing กันคนละตัว คุณไม่จำเป็น ต้องพิมพ์คำนำหน้าเพื่อค้นหา: การพิมพ์ชื่อสกิลล้วน ๆ ก็จับคู่กับรายการที่มีเนมสเปซ ด้วย

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

/compact และ /todo ถูกดักจับโดยไคลเอนต์และไม่ถูกบันทึกเป็นข้อความเลย — บรรทัด /compact ในทรานสคริปต์จะดันจุดตัดของการย่อครั้งถัดไปถอยกลับไปหนึ่งเทิร์น /plan จะสลับโหมดที่จัดเก็บไว้ของสเปซแทนที่จะเดินทางไปเป็นข้อความ ดังนั้นทั้งสาม คำสั่งจึงไม่ใช่ “ข้อความที่คุณส่งให้เอเจนต์” อย่าคาดว่าจะเห็นมันในประวัติ

ก่อนการเปลี่ยนแปลงที่ซับซ้อน ให้สลับสเปซเข้าสู่โหมดแผนด้วย /plan เมนูเลือกโหมดบนแถบเครื่องมือของช่องเขียนข้อความ หรือ Shift+Tab เอเจนต์จะค้นคว้า แบบอ่านอย่างเดียวและส่งแผนที่มีชนิดข้อมูลกำกับมาให้คุณอนุมัติก่อนงานจะเริ่ม ดู ใช้โหมดแผน

คุณไม่จำเป็นต้องมีสเปซแยกให้เอเจนต์ทุกตัว ในสเปซใดก็ได้:

@alice can you look at the failing tests in src/auth_test.dart?

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