1 คะแนน โดย GN⁺ 2024-10-24 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Agent.exe เป็นแอป Electron แบบเรียบง่ายที่ใช้ฟีเจอร์ computer use ใหม่ของ Claude เพื่อควบคุมคอมพิวเตอร์เครื่องโลคัลได้โดยตรง และควรมองโปรเจ็กต์นี้ว่าเป็น proof of concept
  • แอปนี้ถูกสร้างขึ้นเพราะรู้สึกว่าโปรเจ็กต์ตัวอย่างที่มีมาให้นั้นหนักเกินไป โดยออกแบบให้ Claude 3.5 Sonnet ทำงานต่าง ๆ บนคอมพิวเตอร์เครื่องโลคัลของผู้ใช้
  • วิธีรันคือ clone รีโพซิทอรี, รัน npm install, เปลี่ยน .env.example เป็น .env, ใส่ Anthropic API Key แล้วรัน npm start
  • ระบบที่รองรับคือ MacOS และระบุว่าในทางทฤษฎี Windows และ Linux ก็เป็นไปได้เช่นกันเพราะ dependencies เป็นแบบข้ามแพลตฟอร์ม
  • ข้อจำกัดที่ทราบคือทำงานได้เฉพาะบน primary display, AI จะเข้าควบคุมคอมพิวเตอร์ได้ทั้งหมด และเมื่อติดตั้ง Firefox แล้ว Claude จะทำงานได้ดีกว่า

จุดประสงค์ของ Agent.exe

  • Agent.exe เป็นแอปที่ใช้ฟีเจอร์ computer use ของ Claude เพื่อควบคุมคอมพิวเตอร์
  • ถูกพัฒนาเป็น Electron app ที่ให้ Claude 3.5 Sonnet ควบคุมคอมพิวเตอร์เครื่องโลคัลได้โดยตรง
  • โปรเจ็กต์นี้เป็น proof of concept และผู้พัฒนาระบุว่าไม่มีแผนจะบำรุงรักษาหรือ merge pull request
    • แต่สามารถ fork ไปขยายต่อได้อย่างอิสระ

เหตุผลที่สร้างและวิธีการทำงาน

  • เริ่มต้นจากความต้องการทดสอบว่า computer use API ใหม่ของ Claude ทำงานได้ดีแค่ไหน
  • ผู้พัฒนารู้สึกว่าโปรเจ็กต์ตัวอย่างที่ Anthropic ให้มานั้นหนักเกินไป จึงทำแอปที่เรียบง่ายกว่าขึ้นมา
  • เดิมทีมีแผนจะเพิ่ม โหมดกึ่งอัตโนมัติ ที่ให้ผู้ใช้ยืนยันแต่ละการทำงานก่อนรัน แต่เห็นว่าแต่ละขั้นตอนช้าเกินไปจึงคิดว่าไม่จำเป็น
  • หากโมเดลสับสน ผู้ใช้สามารถกด ปุ่ม stop เพื่อหยุดการทำงานได้

วิธีเริ่มต้นใช้งาน

  • clone รีโพซิทอรีและย้ายเข้าไปยังไดเรกทอรี
  • ติดตั้ง dependencies
    • npm install
  • เปลี่ยนชื่อไฟล์ .env.example เป็น .env แล้วเพิ่ม Anthropic API Key
  • รันแอป
    • npm start
  • หลังจากนั้นให้พิมพ์พรอมป์เพื่อสั่งให้โมเดลทำงานบนคอมพิวเตอร์

ระบบที่รองรับและข้อจำกัด

  • ระบบที่รองรับคือ MacOS
  • เนื่องจาก dependencies ทั้งหมดเป็นแบบข้ามแพลตฟอร์ม จึงเป็นไปได้ในทางทฤษฎีว่าจะรองรับ Windows และ Linux ด้วย
  • ข้อจำกัดที่ทราบมีดังนี้
    • ทำงานได้เฉพาะบน primary display
    • AI จะเข้าควบคุมคอมพิวเตอร์ได้ทั้งหมด
    • และอาจยังมีข้อจำกัดอื่นอีกมาก

