เอเจนต์ Claude AI ที่สามารถกรอกข้อมูลในทุกช่องข้อความบนเว็บฟอร์มได้ กลับต้องหยุดชะงักลงในขั้นตอนสุดท้ายเมื่อพยายามแนบรูปภาพสามรูป ซึ่งเผยให้เห็นข้อจำกัดที่ไม่ได้มีการระบุไว้ในเอกสาร (undocumented limitation) ของการจัดการการอัปโหลดไฟล์ใน Desktop App ความล้มเหลวนี้มีความสำคัญเพราะมันเปลี่ยนกระบวนการอัตโนมัติแบบ end-to-end ที่ดูเหมือนจะสมบูรณ์ ให้กลายเป็นการส่งต่องานด้วยมือ (manual hand-off) ซึ่งบีบให้เหล่านักพัฒนาต้องกลับมาทบทวนวิธีการสร้างเวิร์กโฟลว์ที่ขับเคลื่อนด้วย AI ใหม่

ทำไมปัญหานี้ถึงปรากฏขึ้นในตอนนี้

Claude agent ทำงานในสามสภาพแวดล้อม ได้แก่ command-line interface (CLI), Visual Studio Code extension หรือ Desktop App แบบ standalone ใน CLI เอเจนต์จะอ่านไฟล์จากไดเรกทอรีที่เพิ่มเข้าไปใน session และอัปโหลดได้โดยไม่มีปัญหา แต่ Desktop App ไม่ได้มีพฤติกรรมแบบเดียวกัน แม้ว่าเอเจนต์จะเขียนไฟล์ลงในโฟลเดอร์ชั่วคราวของตัวเอง แอปก็ยังปฏิเสธการอัปโหลด โดยอ้างถึงนิยามภายในของไฟล์ "shared" ซึ่งไม่เคยปรากฏในเอกสารสาธารณะเลย

ความแตกต่างนี้ปรากฏขึ้นเมื่อผู้ใช้สร้างระบบอัตโนมัติที่กรอกฟอร์ม คลิก "save draft" แล้วพยายามแนบรูปภาพสามรูป ช่องข้อความต่างๆ ถูกกรอกข้อมูลได้อย่างไร้ที่ติ แต่ขั้นตอนการอัปโหลดกลับส่งข้อผิดพลาดกลับมาทุกครั้ง

สิ่งที่นักพัฒนาได้พยายามทำแล้ว

  • เพิ่มไฟล์ลงในโฟลเดอร์ session ที่แอปสร้างขึ้น
  • ใช้เครื่องมือ directory-connect ที่ช่วยให้เอเจนต์มองเห็นโฟลเดอร์ของเครื่อง host
  • แนบรูปภาพโดยตรงในหน้าต่างแชท
  • สร้างโฟลเดอร์อัปโหลดด้วยตนเองและกำหนดให้ฟอร์มชี้ไปที่โฟลเดอร์นั้น

ทุกวิธีการข้างต้นให้ผลลัพธ์เป็นข้อผิดพลาดการปฏิเสธแบบเดียวกัน หน้าต่างเบราว์เซอร์ที่แสดงหน้าต่างเลือกไฟล์ (file-picker dialog) ทำงานในโหมดอ่านอย่างเดียว (read-only mode) สำหรับการทำ desktop automation เอเจนต์สามารถมองเห็นหน้าต่างโต้ตอบได้ แต่ไม่สามารถคลิกภายในนั้นหรือพิมพ์เส้นทาง (path) ได้ ดังนั้นเทคนิค UI-automation จึงล้มเหลว

"ทางลัด" ที่เปราะบาง

วิธีเดียวที่ประสบความสำเร็จคือการใช้ Windows clipboard:

  1. สคริปต์ PowerShell คัดลอกไฟล์เป้าหมายไปยัง clipboard
  2. เอเจนต์ส่งคำสั่งกดปุ่ม Ctrl + V
  3. เบราว์เซอร์รับเหตุการณ์การวาง (paste event) และอัปโหลดไฟล์

