무거운 HTML 대시보드에서 가벼운 Raycast 로 : 오픈클로 진행상황 대쉬보드 업그레이드버젼

1) 소개

안녕하세요 열심히 오픈클로 쓰고 있긴 한데
아직 마음대로 안되는게 많네요
특히 진행상태를 알 기 힘들다는게 좀 그렇습니다
그래서 이번에는 html대쉬보드가 아니라 레이캐스트를 붙여서 해결해보려고 했습니다

  1. 진행상태가 안 보인다

  2. 왜 늦는지 파악이 어렵다

  3. 후속조치가 불명확하다

기존에는 HTML 대시보드로 상태를 확인했지만 화면이 비교적 무겁고 진입 동선이 길어, 빠르게 확인→판단→조치로 이어가기 어려웠습니다.

  • 단축키 1회로 즉시 진입 (접근 시간 최소화)

  • 초저마찰 UX로 반복 점검 비용 감소

  • 상태 확인 화면에서 바로 액션으로 전환 (재시도/재할당/우선순위 조정)

즉, Raycast를 선택한 이유는 가볍고, 빠르게, 끊김 없이 확인하고 바로 행동할 수 있기 때문입니다.


2) 진행 방법

구성은 Raycast Script Command + shell(jq/awk) + OpenClaw 이벤트 로그(JSONL) 입니다.
한 화면에서 아래 3개 질문에 답하도록 출력 구조를 고정한 것입니다.

  • why delayed: 왜 지연됐는가 (stale/lag 근거)

  • doing now: 지금 무엇을 하는가 (Main step + Sub status)

  • follow-up: 다음에 무엇을 해야 하는가 (1줄 액션)
    또한 단축키를 통해 이 스크립트를 단번에 실행하고 볼 수 있게 하였습니다

코드 전문

#!/usr/bin/env bash
# main-sub-live-progress.sh
LOG_FILE="$HOME/.openclaw/runtime/events.jsonl"
NOW=$(date +%s)

main_pct=$(tail -n 300 "$LOG_FILE" | jq -r 'select(.agent=="main" and .progress!=null) | .progress' | tail -n 1)
main_step=$(tail -n 300 "$LOG_FILE" | jq -r 'select(.agent=="main" and .step!=null) | .step' | tail -n 1)

echo "== Main Live Progress =="
echo "progress: ${main_pct:-0}%"
echo "step: ${main_step:-unknown}"
echo

echo "== Subagent Live Progress =="
tail -n 800 "$LOG_FILE" | jq -r '
  select(.agent=="sub") |
  [.id, .status, .ts] | @tsv' \
| awk -v now="$NOW" '
{
  lag=now-$3;
  state=$2;
  if (lag>120 && state!="done") state="stale";
  printf "- %s | %s | last=%ss ago\n", $1, state, lag;
}'
#!/usr/bin/env bash
# quota-summary.sh
Q="$HOME/.openclaw/runtime/quota.json"
used=$(jq -r '.used' "$Q")
limit=$(jq -r '.limit' "$Q")
pct=$(awk -v u="$used" -v l="$limit" 'BEGIN{printf "%.1f", (u/l)*100}')
echo "== Quota =="
echo "used: $used / $limit (${pct}%)"

스크린샷

텍스트 상자를 보여주는 컴퓨터 화면의 스크린샷

3) 결과와 배운 점

결과
기존 HTML 대시보드 중심의 무거운 확인 흐름이, Raycast 단축키 진입 한 번으로 가벼워졌습니다.
또한 궁금해하던 3가지를 같은 화면에서 확인할 수 있게 됐습니다.

  • 왜 늦는지(why delayed): stale/lag로 근거 확인

  • 지금 뭐 하는지(doing now): Main step + Sub 상태

  • 다음에 뭘 할지(follow-up): Next Action 1줄

트레이드오프(한계)

  • 진행률 퍼센트는 추정치라 실제 체감과 어긋날 수 있음

  • ACTIVE-TASK와 이벤트 로그 간 동기화가 어긋나면 현재 작업 표기가 틀릴 수 있음

  • stale은 “멈춤”이 아니라 “신호 없음”이라, false stale 처리 규칙(재확인/예외)이 필요함

앞으로의 계획

  • source-of-truth를 active/session/merged로 노출해 상태 근거를 명확화

  • ACTIVE-TASK 원자적 쓰기(tmp → fsync → rename) 적용으로 읽기 레이스 축소

  • sub 완료 신호(run_id/세션키)와 main 완료 승급 조건을 더 강하게 결합

레이캐스트를 연계해서 할 수 있다는 사실을 깨닫게 된것만해도 도움이 많이 될거같습니다
차후에 더 많은 인사이트를 들고 오겠습니다
감사합니다

2
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요