AIエージェントことはじめ — LAB 017
— わざと止めて、読み方を決める —
夜に AI が回り始めると、次に困るのは「本当に回っているのか」が分からないことです。 止まっても知らせは来ませんし、「回っているはず」という感覚は当てになりません。 この記事では、テストの有無・実行ログ(動いた記録)・予約(決めた時刻に自動で動かす設定)・最後に動いた日といった残った跡から、 いま何段目まで届いているかを数える小さな測定スクリプトを、手元で試しながら作ります。 後編では、わざと止めて判定が変わるのを見て、結果の読み方と朝のレビューへの組み込み方を決めます。
約20分
全部やる場合の目安
2 STEP
手順の数
4 段階
このスクリプトが測る段数
RECAP
前編では、「回っている」を測る仕組みを置きました。
STEP 1
「回っている」を段階に分けた
STEP 2
測る材料を残る跡に決めた
STEP 3
測定スクリプトを置いて走らせた
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 に変わるのを見た。 測定が、条件の違いを区別できることを確かめた。
STEP 5 — 目安 10分
測る目的は、数字を眺めることではなく、途切れた段を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 のつまずき集に症状から引ける形で載せています |
LAB 014 では「週1回で1か月ほど様子を見てから、仕事を足す」としました。 その「様子を見る」の中身が、この測定です。 到達が 4 / 4 のまま安定していれば増やしてよい合図、途切れが続くなら増やさず、まず途切れた段を直す合図、と決めておくと、勘に頼らずに済みます。
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 への指示の書き方、ハーネス=AI を動かす周りの仕組み)この記事の段階は「検証のループが実際に回っているか」だけを見る、自前のものさしです。 筆者は、外で言われている段階のものさしでも測る欄を、同じ画面(ループ計測)の中に別に持っていますが、どちらも判定は実際のファイルや履歴で行っています。手でチェックシートに丸を付ける形にすると、その瞬間から古くなるためです。
この記事の測定は、テストを走らせず、あるかどうかだけを見るので一瞬で終わります。 筆者の画面は、テストを全部走らせると十数秒かかるため、ボタンを押したときだけ走らせ、結果を残して次回以降は表示する形にしています。 開くたびに重い処理を走らせると、測ること自体が負担になります。
増やすのは、その段の「跡」が残る形になってからです。 たとえば検査役の段は、検査役を呼んだ記録が残っていないと、実績を数えられません。 跡が残らない段を足すと、「定義があるだけで稼働」と言ってしまう測定になります。
NEXT
まず、前編 STEP 3 の測定を1回だけ走らせてみてください。 目的は数字を良くすることではなく、「自分の仕組みが何段目で途切れているか」を、感覚ではなく表示で1回見ることです。
※ この記事は、筆者が実際に使っている「ループ計測」の設計の考え方をもとにしていますが、結果を保証するものではありません。 筆者の画面で実際に数えているのは、段階の名前・「連続して届いた所まで」・自動実行の3日以内・検査役の実績です。この記事の4段階・「8日」・ファイルの名前は、この記事の道具に合わせて決めた値です。 「跡を数え、途切れた所で止め、装置だけでは稼働と呼ばない」という考え方の方を持ち帰ってください。