いつの話か、本当に動いているかを書いておく
AIは、渡された文章を今のこととして読む。人も、画面に警告が出ていなければ、動いていると思って次へ行く。いつの話なのか、今も動いているのかが書いてなければ、古い情報も、止まったプログラムも、正しく見えてしまう。
続けて2つ、それを書き足すことになった。1つはAIに渡す情報で、こちらは先回りして足した。もう1つは僕が見る画面で、こちらは実際に2日間止まっていて、画面からは気づけなかった。
AIに渡す「今の状況」を、毎朝自動で書くことにした
MONET(僕が普段話しかけている、中心のAI)のSP(システムプロンプト=AIへの事前の指示書)には、「今の状況」という欄がある。僕の仕事が今どうなっているか、今週の山場は何か。MONETはこれを前提に話す。
この欄は、それまで僕が手で書き込んでいた。それをやめて、毎朝自動で書き直すことにした。
仕組みは、コーディングしてくれているClaude Code(以降Code)が作った。毎朝5時に、Handler(ハンドラー。タスクとスケジュール管理アプリ)の状況報告と、直近1週間のMONETとの会話の要約を集めて、それを材料にAIが「今の状況」を書く。タスクの番号や、期限を何日過ぎたかといった数字は、AIが自分で作らず、材料から写すだけ。写し間違えたら、Codeが入れたチェックが材料と見比べて、書き直させる。チェックに通らず書けなかった日は、前の日の中身がそのまま残る。
AIが読む中身の先頭に、材料を集めた時刻を入れた
出来上がったと聞いて、僕はCodeに聞いた。中身の先頭に、これは何月何日何時何分の情報です、と書いてあれば、MONETも迷わないんじゃないか。
Code「もう日付は入っていますが、時刻が無いので足します」
1行目は「〇月〇日 〇時〇分時点の情報・自動生成」という形になった。
入るのは、AIが書き終えた時刻ではなく、材料を集めた時刻。書けずに前の日の中身が残った日は、MONETに見えるのも前の日の時刻になる。変な中身が出た時のために「1つ前へ戻す」ボタンも残してあって、戻した時も、その古い中身の日時が出る。
Slackの返信待ちの一覧は、返したあとも「未処理」のままだった
もう1つは、Typewriter(タイプライター。代筆アプリ)の話。Slackで僕宛てに来たメッセージを拾って、返信の下書きを並べてくれる道具で、送るのは僕。NAS(家に置いてある常時稼働のサーバー)で動いている。
TypewriterをMONETと話すアプリにつなぐ前に、Codeが今の様子を見てくれた。Slackからは5分おきに取り込んでいて、未処理は16件。
Codeが気にしたのは、16件全部が未処理のままで、返信済みが0件なこと。僕がSlackで直接返した分は、Typewriterが自動で「返信済み」にするはずだった。
Codeが調べると、「返信済み」かどうかは、メッセージを取り込んだ瞬間に1回見るだけだった。後から僕が返しても、見直さない。一覧の「未処理」は、取り込んだ時点の話のまま残っていた。Codeは、未処理のものを5分おきに見直すように直した。
取り込みの時刻は進んでいたのに、2日前から1件も入っていなかった
Typewriterは、5分おきにSlackを読みに行って、僕宛ての新着を取り込む。画面には、最後に読みに行った時刻が出ている。
直したプログラムをNASで動かして、Codeが実際に効いているかを確かめた。ところが、16件のまま変わらない。Codeがログを見ると、Slackからエラーが返っていた。NASが使っていたSlackの鍵が、2日前に無効になっていた。その日から、新着は1件も入っていなかった。
それなのに、画面は止まったようには見えず、時刻も進み続けていた。TypewriterはSlackのチャンネル(話題ごとの部屋)を1つずつ読みに行く。1つで失敗しても全体は止めない作りで、失敗はログに残すだけだった。そのため、全部のチャンネルで失敗しても、読みに行ったことにはなって、時刻が進んでいた。
画面に出ていたのは、取り込めた時刻ではなく、読みに行っただけの時刻だった。作業の前に、Codeが5分おきに取り込めていると報告したのも、この時刻を見てのことだった。
取り込めない時は、止まった理由を画面に出す
Codeは、取り込めない時は時刻を進めず、「取り込み停止」と理由を画面に出すように直した。NASで動かしてからCodeが確かめると、画面に出すための記録に、鍵が無効になったという理由が入っていた。
鍵は僕が入れ直した。取り込みが戻ると、未処理は16件から4件になった。12件は、僕がSlackで返していたものだった。止まっていた2日分もTypewriterが読み直していて、僕宛ての新着は無かったと、Codeが教えてくれた。
「今の状況」の先頭の時刻は、いつの話かを添える。Typewriterの「取り込み停止」は、今も動いているかを添える。添えておかなければ、読む側は、それが今の話で、ちゃんと動いていると思って先へ進んでしまう。