Community생산성 & 협업github.com

zacmoltbot/openclaw-skill-long-task-control

장기 실행 다단계 작업 제어, 체크포인팅 및 검증 가능한 진행 보고를 위한 AgentSkill입니다.

openclaw-skill-long-task-control란 무엇인가요?

이 스킬은 다단계 장기 실행 작업의 제어, 체크포인팅 및 검증 가능한 진행 보고를 위해 설계되었습니다. 주요 혁신은 아키텍처를 `관찰된 진실`, `파생된 상태`, `제어 동작`의 세 가지 명확한 계층으로 분리하는 것입니다. `관찰된 진실` 계층은 실행자, 소유자 및 외부 관찰로부터 원시 데이터를 수집하고, `파생된 상태` 계층은 이 데이터에서 결정론적 투영을 계산합니다. `제어 동작` 계층은 이 파생된 상태를 기반으로 모니터 알림, 소유자 중재 또는 작업 중단과 같은 조치를 취합니다. 이 스킬은 `STARTED`, `STEP_PROGRESS`, `TASK_COMPLETED`, `BLOCKED_CONFIRMED` 등과 같은 명확한 이벤트 모델을 사용하며, 이전 모델의 모호한 `CHECKPOINT` 이벤트를 대체합니다. `task_ledger.py`와 `monitor_nudge.py` 스크립트를 통해 CLI에서 사용할 수 있으며, 모니터는 물질적 진행 델타를 기준으로 개입하여 작업이 장기간 활성 상태로 유지되더라도 실제 진행이 있을 경우 중단되지 않도록 합니다. 또한 소유자 재개는 직접 상태를 덮어쓰지 않고 관찰된 진실을 먼저 보충하도록 요구하여 일관성을 보장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add zacmoltbot/openclaw-skill-long-task-control

Installed? Explore more 생산성 & 협업 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

장기 작업 제어 (Long Task Control)

이 버전의 핵심은 또 다른 모니터를 추가하는 것이 아니라, 아키텍처를 깔끔하게 분리하는 것입니다:

  1. 관찰된 진실 (Observed Truth): 소유자 / 실행자 / 외부 관찰이 진실을 되채움
  2. 파생된 상태 (Derived State): 스크립트가 진실로부터 결정론적 투영을 수행
  3. 제어 동작 (Control Actions): 모니터 / 소유자 / 사용자 대상 전달이 파생된 상태에 따라 동작 수행

기본 규칙 (Root rule)

  • 관찰된 진실이 없으면 OK를 판정하지 않음
  • STEP_PROGRESS는 STEP_COMPLETED와 같지 않음
  • TASK_COMPLETED는 완료 진실에 의해서만 구동됨
  • 모니터는 모순된 필드로 '에이전트가 아직 작업 중 / 외부 대기 중'을 추측하지 않음

이벤트 모델 (Event model)

다음 이벤트를 사용하며, 더 이상 CHECKPOINT를 혼용하지 않음:

  • STARTED
  • STEP_PROGRESS
  • STEP_COMPLETED
  • TASK_COMPLETED
  • BLOCKED_CONFIRMED
  • OWNER_RESUMED
  • OWNER_REPLY_RECORDED
  • EXTERNAL_OBSERVED
  • DOWNLOAD_OBSERVED
  • HEARTBEAT

아키텍처 요약 (Architecture summary)

관찰된 진실 (Observed truth)

소유자 / 실행자 / 외부 관찰이 되채움:

  • observations[]
  • observed.steps.*
  • observed.task_completion
  • observed.block
  • observed.owner
  • observed.external_jobs
  • observed.downloads

파생된 상태 (Derived state)

task_ledger.py project_task() / monitor_nudge.py가 유도:

  • derived.workflow
  • derived.current_step
  • derived.step_states
  • derived.pending_external
  • derived.truth_state
  • derived.inconsistencies

제어 동작 (Control actions)

  • TRUTH_INCONSISTENT
  • OWNER_RECONCILE
  • NUDGE_MAIN_AGENT
  • BLOCKED_ESCALATE
  • STOP_AND_DELETE

