overnight-on
Enable Kuma overnight autonomous mode and keep plans updated while the user is away.
/kuma:overnight-on β π μΌκ·Όλͺ¨λ ON
μΏ λ§λ₯Ό μΌκ·Ό μμ¨λͺ¨λλ‘ μ ννλ€. μ μ κ° μκ±°λ μ리λ₯Ό λΉμ΄ λμ μΏ λ§κ° νΌμ κ²°μ β μ€ν β κ²μ¦κΉμ§ λ리λ λͺ¨λ.
무μμ νλκ°
- kuma-studio μΌκ·Όλͺ¨λ ν κΈ ON
POST http://127.0.0.1:4312/studio/nightmode {"enabled": true}- μ±κ³΅ μ
~/.kuma/runtime/nightmode.flagνμΌ μμ± (packages/server/src/studio/nightmode-store.mjs) - GUI μ€νΌμ€ μ€μ ν¨λ ν κΈλ λκΈ°νλ¨
- μΏ λ§ νλ λͺ¨λ λ³κ²½ β μ μ μλ΅ λκΈ° μμ΄ μμ¨ μ§ν
- μμ
μ§ν μν©μ
.kuma/plans/체ν¬λ¦¬μ€νΈλ‘ μ€μκ° κ°±μ
νμ±ν λ°©λ²
- μ¬λμ:
/kuma:overnight-on - μμ°μ΄: "μΌκ·Όλͺ¨λ μ¨", "μΌκ·Ό λͺ¨λ μΌμ€", "overnight on"
νμ±ν μ μΏ λ§κ° μ¦μ μννλ κ²
Step 0. Preflight β νλ νλ μ€μΊ (νμ)
μΌκ·Όλͺ¨λ ON μ μ μ 체 active νλμ frontmatter status λ₯Ό μ€μΊνλ€.
μμμ νλ frontmatter status λ‘λ§ κ²°μ λ¨ (μ½λ κ·Όκ±°: packages/server/src/studio/plan-store.mjs:13-19 β active/in_progress=νλ, hold=λ
Έλ, blocked=μ£Όν©, completed=μ΄λ‘, failed=λΉ¨κ°).
# νμ¬ active μνμΈ νλ νμΈ
find "${KUMA_PLANS_DIR:-.kuma/plans}" -name '*.md' -exec grep -l 'status: active' {} +
νλ(active) νλμ΄ μΌκ·Ό scope μΈμ λ¨μμμΌλ©΄ μ²λ¦¬:
- μ μ μκ² λ¦¬μ€νΈ μ μ (νλ νμΌ κ²½λ‘ + μ λͺ© + λ―Έμλ£ νλͺ© μμ½)
- κ° νλμ μ²λ¦¬ λ°©μμ μ μ μκ² νμΈ:
- μΌκ·Ό scope ν¬ν¨ β
status: activeμ μ§, λ΄λΉ μ컀 μ€ν° μ€λΉ - HOLD (λ
Έλμ) β frontmatter
status: hold+status_reason: "μ μ HOLD YYYY-MM-DD β <μ¬μ >" - BLOCKED (μ£Όν©μ) β frontmatter
status: blocked+status_reason: "μ μ νλ¨ νμ β <μ§λ¬Έ>" - μλ£ μ ν β
status: completed(μ΄λ―Έ λλ¬λλ° μν κ°±μ λλ½)
- μΌκ·Ό scope ν¬ν¨ β
- μΌκ·Ό scope λ° active νλ 0κ° νμΈ ν μΌκ·Όλͺ¨λ ON μ§ν
Why: μΌκ·Όλͺ¨λ μ€ scope λ° νλ νλμ΄ λ¨μΌλ©΄ (1) λ―Έμ²λ¦¬ λ°©μΉ λλ (2) μΏ λ§ μ체 νλ¨ μ²λ¦¬λ‘ μ μ μλμ μ΄κΈλ μν. μ μ μμΉ (2026-04-09 νμ ): "μΌκ·Όλͺ¨λν λ νλμ μλ¨κ² νλ¬μλ. μκ²νλ λ°©λ²μ λ΄κ° holdλ₯Ό μ§μνμΌλ©΄ hold(λ Έλμ). κ·Έλ¦¬κ³ λκ° λ΄ νλ¨μ΄ νμνλ€λκ² request? block? (μ£Όν©μ)". νλμ = μ§κΈ μμ μ€μΈ μΌκ·Ό scope λ§ ν΄λΉ.
Step 1. μΌκ·Όλͺ¨λ ν κΈ ON
- μλμκ² curl μμ (λλ μΏ λ§κ° μ§μ ):
curl -sS -X POST http://127.0.0.1:4312/studio/nightmode \ -H 'Content-Type: application/json' \ -d '{"enabled":true}' ~/.kuma/runtime/nightmode.flagμ‘΄μ¬ νμΈ (flag μμΌλ©΄ μ€ν¨λ‘ κ°μ£Ό)- νμ¬ Active νλ (
.kuma/plans/index.md) μμ λ―Έμλ£ μ²΄ν¬λ¦¬μ€νΈ μ μ νμ - κ°μ© μ컀 μ μμ λ³λ ¬ λ°°λΆ (idle μ컀 μκ²)
- λμ€μ½λμ "μΌκ·Όλͺ¨λ ON. μ€λ ν μΌ: [μμ½]. μ μ." ν μ€ λ³΄κ³
- μ΄ν μμ μλ£ / λΈλ‘컀 λ°μ / μμΉ¨μ μ μ λ³΅κ· κΉμ§ μμ¨ μ§ν
νλ κ·μΉ (λͺ¨λ ON λμ)
| μλ κ·μΉ | μΌκ·Όλͺ¨λ μ€λ²λΌμ΄λ |
|---|---|
| μ€κ³ κ²°μ μ μ μ μκ² λ¬Όμ΄λΌ | μ΅μ μ νλ¨μΌλ‘ μ§ν. μ΄μ λ₯Ό λμ½μ νλ νμΌμ λ¨κΈ΄λ€ |
| "λ΄κ° κ²°μ ν΄μ€μΌ ν μ¬ν μμ΄?" μ§λ¬Έ | κΈμ§. κ²°μ νμνλ©΄ μΏ λ§κ° ν©λ¦¬μ μ ν ν κΈ°λ‘ |
| 리μ€ν¬ μλ μμ μ νμΈλ°κΈ° | νμΌ λ€μ μμ 리ν©ν λ§/λ§μ΄κ·Έλ μ΄μ μ§ν OK |
| μ μ μλ΅ λκΈ° | μλ΅ μμΌλ©΄ μ μ§ν |
| μ컀 μλ¬ μ λ©μΆ€ | μλ¬ μ λμ½ λ³΄κ³ + λμ μλ + κ³μ μ§ν (침묡 κΈμ§) |
| μλ£ λ³΄κ³ μ λͺ¨λ 체ν¬λ¦¬μ€νΈ ν΅κ³Ό | μλ£ λͺ» ν 체ν¬λ¦¬μ€νΈλ νλμ μ΄μ λ¨κΈ°κ³ λ€μ λΈλ‘μ»€λ‘ μ΄μ |
μΌκ·Όλͺ¨λμμλ μ¬μ ν κΈμ§λλ κ² (μμ κ°λ)
λ€μμ μΌκ·Όλͺ¨λμμλ λ°λμ μ μ νμΈ μμ΄ μ€ν κΈμ§:
git push --forceνΉν main/mastergit reset --hardκ³΅κ° λΈλμΉrm -rfλλ μμ - DB drop / truncate / migration down
- production deploy / release
- μΈλΆ μλΉμ€ κ²°μ /κ³ΌκΈ νΈλ¦¬κ±°
- 3rd party λΉκ³΅κ° μλ£ μ λ‘λ
μΌκ·Όλͺ¨λλ μμ¨μ± νμ₯μ΄μ§ μμ κ°λ ν΄μ κ° μλλ€. μ μμ μ μ μ κ° μλλΌλ λμ½μ λΈλ‘μ»€λ‘ λ¨κΈ°κ³ λ€μ μμ μΌλ‘ λμ΄κ°λ€.
λΈλ‘컀 λ°μ μ
- λΈλ‘컀 λ΄μ©μ νλ νμΌ μ²΄ν¬λ¦¬μ€νΈμ
- [ ] (BLOCKED) <μ΄μ >λ‘ κΈ°λ‘ - λμ€μ½λμ ν μ€ λ³΄κ³ (λ΅λ³ κΈ°λνμ§ λ§ κ²)
- λ€μ λΈλ‘μ»€λ‘ μ§ν
- μμΉ¨μ μ μ λ³΅κ· μ λΈλ‘컀 μ 체λ₯Ό μμ½ λ³΄κ³
μμΉ¨ λ³΅κ· μ μνν 루ν΄
μ μ μ 첫 λ©μμ§κ° κ°μ§λλ©΄ μλμΌλ‘:
- μΌκ·Όλͺ¨λ λμ μλ£λ μμ μμ½ (plan κΈ°μ€)
- λΈλ‘컀 리μ€νΈ
- μ μ κ° κ²°μ ν΄μ€ μ¬ν 리μ€νΈ
- λμ€μ½λμ 보κ³
μΌκ·Όλͺ¨λ OFF
- μ¬λμ:
/kuma:overnight-off(λ³λ μ€ν¬) - μμ°μ΄: "μΌκ·Όλͺ¨λ λκΈ°", "μΌκ·Ό λͺ¨λ μ’ λ£", "overnight off"
- API:
POST /studio/nightmode {"enabled": false}β flag νμΌ μμ
Related
- kuma-studio GUI μ€νΌμ€ μ€μ ν¨λ β μΌκ·Όλͺ¨λ ν κΈ
packages/server/src/studio/nightmode-store.mjsβ flag νμΌ storepackages/server/src/studio/studio-routes.mjs644-677 β/studio/nightmodeGET/POST~/.kuma/runtime/nightmode.flagβ νμ±ν μν flag νμΌ