1 คะแนน โดย GN⁺ 2025-10-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • agent-shell เป็น เชลล์เนทีฟที่ทำงานบน comint-mode ซึ่งช่วยให้ควบคุม AI agent ได้โดยตรงจากใน Emacs
  • ใช้ ACP (Agent Client Protocol) ทำให้มี ความยืดหยุ่น ในการสื่อสารกับ agent ได้หลากหลายโดยไม่ผูกติดกับ agent ใด agent หนึ่ง
  • มีฟีเจอร์ วิเคราะห์ทราฟฟิกแบบเรียลไทม์ และ รีเพลย์ agent จำลอง (fake/fak) ช่วยเพิ่มประสิทธิภาพในการทดสอบและพัฒนา
  • แม้จะยัง รองรับฟีเจอร์ของโปรโตคอลได้ไม่ครบทั้งหมด แต่ก็แสดงให้เห็นถึงการพัฒนาที่ใช้งานได้จริงอย่างรวดเร็ว
  • ทั้ง agent-shell และ acp.el เปิดเผยสู่สาธารณะบน GitHub แล้ว และยินดีรับฟีดแบ็กจากผู้ใช้เกี่ยวกับฟีเจอร์เพิ่มเติมหรือบั๊ก

เกริ่นนำ

  • เมื่อไม่นานมานี้ มีการเชื่อมต่อกับ Agent Client Protocol (ACP) ที่พัฒนาร่วมกันโดย Zed และ Google ได้ผ่าน acp.el ซึ่งเขียนด้วย Emacs Lisp
  • ก่อนหน้านี้มีเพียงการเชื่อมต่อพื้นฐานกับ LLM อย่าง chatgpt-shell เท่านั้น ขณะที่การใช้งาน AI agent อย่างจริงจังยังค่อนข้างช้า
  • เมื่อมีการนำ ACP เข้ามาใช้ ความต้องการเชื่อมต่อ agent ภายในสภาพแวดล้อม Emacs ก็เพิ่มขึ้น จึงเริ่มพัฒนา agent-shell แบบเนทีฟสำหรับ Emacs

ภาพรวมของ agent-shell

  • agent-shell สร้างอยู่บน comint-mode และทำงานภายใน ระบบบัฟเฟอร์ อันคุ้นเคยของ Emacs
  • มอบสภาพแวดล้อมที่ใช้งานได้เช่นเดียวกับเชลล์ปกติของ Emacs โดยไม่ต้องสลับโหมดอักขระหรือโหมดบรรทัดแยกต่างหาก

Agent-agnostic (ไม่ผูกติดกับ agent)

  • ด้วย ACP จึงสามารถสร้าง ประสบการณ์ใช้งานที่สม่ำเสมอ สำหรับการสื่อสารกับ agent หลายประเภทผ่านโปรโตคอลเดียว
  • ตัวอย่างการตั้งค่าแสดงให้เห็นว่าสามารถนำ agent หลากหลายอย่าง เช่น Gemini CLI และ Claude Code มาใช้ได้ด้วย การแก้โค้ดเพียงเล็กน้อย
    • ตัวอย่างโค้ด: อธิบายวิธีตั้งค่าการยืนยันตัวตน คำสั่ง และตัวแปรสภาพแวดล้อมสำหรับ agent แต่ละตัว
  • agent อื่น ๆ ก็สามารถเชื่อมต่อได้ง่ายในลักษณะเดียวกัน

ฟีเจอร์ดูทราฟฟิก

  • เนื่องจากยังไม่คุ้นเคยกับการใช้งานโปรโตคอล ACP จึงมีความจำเป็นต้อง วิเคราะห์ทราฟฟิกการสื่อสารแบบเรียลไทม์
  • ใน agent-shell มี บัฟเฟอร์สำหรับดูทราฟฟิก แยกไว้ต่างหาก ทำให้สามารถดูทราฟฟิกแบบ Json ได้ในรูปแบบภาพผ่านคำสั่ง M-x agent-shell-view-traffic

Fake agents (agent จำลองและรีเพลย์)

  • เนื่องจากการพัฒนาด้วย agent แบบเสียเงินจริงมีปัญหาเรื่องต้นทุนและความไม่มีประสิทธิภาพด้านเวลา จึงได้เพิ่มฟีเจอร์ รีเพลย์ agent จำลอง เข้ามา
  • สามารถนำข้อมูลการสื่อสารที่บันทึกไว้ผ่านบัฟเฟอร์ทราฟฟิกมาเล่นซ้ำ (replay) เพื่อทดสอบได้รวดเร็วหลายครั้ง
  • แม้จะมีข้อจำกัดหรือขอบเขตบางประการ แต่ช่วยเพิ่มประสิทธิภาพให้กระบวนการดีบักและพัฒนาได้อย่างมาก