วิธีแก้ปัญหาแบบ hack นี้ใช้งานได้จริง แต่จะล้างข้อมูลใน clipboard ของผู้ใช้ จำกัดเฉพาะบน Windows และอาจใช้งานไม่ได้หากมีการอัปเดต Desktop App มันจึงไม่ใช่แนวทางที่ยั่งยืนสำหรับ production pipelines

ความหมายที่แท้จริงของข้อจำกัดนี้

ประเด็นหลักไม่ใช่บั๊กของซอฟต์แวร์ แต่มันคือส่วนที่ไม่ได้ระบุไว้ในเอกสาร (undocumented surface) ซึ่งจัดการสิทธิ์การเข้าถึงไฟล์ (file permissions) ในฐานะคุณสมบัติของแอปพลิเคชันหลัก (host application) แทนที่จะเป็นเพียง flag ของระบบไฟล์ (file-system flag) ใน CLI เอเจนต์จะได้รับสิทธิ์การอ่าน (read access) ต่อเนื่องมาจากโปรเซส ดังนั้นไฟล์ใดๆ ที่ session มองเห็นจึงสามารถอัปโหลดได้ แต่ใน Desktop App ตัว runtime จะแยกส่วนการมองเห็นระบบไฟล์ของเอเจนต์ (isolates the agent’s file-system view) โดยอนุญาตให้เฉพาะไฟล์ที่ตรงตามเกณฑ์ "shared" ที่ถูกซ่อนไว้เท่านั้น

เนื่องจากข้อจำกัดนี้ถูกฝังอยู่ในสถาปัตยกรรมของ Desktop App วิธีการเลี่ยงปัญหาที่พึ่งพาการควบคุม UI หรือโฟลเดอร์ชั่วคราวจึงไม่ประสบความสำเร็จ

แนวทางที่เชื่อถือได้ในอนาคต

หากเวิร์กโฟลว์จำเป็นต้องมีการอัปโหลดไฟล์ นักพัฒนามีสามทางเลือกที่เชื่อถือได้:

  • รันเอเจนต์จาก CLI สภาพแวดล้อมนี้จะเคารพสิทธิ์การเข้าถึงระบบไฟล์ของ session และอัปโหลดได้โดยไม่ต้องมีขั้นตอนเพิ่มเติม
  • ใช้ VS Code extension ส่วนขยายนี้จะเลียนแบบโมเดลสิทธิ์การเข้าถึงของ CLI ช่วยให้เอเจนต์สามารถอ่านและอัปโหลดไฟล์ที่ตัว editor มองเห็นได้
  • ปล่อยขั้นตอนการอัปโหลดให้เป็นหน้าที่ของมนุษย์ การดำเนินการด้วยมือเพียงสองนาทีนั้นดีกว่าการเสียเวลาหลายชั่วโมงเพื่อสร้างวิธีแก้ปัญหาที่เปราะบาง

การเลือกสองทางเลือกแรกคือการรันระบบอัตโนมัติภายนอก Desktop App

บทสรุป

ความสามารถในการอัปโหลดไฟล์ใน Claude AI agent ไม่ได้เหมือนกันในทุก runtime แต่มันขึ้นอยู่กับว่าเอเจนต์ถูกเรียกใช้งานอย่างไร เพื่อการทำระบบอัตโนมัติที่เชื่อถือได้ ให้ถือว่า CLI และ VS Code extension เป็นสภาพแวดล้อมเดียวที่เคารพสิทธิ์การเข้าถึงระบบไฟล์อย่างสม่ำเสมอ เมื่อใช้ Desktop App ควรวางแผนสำหรับการส่งต่องานด้วยมือหรือยอมรับการใช้เทคนิค clipboard hack ที่เปราะบาง การละเลยความแตกต่างนี้อาจเปลี่ยนสคริปต์แบบ end-to-end ที่ราบรื่น ให้กลายเป็นการเสียเวลาแก้บั๊ก (debugging) ที่มีราคาแพง

ที่มา: https://dev.to/mxhlix/my-agent-filled-in-every-field-on-the-form-it-could-not-attach-the-three-images-23kh