# 월간 점검 체크리스트 (코디) 매월 1일 헬스체크가 텔레그램으로 알린다. 관리자님이 코디 세션을 열고 "월간 점검 해줘"라고 하면 이 문서를 따른다. **여기 있는 건 전부 "스크립트로는 못 잡는 것"이다.** 주기 잡이 죽었는지·결과가 stale 한지는 `scripts/health_check.py` 가 매일 본다(대상은 `TASKS.md` §4). 이 문서는 **바깥이 변해서 우리 쪽이 조용히 어긋나는** 종류만 다룬다 — 2026-09-10 점검에서 하드 실패는 0건인데 아래 유형이 4건 나왔다. **원칙:** 점검은 조회만 한다. 고칠 게 나오면 관리자님께 보고하고 승인받은 것만 손댄다. 업그레이드·트리거 변경은 특히. --- ## 1. 모델 카탈로그 — deprecated·신규·단가 ```bash # 세 에이전트 라우팅 현황 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 -m ping` 후 trajectory 의 `modelApi` 가 `openai-chatgpt-responses` 면 구독이다. 카탈로그의 정적 제외 규칙만 보고 판단하면 틀린다(`gpt-5.4` 는 카탈로그에 있는데 은퇴했고, terra·luna 는 제외 규칙에 걸리는데 실제로는 된다) - `modelPolicy.allow` 에 유료 모델이 없는지 확인한다 — 폴백 순서만으로는 수동 지정 과금을 못 막는다 - 신규 모델이 보이면 단가·codex 카탈로그 포함 여부를 먼저 본다. `gpt-6-astra` 를 왜 안 쓰기로 했는지는 `CLAUDE.md` **Key Configuration** 참조(다시 검토하기 전에 그 세 근거부터 확인) ## 2. OpenClaw 본체 버전 ```bash ~/.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 를 한 번씩 돌려 본다.** ```bash 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 실제 ```bash # 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. 자격증명·토큰 만료 ```bash 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 ```bash 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. 디스크·백업 ```bash 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` 에 그 사실과 근거를 적는다.** 다음 점검 때 같은 걸 다시 파헤치지 않도록 "왜 그렇게 뒀는지"를 남기는 게 이 워크스페이스의 방식이다.