การย้ายระบบ AI Agent โดยไม่มีช่วงเวลาที่ระบบหยุดทำงาน

เมื่อก่อนผมรัน AI agent สองตัว คือ OpenClaw และ Hermes

OpenClaw ทำงานได้ดีสำหรับงานที่ตั้งเวลาไว้ ส่วน Hermes ทำงานได้ดีกว่าในเรื่องการใช้เหตุผลที่ซับซ้อน อย่างไรก็ตาม OpenClaw มีข้อบกพร่องสำคัญอย่างหนึ่ง คือเมื่อมีงานหนักเข้ามา มันจะเกิดการ timeout และทิ้งงานนั้นไป แต่ Hermes ไม่เคยเป็นแบบนั้น มันจะถือครองงานไว้จนกว่าจะทำงานเสร็จ

ผมตัดสินใจย้ายทุกอย่างไปที่ Hermes ผมไม่อยากเปลี่ยนระบบแบบกะทันหัน เพราะการเปลี่ยนแบบทันทีทันใดนั้นมีความเสี่ยง หากระบบใหม่ล้มเหลว ผมจะพลาดการแจ้งเตือนทั้งหมด

ผมจึงเลือกใช้กลยุทธ์การย้ายระบบแบบคู่ขนาน (parallel migration)

ผมยังคงรัน OpenClaw ต่อไป และเพิ่ม Hermes เข้ามาเป็นระบบเงา (shadow system) วิธีนี้ช่วยให้ผมสามารถเปรียบเทียบ agent ทั้งสองตัวไปพร้อมๆ กันได้

ระบบแจ้งเตือนของผมค่อนข้างยุ่งเหยิง โดยใช้ถึงสี่วิธีที่แตกต่างกัน:

  • Shell scripts
  • Node monitors
  • Bash helpers
  • Python scripts

ผมไม่ได้เขียนโค้ดใหม่ทั้งหมด แต่ใช้วิธีการเพิ่มส่วนการส่งข้อมูลใหม่เข้าไปแทน ผมสร้างสคริปต์ขึ้นมาตัวหนึ่งชื่อ hermes_mirror.sh แล้วเพิ่มโค้ดเพียงบรรทัดเดียวเข้าไปในทุกงานที่มีอยู่เดิม เพื่อเรียกใช้สคริปต์นี้ในเบื้องหลัง (background)

วิธีนี้ให้ประโยชน์สามประการ:

  • ความปลอดภัย: หากระบบ mirror ล้มเหลว ข้อความต้นฉบับก็ยังคงถูกส่งออกไปได้
  • ความเรียบง่าย: ใช้สคริปต์เพียงตัวเดียวในการจัดการการ mirror ทั้งหมด
  • การควบคุม: ผมสามารถหยุดการ mirror ทั้งหมดได้เพียงแค่เปลี่ยนตัวแปรเดียว

จากนั้นผมก็ทำพลาดเรื่องการตั้งเวลา

ผมไม่อยากให้ข้อความทั้งสองส่งมาถึงในวินาทีเดียวกัน เพราะคิดว่ามันจะดูวุ่นวายเกินไป ผมจึงตั้งเวลาหน่วงไว้สามนาทีสำหรับข้อความจาก Hermes

ผมลองทดสอบดู ข้อความจาก OpenClaw มาถึง แต่ข้อความจาก Hermes ไม่มา ผมเลยคิดว่าระบบพังเสียแล้ว

จริงๆ แล้วระบบไม่ได้พัง มันแค่กำลังรอตัวจับเวลาสามนาทีอยู่ ในการย้ายระบบ คำว่า "มาช้า" มักจะดูเหมือน "ล้มเหลว"

ผมจึงลดเวลาหน่วงลงเหลือ 20 วินาที ซึ่งเพียงพอที่จะแยกข้อความออกจากกันโดยไม่ทำให้ดูเหมือนว่าข้อความหายไป

ผมยังได้เรียนรู้เกี่ยวกับอันตรายของการแก้ไขโค้ดแบบอัตโนมัติด้วย ผมใช้สคริปต์เพื่อแทรกบรรทัดใหม่เข้าไปในไฟล์ Python ของผม ซึ่งมันใช้งานได้กับเกือบทุกไฟล์ ยกเว้นไฟล์หนึ่งที่มีโครงสร้างการ import ต่างออกไป จนทำให้ระบบล่ม ดังนั้นควรตรวจสอบทุกไฟล์เสมอ แม้แต่ไฟล์ที่คุณคิดว่าปลอดภัยแล้วก็ตาม

การย้ายระบบยังไม่เสร็จสิ้น ผมกำลังทยอยย้ายไปทีละงาน ผมจะเลิกใช้ OpenClaw สำหรับงานนั้นๆ ก็ต่อเมื่อเห็นว่า Hermes ส่งงานนั้นสำเร็จแล้วเท่านั้น

การย้ายระบบไม่ควรเป็นเหตุการณ์ที่เกิดขึ้นเพียงชั่วขณะ แต่มันควรเป็นการก้าวเดินอย่างมั่นคงไปสู่ระบบใหม่

แหล่งที่มา: https://dev.to/henry_dan_81513dd35a2f540/migrating-off-openclaw-without-downtime-and-the-offset-that-made-hermes-look-dead-2gic

ชุมชนการเรียนรู้ (เลือกเข้าร่วมได้): https://t.me/GyaanSetuAi