แผนต่อไปและสถานะปัจจุบัน

  • ขณะนี้ยังมีการนำ Schema ของ Agent Client Protocol มาใช้เพียงบางส่วน จึงยังมี ส่วนที่ยังไม่สมบูรณ์เหลืออยู่
  • กำลังทดลอง UX ใหม่ ๆ เช่น บัฟเฟอร์ quick(diff) ที่ใช้ปุ่ม n/p และ permission dialog
  • มีแผนจะทำความเข้าใจฟีเจอร์ทั้งหมดของโปรโตคอลและเพิ่มการรองรับต่อไป

การเปิดเผยบน GitHub และแนวทางการใช้งาน

  • ทั้ง agent-shell และ acp.el เปิดเผยอยู่บน GitHub
    • agent-shell: แพ็กเกจสำหรับผู้ใช้ agent
    • acp.el: ไลบรารีสำหรับนักพัฒนาที่ต้องการสร้างแพ็กเกจเชื่อมต่อเกี่ยวกับ agent
  • ทั้งสองโปรเจกต์ยังอยู่ในระยะเริ่มต้นมาก (beta) และแนะนำให้ส่งรายงานบั๊กหรือคำขอฟีเจอร์เข้ามา
  • การใช้บริการคลาวด์ LLM มีค่าใช้จ่ายเพิ่มเติม และการพัฒนาโอเพนซอร์สเองก็ต้องใช้ทั้งต้นทุนและความพยายาม
  • หากเห็นว่าโปรเจกต์มีประโยชน์ ก็ขอเชิญร่วมสนับสนุน (donate)

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

 
GN⁺ 2025-10-14
ความคิดเห็นบน Hacker News
  • Xenodium กำลังทำสิ่งเจ๋ง ๆ มากมายใน emacs ถ้าคุณสนใจ emacs แนะนำให้ลองดู บล็อกของ Xenodium ให้ได้ แอป iOS ตัวแรกที่ฉันซื้อเพราะผู้ใช้ emacs คนอื่นแนะนำคือ Journelly ซึ่งเป็นพื้นที่พกพาสำหรับเก็บลิงก์หรือโน้ตได้สะดวกและส่งออกเป็นไฟล์ org ได้ (และบอกว่าในอนาคตจะรองรับ markdown ด้วย) ฉันไม่มีส่วนเกี่ยวข้องใด ๆ กับ Xenodium แต่ปีนี้การได้เจาะลึก emacs และเห็นผลงานที่เขามีส่วนร่วมเป็นเรื่องที่น่ายินดีมาก
    • ขอบคุณมาก ฟีดแบ็กแบบนี้ทำให้ทั้งวันมีความสุขเลย และดีใจที่เป็นแฟนของ Journelly ด้วย ขอบคุณที่อุดหนุน การพัฒนาแอปเฉพาะกลุ่มอย่างต่อเนื่องเป็นความท้าทายใหญ่
  • agent-shell มอบประสบการณ์แบบเนทีฟที่ทำให้ใช้ AI agent หลากหลายตัวที่ขับเคลื่อนด้วย ACP (Agent Client Protocol) ได้โดยตรงใน emacs ตอนนี้เชื่อมกับ Claude Code, Gemini CLI, Codex และ Goose ได้ แต่ในทางเทคนิคแล้ว agent ใดก็ตามที่รองรับ ACP ก็น่าจะใช้ได้ทั้งนั้น เพื่อการพัฒนาอย่างยั่งยืนยังต้องการสปอนเซอร์เพิ่ม สามารถสนับสนุนได้ที่ github sponsors
    • น่าสนใจมาก ฉันเคยใช้ claude-code-ide แต่เพราะมันไม่ใช้ comint-mode เลยรู้สึกขัดใจมาก อยากลอง agent-shell มาก ขอถามหน่อยว่าสเปก ACP ครอบคลุมฟีเจอร์เกี่ยวกับ “ide” ด้วยไหม (เช่น ตำแหน่งเคอร์เซอร์ การเชื่อมกับ diff แบบที่ Claude code ide รองรับ) หรือว่าโฟกัสแค่ความสามารถพื้นฐานจริง ๆ
  • Agent shell คือสิ่งที่ฉันอยากได้มาตลอด ฉันลองแพ็กเกจเชื่อม Claude code มาหลายตัว แต่ต้องไปรันใน terminal emulator ซึ่งยุ่งยาก agent shell ให้ความรู้สึกเป็นธรรมชาติและผสานรวมมากกว่ามาก ฉันตั้งตารอฟีเจอร์ที่อ่านค่าคอนฟิกจากไฟล์เป็นพิเศษ และอยากให้มีภาพหน้าจอให้เห็นว่า agent-shell-sidebar ทำงานจริง ๆ อย่างไร
  • Xenodium ทำงานดีมากให้กับชุมชน emacs ตอนนี้ฉันกำลังใช้ agent-shell อยู่ แต่ไม่ชอบ header ที่เพิ่มเข้ามาด้านบนบัฟเฟอร์เลย ข้อมูลที่ฉันต้องการมีอยู่ครบแล้วด้านล่าง ถ้าปิดบรรทัดล่างแบบเลือกได้ก็น่าจะดีสำหรับสายมินิมอล
    • ถ้าไม่ชอบ header ก็อยากให้ ส่ง feature request มา น่าจะดีถ้าทำให้เปิดหรือปิดกราฟิก header ได้ตามต้องการ
  • ฉันลองใช้ agent-shell มาสองสามครั้งแล้ว และถึงจะเป็นแพ็กเกจที่เพิ่งออกช่วงแรก ๆ ก็ยังให้ประสบการณ์ที่ลื่นไหลมาก
  • เพิ่งเคยได้ยิน ACP เป็นครั้งแรก เลยสงสัยว่ามันต่างจาก AG-UI อย่างไร แน่นอนว่ารู้ว่า ACP เน้นงานเขียนโค้ด ส่วน AG-UI ใช้งานได้กว้างกว่ามาก แต่อยากรู้ความต่างอื่น ๆ นอกจากนั้น
    • ตรรกะเดียวกับ LSP แต่เอามาใช้กับ AI agent การต้องทำ wrapper ใหม่ทุกครั้งสำหรับแต่ละเอดิเตอร์กับ claude, codex, gemini, aider ฯลฯ นั้นทรมานมาก เลยเป็นเหตุผลที่ทีม zed เริ่มผลักดันมาตรฐานโปรโตคอลนี้
  • ยังมีโปรเจกต์ชื่อ ECA ด้วย ECA GitHub โดย ECA เป็นโปรโตคอล coding agent สไตล์ LSP สำหรับหลาย front-end และ editor และรองรับหลายโมเดลโดยตรง ส่วน agent protocol ดูเหมือนจะทำให้ front-end หลากหลายแบบใช้งาน agent หลายตัวอย่าง Gemini CLI, Claude Code ฯลฯ ได้ตามการรองรับโปรโตคอลของแต่ละตัว และก็เป็นไปได้ว่า coding agent หลายตัวอาจหันมารับ ECA protocol ด้วย
    • ใช่ โปรเจกต์ ECA ก็มีแพ็กเกจ emacs เหมือนกัน ฉันกำลังใช้อยู่ช่วงนี้ ตอนดีบักปัญหาใน emacs ฉันลองอ่านเอกสารของ ECA protocol กับ ACP ผ่าน ๆ แล้ว พบว่าสองอย่างนี้คล้ายกันมากและทั้งคู่ก็มีเอกสารดีมาก เป็นการคิดค้นซ้ำโดยไม่ตั้งใจ
    • ฉันลองมาทั้งสองแบบแล้ว และคำอธิบายข้างบนถูกต้อง ต้องไปตั้งค่า MCPs ใหม่ และ ECA ก็มีเซิร์ฟเวอร์ของตัวเองรันอยู่เบื้องหลัง ซึ่งด้วยเหตุผลพวกนั้นทำให้ฉันชอบ agent-shell มากกว่า แต่ละ agent ก็มีทั้งรูปแบบคอนฟิกและตำแหน่งไฟล์คอนฟิกต่างกันไป แถมยังต่างกันระหว่างระดับโปรเจกต์กับระดับผู้ใช้อีก ดังนั้นความเรียบง่ายของ agent-shell จึงเป็นข้อดีมาก ถ้าวันหนึ่งมีมาตรฐานคอนฟิกขึ้นมาด้วยก็คงดีมาก
  • สงสัยว่าทำไมไม่ใช้ Claude Code ตรง ๆ ไปเลย แต่ต้องมาใช้ agent-shell ด้วย
    • เพราะมันให้ประสบการณ์ UI แบบเนทีฟที่เป็นหนึ่งเดียวและผสานเข้ากับ text editor อย่างสมบูรณ์ และไม่ได้ใช้ได้แค่ Claude Code แต่ยังใช้กับ agent อื่นที่รองรับ ACP อย่าง Gemini CLI, Codex, Goose ฯลฯ ได้ในรูปแบบเดียวกัน
    • นี่แหละสไตล์ emacs, emacs คือสิ่งมีชีวิตที่จะกลืนกินโลก
  • กำลังรอให้ใครสักคนทำสิ่งนี้ให้ Neovim ขอให้ฮีโร่นิรนามคนนั้นโผล่มาเร็ว ๆ และขอบคุณทีม Zed กับ Google ที่ช่วยทำสเปกนี้ขึ้นมา