ํฌ๋ก ์„ watcher/builder/maintainer๋กœ ๋ถ„์‚ฐํ•˜๋ฉด ํ† ํฐ ๋ณ‘๋ชฉ์€ ์ค„๊ณ , ํ’ˆ์งˆ์€ ๊ณตํ†ต ์ง€์นจ(quality contract)์œผ๋กœ ๊ฐ™์€ ์ˆ˜์ค€์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€œ์š”์ฆ˜ ์™œ ์ด๋ ‡๊ฒŒ ๋ฐ”์œ๋ฐ๋„ ์ฒด๊ฐ์ด ์•ˆ ๋‚˜์ง€?โ€๋ผ๋Š” ์งˆ๋ฌธ์ด ์ƒ๊ธฐ๋ฉด, ๋Œ€๋ถ€๋ถ„์€ ์‚ฌ๋žŒ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ํฌ๋ก  ๊ตฌ์กฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ ์šด์˜ ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด, ๊ณ ๋นˆ๋„ ์žก 1๊ฐœ(๊ต์œก์š”์ฒญ ๋ฉ”์ผ ์•Œ๋ฆผ)๊ฐ€ 24์‹œ๊ฐ„ 48ํšŒ ์‹คํ–‰ + ์•ฝ 97๋งŒ ํ† ํฐ์„ ์‚ฌ์šฉํ–ˆ๊ณ , ๋ฉ”์ธ ์—์ด์ „ํŠธ ์ง‘์ค‘ ๊ตฌ์กฐ์—์„œ๋Š” ์ด ๋ถ€ํ•˜๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ˆ„์ ๋์Šต๋‹ˆ๋‹ค.

20ํŽธ์ด โ€œ์šด์˜ ์›์น™โ€์„ ์„ค๋ช…ํ–ˆ๋‹ค๋ฉด, ์ด ๋ฌธ์„œ๋Š” ๊ทธ ์›์น™์„ ์‹ค์ œ ํฌ๋ก  ์šด์˜์— ์ ์šฉํ•œ ์ง„ํ™”ํŒ ์‹คํ–‰ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

์•ˆ๋‚ด: ๋ณธ๋ฌธ์€ ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ž‘์„ฑยท์ •๋ฆฌํ–ˆ์œผ๋ฉฐ, ์‹ค์ œ ์ ์šฉ ๋กœ๊ทธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ์ธ์‹: ์™œ 25ํŽธ์ด ํ•„์š”ํ–ˆ๋‚˜

  • ๋ฉ”์ธ ์—์ด์ „ํŠธ์— ํฌ๋ก ์ด ๋ชฐ๋ฆฌ๋ฉด, ์‚ฌ์šฉ์ž ์ง์ ‘ ์š”์ฒญ๊ณผ ์ •๊ธฐ ์žก์ด ๊ฐ™์€ ์ž์›์„ ๊ฒฝ์Ÿํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ ๋นˆ๋„ ๊ฐ์‹œ ์žก์€ no-op ์‘๋‹ต๋งŒ์œผ๋กœ๋„ ํ† ํฐ์ด ํฌ๊ฒŒ ์ƒˆ๊ณ , ์ค‘์š”ํ•œ ์ž‘์—… ์‘๋‹ต ์ฒด๊ฐ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.
  • ๋ถ„์‚ฐ๋งŒ ํ•˜๋ฉด ํ•ด๊ฒฐ๋  ๊ฒƒ ๊ฐ™์ง€๋งŒ, ํ’ˆ์งˆ ์ง€์นจ์ด ์—†์œผ๋ฉด ์—์ด์ „ํŠธ๋งˆ๋‹ค ๊ฒฐ๊ณผ๋ฌผ์ด ํ”๋“ค๋ฆฝ๋‹ˆ๋‹ค.
flowchart LR
A[๋ฉ”์ธ ์—์ด์ „ํŠธ ๊ณผ๋ถ€ํ•˜] --> B[์ž‘์—… ์„ฑ๊ฒฉ ๋ถ„ํ•ด]
B --> C[Watcher ๋ถ„์‚ฐ]
B --> D[Builder ๋ถ„์‚ฐ]
B --> E[Maintainer ๋ถ„์‚ฐ]
C --> F[๊ณตํ†ต ํ’ˆ์งˆ์ง€์นจ]
D --> F
E --> F
F --> G[ํ† ํฐ ๋ณ‘๋ชฉ ์™„ํ™” + ํ’ˆ์งˆ ๋™๋“ฑ์„ฑ]

