FRL 自由研究ラボ

AIエージェントことはじめ — LAB 017

どこまで回っているかを測る(後編)

— わざと止めて、読み方を決める —

夜に AI が回り始めると、次に困るのは「本当に回っているのか」が分からないことです。 止まっても知らせは来ませんし、「回っているはず」という感覚は当てになりません。 この記事では、テストの有無・実行ログ(動いた記録)・予約(決めた時刻に自動で動かす設定)・最後に動いた日といった残った跡から、 いま何段目まで届いているかを数える小さな測定スクリプトを、手元で試しながら作ります。 後編では、わざと止めて判定が変わるのを見て、結果の読み方と朝のレビューへの組み込み方を決めます。

約20分

全部やる場合の目安

2 STEP

手順の数

4 段階

このスクリプトが測る段数

この記事の道順

  1. 前編のおさらい
  2. STEP 4 — わざと止めて、判定が変わるのを見る
  3. STEP 5 — 結果の読み方と、朝のレビューへの組み込み
  4. つまずき集(症状から引く)
  5. よくある質問
  6. 次の一歩

※ LAB 010(_selftest.py と終了コード)と LAB 014(夜の実行スクリプト ~/night/run.py と cron の予約)を 終えている前提です。測る相手は、その2つで作ったものです。 「道具」は、LAB 009 で作ったような自作の小さなプログラムのことです。 道具を置いているフォルダは、この記事では ~/tools を例にしています(LAB 010 でテストを置いた場所に読み替えてください)。例は Mac のターミナルです。

RECAP

前編のおさらい

前編では、「回っている」を測る仕組みを置きました。

STEP 1

「回っている」を段階に分けた

STEP 2

測る材料を残る跡に決めた

STEP 3

測定スクリプトを置いて走らせた

04

STEP 4 — 目安 10分

わざと止めて、判定が変わるのを見る

いつも「到達: 4 / 4」と出る測定は、壊れていても気づけません(LAB 010 の「テスト自体を疑う」と同じ考え方です)。 条件を変えたら、判定がちゃんと変わることを、本物のファイルには触らずに確かめます。 環境変数でその1回だけ条件を差し替えます。

# 実験A:「最近」の基準を 0 日にする → 予約が「動いていない」扱いになるはず
LOOP_FRESH_DAYS=0 /usr/bin/python3 ~/night/measure.py

# 実験B:道具のフォルダを、存在しない場所に向ける → 1段目が「未着手」になるはず
LOOP_TOOLS=$HOME/night/no-such-folder /usr/bin/python3 ~/night/measure.py

どちらも、環境変数をそのコマンド1回だけに付けているので、実際の予約・ログ・道具には何も起きません。 期待どおりに変わらなければ、測定のほうが間違っています。つまずき集を見てください。 前編 3-2 で到達が 4 / 4 でなかった人は、この STEP は読むだけにして、STEP 5 の表で途切れた段を直し、4 / 4 になってから試してください。

判定の言葉選びにも、気をつけます。 筆者の画面で検査役の実績を数えるとき、素朴に「レビュー」という言葉で履歴を探したところ、動画の「プレビューで再生」まで拾ってしまいました。 そこで直前が「プ」の場合を除く書き方にしています。 跡を数える条件は、実際にわざと誤らせて確かめるのが安全です。

✓ ここまでの確認: 実験Aで4段目が「装置のみ」に、実験Bで到達が 0 に変わるのを見た。 測定が、条件の違いを区別できることを確かめた。

05

STEP 5 — 目安 10分

結果の読み方と、朝のレビューへの組み込み

5-1 途切れた段だけを直す

測る目的は、数字を眺めることではなく、途切れた段を1つだけ直すことです。

途切れた段 どうするか
1段目が「未着手」 道具に _selftest.py が無い。LAB 010 に戻って、まず1つの道具にテストを付ける
2段目が「装置のみ」 run.py はあるが一度も走っていない。LAB 015の STEP 4 で、手で1回走らせる
3段目が「未着手」 予約が無い。LAB 015の STEP 5 の手順で、人が予約を足す
4段目が「装置のみ」 予約はあるのに動いていない。予約を足すより先に、止まっている理由を調べる。Mac が眠っていた・フルパスで書いていなかった、予約は走るが run.py が最後まで終わっていない、などは LAB 014 のつまずき集に症状から引ける形で載せています

5-2 増やすか、減らすかを決める材料にする

LAB 014 では「週1回で1か月ほど様子を見てから、仕事を足す」としました。 その「様子を見る」の中身が、この測定です。 到達が 4 / 4 のまま安定していれば増やしてよい合図、途切れが続くなら増やさず、まず途切れた段を直す合図、と決めておくと、勘に頼らずに済みます。

5-3 朝のレビューに、1行足す

LAB 014 の朝のレビュー(ログ・変更したファイル・成果物の中身の3か所)に、4つ目として足します。 週1回の予約なら、朝に1回走らせれば足ります。

/usr/bin/python3 ~/night/measure.py

見るのは最後の「到達」の行だけで十分です。前の週より下がっていたら、その週のどこかで止まっています。 このスクリプトは結果を保存しないので、前の週の数字は手帳やメモに控えておいてください。

この測定で分かるのは、「跡があるか」までです。 「稼働」と出ても、良い出来であることや、設定が本当に効いていることまでは測れません。 筆者の環境にも、特定のファイルを読ませない設定を入れてあるのに、同じファイルをコマンド(cat、ファイルの中身を画面に出すもの)なら読めてしまう、という実例がありました。 設定があることと、効いていることは別です。数字が揃うことを、安全や品質の証明にしないでください。

