トラブルシューティング
トラブルシューティング
30秒で全体像
| 観点 | 一言 |
|---|---|
| 核心 | 自動化システムでエラーが起きた時の対処法。 |
| キーワード | 通知システム / よくあるエラーと対処 / ヘルスチェックコマンド |
| 使う人 | 全社員 / 運用担当 |
| 読了目安 | 5-7分 |
自動化システムでエラーが起きた時の対処法。
通知システム
エラーが起きたら以下に届きます:
- macOS通知センター(即時、画面右上)
- Slack #scale-ai-all チャンネル(履歴として残る、エラー時のみ)
~/Obsidian/logs/notifications.log(全履歴)
よくあるエラーと対処
エラー2: rsync mmap deadlock — Google Drive CloudStorage(2026-05-07 追加)
症状:
rsync(xxxx): error: 90_Meta/<ファイル名>.md: mmap: Resource deadlock avoided
rsync(xxxx): error: rsync_downloader / rsync_receiver
[ERROR] sync failed with exit code 1
通知の「TCC権限要確認」は固定文字列で、真因とは限らない
必ずtail -30 ~/Obsidian/logs/sync.logで実際のエラーを確認すること。
原因:
- macOS の Google Drive for Desktop(CloudStorage プロバイダ)は仮想FSで、rsync が whole-file mmap で書き込もうとすると Drive側の同期ロックと deadlock する
- Drive側に 古い壊れたファイル が残っていると mmap で開けず ループ的に失敗
対処(恒久版・2026-05-07 適用):
- ~/Obsidian/scripts/sync_to_drive.sh に下記オプション追加済み:
- --no-whole-file → ブロック単位 delta-transfer で mmap 回避
- --temp-dir=/tmp/rsync_scale_brain → 一時ファイルをローカルに
- --partial → 途中失敗ファイルを次回再開可能
- 通知文言を実態反映(CAUSE を sync.log から抽出)
- 30分以内の連投防止フラグ(.sync_error_notified)
緊急対処(再発時の手順):
# 1. 通知止める
launchctl bootout gui/$(id -u)/com.scale.obsidian-sync
# 2. 真因確認
tail -30 ~/Obsidian/logs/sync.log
# 3. 問題ファイルが Drive側にあれば削除(ローカルから再生成させる)
rm -f "/Users/oogushiyuuki/Library/CloudStorage/GoogleDrive-y-ogushi@scale-group.co.jp/マイドライブ/AI/SCALE-Brain/<該当ファイル>"
# 4. 手動テスト
bash ~/Obsidian/scripts/sync_to_drive.sh
echo "exit_code=$?"
tail -10 ~/Obsidian/logs/sync.log
# 5. 成功なら launchd 再開
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.scale.obsidian-sync.plist
エラー1: rsync sync が TCC 権限で失敗する
症状:
rsync error: open: Operation not permitted
[ERROR] sync failed with exit code 1
原因: macOS の TCC(プライバシー保護)が launchd 経由のrsyncを Google Drive にアクセスさせない
対処:
方法A: フルディスクアクセス権限付与(推奨)
- システム設定 → プライバシーとセキュリティ → フルディスクアクセス
- 鍵アイコンクリックで認証
- 「+」ボタン →
/bin/bashを追加(Cmd + Shift + Gで隠しパスを直接入力) - ON にする
- ターミナル.app も同様に追加(既に追加済みのこと多い)
方法B: 手動で同期
~/Obsidian/scripts/sync_to_drive.sh
(ターミナル経由なら通る)
方法C: GitHub Privateリポにバックアップ追加(保険)
別途 git push で保険をかける
エラー2: Claude CLI 認証切れ
症状:
Not logged in · Please run /login
原因: Claude CLI のセッションが期限切れ
対処:
claude
を起動 → /login コマンド → ブラウザで認証
その後、launchd タスクが再開できる。
エラー3: Slack取得が 0件
症状: [slack] DONE: 0 triggered, 0 raw entries
確認:
1. Bot がチャンネルに招待されているか(/invite @SCALE-Brain Reader)
2. :writing_hand: リアクションが正しく付いているか
3. Token が有効か(~/.slack_bot_token)
エラー4: Inbox自動整理が動かない
症状: 10/15/20時のlaunchdが実行されたのに整理されてない
確認:
tail -50 ~/Obsidian/logs/auto_organize.log
launchctl list | grep inbox-organize
対処:
- Claude CLI 認証切れなら上記エラー2の対処
- それでもダメなら手動実行: ~/Obsidian/scripts/auto_organize_inbox.sh
エラー5: ファイル消失リスク
保険:
- ローカルに git history(無限undo)
- 必要なら GitHub Private リポにpush
- Trash に Obsidianが移動した分はObsidianの「ゴミ箱から復元」
エラー6: SCALE Base デプロイ後に古い版が表示される
症状:
- bash scripts/deploy.sh で本番反映したのに、ブラウザで古いナビ・古いUI が出る
- ハードリロード(Cmd+Shift+R)しても変わらない時がある
原因:
- Cloudflare Pages のエッジキャッシュが新ビルド伝搬中(数秒〜数分)
- ブラウザが古い HTML を保持し続け、古い JS bundle を読み込む
- _headers ファイルがないと HTML も長期キャッシュされる
恒久対策(2026-04-27 適用済み):
scale-base/public/_headers で Cache-Control を最適化済み:
- /* (HTML) → max-age=0, must-revalidate(毎回オリジン確認)
- /_next/static/* → max-age=31536000, immutable(ハッシュ付きで長期キャッシュ可)
- 画像/フォント → 1日〜30日
これにより通常リロード(Cmd+R)で最新版が即時反映されるようになった。
それでも古い版が出る場合:
1. シークレットウィンドウで開く(キャッシュ完全バイパス)
2. bash scripts/deploy.sh --clean でクリーンビルド再デプロイ(バンドルハッシュが変わる)
3. ブラウザの開発者ツール → Network タブ → "Disable cache" にチェック
4. それでも駄目なら Cloudflare Pages ダッシュボードで「Purge Cache」
ヘルスチェックコマンド
定期的にこれを実行すれば全体把握できる:
echo "=== launchd 全体 ===" && launchctl list | grep scale && echo "" && echo "=== 通知履歴(直近5件) ===" && tail -5 ~/Obsidian/logs/notifications.log && echo "" && echo "=== Slack取得 ===" && tail -3 ~/Obsidian/logs/slack_inbox.log && echo "" && echo "=== Inbox整理 ===" && tail -3 ~/Obsidian/logs/auto_organize.log && echo "" && echo "=== Drive同期 ===" && tail -3 ~/Obsidian/logs/sync.log && echo "" && echo "=== Vault統計 ===" && find ~/Obsidian/SCALE-Brain -name "*.md" -not -path "*/.git/*" | wc -l | xargs echo "Markdown:"
🚦 ステータス確認の習慣
朝のチェック(推奨)
1. macOS通知を確認(通知センター開く)
2. Vault Dashboard を開く(Inbox件数チェック)
3. 通知ログ確認: tail -20 ~/Obsidian/logs/notifications.log
異常検知
- 24時間通知が一切来ない → どれかが止まってる可能性
- Slackに
SCALE-Brain エラーが来た → 即対処