ํ•ต์‹ฌ ์š”์•ฝ

  • ๋ถ„์‚ฐ ํฌ์ธํŠธ๋Š” โ€œ์‚ฌ๋žŒ ์ˆ˜โ€๊ฐ€ ์•„๋‹ˆ๋ผ ์—…๋ฌด ์„ฑ๊ฒฉ ๋ถ„๋ฆฌ๋‹ค.
  • ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ์—์ด์ „ํŠธ๋งˆ๋‹ค ๋ฌธ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋™์ผ ํ’ˆ์งˆ ๊ณ„์•ฝ์„œ๋ฅผ ๊น”์•„์•ผ ํ•œ๋‹ค.
  • ์šด์˜ ์„ฑ๊ณต ๊ธฐ์ค€์€ โ€œ์žก์ด ๋งŽ์ด ๋ˆ๋‹คโ€๊ฐ€ ์•„๋‹ˆ๋ผ ์‹คํŒจ์œจ/ํ† ํฐ/ํ’ˆ์งˆ 3์ถ•์œผ๋กœ ๋ด์•ผ ํ•œ๋‹ค.

๐Ÿง  ์น ํŒ ์น˜ํŠธ์‹œํŠธ

  • ๋ฉ”์ธ์€ ์ตœ์ข… ์˜์‚ฌ๊ฒฐ์ •, ํฌ๋ก ์€ ์—ญํ• ๋ณ„ ์„œ๋ธŒ์—์ด์ „ํŠธ๋กœ ๋ถ„์‚ฐ
  • watcher: ๊ฐ์‹œ/์ˆ˜์ง‘, builder: ์ƒ์„ฑ/์ดˆ์•ˆ, maintainer: ์ •๋ฆฌ/์ ๊ฒ€
  • ํ’ˆ์งˆ์€ AGENTS/SOUL/USER/TOOLS/MEMORY ๊ณตํ†ต ๊ตฌ์กฐ๋กœ ๊ณ ์ •
  • ์„ฑ๋Šฅ ํ‰๊ฐ€๋Š” ํ† ํฐยท์‹คํŒจ์œจยทํ’ˆ์งˆ๋™๋“ฑ์„ฑ 3๊ฐœ๋กœ ๊ด€๋ฆฌ

์šฉ์–ด/๋น„์œ  ์„ค๋ช…

  • Watcher: ์„ผ์„œ(์ด์ƒ ๊ฐ์ง€/์‹ ๊ทœ ์ด๋ฒคํŠธ ๊ฐ์‹œ)
  • Builder: ์ œ์ž‘ํŒ€(์ฝ˜ํ…์ธ /์ดˆ์•ˆ ์ƒ์„ฑ)
  • Maintainer: ์šด์˜ํŒ€(์ •๋ฆฌ/๊ฒ€์ฆ/๋ฃจํ‹ด ์œ ์ง€)

๋น„์œ ํ•˜๋ฉด, ํ•œ ๋ช…์ด ๊ฐ์‹œยท์ œ์ž‘ยท์ฒญ์†Œ๋ฅผ ๋™์‹œ์— ํ•˜๋˜ ๊ตฌ์กฐ๋ฅผ ๊ด€์ œ์‹ค + ์ œ์ž‘์‹ค + ์šด์˜์‹ค๋กœ ๋‚˜๋ˆˆ ๊ฒ๋‹ˆ๋‹ค.

์‹ค์ „ ์ ์šฉ 5๋‹จ๊ณ„