✓ ここまでの確認: 途切れた段があれば、直す段を1つだけ決めた(全部揃っていれば、このまま様子を見る)。 朝のレビューの4つ目に、測定の1行を足した。

TROUBLESHOOTING

つまずき集(症状から引く)

起きていること 原因 どうするか
全部の段が「未着手」、到達は 0 と出る 道具のフォルダ(TOOLS)や夜のフォルダ(NIGHT)の場所が、実際と違う 前編 STEP 2 の ls で場所を確かめ、スクリプト先頭の2行を直す
前編 3-1 のコマンドを貼ると「No such file or directory」と出る 書き込み先の ~/night フォルダが無い(LAB 014 をまだ終えていない) LAB 014 を先に進める。測定だけ試すなら mkdir -p ~/night/log でフォルダを作ってから貼り直す(跡が無いので、「未着手」と出る段が多くなる)
1段目が「未着手」。テストはあるはず テストが、道具ごとのフォルダの中(~/tools/道具名/_selftest.py)に、その名前で置かれていない(~/tools の直下に1つ置いても数えません) LAB 010 の名前(_selftest.py)にそろえる。別の名前なら、スクリプトの探す名前を直す
2段目が「装置のみ」 run.py はあるが、ログに「結果:」の行が無い(一度も最後まで走っていない) LAB 015の STEP 4 で、手で1回走らせる
予約を入れたのに、3段目が「未着手」 予約の行に night/run.py が含まれていない(場所の書き方が違う)/AI の箱の中で走らせて crontab が動かなかった crontab -l の行を読む。測定は人が自分のターミナルで走らせる
4段目が「装置のみ」。予約はある cron.log が古い(予約が走っていない。Mac が眠っていた等)/cron.log は新しいが最新の合否ログが古い(予約は走るが、run.py が最後まで終わっていない)/「8日」が実際の間隔より短い 前編 3-2 の表示で2つの日数を見比べる。LAB 014 のつまずき集と cron.log の中身を見る。毎日の予約なら LOOP_FRESH_DAYS を2〜3にする
手で run.py を走らせたのに、4段目が変わらない cron.log が新しければ、仕様どおり変わります(最新の合否ログが新しくなるため)。cron.log が古いままなら変わりません。ただし手で走らせた分は cron.log には出ません 予約が本当に動いたかを確かめたいときは、予約の時刻を数分後にして待ち、cron.log の更新を見る
2〜4段目は「稼働」なのに、到達が 0 仕様です。1段目から連続していないと数えない(STEP 4 の実験B) 1段目から直す

FAQ

よくある質問

AI に「いま何段目?」と聞くのでは、ダメですか?

お勧めしません。AI の答えは「できました」と同じ申告で、確かめた結果ではありません。 ファイル・ログ・予約・日付のように、動いたら必ず残るものをプログラムに数えさせるほうが、当てになります。

世間でいう「6段階」(プロンプト・ハーネス・ループ…)とは同じものですか?

別のものです。(プロンプト=AI への指示の書き方、ハーネス=AI を動かす周りの仕組み)この記事の段階は「検証のループが実際に回っているか」だけを見る、自前のものさしです。 筆者は、外で言われている段階のものさしでも測る欄を、同じ画面(ループ計測)の中に別に持っていますが、どちらも判定は実際のファイルや履歴で行っています。手でチェックシートに丸を付ける形にすると、その瞬間から古くなるためです。

測るときに、テストも毎回走らせたほうがよいですか?

この記事の測定は、テストを走らせず、あるかどうかだけを見るので一瞬で終わります。 筆者の画面は、テストを全部走らせると十数秒かかるため、ボタンを押したときだけ走らせ、結果を残して次回以降は表示する形にしています。 開くたびに重い処理を走らせると、測ること自体が負担になります。

段階を増やしたくなったら?

増やすのは、その段の「跡」が残る形になってからです。 たとえば検査役の段は、検査役を呼んだ記録が残っていないと、実績を数えられません。 跡が残らない段を足すと、「定義があるだけで稼働」と言ってしまう測定になります。

NEXT

次の一歩

まず、前編 STEP 3 の測定を1回だけ走らせてみてください。 目的は数字を良くすることではなく、「自分の仕組みが何段目で途切れているか」を、感覚ではなく表示で1回見ることです。

  • 「回っているつもり」を疑う。止まっても知らせは来ないので、残った跡を数える
  • 段階に分け、連続して届いた所まで数える。途切れた段より上は数えない
  • 装置があるだけでは「稼働」にしない。動いた跡が、最近あるときだけ稼働と呼ぶ
  • AI の申告は材料にしない。測定が条件の違いを区別できるかは、わざと止めて確かめる
  • 分かるのは「跡があるか」まで。良い出来や、効いているかまでは測れない

※ この記事は、筆者が実際に使っている「ループ計測」の設計の考え方をもとにしていますが、結果を保証するものではありません。 筆者の画面で実際に数えているのは、段階の名前・「連続して届いた所まで」・自動実行の3日以内・検査役の実績です。この記事の4段階・「8日」・ファイルの名前は、この記事の道具に合わせて決めた値です。 「跡を数え、途切れた所で止め、装置だけでは稼働と呼ばない」という考え方の方を持ち帰ってください。