b4f510d1ad
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.7 KiB
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.mdKey Configuration 참조(다시 검토하기 전에 그 세 근거부터 확인)
2. OpenClaw 본체 버전
~/.local/bin/openclaw --version && npm view openclaw version # 현재 vs 최신
- 올릴지 말지는 관리자님 결정. 올린다면
CLAUDE.mdRuntime 의 함정 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 에 그 사실과 근거를 적는다. 다음 점검 때 같은 걸 다시 파헤치지 않도록 "왜 그렇게 뒀는지"를 남기는 게 이 워크스페이스의 방식이다.