# hermes-agent-interrupt-explained

By [nanobro](https://blog.nanobro.co) · 2026-06-26

hermes, agent, discord, ai

---

![Hermes Agent: พฤติกรรม Interrupt บน Discord](https://storage.googleapis.com/papyrus_images/647782f27cc77c9e028d371ef16e3049af3c89b3f45772141deae47e4e39db44.png)

Hermes Agent: พฤติกรรม Interrupt บน Discord

Hermes Agent: พฤติกรรม Interrupt บน Discord — อธิบายแบบละเอียด
==============================================================

เมื่อใช้ Hermes Agent บน Discord แล้วพิมพ์ข้อความขณะที่ agent กำลังทำงานอยู่ Discord จะแสดงคำว่า "interrupt" ขึ้นมา หลายคนสงสัยว่ามันทำงานอย่างไรกันแน่ — มันสร้างสองคำสั่งขนานกัน? หรือเข้าไปแก้ไขงานที่กำลังทำ? หรือมันแค่หยุดแล้วเริ่มใหม่?

**คำตอบสั้นๆ คือ: Interrupt = ยกเลิกงานรอบปัจจุบันทันที แล้วจัดคิวข้อความของคุณเป็น prompt รอบต่อไป** — ไม่ใช่คำสั่งขนาน ไม่ใช่การแก้งานกลางคัน

* * *

สิ่งที่เกิดขึ้นทันทีเมื่อพิมพ์ระหว่าง Agent ทำงาน
-------------------------------------------------

### 1\. Agent หยุดทันที (Hard Kill)

Hermes ใช้ระบบ interrupt แบบ **hard kill** ไม่ใช่ soft pause ดังนั้นเมื่อข้อความของคุณถูกรับ กระบวนการต่อไปนี้จะเกิดขึ้นภายในเวลาไม่กี่มิลลิวินาที:

*   Tool call ที่กำลังรันอยู่ถูก SIGTERM แล้วตามด้วย SIGKILL ภายใน 1 วินาที
    
*   HTTP connection ไปยัง LLM ถูก force-close เพื่อหยุดการสร้าง token ทันที จากนั้น HTTP client ถูก rebuild ใหม่สะอาด
    
*   Tool calls ที่รอคิวอยู่ถูก skip ทั้งหมด หาก LLM สร้าง tool call plan ไว้หลายอัน แต่ยังรันไม่ครบ อันที่เหลือถูกยกเลิกทั้งสิ้น
    

### 2\. LLM Response ที่กำลัง Stream หายไป

นี่คือจุดที่หลายคนสับสน — partial response ที่ LLM กำลัง stream อยู่ตอนที่โดน interrupt จะไม่ถูก inject เข้า conversation history เลย เหมือน turn นั้นไม่เคยเกิดขึ้น ระบบไม่บันทึกข้อความกลางคันลง SQLite session ดังนั้นดูเหมือน agent "ลืม" ว่ากำลังทำอะไรอยู่

### 3\. ข้อความใหม่ของคุณกลายเป็น Prompt ถัดไป

ข้อความที่คุณพิมพ์ระหว่าง interrupt ไม่ได้ถูก inject เข้ากลาง turn เดิม แต่จะถูกจัดเป็น prompt เริ่มต้นของรอบใหม่ ทันทีหลัง agent หยุด

**Bonus:** ถ้าคุณพิมพ์หลายข้อความตามกันขณะที่ agent กำลังหยุด ทุกข้อความเหล่านั้นจะถูก join ด้วย `\n` แล้ว combine เป็น prompt เดียว เช่น พิมพ์ "หยุดก่อน" แล้วพิมพ์ต่อ "ทำแบบนี้แทน" → agent จะรับ prompt ว่า "หยุดก่อน\\nทำแบบนี้แทน" เป็น input เดียว

* * *

สิ่งที่ "หาย" และสิ่งที่ "ยังอยู่"
----------------------------------

นี่คือส่วนที่สำคัญที่สุด เพราะหลายคนเข้าใจผิดว่า interrupt ทำให้ Hermes ลืมทุกอย่าง

สิ่ง

สถานะหลัง Interrupt

Conversation history ทุก turn ก่อน interrupt

✅ ยังอยู่ครบ (บันทึกใน SQLite ทุก turn)

System prompt และ MEMORY.md

✅ ยังอยู่ ถูก rebuild ปกติ

Tool results จาก tools ที่รันเสร็จแล้วก่อนหน้า

✅ ยังอยู่ใน context

LLM response ที่กำลัง stream อยู่ตอน interrupt

❌ ถูกทิ้ง ไม่บันทึก

Tool call ที่กำลัง run อยู่ตอน interrupt

❌ ถูก kill + ผลลัพธ์หาย

Tool calls ที่ยังรอคิวอยู่ (ยังไม่ได้รัน)

❌ ถูก skip ทั้งหมด

กล่าวคือ **Hermes จำบทสนทนาทั้งหมดก่อนหน้าได้** แค่ "งานใน turn ที่โดน interrupt" เท่านั้นที่หายไป

* * *

ทำไมต้องทำแบบนี้ — ปัญหาระดับ API
---------------------------------

มีเหตุผลทางเทคนิคที่ Hermes ต้องตัด unfinished tool calls ออกจาก history ก่อน submit ครั้งถัดไป

ปัญหาคือ LLM API เช่น OpenAI หรือ Anthropic **ไม่ยอมรับ conversation history ที่มี assistant message ซึ่งมี tool\_call อยู่แต่ยังไม่มี tool\_result ตอบกลับ** — มันจะ reject ด้วย error ทันที ดังนั้น Hermes จึงต้องล้าง partial turn ออก ซึ่งทำให้ดูเหมือน "ลืม" งานที่กำลังทำอยู่

* * *

Interrupt vs /steer — ต่างกันอย่างไร
------------------------------------

หลายคนนึกว่า interrupt น่าจะทำงานแบบ /steer คือ ปรับทิศทางได้โดยยัง context เดิมอยู่ แต่จริงๆ แล้วสองอย่างนี้ต่างกันมาก:

Interrupt (พิมพ์ระหว่างทำงาน)

/steer

หยุด task ปัจจุบัน?

✅ ทันที (hard kill)

✅ แต่เป็น soft redirect

Tool calls ที่ทำไปแล้วยังอยู่?

เฉพาะที่เสร็จก่อน interrupt

✅ ยังอยู่ทั้งหมด

Context ของ turn ปัจจุบัน?

❌ หายไปทั้ง turn

✅ ยังอยู่ แค่เปลี่ยนทิศทาง

ข้อความกลายเป็นอะไร?

Fresh prompt ของรอบใหม่

Steering hint ใน turn เดิม

เหมาะกับ?

หยุดแล้วสั่งงานใหม่เลย

ปรับแนวทางการทำงานกลางคัน

**Analogy ง่ายๆ:**

*   **Interrupt** = กด Ctrl+C แล้วพิมพ์ command ใหม่ใน terminal — งานเก่าตาย งานใหม่เริ่มสะอาด
    
*   **/steer** = บอกคนงานที่กำลังสร้างบ้านว่า "เปลี่ยนสีผนังเป็นน้ำเงินแทนนะ" — งานยังดำเนินต่อแต่เปลี่ยนทิศ
    

* * *

Queue Mode — ทางเลือกที่หลายคนไม่รู้จัก
---------------------------------------

Hermes มี queue mode ซึ่งเป็นทางเลือกที่ดีกว่า interrupt ในหลายกรณี แทนที่จะ kill งานปัจจุบัน ข้อความของคุณจะถูกจัดคิวไว้รอจนกว่างานปัจจุบันจะเสร็จ แล้วค่อยรันต่อเนื่อง

เหมาะกับกรณีที่คุณต้องการ **เพิ่ม follow-up task โดยไม่ทำลายงานที่กำลังดำเนินอยู่** — บริบทและ tool results ทั้งหมดจะสมบูรณ์กว่าการใช้ interrupt

* * *

สรุปพฤติกรรมจริงในหนึ่งประโยค
-----------------------------

> **Interrupt = hard kill งาน + ลบ partial turn ออกจาก history + จัดข้อความคุณเป็น prompt รอบใหม่** โดยความจำของบทสนทนาก่อนหน้าทั้งหมดยังคงอยู่ครบ — มีแค่ turn ที่โดน interrupt นั้นเองที่หายไป

---

*Originally published on [nanobro](https://blog.nanobro.co/hermes-agent-interrupt-explained)*
