บทเรียน 15: Git Worktrees — Parallel Agents
บทเรียน 15: Git Worktrees — Parallel Agents — คู่มือเข้าใจง่ายตามเอกสารอย่างเป็นทางการ
นี่เป็นส่วนหนึ่งของชุดบทช่วยสอนอย่างเป็นทางการของ Hermes Agent ดูบทช่วยสอนทั้งหมด
ลองนึกภาพว่าคุณมีครัวหนึ่งห้องแต่มีพ่อครัวสองคน ถ้าทั้งคู่ทำอาหารบนเคาน์เตอร์เดียวกัน พวกเขาก็จะชนศอกกัน แป้งกระเด็นใส่กัน และทำอาหารของกันและกันเสียหาย Git worktrees เปรียบเสมือนการให้พ่อครัวแต่ละคนมีเคาน์เตอร์เป็นของตัวเอง—ครัวเดียวกัน แต่มีพื้นที่ทำงานแยกจากกัน นี่คือสิ่งที่ฟีเจอร์นี้มอบให้กับ AI agents ของคุณนั่นเอง
ทำไมต้องสนใจ? ปัญหาของการเช็คเอาต์เพียงจุดเดียว
Hermes Agent ถือว่า โฟลเดอร์ที่คุณรันมัน เป็นรากของโปรเจกต์ (project root) ถ้าคุณเปิดใช้ agents สองตัวในโฟลเดอร์เดียวกัน พวกมันจะแชร์ไฟล์ทุกไฟล์ร่วมกัน ซึ่งหมายความว่า:
- Agent A อาจลบไฟล์ที่ Agent B กำลังแก้ไขอยู่
- คุณไม่สามารถบอกได้ว่าการเปลี่ยนแปลงไหนมาจากการทดลองไหน
- การย้อนกลับ (rollback) กลายเป็นเรื่องยุ่งเหยิง—การเลิกทำของ agent หนึ่งอาจล้างงานของอีก agent หนึ่งได้
Worktrees แก้ปัญหานี้โดยการให้ agent แต่ละตัวมี:
- Branch ของตัวเอง (เพื่อให้การเปลี่ยนแปลงไม่ชนกัน)
- โฟลเดอร์ทำงานของตัวเอง (เพื่อให้ไฟล์ไม่ขัดแย้งกัน)
- ประวัติ checkpoint ของตัวเอง (เพื่อให้
/rollbackส่งผลกับ agent นั้นเท่านั้น)
ขั้นตอนที่ 1: สร้าง Worktree (คำสั่งพื้นฐาน)
จาก repository หลักของคุณ (อันที่มี .git/ อยู่ข้างใน) รันคำสั่ง:
git worktree add ../my-agent-folder -b my-feature-branch
มาวิเคราะห์คำสั่งนี้กัน:
../my-agent-folder– ตำแหน่งที่โฟลเดอร์ใหม่จะถูกสร้าง (อยู่ภายนอก repo หลักของคุณ)-b my-feature-branch– สร้าง branch ใหม่สำหรับ agent นี้
ตอนนี้คุณก็จะมีสำเนาโปรเจกต์ที่แยกออกมาใหม่และเป็นอิสระแล้ว
ขั้นตอนที่ 2: ชี้ Hermes ไปที่ Worktree
คุณสามารถใช้ worktree ได้สองวิธี:
ตัวเลือก A: CLI (ง่ายที่สุด)
แค่ใช้คำสั่ง cd เข้าไปใน worktree แล้วรัน Hermes ตรงนั้น:
cd ../my-agent-folder
hermes chat
ตัวเลือก B: เกตเวย์รับส่งข้อความ (เช่น Slack หรือ Discord)
หากคุณใช้เกตเวย์ ให้แก้ไข ~/.hermes/config.yaml และตั้งค่า terminal.cwd เป็นพาธของ worktree:
terminal:
cwd: /path/to/my-agent-folder
ตอนนี้ทุกข้อความที่ agent นั้นได้รับจะทำงานภายในโฟลเดอร์ที่แยกออกมานี้
ขั้นตอนที่ 3: รัน Agents หลายตัวพร้อมกัน
สร้าง worktree ได้มากเท่าที่คุณต้องการ:
git worktree add ../agent-experiment-1 -b exp-1
git worktree add ../agent-experiment-2 -b exp-2
จากนั้นเริ่มเซสชัน Hermes หนึ่งตัวในแต่ละโฟลเดอร์ พวกมันจะไม่แตะต้องไฟล์ของกันและกัน และแต่ละตัวก็มี branch ของตัวเองสำหรับ commit
ขั้นตอนที่ 4: ทำความสะอาดเมื่อเสร็จสิ้น
เมื่อการทดลองเสร็จสิ้น ให้ลบ worktree ทิ้ง:
git worktree remove ../agent-experiment-1
git branch -d exp-1
คำสั่งแรกจะลบโฟลเดอร์ ส่วนคำสั่งที่สองจะลบ branch repo หลักของคุณก็จะสะอาดเหมือนเดิม
จุดสำคัญที่ต้องจำ
- Worktrees มีต้นทุนต่ำ – พวกมันไม่ได้คัดลอกทั้ง repo แค่คัดลอกไฟล์ที่คุณต้องการเท่านั้น
- Agent แต่ละตัวมีประวัติ
/rollbackของตัวเอง – ไม่มีเหตุการณ์เลิกทำข้าม agent ที่หายนะอีกต่อไป - ใช้ branches อย่างชาญฉลาด – ตั้งชื่อให้ชัดเจน (เช่น
refactor-login,fix-bug-42) เพื่อให้คุณรู้ว่า agent แต่ละตัวทำอะไรไปบ้าง
สรุป
Git worktrees ช่วยให้คุณรัน Hermes agents หลายตัวบนโปรเจกต์เดียวกันได้โดยไม่ก้าวก่ายกัน สร้าง worktree หนึ่งอันต่อหนึ่ง agent ชี้ Hermes ไปที่มัน แล้วก็เสร็จเรียบร้อย เหมือนกับการให้พ่อครัวแต่ละคนมีเขียงของตัวเอง—ครัวเดียวกัน ไม่มีการชนกันเลย
ต่อไป: ในบทช่วยสอนที่ 16 เราจะปรับใช้ Hermes ด้วย Docker—ผู้ช่วยที่ซ่อมแซมตัวเองได้และพร้อมใช้งานตลอดเวลา
📖 เอกสารทางการ
この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/git-worktrees