Tools
ถามผู้ใช้
ask_user ช่วยให้เอเจนต์ถามคำถามแบบมีโครงสร้างแก่ผู้ใช้จำนวนหนึ่งถึงสามข้อและ
รอคำตอบ เครื่องมือนี้ใช้สำหรับการตัดสินใจที่เป็นหน้าที่ของผู้ใช้อย่างแท้จริง
ไม่ใช่การยืนยันตามปกติหรือข้อมูลที่เอเจนต์สามารถอนุมานได้จากคำขอ
โค้ด หรือค่าเริ่มต้นที่สมเหตุสมผล
เครื่องมือนี้ใช้ได้เฉพาะในเซสชันหลักเท่านั้น เอเจนต์ย่อยและการทำงานอื่นที่ไม่ใช่การทำงานหลัก จะไม่ได้รับเครื่องมือนี้
ตอบคำถาม
สามารถตอบได้จากทุกช่องทางการสนทนาที่รองรับ:
- Control UI บนเว็บจะตรึงแผงคำถามไว้เหนือช่องเขียนข้อความโดยตรง สำหรับ พรอมต์ที่มีหลายคำถาม แผงจะแสดงครั้งละหนึ่งคำถามและเลื่อนไปตาม ตัวบอกขั้นตอนแบบสั้น หลังจากตอบเสร็จ แผงจะปิดลงและแชต จะแสดงไว้เพียงสรุปคำตอบแบบย่อ
- Telegram, Discord และ Slack จะแสดงปุ่มแบบเนทีฟสำหรับพรอมต์ ที่มีคำถามเดียวและเลือกได้เพียงตัวเลือกเดียว
- การตอบด้วยข้อความธรรมดาใช้ได้ในทุกช่องทาง ให้ตอบด้วยหมายเลข ป้ายกำกับตัวเลือก หรือคำตอบที่เขียนเอง
OpenClaw เปิดให้ตอบเป็นข้อความอิสระด้วยตัวเลือก อื่นๆ เสมอ เอเจนต์ต้องไม่เพิ่มตัวเลือก
Other ลงในรายการตัวเลือกที่กำหนดไว้
ลักษณะการทำงานของแพลตฟอร์ม
การตอบคำถามใช้ได้ในทุกช่องทางการสนทนาที่รองรับ Control UI บนเว็บใช้ ตัวบอกขั้นตอนแบบตรึงซึ่งจะแทนที่ช่องเขียนข้อความเมื่อขยายอยู่ การยุบจะนำ ช่องเขียนข้อความแบบเต็มกลับมาใต้แถบคำถามขนาดเล็ก iOS, macOS และ Android แสดง การ์ดในบรรทัด โดยตั้งใจให้หลายคำถามเรียงซ้อนกันเพื่อให้เหมาะกับการใช้งานแบบสัมผัส ทุกแพลตฟอร์มเก็บสรุปคำถามและคำตอบไว้ในไทม์ไลน์ของแชตที่ใช้งานอยู่ โดยไม่มีการนำออกตามเวลา และมี ข้าม ให้ใช้ทุกแห่ง
พรอมต์ที่ไม่สามารถใช้ปุ่มแบบเนทีฟได้ รวมถึงพรอมต์ที่มีหลายคำถามและ พรอมต์แบบเลือกได้หลายตัวเลือก จะแสดงเป็นข้อความที่อ่านง่ายในช่องทางต่างๆ ส่วน Control UI จะคงตัวบอกขั้นตอนแบบมีโครงสร้างไว้อย่างครบถ้วน
หมดเวลาและไม่มีคำตอบ
ระยะหมดเวลาเริ่มต้นคือ 900 วินาที timeoutSeconds จะถูกจำกัดให้อยู่ในช่วง
30 ถึง 3600 วินาที
หากคำถามหมดอายุหรือถูกยกเลิกก่อนจะได้รับคำตอบ เครื่องมือจะ
ส่งคืน status: "no_answer" จากนั้นเอเจนต์จะดำเนินการต่อตามวิจารณญาณที่ดีที่สุด
การยุติการทำงานของเอเจนต์จะยกเลิกคำถามของ Gateway ที่กำลังรอคำตอบ
สคีมาของเครื่องมือ
{ questions: Array<{ id: string; // คีย์คำตอบ snake_case ที่ไม่ซ้ำกัน header: string; // ป้ายกำกับสั้น ตัดให้เหลือ 12 อักขระ question: string; // หนึ่งประโยค options: Array<{ label: string; description?: string; }>; // 2-4 ตัวเลือก multiSelect?: boolean; }>; // 1-3 คำถาม timeoutSeconds?: number; // จำนวนเต็ม ค่าเริ่มต้น 900 จำกัดให้อยู่ในช่วง 30-3600}เมื่อใช้ multiSelect: true ผู้ใช้สามารถเลือกได้มากกว่าหนึ่งตัวเลือก
ค่าคำตอบของทุกคำถามจะถูกส่งคืนเป็นอาร์เรย์
ตัวอย่างผลลัพธ์ที่ตอบแล้ว:
{ "status": "answered", "answers": { "answers": { "deploy_target": ["Staging (Recommended)"] } }}แนวทางสำหรับโมเดล
สัญญาที่แสดงต่อโมเดลกำหนดให้เอเจนต์:
- ถามเฉพาะเมื่อไม่สามารถดำเนินการต่อได้หากขาดการตัดสินใจที่เป็นหน้าที่ของผู้ใช้อย่างแท้จริง;
- ควรถามเพียงหนึ่งคำถามและไม่เกินสามคำถาม;
- วางตัวเลือกที่แนะนำไว้ก่อนและเติม
(Recommended)ต่อท้ายป้ายกำกับ; - ไม่ต้องกำหนดตัวเลือก
Otherเนื่องจากระบบจะเพิ่มช่องข้อความอิสระโดยอัตโนมัติ; - ดำเนินการต่อตามวิจารณญาณที่ดีที่สุดหลังจาก
no_answer
เอเจนต์ไม่ควรใช้ ask_user เพื่อถามว่าสามารถดำเนินการต่อได้หรือไม่ หรือเพื่อยืนยัน
แผนของตนเอง