heartbeat μλ μ κ²μ λκ³ μλλ° μ¬μ©μμκ²λ HEARTBEAT_OKλ§ λ³΄μ΄κ³ , μ μ ν΄μΌ ν μμ
μ νλλ μ΄μ΄μ§μ§ μλ μ₯λ©΄μ΄ μλ€. μ΄λ λ§μ μ¬λμ΄ βheartbeatκ° μ£½μλ?βλΆν° μμ¬νμ§λ§, μ€μ νμ₯μμλ νλ‘μΈμ€ μ₯μ λ³΄λ€ νμ λ‘μ§μ΄ λ무 빨리 OKλ‘ λ«νλ²λ¦° κ²½μ°κ° ν¨μ¬ λ§λ€.
νΉν μ΄μ λ©λͺ¨λ₯Ό λ μ§ νμΌλ‘ μ°λμ§, memory/μ€λ.md κ°μ κ³ μ νμΌλ‘ μ°λμ§, μμ μλ¦Όκ³Ό μλ£ μλ¦Όμ λΆλ¦¬νλμ§μ λ°λΌ 체κ°μ΄ ν¬κ² λ¬λΌμ§λ€. μ¬κΈ°μ νλκ° λ μλ€. quota reset wakeupμ΄λ scheduled reminderλ₯Ό λ°μ λ€ μ€λ κ³νμ λ€μ μ½μ§ μμΌλ©΄, μ΄λ²€νΈλ μ μμΈλ° νμ μ€νλ§ λΉλ μ₯λ©΄μ΄ μμ£Ό μκΈ΄λ€. μλ£ λ‘κ·Έλ μλλ° μ²΄ν¬λ°μ€λ§ λ€μ [ ]λ‘ λ³΄μ΄λ λ리ννΈ μ₯λ©΄κΉμ§ ν¨κ» λ³΄λ €λ©΄ 34. heartbeatμμ μλ£ν μμ
μ΄ λ€μ λ―Έμλ£λ‘ λ³΄μΌ λλ₯Ό κ°μ΄ 보면 μμΈ λΆλ¦¬κ° ν¨μ¬ λΉ¨λΌμ§λ€. κΈ°λ³Έ κ΅¬μ‘°κ° λ¨Όμ νμνλ©΄ OpenClaw 06: Cron Job μλν κΈ°λ³Έκ³Ό OpenClaw 25: ν¬λ‘ Β·μλΈμμ΄μ νΈ λΆμ° μ΄μμ λ¨Όμ κ°μ΄ 보λ νΈμ΄ μ’λ€.
30μ΄ μ§λ¨ν
| μ§κΈ 보μ΄λ μ¦μ | λ¨Όμ νμΈν κ² | λ°λ‘ μ΄μ΄μ ν μΌ |
|---|---|---|
HEARTBEAT_OKλ§ λ°λ³΅λκ³ ν μΌμ λ¨μ μμ | memory/μ€λ.mdμ μ€μ λ μ§ νμΌμ΄ κ°μ κ³νμ λ³΄κ³ μλμ§ | κΈ°μ€ νμΌ 1κ°λ‘ λ§μΆ λ€ overdue νλͺ©λ§ λ€μ νμ |
| scheduled reminderλ quota reset μλ¦Όμ μλλ° μ€νμ΄ μ λΆμ | μλ¦Ό μ§ν μ€λ κ³ν μλ³Έμ μ¬λ‘λ©νλμ§ | μ€λ κ³ν μ¬νμΈ β overdue νμ β μμ μλ¦Ό μμ κ°μ |
| νμΌμ λ°λμλλ° μ¬μ©μ 체κ°μ μ무 μΌλ μ ν κ² κ°μ | μμ μλ¦Όκ³Ό μλ£ μλ¦Όμ΄ λΆλ¦¬λΌ λ¨λμ§ | νμΌ μμ μ μ μμ μλ¦Ό, λλ λ€ μλ£ μλ¦Ό μΆκ° |
| μ€μ μ μ μμΈλ° μ€νλΆν° κ°μκΈ° λΉ μλ΅μ²λΌ 보μ | heartbeatλ§λ€ κ°μ μΊμ κ²°κ³Όλ₯Ό μ¬μ¬μ©νλμ§ | λ§€ heartbeatλ§λ€ μ€λ κ³ν μλ³Έμ λ€μ μ½κΈ° |
μ΄ νμ λͺ©μ μ μμΈμ κΈΈκ² μ°Ύμ§ μκ² νλ κ²μ΄λ€. νμ₯μμλ HEARTBEAT_OK μμ²΄λ³΄λ€ λ¬΄μ¨ μ‘°κ±΄μμ OKκ° νμ λλμ§λ₯Ό λ¨Όμ μ‘μμΌ λ³΅κ΅¬κ° λΉ¨λΌμ§λ€.
μ΄ λ¬Έμλ₯Ό λ°λ‘ λ΄μΌ νλ μ νΈ
μλ μ€ νλλΌλ λ§μΌλ©΄, λ¨μν βμ§κΈ ν μΌ μμβμΌλ‘ λκΈ°μ§ λ§κ³ heartbeat νμ μμλ₯Ό λ€μ 보λ νΈμ΄ λΉ λ₯΄λ€.
- μ€λ ν μΌ
[ ]νλͺ©μ΄ λΆλͺ μλλ°λHEARTBEAT_OKλ§ κ³μ μ¨λ€. - μμ νμΌμ μμ λλλ° μ¬μ©μ μ±λμλ μμ/μλ£ νλ¦μ΄ 보μ΄μ§ μλλ€.
- μ€μ μλ μ μμΈλ° μ€νλΆν° κ°μκΈ° λΉ μλ΅μ²λΌ 보μΈλ€.
- quota reset, scheduled reminder, cron wakeup λ€μλ νμ μ‘μ μ΄ λΆμ§ μλλ€.
flowchart TD A[Heartbeat μμ ] --> B[μ€λ κ³ν μλ³Έ λ€μ μ½κΈ°] B --> C{λ―Έμλ£ νλͺ© μ‘΄μ¬?} C -- μλμ€ --> H[HEARTBEAT_OK] C -- μ --> D{νμ¬ μκ° μ§λ νλͺ© μ‘΄μ¬?} D -- μλμ€ --> H D -- μ --> E[μμ μλ¦Ό] E --> F[μ€μ μμ μ€ν] F --> G[μλ£ μλ¦Ό + 체ν¬λ°μ€/λ‘κ·Έ κ°±μ ]
μΉ ν μΉνΈμνΈ
- heartbeatλ§λ€ μ€λ κ³ν μλ³Έμ λ€μ μ½λλ€
[ ]νλͺ© μ€ μ§κΈ μκ°μ μ§λ κ²μ΄ μλμ§ λ³Έλ€- μμΌλ©΄
HEARTBEAT_OKλ₯Ό 보λ΄μ§ λ§κ³ μμ μλ¦Ό β μ€ν β μλ£ μλ¦Ό μμλ‘ κ°λ€- μμ λλ§ λ§μ§λ§ λ¨κ³μμ
HEARTBEAT_OKλ₯Ό νμ νλ€
10μ΄ νλ¨: μ§κΈ λ°λ‘ μ€ν λμμΈμ§ 보λ λ²
μλ μΈ μ€λ§ λ§μ‘±νλ©΄, μ΄κ±΄ μ€λͺ μ΄ μλλΌ μ€νμΌλ‘ λμ΄κ°μΌ νλ€.
- μ€λ κ³νμ
[ ]λ‘ λ¨μ μλ€. - νμ¬ μκ°μ΄ μμ μκ°κ³Ό κ°κ±°λ μ§λ¬λ€.
- κ°μ
task-keyμλ£ λ‘κ·Έκ° μμ§ μλ€.
μλ₯Ό λ€μ΄ 11:00 heartbeatμμ [ ] 11:00 | μμ μ μ
νμ΄μ§ 리λΌμ΄νΈ 1κ±΄μ΄ λ³΄μ΄κ³ μλ£ λ‘κ·Έκ° μλ€λ©΄, μ΄ μμ μλ HEARTBEAT_OKκ° μλλΌ μ¦μ μ€νμ΄ λ§λ€. λ°λλ‘ 14:00 μμ
μ΄λΌλ©΄ 11:00μλ μμ§ OKλ‘ λ«μλ λλ€. μ΄ μ°¨μ΄λ₯Ό λͺ
νν λλ©΄ κ³Όμ μ€νκ³Ό λΉ μλ΅μ κ°μ΄ μ€μΌ μ μλ€.
μ HEARTBEAT_OKλ§ λ°λ³΅λλκ°
λλΆλΆ μμΈμ μλ μ μ€ νλλ‘ μλ ΄νλ€.
1) μ€λ κ³ν νμΌμ μλͺ» μ½κ³ μλ€
μ΄μ λ¬Έμκ° memory/μ€λ.mdκ° μλλΌ memory/YYYY-MM-DD.md ννμΈλ°λ, heartbeatκ° ν κ²½λ‘λ§ κ³ μ ν΄μ 보면 μ€μ λ―Έμλ£ νλͺ©μ λμΉλ€. μ΄ κ²½μ° μ¬λ λμλ βν μΌμ΄ λΆλͺ
μλλ° μμ€ν
μ μλ€κ³ νλ€βλ‘ λ³΄μΈλ€.
μ¬κΈ°μλ νμΌ κ²½λ‘ μμ²΄λ³΄λ€ μ€λμ source of truthλ₯Ό μ΄λλ‘ λμ§λ₯Ό λ¨Όμ κ³ μ ν΄μΌ νλ€. λ μ§ νμΌμ κΈ°μ€μΌλ‘ μ΄μνλ€λ©΄ heartbeatλ λ§€λ² κ·Έ λ μ§ νμΌμ λ€μ μ΄μ΄μΌ νλ€. 곡μ μ 보λ λ²μ μ λ°λΌ λ¬λΌμ§ μ μμΌλ μ΄μ μ μ OpenClaw docsμ OpenClaw source repoλ₯Ό νμ¬ λ²μ κΈ°μ€μΌλ‘ ν¨κ» 보λ μ΅κ΄μ΄ μμ νλ€.
μ€λ¬΄ λ―Έλ μ¬λ‘
- μ€μ 9μμ
memory/2026-04-13.mdμ μμ 3κ°λ₯Ό λ§λ€μλ€. - κ·Έλ°λ° heartbeatλ κ³μ
memory/μ€λ.mdλ§ μ°Ύμλ€. - κ²°κ³Όμ μΌλ‘ μ€μ μμ
μ λ¨μ μλλ°λ
HEARTBEAT_OKκ° λ°λ³΅λλ€.
κ²μ¦ ν¬μΈνΈ
- μ¬λμ΄ λ³΄λ μ€λ κ³ν νμΌκ³Ό heartbeatκ° μ½λ νμΌμ΄ κ°μμ§ 1ν νμΈνλ€.
- λμ΄ λ€λ₯΄λ©΄, λ‘μ§ λ¬Έμ λ‘ λ¨Όμ λΆλ₯νλ€.
2) μκ° λΉκ΅κ° λΉ μ Έ μλ€
λ―Έμλ£ νλͺ©μ΄ μλ€λ μ¬μ€λ§μΌλ‘λ μ€ννλ©΄ μ λκ³ , λ°λλ‘ λ―Έμλ£ νλͺ©μ΄ μμ΄λ μ§κΈ μκ°μ μ§λ νλͺ©μΈμ§λ₯Ό νμΈνμ§ μμΌλ©΄ μμν λκΈ°λ§ νκ±°λ μμν OKλ§ λ³΄λΌ μ μλ€.
μλ₯Ό λ€μ΄ 14:00 μμ μ 11:00 heartbeatμμ μμ§ μ€ννλ©΄ μ λλ€. νμ§λ§ 11:00 μμ μ 11:05 heartbeatμμ λ°λ‘ μ€ν λμμ΄λ€. κ²°κ΅ ν΅μ¬μ 체ν¬λ°μ€ μ λ¬΄κ° μλλΌ λ―Έμλ£ + μκ° κ²½κ³Ό λ 쑰건μ ν¨κ» 보λ κ²μ΄λ€.
μ€λ¬΄ λ―Έλ μ¬λ‘
[ ] 11:00 | μμ μ μ νμ΄μ§ 리λΌμ΄νΈ 1건- 11:05μΈλ°λ μμ€ν μ΄ μ²΄ν¬λ°μ€ κ°μλ§ μΈκ³ μ’ λ£ν¨
- μ¬μ©μλ βheartbeatκ° λ©μ²ν΄μ‘λ€βκ³ λλΌμ§λ§, μ€μ λ¬Έμ λ μκ° λΉκ΅ λλ½μ΄λ€
κ²μ¦ ν¬μΈνΈ
- νμ¬ μκ°μ΄ μ§λ νλͺ© 1κ°λ₯Ό κ³¨λΌ μ¬λμ΄ μ§μ βμ΄κ±΄ μ§κΈ μ€ν λμβμ΄λΌκ³ λ§ν μ μμ΄μΌ νλ€.
- κ·Έ μ€λͺ μ΄ μ λλ©΄ OK νμ μ΄ λ무 λΉ λ₯΄λ€κ³ λ³Έλ€.
3) μμ μλ¦Ό μμ΄ νμΌλ§ μμ νλ€
μμ
μ μ€μ λ‘ νλλ°λ μ¬μ©μλ κ³μ HEARTBEAT_OKλ§ κΈ°μ΅νλ κ²½μ°κ° μλ€. μ΄κ±΄ μ€ν μ€ν¨λΌκΈ°λ³΄λ€ μ²΄κ° μ€ν¨μ κ°κΉλ€.
μ΄μ κ΄μ μμλ μμ μλ¦Όκ³Ό μλ£ μλ¦Όμ΄ μ€μνλ€. μμ μλ¦Όμ΄ μμ΄μΌ βμ§κΈ heartbeatκ° μΌμ μ‘μꡬλβλ₯Ό μ μ μκ³ , μλ£ μλ¦Όμ΄ μμ΄μΌ βμ€ν ν 체ν¬λ°μ€κ° λ°λμꡬλβλ₯Ό νμΈν μ μλ€. CLI status λ¬Έμμ sessions λ¬Έμλ νμ¬ μνΒ·μΈμ λ²μλ₯Ό μ¬νμΈν λ ν¨κ» 보면 λμμ΄ λλ€.
μ€λ¬΄ λ―Έλ μ¬λ‘
- λ΄λΆμ μΌλ‘ λ¬Έμ νμΌμ μμ λλ€.
- νμ§λ§ μ¬μ©μ μ±λμλ μμ/μλ£ μ νΈκ° νλλ μμλ€.
- κ²°κ³Όμ μΌλ‘ μ΄μμλ βμ무κ²λ μ νλ€βκ³ νλ¨νλ€.
κ²μ¦ ν¬μΈνΈ
- μμ μλ¦Ό, μλ£ μλ¦Ό, 체ν¬λ°μ€ κ°±μ λ‘κ·Έκ° ν μΈνΈλ‘ λ¨λμ§ λ³Έλ€.
- μ μ€ νλλΌλ μμΌλ©΄ μ¬λ° κ°λ₯μ±μ΄ λλ€.
5λΆ λ³΅κ΅¬ μμ
1) μ€λ κ³νμ κΈ°μ€ νμΌμ λ¨Όμ κ³ μ νλ€
κ°μ₯ λ¨Όμ ν μΌμ μ€λ κ³νμ κΈ°μ€ νμΌμ νλλ‘ μ νλ κ²μ΄λ€. memory/μ€λ.mdλ₯Ό μΈμ§, memory/YYYY-MM-DD.mdλ₯Ό μΈμ§, λ λ€ μΈμ§ λ¨Όμ μ ν΄μΌ νλ€.
μ΄ λ¨κ³κ° μ€μν μ΄μ λ heartbeatκ° μ무리 μμ£Ό λλλΌλ μλͺ»λ νμΌμ μ½μΌλ©΄ μμν λ§λ νμ μ ν μ μκΈ° λλ¬Έμ΄λ€. μ€λ¬΄μμλ νμΌ μ‘΄μ¬ μ¬λΆλ³΄λ€ βμ΄μμκ° μ€μ λ‘ μλλ νμΌβκ³Ό βheartbeatκ° μ½λ νμΌβμ΄ κ°μμ§λΆν° λ§μΆλ νΈμ΄ λΉ λ₯΄λ€.
2) λ―Έμλ£ νλͺ©μ λ€μ μΈμ§ λ§κ³ , μ€ν λμλ§ μΆλ¦°λ€
λ€μμΌλ‘λ [ ] νλͺ© μ 체λ₯Ό μΈκΈ°λ³΄λ€ μ§κΈ μκ°μ μ§λ νλͺ©λ§ 골λΌλΈλ€. μ΄λλ μλμ²λΌ μκ°νλ©΄ λλ€.
- μμ§ μ λκ³ (
[ ]) - μμ μκ°μ μ§λ¬κ³
- λμΌ task-key μλ£ λ‘κ·Έκ° μμ§ μμΌλ©΄
- μ§κΈ λ°λ‘ μ€ν λμ
μ΄λ κ² μ‘°κ±΄μ μλ₯΄λ©΄ HEARTBEAT_OKλ₯Ό λ무 μΌμ° 보λ΄λ μ€μκ° ν¬κ² μ€μ΄λ λ€.
3) μμ μλ¦Ό β μ€μ μμ β μλ£ μλ¦Ό μμλ₯Ό κ³ μ νλ€
μμλ₯Ό λ°κΎΈλ©΄ 체κ°μ΄ μ΄κΈλλ€. νΉν νμΌ μμ ν λμ€μ μ리거λ, μλ£λ§ λ¨κΈ°κ³ μμμ μλ΅νλ©΄ μ¬λμ heartbeatκ° κ±΄λλ΄ κ²μ²λΌ λλΌκΈ° μ½λ€.
νμ₯μμλ μλ μμλ₯Ό κ·Έλλ‘ κ³ μ νλ νΈμ΄ κ°μ₯ μμ νλ€.
- μμ μλ¦Ό
- μ€μ μμ μ€ν
- 체ν¬λ°μ€
[x]λ°μ - μλ£ λ‘κ·Έ ν μ€ μΆκ°
- νμ μ κ²°κ³Ό μμ½ μλ¦Ό
4) κ°μ μμ μ λ€μ μ‘μ§ μλλ‘ task-keyλ₯Ό λ³Έλ€
heartbeatκ° μμ£Ό λλ νκ²½μμλ βν λ² λλΈ μΌβμ λ€μ μ‘λ λ¬Έμ κ° μ½κ² μκΈ΄λ€. κ·Έλμ task-keyλ₯Ό λ μ§Β·μκ°Β·μμ λͺ κΈ°μ€μΌλ‘ κ³ μ ν΄ λλ©΄ μ€λ³΅ μ€νμ μ€μ΄κΈ° μ½λ€.
μλ₯Ό λ€μ΄ 2026-04-13|11:00|μμ μ μ
νμ΄μ§ 리λΌμ΄νΈ 1건μ²λΌ μ‘μ λλ©΄, λ€μ heartbeatλ μ¬μ€νμ΄ μλλΌ μν μ
λ°μ΄νΈλ§ νκ² λ§λ€ μ μλ€. μ΄ κ·μΉμ΄ μμΌλ©΄ μμ€ν
μ λ°μκ² μμ§μ΄λλ° μ°μΆλ¬Όμ μ μλ¦¬μΈ μν©μ΄ λ°λ³΅λλ€.
νμ₯ λ―Έλ μ¬λ‘ 3κ°
μ¬λ‘ A) μ€μ μλ λ©μ©‘νλλ° μ€νλΆν° κ°μκΈ° HEARTBEAT_OKλ§ μ¨λ€
- μν©: μ€μ heartbeatμμ μ½μ μνλ₯Ό μ€νμλ κ·Έλλ‘ μ¬μ¬μ©
- μμΈ: heartbeatλ§λ€ μ€λ νμΌμ λ€μ μ΄μ§ μμ
- μ²λ¦¬: λ§€ heartbeatλ§λ€ μ€λ κ³ν μλ³Έ μ¬λ‘λ©
- κ²°κ³Ό: μ€ν overdue νλͺ©μ μ μ κ°μ§
μ¬λ‘ B) scheduled reminderλ λ΄λλ° νμ μ‘μ μ΄ μλ€
- μν©: μλ¦Ό μ΄λ²€νΈλ μ μ λ°μ
- μμΈ: μλ¦Όμ λ°μ λ€ μ€ν λμ νμ μΌλ‘ μ λμ΄κ°
- μ²λ¦¬: reminder μμ ν βμ€λ κ³ν μ¬νμΈ β overdue νμ β λ¨κ³λ₯Ό κ°μ
- κ²°κ³Ό: μλ¦Όκ³Ό μ€νμ΄ νλμ νλ¦μΌλ‘ μ΄μ΄μ§
μ¬λ‘ C) μμ μ νλλ° μ¬μ©μλ κ³μ HEARTBEAT_OKλ§ κΈ°μ΅νλ€
- μν©: λ΄λΆ νμΌλ§ λ°λκ³ μ±λ λ©μμ§λ μλ΅
- μμΈ: μμ/μλ£ μλ¦Ό μμ λλ½
- μ²λ¦¬: μμ μλ¦Όκ³Ό μλ£ μλ¦Όμ λΆλ¦¬ κΈ°λ‘
- κ²°κ³Ό: μ΄μ 체κ°μ΄ μ’μμ§κ³ λλ²κΉ λ μ¬μμ§
μ΄μμκ° λ°λ‘ μ¨λ¨Ήμ νλ³ μ§λ¬Έ
μλ λ€ μ§λ¬Έμ λ΅νλ©΄, λλΆλΆ 5λΆ μμ μμΈ λ²μκ° μ€μ΄λ λ€.
- heartbeatκ° μ€λ μ€μ κ³ν νμΌμ λ³΄κ³ μλκ°?
[ ]νλͺ© μ€ νμ¬ μκ°μ΄ μ§λ κ²μ΄ μλκ°?- μμΌλ©΄ μμ μλ¦Ό β μ€ν β μλ£ μλ¦Όμ΄ ν μΈνΈλ‘ λ¨λκ°?
- κ°μ task-keyλ₯Ό μ΄λ―Έ λλΈ λ€ λ μ‘κ³ μμ§λ μμκ°?
λ€ μ§λ¬Έ μ€ νλλΌλ βμλμ€βλ©΄, HEARTBEAT_OK λ°λ³΅μ μλ΅ ν¬λ§· λ¬Έμ κ° μλλΌ μ΄μ λ‘μ§ λ¬Έμ λ‘ λ³΄λ νΈμ΄ λ§λ€.
λ€μμ μ½μ κΈ (λ΄λΆλ§ν¬ 10μ )
- OpenClaw 06: Cron Job μλν κΈ°λ³Έ
- OpenClaw 11: μ°λ μ²΄ν¬ λ£¨ν΄
- OpenClaw 12: λΈλΌμ°μ 릴λ μ΄ μ°λ ꡬ쑰
- OpenClaw 17: Subagents μ€ν¨ ν¨ν΄ 5κ°μ§
- OpenClaw 18: ν λ κ·Έλ¨ μ°κ²°λκΉ λ³΅κ΅¬
- OpenClaw 20: μ΄μ μν€ν μ² κ·μΉ μ΄μ 리
- OpenClaw 23: node-run 보μ μλ¬ ν΄κ²°
- OpenClaw 25: ν¬λ‘ Β·μλΈμμ΄μ νΈ λΆμ° μ΄μ
- OpenClaw 31: Quota 리μ μ λ¨ ν΄κ²°
- 30. OpenClaw μ±λμ μ°κ²°λλλ° λ΅μ΄ μμ λ ν΄κ²°
- π OpenClaw μΈλ±μ€
λ€μ μΆμ² μ½κΈ°: 31. Quota 리μ μ λ¨ ν΄κ²°
ν μ€ κ²°λ‘
HEARTBEAT_OK λ°λ³΅ λ¬Έμ λ λκ° heartbeatκ° μ£½μ κ² μλλΌ, μ€λ κ³ν μλ³ΈΒ·μκ° λΉκ΅Β·μλ¦Ό μμ μ€ νλκ° λΉ μ§ μνλ€.
μ€λ κ³νμ λ€μ μ½κ³ , overdueλ§ κ³¨λΌμ, μμ μλ¦Ό β μ€ν β μλ£ μλ¦Ό μμλ‘ κ³ μ νλ©΄ λλΆλΆ λ°λ‘ νλ¦°λ€.
β» μ΄ λ¬Έμλ μμ±ν AIλ₯Ό νμ©ν΄ μμ±λμμ΅λλ€.