Files
openclaw/MAINTENANCE.md
T
hyowons b4f510d1ad auto: 일일 백업 2026-09-11 02:00
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 02:00:03 +09:00

6.7 KiB

월간 점검 체크리스트 (코디)

매월 1일 헬스체크가 텔레그램으로 알린다. 관리자님이 코디 세션을 열고 "월간 점검 해줘"라고 하면 이 문서를 따른다.

여기 있는 건 전부 "스크립트로는 못 잡는 것"이다. 주기 잡이 죽었는지·결과가 stale 한지는 scripts/health_check.py 가 매일 본다(대상은 TASKS.md §4). 이 문서는 바깥이 변해서 우리 쪽이 조용히 어긋나는 종류만 다룬다 — 2026-09-10 점검에서 하드 실패는 0건인데 아래 유형이 4건 나왔다.

원칙: 점검은 조회만 한다. 고칠 게 나오면 관리자님께 보고하고 승인받은 것만 손댄다. 업그레이드·트리거 변경은 특히.


1. 모델 카탈로그 — deprecated·신규·단가

# 세 에이전트 라우팅 현황
for a in main stock budget; do echo "== $a"; ~/.local/bin/openclaw models list --agent $a | grep -E "default|fallback"; done

# 카탈로그의 status/replacedBy/cost (본체 업그레이드 때마다 바뀐다)
python3 -c "
import json
d=json.load(open('/opt/homebrew/lib/node_modules/openclaw/dist/extensions/openai/openclaw.plugin.json'))
for m in d['modelCatalog']['providers']['openai']['models']:
    c=m.get('cost',{})
    print(f\"{m['id']:22} {m.get('status','-'):11} →{m.get('replacedBy','-'):16} in {c.get('input','?')} / out {c.get('output','?')}\")"
  • deprecated 인데 쓰고 있는 모델이 있는지가 핵심. 2026-09-10 에 gpt-5.5(primary)·gpt-5.5-pro(fallback#3) 둘 다 deprecated 인 걸 뒤늦게 발견해 정리했다
  • ⚠️ 폴백 체인 전체가 과금 0 이어야 한다(관리자님 요구) — 현재 sol → terra → luna → openrouter/free. 새 모델을 폴백·allow 에 넣을 땐 구독(codex) 경로인지 실측한다: openclaw agent --model <id> -m ping 후 trajectory 의 modelApi 가 openai-chatgpt-responses 면 구독이다. 카탈로그의 정적 제외 규칙만 보고 판단하면 틀린다(gpt-5.4 는 카탈로그에 있는데 은퇴했고, terra·luna 는 제외 규칙에 걸리는데 실제로는 된다)
  • modelPolicy.allow 에 유료 모델이 없는지 확인한다 — 폴백 순서만으로는 수동 지정 과금을 못 막는다
  • 신규 모델이 보이면 단가·codex 카탈로그 포함 여부를 먼저 본다. gpt-6-astra 를 왜 안 쓰기로 했는지는 CLAUDE.md Key Configuration 참조(다시 검토하기 전에 그 세 근거부터 확인)

2. OpenClaw 본체 버전

~/.local/bin/openclaw --version && npm view openclaw version   # 현재 vs 최신
  • 올릴지 말지는 관리자님 결정. 올린다면 CLAUDE.md Runtime 의 함정 3종(node 24 필수 / npm 11 의 --allow-scripts / doctor 가 워크스페이스·cron 을 손댐)을 먼저 읽는다
  • ⚠️ 업그레이드 후엔 "무엇이 조용히 죽었는지" 반드시 확인한다. 2026.9.3 이 trajectory 를 파일에서 sqlite 로 옮겨 codex_fallback_monitor 가 예외 없이 '폴백 없음'만 반환하며 무력화됐다. 파일 경로·테이블·스키마에 의존하는 코드는 전부 재검증 대상

3. 외부 데이터 소스 생존

우리가 긁는 곳은 예고 없이 막힌다. 각 소스의 CLI 를 한 번씩 돌려 본다.

cd ~/.openclaw/agents/stock/workspace
python3 scripts/holiday_sync.py --show | head -5          # nager (investing 은 이미 403)
python3 scripts/fomc_calendar_sync.py --list | head -5     # federalreserve.gov
python3 scripts/fnguide_client.py 005930 | head -5         # FnGuide
python3 scripts/wisereport_client.py 005930 | head -5      # WISEreport
python3 ~/.openclaw/workspace/scripts/youtube_briefing_digest.py latest us
python3 ~/.openclaw/workspace/scripts/youtube_briefing_digest.py latest behive
  • ⚠️ "실패해도 조용한" 소스가 위험하다. holiday_sync 는 investing 403 이후 2개월간 stale 이었는데, 폴백(nager)이 있는데도 "investing 0건이면 저장 자체를 건너뛰는" 가드 때문에 아무 일도 안 했다. 주 소스가 죽었을 때 폴백이 단독으로 설 수 있는지를 본다
  • 유튜브는 스크랩 구조(lockupViewModel)가 바뀌면 조용히 빈 결과가 된다 → 브리핑에서 시황 카드만 사라진다

4. 문서 드리프트 — TASKS.md·CLAUDE.md vs 실제

# plist 실제 스케줄 전수
cd ~/Library/LaunchAgents && for p in ai.openclaw.*.plist; do
  echo "== $(basename $p .plist)"; plutil -p "$p" | grep -A6 StartCalendarInterval | head -8; done

~/.local/bin/openclaw cron list          # cron 은 sqlite(state/openclaw.sqlite)
  • TASKS.md §1·§2 의 트리거 표기와 대조. 2026-09-10 에 IPO 요일·시뮬 주기·자본금·sim-web 탭 수·cron ID 등 9건이 어긋나 있었다
  • TASKS.md §4(헬스체크 표)의 증거 파일이 여전히 "돌면 반드시 갱신되는" 것인지 확인. 스크립트가 바뀌면 이 전제가 깨진다
  • 문서에 없는 launchd 잡이 있는지도 본다 (2026-09-10 nxt-probe-oneshot 고아 발견 → 정리)
  • ⚠️ health-check 자신이 돌고 있는지 확인한다 — 감시자가 죽으면 알림도 같이 죽어서 아무 신호가 없다. ls -la ~/.openclaw/logs/health-check.log 의 mtime 이 어제 이후인지 본다

5. 자격증명·토큰 만료

cd ~/.openclaw/agents/stock/workspace && python3 scripts/kiwoom_client.py token   # 키움
ls -la ~/.openclaw/credentials/
  • 키움 REST 토큰, 텔레그램 봇(동결 이력 있음 — getMyName 까지 확인), 후잉 API, gog(Gmail/Calendar) 인증
  • ⚠️ gog 는 코디 셸에서 인증이 안 된다(키체인 ACL). 검증은 --list 류 인증 불필요 CLI 로 하거나 launchd oneshot 경유

6. 코디 inbox

ls ~/.openclaw/agents/cody/inbox/incoming/ | wc -l
find ~/.openclaw/agents/cody/inbox/processed -mtime +7 | head   # GC 대상

CLAUDE.md Cody Inbox 의 처리 흐름을 따른다. processed/ 7일 초과분은 이때 정리한다.

7. 디스크·백업

du -sh ~/.openclaw/logs ~/.openclaw/state ~/.openclaw/agents/*/workspace/state
cd ~/.openclaw && git log -1 --format='%cd %s' --date=format:'%m-%d %H:%M'
  • 로그 총량은 헬스체크가 매일 보지만(상한 200MB), 어느 파일이 커지고 있는지는 사람이 봐야 판단이 된다
  • git autopush 가 매일 02:00 도는지, .gitignore 로 빠진 시크릿·sqlite 의 별도 백업이 있는지

점검 후

agents/cody/inbox/processed/ 에 리포트를 남기는 대신, 고친 게 있으면 CLAUDE.md·TASKS.md 에 그 사실과 근거를 적는다. 다음 점검 때 같은 걸 다시 파헤치지 않도록 "왜 그렇게 뒀는지"를 남기는 게 이 워크스페이스의 방식이다.