1) ์žก์„ ์—…๋ฌด ์„ฑ๊ฒฉ์œผ๋กœ ๋ถ„๋ฅ˜

  • ์™œ ํ•„์š”ํ•œ๊ฐ€: ๋นˆ๋„ ๊ธฐ์ค€์œผ๋กœ๋งŒ ๋‚˜๋ˆ„๋ฉด ๋ณ‘๋ชฉ์ด ๊ทธ๋Œ€๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ „ ์ ์šฉ:
    • ๊ฐ์‹œ์„ฑ(๊ณ ๋นˆ๋„): watcher
    • ์ƒ์„ฑ์„ฑ(์ค‘~๊ณ ํ† ํฐ): builder
    • ์ ๊ฒ€์„ฑ(์ •๊ธฐ): maintainer
  • ์‹คํŒจ ์‹ ํ˜ธ: ๋ถ„์‚ฐํ–ˆ๋Š”๋ฐ๋„ ๋ฉ”์ธ ํ† ํฐ์ด ๊ณ„์† ๊ธ‰์ฆ
  • 10์ดˆ ์ฒดํฌ: โ€œ์ด ์žก์€ ๊ฐ์‹œ/์ƒ์„ฑ/์ ๊ฒ€ ์ค‘ ๋ฌด์—‡์ธ๊ฐ€?โ€
  • ์ฐธ๊ณ : https://docs.openclaw.ai/cli/cron

2) ํ’ˆ์งˆ ๋™๋“ฑ์„ฑ ๊ณ„์•ฝ์„œ(๊ณตํ†ต ์ง€์นจ) ๋ฐฐํฌ

  • ์™œ ํ•„์š”ํ•œ๊ฐ€: ๋ถ„์‚ฐํ•˜๋ฉด ์Šคํƒ€์ผ/์™„์„ฑ๋„ ํŽธ์ฐจ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ „ ์ ์šฉ:
    • ๊ฐ ์›Œํฌ์ŠคํŽ˜์ด์Šค์— AGENTS.md, SOUL.md, USER.md, TOOLS.md, MEMORY.md ๊ณตํ†ต ๋ฐฐ์น˜
    • AGENTS.md์— Quality Contract(๋ชฉํ‘œ ์ž ๊ธˆ/๊ทผ๊ฑฐ/์žฌํ˜„์„ฑ/์•ˆ์ „/ํ’ˆ์งˆ๊ฒŒ์ดํŠธ/์ข…๊ฒฐ) ๋ช…์‹œ
  • ์‹คํŒจ ์‹ ํ˜ธ: ์—์ด์ „ํŠธ๋ณ„ ๊ฒฐ๊ณผ ํ†ค/๊ตฌ์กฐ๊ฐ€ ๋“ค์ญ‰๋‚ ์ญ‰ํ•จ
  • 10์ดˆ ์ฒดํฌ: โ€œ์„ธ ์—์ด์ „ํŠธ ๋ชจ๋‘ ๊ฐ™์€ ํ’ˆ์งˆ ๊ทœ์น™ ํŒŒ์ผ์„ ๊ฐ–๊ณ  ์žˆ๋Š”๊ฐ€?โ€
  • ์ฐธ๊ณ : https://docs.openclaw.ai/cli/agents

3) cron job์„ agent ๋‹จ์œ„๋กœ ์žฌ๋ฐฐ์ •

  • ์™œ ํ•„์š”ํ•œ๊ฐ€: session=isolated๋งŒ์œผ๋กœ๋Š” ๋ฉ”์ธ ์˜์‚ฌ๊ฒฐ์ • ๊ฒฝํ•ฉ์ด ๋‚จ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ „ ์ ์šฉ:
    • openclaw cron edit <id> --agent cron-watcher
    • openclaw cron edit <id> --agent cron-builder
    • openclaw cron edit <id> --agent cron-maintainer
  • ์‹คํŒจ ์‹ ํ˜ธ: ์žก์€ ๋ถ„์‚ฐ๋๋Š”๋ฐ ํŠน์ • ์—์ด์ „ํŠธ์— ๋‹ค์‹œ ๊ณผ๋ถ€ํ•˜ ์ง‘์ค‘
  • 10์ดˆ ์ฒดํฌ: jobs.json์—์„œ ์žก๋ณ„ agentId๊ฐ€ ์—ญํ• ๊ณผ ๋งž๋Š”๊ฐ€?
  • ์ฐธ๊ณ : https://docs.openclaw.ai/cli/cron

