結論から書きます
当社(株式会社TOE)は自社AIメディアの日次更新を自動化しています。工程は3つ。ニュースを集める、英語記事を訳す、AIに要約・本文を書かせる。
実測の結果はこうでした。集める・訳すは動いている。要約だけが止まっていた。 しかもエラーで落ちたのではなく、「スキップ」という形で、黙って止まっていました。
- ニュース収集は毎日600件。データファイル(news.json)を直近4日(7/20〜7/23)確認すると、いずれの日も600件。
- 翻訳は、自動翻訳の結果が621件蓄積(translations.json)。
- 記事数も伸びていて、日次統計では7/20の150本から7/23の171本まで増加。
ところが、同じ統計の「本文(body)」列は、4日間すべて0。記事の枠は増えているのに、本文・要約は1本も生成されていなかったのです。
用語を3つだけ
- 日次処理 … メディアを毎日更新するため、決まった時刻に自動で走る一連の処理です。収集→翻訳→要約の順に流れます。
- claude CLI … コマンドラインからAI(Claude)を呼び出すツールです。当社の日次処理では「要約・本文生成」を担っています。
- スキップ … エラーで全体が止まるのではなく、その工程だけ飛ばして先へ進む動きです。全体は「完走」に見えるのが厄介です。
工程別に見た「動いている/止まっている」
| 工程 | 担い手 | 状態 | 実測の根拠 |
|---|---|---|---|
| ニュース収集 | 自動収集スクリプト | 動いている | 直近4日いずれも600件(news.json) |
| 翻訳 | 自動翻訳 | 動いている | 621件が蓄積(translations.json) |
| 要約・本文生成 | claude CLI | 止まっていた | 日次統計のbody列が4日間すべて0 |
記事数だけ見れば150→160→160→171と増えています。件数だけ眺めていたら「順調」としか見えません。数字が増えているのに、中身が欠けていく。 これがいちばん怖い形です。
原因は、ログにはっきり残っていた
日次処理のログ(cron.log)を開くと、答えは1行で書いてありました。
⚠️ claude CLI が使えない(未ログイン/PATH)。要約はスキップされる
AI要約を担うツールがログイン切れかPATH不通で呼び出せず、日次処理はエラーで止まる代わりに要約工程だけを飛ばして進み続けていたのです。収集も翻訳もCLIに依存しないので無傷で回り続ける。結果、「集まる・訳される・でも本文は0」が、警報ひとつ鳴らずに続いていました。
正直に書きます。これは根の深いバグではありません。 CLIの再ログイン等で直せる類いの不具合で、対応したばかりです(「完全に解決した」とはまだ言いません。数日まわして確認してからです)。
本質は不具合の深さではなく、気づきにくさのほうです。当社は以前、cron自動化41本の全数調査で「発火しないジョブ」を数え、見張り役で止まったジョブを叩き起こす仕組みを入れました。しかし今回の穴は、その両方をすり抜けます。ジョブは発火し、完走もしている。 欠けているのは、完走の中の1工程だけだからです。
この件で思い知ったこと
- 「完走した」と「全工程が動いた」は別物です。スキップは完走に化けます。
- 件数の増加は健全さの証明になりません。 記事数は増えていたのに、本文は0でした。数えるべきは総数ではなく、工程ごとの出力でした。
- 警告はログに出ていました。 誰も読んでいなかっただけです。人が読まないログの警告は、無いのと同じ。「スキップ発生」を毎日数えて通知に上げることを、次の宿題にします。
関連する記録
- 毎朝動いているはずのAI自動化41本を5.3日ぶん数えたら、最大91%が発火すらしていなかった — 「発火しない」型の欠けの全数調査。今回はその逆。
- 止まったメディア更新を、見張り役が自動で叩き起こしていた話 — 「完走の中のスキップ」は拾えなかった見張り役の記録。
まとめ
- 日次処理を実測。収集は毎日600件、翻訳は621件蓄積と、前工程は無人で回っていた。
- しかし日次統計の本文(body)列は4日間すべて0。AIによる要約・本文生成だけが止まっていた。
- 原因はログに明記。claude CLIが未ログイン/PATH不通で使えず、要約工程がスキップされ続けていた。
- エラーではなく「スキップ」なのでジョブは完走扱い。記事数も増えており、外から見ても気づけない。
- 不具合自体は浅く、対応したばかり。根が深いのはバグではなく気づきにくさのほう。
- 教訓:「完走」を信用せず、工程ごとの出力を数える。 ログの⚠️は、人が読む場所まで運ばなければ無いのと同じ。