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 ที่กำลังรอคำตอบ

สคีมาของเครื่องมือ

ts
{  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 ผู้ใช้สามารถเลือกได้มากกว่าหนึ่งตัวเลือก ค่าคำตอบของทุกคำถามจะถูกส่งคืนเป็นอาร์เรย์

ตัวอย่างผลลัพธ์ที่ตอบแล้ว:

json
{  "status": "answered",  "answers": {    "answers": {      "deploy_target": ["Staging (Recommended)"]    }  }}

แนวทางสำหรับโมเดล

สัญญาที่แสดงต่อโมเดลกำหนดให้เอเจนต์:

  • ถามเฉพาะเมื่อไม่สามารถดำเนินการต่อได้หากขาดการตัดสินใจที่เป็นหน้าที่ของผู้ใช้อย่างแท้จริง;
  • ควรถามเพียงหนึ่งคำถามและไม่เกินสามคำถาม;
  • วางตัวเลือกที่แนะนำไว้ก่อนและเติม (Recommended) ต่อท้ายป้ายกำกับ;
  • ไม่ต้องกำหนดตัวเลือก Other เนื่องจากระบบจะเพิ่มช่องข้อความอิสระโดยอัตโนมัติ;
  • ดำเนินการต่อตามวิจารณญาณที่ดีที่สุดหลังจาก no_answer

เอเจนต์ไม่ควรใช้ ask_user เพื่อถามว่าสามารถดำเนินการต่อได้หรือไม่ หรือเพื่อยืนยัน แผนของตนเอง

Was this useful?
On this page

On this page