4) ๊ณ ๋นˆ๋„ ์žก์€ NO_REPLY + ๋ณ€ํ™”๊ธฐ๋ฐ˜ ๋ณด๊ณ ๋กœ ์ถ•์†Œ

  • ์™œ ํ•„์š”ํ•œ๊ฐ€: ๊ณ ๋นˆ๋„ ์žก์€ โ€œ๋ณ€ํ™” ์—†์Œโ€ ์‘๋‹ต์ด ๋ˆ„์ ๋˜๋ฉด ํ† ํฐ์ด ์ƒˆ์–ด ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.
  • ์‹ค์ „ ์ ์šฉ:
    • no-op์€ NO_REPLY ๊ณ ์ •
    • ์‹ ๊ทœ ์ด๋ฒคํŠธ/์—๋Ÿฌ/์ž„๊ณ„์น˜ ์ดˆ๊ณผ์—๋งŒ ๋ณด๊ณ 
  • ์‹คํŒจ ์‹ ํ˜ธ: ์•Œ๋ฆผ์€ ๋งŽ์€๋ฐ ์‹ค์งˆ ์•ก์…˜์€ ๊ฑฐ์˜ ์—†์Œ
  • 10์ดˆ ์ฒดํฌ: ์ตœ๊ทผ 24h ๋ณด๊ณ  ์ค‘ โ€œ์˜์‚ฌ๊ฒฐ์ •์ด ํ•„์š”ํ•œ ๋ณด๊ณ โ€ ๋น„์œจ์ด ๋†’์€๊ฐ€?

5) D+1 ๋น„๊ต ๋ฆฌํฌํŠธ๋กœ ๊ณ ์ •

  • ์™œ ํ•„์š”ํ•œ๊ฐ€: ๋ถ„์‚ฐ ์งํ›„ ์ฒด๊ฐ๋งŒ์œผ๋กœ๋Š” ๊ฐœ์„  ํŒ๋‹จ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ „ ์ ์šฉ:
    • ๋ถ„์‚ฐ ์ „/ํ›„ ๋น„๊ต: ํ† ํฐ ์ด๋Ÿ‰, ์—๋Ÿฌ์œจ, ์‚ฐ์ถœ๋ฌผ ํ’ˆ์งˆ(์ฒดํฌ๋ฆฌ์ŠคํŠธ ํ†ต๊ณผ์œจ)
    • ๋ณ‘๋ชฉ ์žก 1๊ฐœ๋ฅผ ์šฐ์„  ์žฌํŠœ๋‹
  • ์‹คํŒจ ์‹ ํ˜ธ: ๋ถ„์‚ฐํ–ˆ์ง€๋งŒ ๊ฐœ์„  ์ˆ˜์น˜๊ฐ€ ์—†์Œ
  • 10์ดˆ ์ฒดํฌ: โ€œ์ „/ํ›„ ํ‘œ 1์žฅโ€์ด ์žˆ๋Š”๊ฐ€?

์ด ๊ตฌ์กฐ๊ฐ€ 20ํŽธ์˜ ์ง„ํ™”ํŒ์ธ ์ด์œ 

  • 20ํŽธ: ์›์น™(์šด์˜ ์‹œ์Šคํ…œ์œผ๋กœ ์จ๋ผ)
  • 25ํŽธ: ์‹คํ–‰(์žก์„ ์—ญํ• ๋ณ„๋กœ ์ชผ๊ฐœ๊ณ  ํ’ˆ์งˆ ๊ณ„์•ฝ์„œ๊นŒ์ง€ ๋™๊ธฐํ™”)

์ฆ‰, โ€œ์ข‹์€ ์ฒ ํ•™โ€์—์„œ ๋๋‚˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์šด์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‹ค์ œ๋กœ ๋ฐ”๊พผ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

์šด์˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ (๋ณต๋ถ™์šฉ)

  • watcher / builder / maintainer ์—ญํ•  ์ •์˜ ์™„๋ฃŒ
  • ๊ฐ ์—์ด์ „ํŠธ ๊ณตํ†ต ํ’ˆ์งˆ ์ง€์นจ ํŒŒ์ผ ๋ฐฐํฌ ์™„๋ฃŒ
  • ํ™œ์„ฑ ํฌ๋ก ์˜ agentId ์žฌ๋ฐฐ์ • ์™„๋ฃŒ
  • ๊ณ ๋นˆ๋„ ์žก ๋ณ€ํ™”๊ธฐ๋ฐ˜ ๋ณด๊ณ  ๊ทœ์น™ ์ ์šฉ
  • D+1 ์„ฑ๋Šฅยทํ’ˆ์งˆ ๋น„๊ต ๋ฆฌํฌํŠธ ์ž‘์„ฑ

