「昨日の続きって、どこまで進んでいましたっけ」。AIエージェントに仕事を渡していると、この確認が毎回発生します。
セッションは途中で切れます。アップデート、再起動、通信の切断。理由はさまざまですが、共通しているのは、切れる瞬間をこちらで選べないことです。会話の中にしか残っていない状態は、そこで消えます。
残るのは、ディスクに書いたものだけです。タスク台帳という1つのファイルに状態を書いておけば、プロセスが消えても状態は消えません。ただし台帳は、項目を並べただけでは機能しません。何を書き、どの粒度で更新するかを決めて、はじめて次のセッションが動けます。
この記事は、その決め方を扱います。素材は自社で動いているコードと、公式ドキュメントです(検証日2026-08-03)。
こんなふうに調べていませんか
- AIに任せた作業が途中で切れて、毎回どこまで進んだのかを聞き直している
- 台帳の形は作った。ただ、何の項目を置けばいいのかが決まらない
- 更新のタイミングが人によってばらばらで、粒度がそろわない
この記事を読み終えたときに手に入るもの
- 台帳に置く項目と置かない項目を、1つの基準で仕分けられるようになります
- 更新の細かさを、自分の作業の区切りに合わせて決められるようになります
- 次の一手を、次のセッションがそのまま実行できる形で書けるようになります
結論30秒でわかる、この記事の結論
- 台帳は記録簿ではなく、次のセッションへの引き継ぎ書です。置く項目は「無いと再開できないか」だけで決まります。
- 決めることは4つあります。項目設計・更新粒度・次の一手の書き方・自動検知との噛み合わせです。
- 自動検知は日付でしか中断を疑いません。粒度を細かくする理由は、検知の精度ではなく読み手のためです。
進行役は3人です。若葉さんが用語の側から、高梨課長が自分の手で動かす側から聞き、鈴木さん(本誌監修)が答えます。
01AIエージェントのタスク管理を台帳に残すと、セッションが切れても何が消えないんですか?
若葉さん台帳って、要するに作業日報のようなものですか。
鈴木さん近いのですが、向きが逆だと思っています。日報は終わったことを書きますよね。台帳は、次に読む人が最初にやることを書きます。読み手が未来にいる、という点が違います。
消えるのは、会話の中にしかなかった状態です。どこまで進んだのか、次に何をするつもりだったのか。これらは頭の中と画面の中にあるうちは、形を持ちません。
消えないのは、ファイルに書いた状態です。プロセスが落ちても、ディスクの中身はそのまま残ります。台帳という1つのファイルに状態を寄せておくと、セッションの寿命と作業の寿命を切り離せます。
この記事で決めるのは4つです。台帳に置く項目、更新の粒度、次の一手の書き方、そして自動検知との噛み合わせです。順番に扱います。
隣の記事との線引きも、先に示しておきます。
| この記事で答える問い | 扱うかどうか |
|---|---|
| 台帳にどの項目を置き、どの粒度で更新するか | 扱います |
| セッションはなぜ切れ、再開までに何を読むか | 扱いません(AGIM-216で扱っています) |
| 会話そのものを復元するコマンドの使い方 | 扱いません(AGIM-018で扱っています) |
台帳という記録の持ち方は、役割と責任範囲をAI社員に持たせる組織設計ともつながります。組織側の全体像はAGIM-300で扱っています。
02AI社員のタスク管理を台帳に任せる前に、置き場所と読むタイミングはどう決めるんですか?
必要なものは多くありません。専用のソフトは要らず、Markdownファイルが1つと、それを読むタイミングを固定する仕組みがあれば足ります。前提は次の3つです。
- Markdownファイルを1つ置ける場所があること(追加の権限は要らず、通常のファイル読み書きの範囲に収まります)
- そのファイルを起動時に読む仕組み(フックや同等の自動処理)があること
- 読む対象のパスが、作業ディレクトリが変わっても解決できること
自社の実装では、台帳の実体は06-todo/クロード構築_tasks_20260624/_台帳.mdという1つのファイルです。読むタイミングは、Claude CodeのSessionStartという起動時イベントに固定しています(出典: Claude Code公式ドキュメント「Hooks」)。新規の起動でも、--resumeによる再開でも、このイベントは発火します。
台帳は、会話の保存先である~/.claude/projects/とは別の場所に置いています(出典: 同社公式ドキュメント「Manage sessions」)。会話が保存されることと、状態が引き継がれることは別だからです。
LEDGER_REL = "06-todo/クロード構築_tasks_20260624/_台帳.md"
def project_dir():
configured = os.environ.get("CLAUDE_PROJECT_DIR")
if configured and os.path.isdir(configured):
return configured
return os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))(.claude/hooks/check-unfinished-tasks.py実測、64行、2026-08-03)
見どころは、台帳のパスを直書きせずCLAUDE_PROJECT_DIRから解決している点です。前提の3つ目がここで効きます。作業ディレクトリが変わっても、同じ台帳を指し続けます。
台帳ファイルそのものが無い場合、このスクリプトは何もせずに終了します。つまり、最初に台帳を作ることが、この仕組みの出発点になります。
この章のまとめ
置き場所と読むタイミングを先に固定すると、あとの項目設計は「その中に何を書くか」だけの話になります。
03AIエージェントのタスク管理に使う台帳は、どの項目まで書けばいいんですか?
高梨課長項目は多いほうが安全に見えるんですが、増やすとまずいんでしょうか。
鈴木さん増やすほど埋まらなくなります。埋まらない欄が並ぶと、読む側はどの欄を信じていいのか分からなくなる。だから基本形は小さく持っています。
自社の検証コードは、状態・次の一手・人間ゲート・最終更新の4つを基本形とし、それ以外はオプション扱いにしています。
| 項目 | 役割 | 無いと何が起きるか | 基本の欄か |
|---|---|---|---|
| 状態 | 進行中・人間ゲート待ち・完了を区別する | 自動検知が対象を分類できない | 基本 |
| 次の一手 | 再開時に最初にやることを1〜2行で示す | 再開する側が作業内容を推測し直す | 基本 |
| 人間ゲート | 送信・公開・削除など、止まっている理由を示す | 何を待っているのかが分からず止まる | 基本 |
| 最終更新 | 更新が止まっている疑いを判定する基準日にする | 中断の疑いを検知できない | 基本 |
| case_idやフォルダ | 案件と成果物の置き場を紐づける | 台帳の記述と実物の対応が取りにくい | 任意 |
case_idは、台帳のパーサが実際に読んでいる項目です。省略するとタスクの見出しが代わりに使われます。ただし重複させると、衝突として扱われます。ここは後の章で扱います。
(90_tools/task-governance/task_ledger.py実測、225行、2026-08-03)
04項目を足したくなったとき、AI導入の現場では何を基準に決めるんですか?
基準は1つだけです。その項目が無いと、次のセッションが再開できないかどうか。 次のセッションが再開できるなら、その項目が無くても運用は壊れません。
この基準に当てると、増やしたくなる項目の多くは外れます。優先度、担当者、見積もり時間。どれも管理表としては自然ですが、無くても再開はできます。
外れた項目に価値が無いという話ではありません。置き場所が台帳ではない、というだけです。台帳は引き継ぎ書なので、引き継ぎに要らないものを置くと、読む速度が落ちます。
項目を増やす提案が出たら、いったんこの基準に戻します。「これが無いと再開できませんか」と1回聞くだけで、たいていの候補は自分から降ります。
逆に、この問いに答えられない欄は、後から誰も埋めません。増やすかどうかを決める前に、その欄を埋めるのは誰なのかも一緒に見ておきます。
この章のまとめ
項目設計の判断は好みではありません。再開できるかどうかという、1つの問いに答えるだけです。
05台帳の更新粒度は、AIエージェントのタスク管理でどこまで細かくするんですか?
更新の刻み方は、クラッシュしたときに失う範囲で決まります。刻み方は大きく3つに分かれます。
| 刻み方 | 更新のタイミング | クラッシュ時に失う範囲 | 運用上の問題 |
|---|---|---|---|
| 細かすぎる | ファイルを1つ保存するたび | ほぼ失わない | 更新が面倒になり、書かれなくなる |
| 粗すぎる | 1日の作業が終わったら | その日の作業全体 | クラッシュした日だけ記録が空白になる |
| 妥当 | 検証可能な区切りが終わるたび | 直前の1区切りだけ | 再開する側は直前の1区切りを読み直せばよい |
この分け方そのものは、AGIM-216が示している基本形と同じです。ここから先で扱うのは、この刻み方の選び方が自動検知の判定にどう効くのかという、実装側の視点です。
「検証可能な区切り」とは、終わったと言い切れる単位のことです。手順を1つ通した、成果物を1つ出した。そこまで来たら書く、と決めておくと、書くかどうかで迷わなくなります。
06生成AIが日付でしか中断を疑わないなら、更新粒度は何のために細かくするんですか?
粒度を考えるとき、見落としやすい事実があります。自動検知は、日付の単位でしか中断を疑いません。
updated = str(task.get("最終更新", "不明"))
stale = ""
if updated and updated != "不明" and updated < today:
stale = " ⚠️前回更新が本日以前=中断疑い"(90_tools/task-governance/task_ledger.py実測、2026-08-03)
このコードがやっているのは、最終更新の文字列を今日の日付と比べることだけです。同じ日のうちに何度更新しても、判定の結果は変わりません。中断の疑いが表示されるのは、日をまたいでも最終更新の日付が変わらなかったときだけです。
つまり、粒度を細かくする理由は、自動検知の精度を上げるためではありません。次のセッションが(AIでも人でも)、直前の1区切りをそのまま読める状態にしておくためです。
自動検知は、日をまたいだ放置を拾うための網にすぎません。網の目より細かい動きは、そもそも見ていません。ここを取り違えると、「検知されないなら書かなくていい」という逆の結論に着地します。
この章のまとめ
細かく書く相手は機械ではなく、次にこの台帳を開く人です。
07次の一手をどう書けば、AIエージェントは次のセッションで動けるんですか?
次の一手は自由記述です。自由であるぶん、書き方の差がそのまま再開のしやすさに出ます。
| 書き方 | 例 | 次のセッションが動けるか |
|---|---|---|
| 動作を書かない | 続きをやる | 動けない(何の続きかが分からない) |
| 対象があいまい | 記事の見直し | 動けない(どの記事かが分からない) |
| 対象と動作がある | AGIM-217の執筆に着手する | 動ける(対象と動作が1対1) |
| 確認方法まで書く | AGIM-217を執筆し、字数と図解点数を確認する | 動ける(完了判定の基準も持てる) |
良い次の一手の条件は2つです。
- 対象を固有名詞(記事ID・ファイル名・案件名)で書く
- 動詞を1つに絞る
「見直す」だけでは、何をどう見直すのかが次のセッションに伝わりません。対象と動詞がそろって、はじめて次の一手として働きます。
分量は1〜2行が目安です。長く書くほど正確に見えますが、増えるのは状況説明で、対象と動作は変わりません。2行を超えたときは、対象を1つに絞れていない疑いがあります。
08進捗ログの設計で、AI社員のタスク管理がつまずくのはどこですか?
高梨課長項目と粒度が決まれば、あとは書くだけですよね。
鈴木さんそこで一度つまずきます。項目名は自由に決めていいのですが、値の書き方だけは自由にできません。ここをそろえないと、自動検知が黙ります。
つまずくのは、決まって次の3か所です。
- case_idを使い回す:
case_idが別のタスクと重なると、LedgerValidationErrorが発生します。その回の起動時チェックでは🔴🟡の一覧が出ず、「❌ タスク台帳エラー」という1行だけが表示されます(task_ledger.py実測)。台帳全体の自動検知が、その1件のミスで丸ごと止まる設計です。 - 状態の表記をそろえない:自動検知は「進行中」「中断」「ブロッカー」など、決まったキーワードで分類します。どの語にも一致しない独自の状態名を書くと、「⚠️非標準の状態」という別枠に分類され、優先度の高い🔴の一覧には出ません(
task_ledger.py実測)。 - 最終更新の書式をそろえない:中断疑いの判定は日付の文字列比較です。
2026-08-03のようにゼロ埋めした形式なら日付順に正しく比較できますが、8/3のような形式が混ざると、比較結果が実際の日付の前後と一致しなくなります。
3つに共通するのは、台帳の自由度を人が使いこなせなかったときの壊れ方です。項目名は自由に書けても、値の表記だけは決まった形にそろえます。
とくに1つ目は、影響の出方が他の2つと違います。自分のタスクだけが見えなくなるのではなく、台帳の一覧そのものが出なくなります。
09AIのタスク管理が台帳で機能しているかは、AI活用の現場でどう確かめるんですか?
設計しただけでは、自動検知が実際に動くかは分かりません。次の3点で確かめます。
# 1. フックを手動で実行し、分類結果を目で確認する
python3 .claude/hooks/check-unfinished-tasks.py
# 2. 最終更新を過去の日付にしたテスト用エントリで、
# 中断疑いの表示が出るかを確認する
# 3. case_idを重複させたテスト用コピーで、
# タスク台帳エラーが表示されるかを確認する- 通常実行:「🔔 タスク継続チェック」という見出しと、🔴・🟡・⚠️のいずれかの一覧が表示されるかを確認します。台帳がクリーンなら、未完了・中断タスクが無い旨の1行だけが出ます。
- 中断疑いの再現:最終更新を過去の日付にしたテスト用エントリを台帳に足し、中断疑いを示す表示が該当行に出るかを確認します。
- エラー経路の再現:
case_idを重複させたテスト用コピーを読み込ませ、通常の一覧の代わりにタスク台帳エラーが表示されることを確認します。
この3点を確認できれば、項目設計と更新粒度が、自動検知という後段の仕組みと噛み合っています。テストが終わったら、テスト用エントリは台帳から削除します。
この章のまとめ
「書いたから動くはず」で止めず、壊した状態を一度作って、表示が変わることまで見ておきます。
10台帳の更新時刻とファイルの更新時刻は、AIエージェントの運用でどう違うんですか?
若葉さんファイルを触った時刻を見れば、進んだかどうかは分かりそうな気がします。
鈴木さん分かりそうに見えるのが厄介なところです。保存すれば新しくなるので、中身が進んだかどうかとは別の話になります。だから台帳は、人が書き入れた欄のほうを見ています。
ここまで見てきた比較は、台帳の「最終更新」欄に書かれた値です。OSが管理するファイルの更新時刻(mtime)とは別物です。
違うのは、値を入れる主体です。台帳の欄は、作業した側が自分で書き入れます。mtimeは、ファイルが保存された時点で機械の側に入ります。
自動検知が見ているのは前者だけです。作業が進んでいても、書き入れなければ中断疑いになります。逆に、ファイルへ触れただけでは、この判定は変わりません。
この2つを取り違えると、「更新時刻が新しいから進んでいるはずだ」という読み方になります。障害の切り分けで更新時刻を犯人にしてしまう事故と、その直し方はAGIM-401で扱っています。
11よくある質問
台帳の項目を増やしたくなったら、何を基準に判断すればいいですか
その項目が無いと次のセッションが再開できないかどうかを基準にします。無くても再開できるなら、その項目は増やさない選択肢を先に検討します。優先度や担当者のような項目は、管理表としては自然でも、再開の可否には効きません。台帳とは別の場所に置くほうが、読む速度を落とさずに済みます。
次の一手を書き忘れたまま作業を止めてしまったらどうなりますか
次のセッションは、会話の記憶ではなく台帳とディスク上の実物から状況を推測することになります。状態と最終更新だけでは、何をすべきかまでは分かりません。推測から始まるぶん、再開までの時間が伸びます。書き忘れに気づいた時点で、対象と動作を1行だけでも足しておくと、次が速くなります。
状態の表記を独自のものにすると、どんな影響がありますか
自動検知が「⚠️非標準の状態」に分類し、優先度の高い🔴の一覧には出なくなります。エラーにはならないので、拾われていないことに気づくまで時間がかかります。決まったキーワードに寄せて書くほうが、自動検知と噛み合います。呼び名を増やしたくなったときは、分類そのものを先に見直します。
この台帳の設計は人間のタスク管理にも使えますか
使えます。台帳はテキストファイルなので、読む側が人でもAIでも解釈できます。項目設計と更新粒度の考え方は、そのまま人のチームにも当てはまります。自動検知の仕組みだけは、エンジンや実装ごとに作り直しが必要です。
台帳は1つのファイルにまとめたほうがいいですか、分けたほうがいいですか
読むタイミングを固定できるかどうかで決めます。起動時に読む対象が1つなら、状態の在りかで迷いません。分けるなら、どれを最初に読むのかを先に決めておきます。ここで紹介した実装は、1つのファイルへ寄せる形を選んでいます。
12まとめ|今日やる3つのこと
台帳は記録簿ではなく引き継ぎ書でした。項目は「無いと再開できないか」で決まり、粒度は次に読む人のために刻みます。そして、値の書き方だけは自由にしません。
今日はこの順で手をつけます
台帳のファイルを1つ作り、起動時に読む場所を決める
置き場所が決まらないと、項目の議論が始まりません
いま動いている作業を1件だけ、基本の欄で書いてみる
欄の過不足は、書いてみると1回で分かります
最終更新を前の日付にした行を足して、警告が出るのを見る
動いていることを目で確かめてから、運用に乗せます
AI検索では、こう聞かれています
AIエージェントのタスク管理は、どこに何を書けばいいんですか?
「AIエージェントのタスク管理に使う台帳は、どの項目まで書けばいいんですか?」の章で扱っています
台帳の更新は、どれくらいの細かさでやればいいんですか?
「台帳の更新粒度は、AIエージェントのタスク管理でどこまで細かくするんですか?」の章で3つに分けています
次の一手には、何を書けば次のセッションが動けるんですか?
「次の一手をどう書けば、AIエージェントは次のセッションで動けるんですか?」の章で条件を挙げています
台帳を書いているのに、中断が検知されないのはなぜですか?
「生成AIが日付でしか中断を疑わないなら、更新粒度は何のために細かくするんですか?」の章に理由があります
次に読むなら、この記事です