모니터 우선순위 (Monitor precedence)

  1. 터미널 → STOP_AND_DELETE
  2. 진실 불일치 / 의심스러운 외부 주장 → TRUTH_INCONSISTENT 또는 OWNER_RECONCILE
  3. 차단 확인됨 → 재시도 우선 확인 → BLOCKED_ESCALATE
  4. 물질적 진행 델타 없음 / 하트비트 → NUDGE_MAIN_AGENT / STALE_PROGRESS / HEARTBEAT_DUE
  5. 그 다음에만 OK

진행 기반 감독 계약 (Progress-based supervision contract)

  • LTC는 벽시계 작업 TTL이 아닙니다. '20분이 지나면 작업을 중단'하는 것이 아닙니다.
  • 모니터는 장시간 물질적 진행 델타가 없을 때만 개입합니다.
  • 진행 델타는 다음에서 올 수 있습니다:
    • 새로운 STEP_PROGRESS / STEP_COMPLETED / TASK_COMPLETED
    • 새로운 아티팩트 / 다운로드 관찰
    • 외부/프로바이더 작업 상태 변경
    • 실행자 상태의 성공적인 하트비트 (예: executor_health.last_success_at)
  • 장기 작업이 이러한 진행 신호를 계속 생성하는 한, 몇 시간이 걸리더라도 손절매 대상이 되어서는 안 됩니다.
  • timeout_sec / nudge_after_sec는 이 버전에서 진행 유휴 임계값을 의미하며, 하드 킬 데드라인이 아닙니다.

소유자 재개 계약 (Owner-resume contract)

모니터가 sessions_send를 통해 소유자에게 요청하는 사항:

  • 먼저 관찰
  • 실제 데이터 보충
  • 그런 다음 재개 / 완료 / 차단

반쯤 완성된 상태를 직접 작성하여 결정론적 투영과 충돌하지 않도록 합니다.

재시도 우선 계약 (Retry-first contract)

DOWNLOAD_TIMEOUT / DOWNLOAD_INCOMPLETE / TRANSIENT_NETWORK / EXECUTION_ERROR / EXTERNAL_WAIT 반드시 먼저 관찰된 진실에서 비롯되어야 하며, 그 후에야 모니터가 재시도 카운터를 사용하여 재시도 또는 에스컬레이션을 결정할 수 있습니다.

주요 명령어 (Primary commands)

python3 scripts/task_ledger.py --ledger state/long-task-ledger.json init <task_id> ...
python3 scripts/task_ledger.py --ledger state/long-task-ledger.json checkpoint <task_id> --event-type STEP_PROGRESS ...
python3 scripts/task_ledger.py --ledger state/long-task-ledger.json checkpoint <task_id> --event-type STEP_COMPLETED ...
python3 scripts/task_ledger.py --ledger state/long-task-ledger.json checkpoint <task_id> --event-type TASK_COMPLETED ...
python3 scripts/task_ledger.py --ledger state/long-task-ledger.json block <task_id> ...
python3 scripts/task_ledger.py --ledger state/long-task-ledger.json external-job <task_id> ...
python3 scripts/task_ledger.py --ledger state/long-task-ledger.json download-observed <task_id> ...
python3 scripts/task_ledger.py --ledger state/long-task-ledger.json owner-reply <task_id> --reply <A|B|C|D|E> ...
python3 scripts/monitor_nudge.py --ledger state/long-task-ledger.json --apply-supervision

참고 자료 (References)

  • references/task-ledger-spec.md
  • references/monitor-action-spec.md
  • scripts/task_ledger.py
  • scripts/monitor_nudge.py
  • scripts/openclaw_ops.py

이 버전이 존재하는 이유 (Why this version exists)

이전 버전은 결정론적 스크립트와 에이전트 판단을 혼합하여 다음과 같은 문제가 있었습니다:

  • CHECKPOINT가 진행 / 완료를 동시에 나타냄
  • 모니터가 불완전한 진실로 OK를 판정
  • 외부 대기 주장이 증거 없이 받아들여짐
  • 소유자 재개 후 작성된 상태가 스크립트 투영과 충돌

이 버전은 근본 원인을 분리하여 재작업했으며, 더 이상 이전의 혼합 모델을 패치하지 않습니다.

관련 스킬