2026-03 ์šด์˜ ์—…๋ฐ์ดํŠธ: ๋ˆ„๋ฝ ์žฌ๋ฐœ ๋ฐฉ์ง€ ๋ฐ˜์˜

์ตœ๊ทผ ์‹ค์ œ ์žฅ์• ๋ฅผ ํ†ตํ•ด, โ€œํฌ๋ก ์ด ๋ˆ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๋ฐ ์‹ค์€ ํ•ต์‹ฌ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•ˆ ๋ˆ๋‹คโ€๋Š” ์œ ํ˜•์„ ์šด์˜ ๋ฆฌ์Šคํฌ 1์ˆœ์œ„๋กœ ์žฌ๋ถ„๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์šด์˜ ์ž์ฒด๋Š” ๋งž์•˜์ง€๋งŒ, ๊ฒฝ๋กœ ๋“œ๋ฆฌํ”„ํŠธ์™€ ์™ธ๋ถ€ crontab ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์‹คํŒจ๋ฅผ ๊ฐ™์ด ์žก์•„์•ผ ๋ˆ„๋ฝ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

1) ์šด์˜ ์˜ค๋„ˆ๋ฅผ cron-maintainer๋กœ ๊ณ ์ •

๊ธฐ์กด์—๋Š” watcher/builder/maintainer๊ฐ€ ๊ฐ์ž ์ž˜ ๋Œ๋ฉด ๋œ๋‹ค๋Š” ๊ด€์ ์ด ๊ฐ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ cron-maintainer๋ฅผ ์šด์˜ ์˜ค๋„ˆ๋กœ ๋‘๊ณ , ์ƒํƒœ๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ํ•œ ๋ฒˆ ๋” ๋ชจ์•„ ๊ณต์œ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ผ๋ฆฌ ๋ธŒ๋ฆฌํ•‘: ๐Ÿงญ ์šด์˜์˜ค๋„ˆ ๋ฐ์ผ๋ฆฌ ๋ธŒ๋ฆฌํ•‘ (09:30/14:30/20:30)
  • ์ฃผ๊ฐ„ ์—…๊ทธ๋ ˆ์ด๋“œ: ๐Ÿ›  ์šด์˜์˜ค๋„ˆ ์ฃผ๊ฐ„ ์—…๊ทธ๋ ˆ์ด๋“œ (์›” 09:40)

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด โ€œ๊ฐœ๋ณ„ ์žก ์ •์ƒโ€์ด ์•„๋‹ˆ๋ผ โ€œ์ „์ฒด ์šด์˜ ์ •์ƒโ€์„ ๊ธฐ์ค€์œผ๋กœ ์˜์‚ฌ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2) ๊ฒฝ๋กœ ๋“œ๋ฆฌํ”„ํŠธ ์ „์šฉ ๊ฐ€๋“œ ์ถ”๊ฐ€

์‹ค์ œ ๋ˆ„๋ฝ ์›์ธ์€ watcher ์žก์ด ์˜› ๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•œ ์ƒํƒœ์—์„œ, run status๋Š” ok๋กœ ์ฐํžˆ๋Š” ์˜ค์ธ ํŒจํ„ด์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด cron_payload_path_guard.py๋ฅผ ์ถ”๊ฐ€ํ•ด, payload ๊ฒฝ๋กœ ์กด์žฌ ์—ฌ๋ถ€์™€ hidden path error๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ ๊ฒ€ํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€๋“œ ์žก: ๐Ÿ›ก๏ธ Cron ๊ฒฝ๋กœ ๊ฐ€๋“œ (3์‹œ๊ฐ„ ์ฃผ๊ธฐ)
  • ์—ญํ• : ๊ฒฝ๋กœ ๋ˆ„๋ฝ ๊ฐ์ง€ + โ€œok์ธ๋ฐ ์‹ค์€ ๊ฒฝ๋กœ ์—๋Ÿฌโ€ ํŒจํ„ด ํƒ์ง€

