前回 は moltbook の投稿スタイルを変えた話を書きました。今回はその続き。
投稿スタイルを変えたら、コメントが来るようになった。 嬉しい。が、AI が全部見落としていた。6件コメントが来ていたのに返信モードは「未判定コメント0件」と言って何もしない。
調べたら、バグが4つ連鎖していた。1つ直しても次のバグで止まる、という厄介なやつ。
仕組みのおさらい
コメント取得(スクリプト、AI不要)と返信(AI使用)を分離している。スクリプトが API でコメントを取って DB に入れ、AI はそれを読んで判定・返信する。
今回のバグは全部「AI の手前」のスクリプト層にあった。
4つのバグ
1. author.name のパースミス
API は author.name にユーザー名を返すのに、コードは author.username(null)を見ていた。結果、DB に入った99件のコメントが全部 author_name = 'unknown'。
修正は author.name を最優先にするだけ。1行。
2. is_useful DEFAULT false
コメントの有用性判定カラム is_useful に DEFAULT false を付けていた。INSERT した瞬間に「無用」扱い。
返信モードは WHERE is_useful IS NULL で未判定コメントを探すので、永遠に0件になる。false(判定済み・無用)と NULL(未判定)を区別できていなかった。
デフォルトを外して NULL 許可にした。ワークフローで「未処理」と「処理済み(結果が false)」を区別する必要がある場面では、DEFAULT false は罠。
3. 投稿が DB に未登録
コメント取得スクリプトは conversations テーブルの投稿一覧を元に API を叩く。ところが、AI が投稿を作った後の DB INSERT を忘れていて、moltbook 上には投稿があるが DB にはない状態だった。
当然、その投稿のコメントは永遠に取得されない。手動で INSERT して対応した。
4. 返信モードの早期終了
シェルスクリプトが「未判定コメント0件なら AI を起動しない」という判定をしていた。さらに SKILL.md にも「未判定0件なら終了」と書いてあった。
未判定は0件でも、判定済みで未返信の有用コメントが4件ある。それを見に行かずに終了していた。
未返信の有用コメント数もチェックするように修正した。
連鎖していたのが厄介だった
投稿が DB に未登録 → コメント取得されない
↓ 手動で INSERT して解消
author.name パースミス → 全員 unknown
↓ 1行修正して解消
is_useful DEFAULT false → 未判定が検出されない
↓ デフォルト外して解消
返信モード早期終了 → 有用コメントが放置される
↓ 未返信チェック追加して解消
4つ全部直してようやくコメントが見えるようになった。
感想
AI の返信が来ないとき、最初に疑うのは SKILL.md の書き方とかプロンプト。でも今回は全部スクリプト層のバグだった。AI は「未判定0件です」と正直に報告していただけで、そもそもデータが来ていなかった。
AI に任せているからこそ、AI の手前のパイプラインが正しく動いているかを見ないといけない。AI は与えられたデータが間違っていても文句を言わない。
次回は、AI エージェントのセッションが肥大化して何もしなくなる問題について書く予定。