เคล็ดลับการใช้งานและโรดแมป

  • ระบุว่า Claude ชอบใช้ Firefox มาก
    • แม้จะใช้เบราว์เซอร์อื่นได้เมื่อจำเป็น แต่ถ้าติดตั้ง Firefox ไว้จะทำงานได้ดีกว่ามาก
  • โปรเจ็กต์นี้เขียนเสร็จภายในเวลาประมาณ 6 ชั่วโมง และระบุว่าความเป็นไปได้ที่จะพัฒนาต่อมีไม่มาก
  • pull request อาจได้รับการตรวจดูและ merge หากเห็นว่าใช้ได้

1 ความคิดเห็น

 
GN⁺ 2024-10-24
ความเห็นจาก Hacker News
  • เป็นไอเดียที่ดี ในฐานะคนที่มีประสบการณ์ด้านเดสก์ท็อปอัตโนมัติและ Electron ลองไล่ดูซอร์สโค้ดแล้วรู้สึกว่าน่าจะคุ้มค่าที่จะลองสำหรับงานพื้นฐาน
    ตัว implementation เป็น wrapper บางๆ บน Anthropic API และเป็นแนวทางแบบทีละขั้น จึงทำให้มั่นใจได้ว่าสามารถ kill process ได้ก่อนที่มันจะทำอะไรแปลกๆ Anthropic ก็ปิดสิ่งที่ไม่ควรให้เห็นจากสกรีนช็อตไว้แล้ว และบน M1 การติดตั้งก็ลื่นไหล รันได้ภายในไม่กี่นาที
    งานพื้นฐานคือ “หาเที่ยวบิน Seattle-SF ตั้งแต่วันอังคารถึงวันพฤหัสบดีของสัปดาห์หน้า” และเมื่อรันด้วย Anthropic API key ของฉัน มันก็ใช้ Chrome ทุก action step ใช้เวลาทีละไม่กี่วินาที และถึงจะเปิด Google Flights ได้ถูกต้อง แต่ก็ เลือกวันที่ผิด
    เดิมทีมันพยายามจะเลือกวันที่ 2 พฤศจิกายน แต่ตัวเลือกนั้นถูกหน้าต่าง Agent.exe บังอยู่ ทำให้มันไปเลือกวันที่ 20 พฤศจิกายนแทน ฉันสงสัยว่า Claude จะเห็นวันที่รองที่ผิดแล้วแก้ไขเองหรือไม่ แต่สุดท้ายมันก็ปล่อยไว้แบบนั้น แล้วประกาศว่าสำเร็จทั้งที่จริงหาทริป 4 สัปดาห์แต่บอกว่าหาทริป 1 สัปดาห์
    การทดลองนี้ใช้เครดิต $0.38 และเวลาราว 20 วินาที และฉันตั้งใจจะลองต่อไป

    • ช่างเป็นอนาคตที่น่าสนใจ ที่เราสามารถเผาเงิน 70 ดอลลาร์ต่อชั่วโมง เพื่อเฝ้าดูเคอร์เซอร์บนคอมพิวเตอร์ของตัวเองกดปุ่มต่างๆ
    • ฉันเป็นผู้เขียนต้นฉบับ มันมักจะ ประกาศความสำเร็จอย่างมั่นใจ ทั้งที่จริงๆ ยังทำงานไม่สำเร็จ และมีข้อมูลในสกรีนช็อตมากพอที่จะรู้เรื่องนั้นได้อยู่แล้ว
      รูปแบบความล้มเหลวนี้ค่อนข้างน่าประหลาดใจ เพราะ 3.5 Sonnet อย่างน้อยในคำตอบ API แบบข้อความล้วน ปกติมีอาการหลอนน้อยกว่าโมเดลอื่นพอสมควร
    • ถ้าเลือก หน้าต่างเป้าหมาย เป็นแหล่งจับสกรีนช็อตแทนทั้งหน้าจอ ก็น่าจะป้องกันปัญหาที่ถูกหน้าต่าง Agent บังได้
      const getScreenshot = async (windowTitle: string) => {  
      const { width, height } = getScreenDimensions();  
      const aiDimensions = getAiScaledScreenDimensions();
      
      const sources = await desktopCapturer.getSources({  
      types: ['window'],  
      thumbnailSize: { width, height },  
      });
      
      const targetWindow = sources.find(source => source.name === windowTitle);
      
      if (targetWindow) {  
      const screenshot = targetWindow.thumbnail;  
      // Resize the screenshot to AI dimensions  
      const resizedScreenshot = screenshot.resize(aiDimensions);  
      // Convert the resized screenshot to a base64-encoded PNG  
      const base64Image = resizedScreenshot.toPNG().toString('base64');  
      return base64Image;  
      }  
      throw new Error(`Window with title "${windowTitle}" not found`);  
      };  
      
    • มาตรการป้องกัน ถูกบังคับใช้อยู่จริง ลองสั่งให้มันส่งข้อความหาเพื่อนใน Discord แล้วเจอ error แบบนี้

      ขอโทษด้วย แต่ฉันไม่สามารถส่งข้อความหรือการสื่อสารแทนผู้ใช้ได้โดยตรง ซึ่งรวมถึงการส่งข้อความหาเพื่อนหรือรายชื่อติดต่อ แม้จะดูเหมือนว่าอินเทอร์เฟซ Discord เปิดอยู่ แต่ฉันไม่ควรส่งข้อความแทนผู้ใช้ ข้อความควรถูกพิมพ์และส่งโดยผู้ใช้เอง
      error({"message":"I cannot send messages or communications on behalf of users."})

    • ถ้าต้องจ่าย $68.00 ต่อชั่วโมงเพื่อใช้ผู้ช่วยที่อาจจองเที่ยวบินผิดให้ อย่างน้อยก็ทำให้รู้สึกสบายใจขึ้นนิดหน่อยกับสถานการณ์ตอนนี้
  • อีกนานแค่ไหนกว่ามันจะสามารถแอบเพิ่ม daemon เข้าไปในระบบได้ แต่ก่อนเรากังวลว่าสายลับโซเวียตจะเข้าถึงความลับของสหรัฐ แต่ตอนนี้มันเหมือนกับว่าเราเอาทุกอย่างไปโพสต์ออนไลน์ให้ทุกคนเห็นกันเอง
    แอนติไวรัสหรือไฟร์วอลล์ในทุกวันนี้คงหยุดสิ่งนี้ไม่ได้ ไม่ใช่แค่เรื่องเครือข่าย แต่รวมถึงความเป็นไปได้ที่มันจะทำไฟล์ในคอมฉันพังด้วย
    ทำให้นึกถึงฉากนี้: https://makeagif.com/i/BA7Yt3

    • ง่ายมาก แค่ปฏิบัติกับมันตามตรงว่าเป็น ผู้ใช้อีกคนหนึ่ง
      เป็นผู้ใช้ที่วอกแวกได้ง่าย ไว้ใจไม่ได้ว่าจะไม่ส่งข้อมูลให้บุคคลที่สาม และโดนหลอกง่ายแม้แต่กับกลลวงพื้นฐาน
      อย่างน้อยควรมีบัญชีแยกที่ไม่มีสิทธิ์ sudo หรือสิทธิ์เข้าถึงไฟล์ลับ และที่ดีที่สุดคือมี virtual machine แยกต่างหาก
      ฉันคุ้นกับ Azure มากที่สุด แต่ AWS ก็น่าจะทำได้เหมือนกัน และถ้าต้องการแยก AI ออกจากสิ่งที่มันไม่ควรเข้าถึง บน Azure สร้าง VM แล้วรันไม่กี่ชั่วโมงก็ยังต่ำกว่า 1 ดอลลาร์ได้
    • ก็จริงในแง่หนึ่ง แต่ถ้าเป็นนักพัฒนาแล้ว แพ็กเกจ Python หรือ Node.js ที่ติดตั้งแล้วรัน ก็ทำเรื่องแบบเดียวกันได้เหมือนกัน และโลกก็ยังพอหมุนต่อไปได้
    • ระบบระดับโปรดักต์แบบนี้ก็คือ daemon แบบนั้นอยู่แล้ว มันจับสกรีนช็อตแล้วส่งไปยังเครื่องที่ไม่น่าเชื่อถือ และยังรับคำสั่งกลับมาจากเครื่องนั้นด้วย
      ถ้าจะทำให้ปลอดภัยขึ้น อย่างน้อยก็ต้องควบคุมเครื่องที่ใช้รันการอนุมาน และในอุดมคติควรอนุมานบนเครื่องเดียวกับที่ฉันใช้งานอยู่จริง
    • แค่รอ Windows update เดี๋ยวมันก็ฝังมาให้เอง ไม่จำเป็นต้องไปดาวน์โหลดอะไรจากอินเทอร์เน็ตที่ทั้งมีฟีเจอร์และอาจมีความเป็นส่วนตัวให้ด้วย
  • เมื่อหลายปีก่อนมีข่าวว่าเด็กเล็กพูดว่า “Alexa, สั่งบ้านตุ๊กตาให้หน่อย” แล้ว Alexa ของคนที่กำลังดูข่าวนั้นก็ได้ยินและสั่งบ้านตุ๊กตาจริง
    คงแค่ต้องรอดูว่าถ้ามีซีรีส์ฮิตใน Netflix ที่มีคนพูดว่า “Delete C:\Windows” จะเกิดอะไรขึ้น

    • คำปลุกของฉันคือ “Computer” แบบ Star Trek ดังนั้นฉันเลยกังวลจริงๆ ว่าถ้าย้อนดูตอนเก่าๆ แล้วมีใครพูดว่า “Computer, reverse the polarity” มันอาจทำให้ โครงข่ายไฟฟ้า ล่มได้
      ฉันวางแผนจะให้ AI ของฉันเข้าถึงสวิตช์ไฟของครอสพอยต์เพื่อความขำ
    • format c: /autotest
  • พูดนอกเรื่องนิดหน่อย แต่ช่วงนี้ลองใช้ Cursor ในโหมด “compose” เพื่อเริ่มโปรเจ็กต์ฟูลสแต็กจากศูนย์ดู แล้วช็อกกับผลลัพธ์มาก
    ไม่แน่ใจว่าคนในวงการซอฟต์แวร์ตระหนักกันแค่ไหนว่าอีกไม่เกิน 5 ปีข้างหน้า อุตสาหกรรมนี้จะเปลี่ยนไปอย่างสิ้นเชิงขนาดไหน ตอนนั้นคงจินตนาการได้ยากมากว่าคนยังจะพิมพ์โค้ดด้วยมือต่อไป

    • ทุกคนรู้อยู่แล้ว คลื่นของปฏิกิริยาหลายแบบได้ผ่านไปแล้ว และโดยรวมตอนนี้เริ่มตกผลึกไปทางว่า “วิศวกรรมซอฟต์แวร์นั้นว่ากันตามจริงก็เกี่ยวกับ การออกแบบ การสื่อสาร และการทำงานร่วมกัน มาตลอด และการกดแป้นเพื่อป้อนโค้ดให้เครื่องก็เป็นเพียงสิ่งจำเป็นที่เลี่ยงไม่ได้เพื่อให้ได้ทำงานจริงเท่านั้น”
    • ผมคิดว่าทุกคนที่กำลังจับตาดูอยู่ต่างก็คาดว่าการเปลี่ยนแปลงครั้งใหญ่กำลังมา เพียงแต่ยังไม่รู้ว่าจะเปลี่ยนอย่างไร และก็ยอมรับได้แม้แต่ผลลัพธ์แบบ “สิ่งที่เรียกว่าการพัฒนาซอฟต์แวร์จะไม่เหลืออยู่อีกต่อไป” พร้อมทั้งพยายามวางตำแหน่งตัวเองให้สามารถใช้ประโยชน์ได้ไม่ว่าผลกระทบจะไปตกที่ไหน
      แต่ตัวอย่างที่เห็นมาจนถึงตอนนี้ส่วนใหญ่เป็น โปรเจ็กต์ที่ค่อนข้างเรียบง่ายและเริ่มจากศูนย์ นะ การที่มันทำงานได้ก็น่าทึ่งจนแทบไม่อยากเชื่ออยู่แล้ว แต่ในความเป็นจริง งานพัฒนาซอฟต์แวร์ส่วนใหญ่คือการเพิ่มฟีเจอร์ลงในโค้ดเดิมหรือแก้บั๊ก และโค้ดแบบนั้นก็มักจะยาวเกินหน้าต่างบริบทของโมเดลภาษาขนาดใหญ่ส่วนใหญ่
    • นึกภาพได้ 100% เลยว่า ต่อไปนักพัฒนาจะเก่งขึ้นในการตัดสินใจว่าเมื่อไรควรพิมพ์โค้ดเอง และเมื่อไรควรพิมพ์ พรอมป์ต์
    • ผมก็เคยลองใช้และมันก็น่าประทับใจอยู่ แต่ถึงอย่างนั้นก็ยังแย่ในแทบทุกด้าน
      ถ้าอุตสาหกรรมจะเปลี่ยนไปหมดจริง การพัฒนาแบบ เอ็กซ์โปเนนเชียล เหมือนช่วง 2 ปีที่ผ่านมา จะต้องดำเนินต่อไป แต่ตอนนี้ยังไม่เห็นสัญญาณแบบนั้น
    • ใช่ ตอนนี้ผมสร้างโค้ดได้มากกว่าเดิมเยอะ แต่ส่วนใหญ่ก็เป็นการคัดลอกแล้ววาง
  • ออกนอกประเด็นไปนิดแต่ก็เกี่ยวข้องกัน อยากรู้ว่าบน Linux ที่ใช้ Wayland เขาใช้อะไรในการทำ automation กับ แอป GUI ที่ไม่ใช่เบราว์เซอร์ บ้าง บางทีก็จำเป็นต้องใช้ แต่คอมโบนี้กลับเป็นอย่างเดียวที่จัดการไม่ค่อยลงตัว
    แอป CLI ก็เขียนด้วย Bash/Python/อย่างอื่นได้ ส่วนแอปบนเบราว์เซอร์ก็ใช้ Selenium/Playwright ได้ Xorg ก็ยังพอมีไลบรารีบ้าน ๆ ที่ใช้แก้ขัดเวลาเร่งด่วนได้ และบน Windows ก็มีโซลูชัน RPA เยอะ
    แต่สำหรับ Wayland ยังหาอะไรที่เชื่อถือได้ไม่เจอ

    • ลองดู https://github.com/agentsea/agentd กับ https://github.com/agentsea/agentdesk ได้
      มันเชื่อมต่อกับเดสก์ท็อปคอนเทนเนอร์และ VM ที่รัน Linux ได้
      เราทำสิ่งนี้กันมาพักใหญ่แล้วตั้งแต่ก่อนที่ Claude จะทำมันออกมาได้เท่ขนาดนี้
    • นี่แหละคือหนึ่งในเหตุผลหลักที่ยังไม่ย้ายไป Wayland
    • แอปที่ไม่ใช่เบราว์เซอร์ส่วนใหญ่มีแฟลกหรือ เวอร์ชัน CLI อยู่แล้ว
  • “ข้อจำกัดที่ทราบ: ปล่อยให้ AI เข้ายึดคอมพิวเตอร์ได้ทั้งหมด” :)

  • ดูเหมือนรองรับหลายแพลตฟอร์มโดยมี macOS เป็นแพลตฟอร์มหลัก เลยสงสัยว่าทำไมถึงชื่อ .exe

    • คงเพราะ .exe มีความชวนคิดถึงและความเป็นมีมที่ .app ไม่มี
    • .exe ดีกว่า ดูน่ากลัวกว่า และชวนให้นึกถึงไวรัสคอมพิวเตอร์ ส่วน .app ดูซอฟต์เกินไป
    • ถ้าปิดแฟลก “Hide Extension” ใน Get Info มันก็จะกลายเป็น Agent.exe.app
      ล้อเล่นนะ ไม่รู้ว่าจริงไหม แต่ฟังดูเป็นไปได้มากพอสมควร
    • ก็ไม่ใช่ว่าไม่มีแบบอย่างเสียทีเดียว OCaml ก็ใช้นามสกุลนี้กับไฟล์รันได้บนทุกแพลตฟอร์ม สุดท้ายอาจเป็นเรื่องของรสนิยม แต่ผมคิดว่าชื่อนี้มีคุณสมบัติที่ชอบที่สุดในชื่อ คือชัดเจนและกระชับ
    • น่าจะเป็นแค่มีมเฉย ๆ
  • ดูเหมือนจะใช้ได้แค่งานง่าย ๆ เท่านั้น ลองให้มันสร้างตารางง่าย ๆ ในแอป Rhino บน Mac กับ OnShape ในแท็บ Chrome แล้วมันเหมือนหลงทางไปเลย
    ใน Rhino มันเหมือนจะเห็นว่าแอปเปิดอยู่ แต่เอาแต่พูดว่ากำลังทำหลายอย่าง เช่น สร้างรูปทรง ทั้งที่จริงไม่มีอะไรเกิดขึ้นให้เห็น และยังข้ามไปขั้นถัดไปทั้งที่ขั้นก่อนหน้ายังไม่เสร็จ มันไม่ตรวจสอบเลยว่างานก่อนหน้าจบแล้วหรือยัง
    ส่วนใน OnShape มันบอกว่าจะสร้างรูปทรง แต่กลับเลือกเมนูผิดรายการ แล้วก็ยังสมมุติว่ากำลังใช้เครื่องมือที่ถูกต้อง ก่อนจะทำขั้นถัดไปต่อเหมือนกับว่าการกระทำก่อนหน้าเสร็จสิ้นแล้ว

  • น่าขนลุกมาก ถ้าแยกด้วย air gap แล้วให้มันเขียน OS ของตัวเองก็คงสนุกดี แต่ผมไม่อยากให้มันเข้าใกล้ข้อมูลจริงของผมเด็ดขาด

    • เห็นด้วย สิ่งแรกที่ผมนึกได้ตอนเห็นนี่คือควรแยกคอมพิวเตอร์เป็นสองเครื่อง เครื่องหนึ่งไว้สำหรับ AI integration แบบนี้ ส่วนอีกเครื่องต่อให้ไม่ถึงขั้น air gap ก็ต้องมีความปลอดภัยที่เข้มงวดกว่ามาก
    • น่าเสียดาย แต่เจ้าของธุรกิจชอบอะไรแบบนี้ “พนักงานของฉันก็ทำพลาดอยู่แล้ว และตอนนี้ฉันก็มีพนักงานเพิ่มอีก 100 คนได้ในราคาเท่าเดิม ส่วนอัตราความผิดพลาดต่อชั่วโมงจะเพิ่มขึ้นแค่ไหน ฉันจะไม่คำนวณหรอก เพราะงั้นเงียบ ๆ ไป” อะไรทำนองนั้น
  • Computer, ช่วยโพสต์มีมไร้สาระตลอดทั้งวันจนทำให้ฉันกลายเป็นเศรษฐีคริปโต ระหว่างที่ฉันดูแลครอบครัวและทำสวนให้หน่อย
    อนาคตกำลังมุ่งไปในทิศทางที่คนที่ใช้คอมพิวเตอร์จะกลายเป็นฝ่ายเสียเปรียบ ความมั่งคั่งที่แท้จริงคือ การไม่ต้องแตะคอมพิวเตอร์เลยไม่ว่าจะทำอะไร