3) YouTube watcher 3์ข… ํ•˜๋“œ๋‹

Maker Evan / Science ADAM / Code Factory watcher๋Š” ์•„๋ž˜ ๊ทœ์น™์œผ๋กœ ๋ณด๊ฐ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • payload ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ํ”„๋กœ์ ํŠธ ๊ธฐ์ค€ ๊ฒฝ๋กœ๋กœ ํ†ต์ผ
  • STATE_PATH๋ฅผ ์ ˆ๋Œ€๊ฒฝ๋กœ์—์„œ Path(__file__).with_name(...)์œผ๋กœ ์ „ํ™˜
  • ์ƒˆ ์˜์ƒ์ด ์—†์–ด๋„ last_poll_at ๊ฐฑ์‹ (์ ๊ฒ€ ์‹คํ–‰ ์—ฌ๋ถ€ ์ถ”์ )
  • delivery๋ฅผ announce๋กœ ๊ณ ์ •ํ•ด ์‹คํŒจ ์‹œ ์ฆ‰์‹œ ์•Œ๋ฆผ

๋ฏธ๋‹ˆ ์‚ฌ๋ก€:

  • Before: ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ด๋™ ํ›„ ์˜› ๊ฒฝ๋กœ๋ฅผ ๊ณ„์† ์ฐธ์กฐํ•ด ๋ˆ„๋ฝ ๋ฐœ์ƒ
  • After: ๊ฒฝ๋กœ ๊ฐ€๋“œ + ์ƒ๋Œ€ state ๊ฒฝ๋กœ + poll ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์‹คํ–‰/๊ฐ์ง€ ์‹ ๋ขฐ์„ฑ ํ™•๋ณด

4) ์™ธ๋ถ€ crontab(์ •๋ถ€์ง€์›)๊นŒ์ง€ ๋™์ผ ๊ธฐ์ค€ ์ ์šฉ

์ •๋ถ€์ง€์› ์ž‘์—…์€ OpenClaw cron์ด ์•„๋‹ˆ๋ผ OS crontab์œผ๋กœ ๋Œ๊ณ  ์žˆ์–ด, ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋กœ๊ทธ ๊ฒฝ๋กœ๊ฐ€ ์—†์œผ๋ฉด ๋ช…๋ น์ด ์‹œ์ž‘๋„ ๋ชป ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ ์šฉํ•œ ๋ณด๊ฐ•:

  • crontab ๋ผ์ธ์— mkdir -p logs ์„ ํ–‰
  • ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ์— flock(์ค‘๋ณต์‹คํ–‰ ๋ฐฉ์ง€), timeout(์žฅ๊ธฐ ๋ฉˆ์ถค ๋ฐฉ์ง€), START/DONE/ERROR ๋กœ๊ทธ ์ถ”๊ฐ€

๋ฏธ๋‹ˆ ์‚ฌ๋ก€:

  • Before: logs/cron.log ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ถ€์žฌ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์‹คํŒจ โ†’ ์‹คํ–‰ ๋ˆ„๋ฝ
  • After: ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณด์žฅ + ํƒ€์ž„์•„์›ƒ + ๋ฝ์œผ๋กœ ์‹คํ–‰ ๊ฐ€์‹œ์„ฑ๊ณผ ์•ˆ์ •์„ฑ ํ™•๋ณด

5) ๋ณ€๊ฒฝ ์งํ›„ 15๋ถ„ ๊ฒ€์ฆ ๋ฃจํ‹ด(๊ณ ์ •)

  • 5๋ถ„: ๋ณ€๊ฒฝํ•œ ์žก 1ํšŒ ๊ฐ•์ œ ์‹คํ–‰ (openclaw cron run <id>)
  • 5๋ถ„: openclaw cron runs --id <id> --limit 1๋กœ summary/error ํ™•์ธ
  • 5๋ถ„: state ํŒŒ์ผ์˜ last_poll_at/last_seen_at ๋˜๋Š” ๋กœ๊ทธ ํƒ€์ž„์Šคํƒฌํ”„ ํ™•์ธ

์ด ๋ฃจํ‹ด์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฉด โ€œ๋ฐฐํฌ ์™„๋ฃŒโ€๋กœ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ :

๋‹ค์Œ ์ฝ๊ธฐ