◉CLAUDE LABEN
●2.1.302 — fork サブエージェントが claude -p・Agent SDK・デスクトップで既定オンになりました。無効化は CLAUDE_CODE_FORK_SUBAGENT=0(10/16)●2.1.301 — 使用量上限に達した無人実行の再試行を、待ち続けず自動で止めるようになりました(10/15)。最新は 2.1.303(10/18)●SONNET 4.5 — Claude API での提供終了は 11/30、残り41日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.302 — fork サブエージェントが claude -p・Agent SDK・デスクトップで既定オンになりました。無効化は CLAUDE_CODE_FORK_SUBAGENT=0(10/16)●2.1.301 — 使用量上限に達した無人実行の再試行を、待ち続けず自動で止めるようになりました(10/15)。最新は 2.1.303(10/18)●SONNET 4.5 — Claude API での提供終了は 11/30、残り41日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Cowork
◈ Cowork/2026-09-05上級

Cowork の永続メモリは、更新日ではなく検算で鮮度を判定します

永続メモリは書いた時点の事実を無期限に主張します。無人実行がそれを疑わないまま古い置き場所を掴んだ経験から、更新日ではなく検算で鮮度を判定する仕組みを作りました。依存なしの検算ランナーと、落ちた記憶を保留として見せるローダーの実装です。

Cowork51メモリ9スケジュールタスク28運用設計29

✦ プレミアム記事

金曜の夜に、素材をまとめる無人ジョブが「0 件」で正常終了しているのを見つけました。

エラーは出ておりません。例外も、警告もありません。ログには処理件数の 0 と、所要時間だけが残っていました。手で同じ手順を辿ってみて、ようやく分かりました。ジョブが見に行っていたフォルダは、私が数か月前に整理して中身を移したあとの、空の抜け殻だったのです。

置き場所を変えたことは覚えていました。覚えていなかったのは、その置き場所を永続メモリにも書いていたことのほうでした。メモリのファイル自体は数週間前に触られていて、日付だけ見ればそれほど古くありません。けれど中に書かれていた一行は、半年前の配置を指したままでした。ファイルの日付を鮮度だと思い込んでいたのだと気づいたのは、手で辿り直したあとでした。——更新日が表していたのは記憶の鮮度ではなく、ファイルの鮮度だったのです。

記憶は主張であって、事実ではありません。渡す前に、いま成り立つかを一度だけ確かめます。 個人開発で無人のスケジュール実行を増やしてから、私はこの一行を運用の前提に置くようになりました。

更新日が新しい記憶ほど、古い事実を持っていることがあります

最初のうち、私はメモリに何を書くかばかりを気にしておりました。書きすぎないこと、機密を混ぜないこと、重複させないこと。どれも必要ですが、どれも「書く瞬間」の話でした。事故は書く瞬間ではなく、半年後に読まれる瞬間に起きました。

厄介なのは、更新日が当てにならないところです。メモリを更新する動機は、たいてい「新しいことを書き足したいとき」に生まれます。すでに書いてある古い一行は、書き足すついでに読み返されることがありません。むしろ活発に育っているメモリほど、その内側に一度も検算されていない古い主張を抱え込みます。

人間が読めば「あれ、そこはもう移したはずでは」と手が止まります。無人実行は止まりません。メモリに書かれた前提を疑う理由を持っていないからです。私が観測した限りでは、この種の空振りは失敗としてすら記録されません。前提が古いだけで、手順そのものは正しく完走してしまうのです。

無人ジョブが「成功」と言いながら成果を出していない状態については、「成功」と記録されたのに成果がゼロだった無音失敗の話にも書き残しております。今回の件は、その原因がジョブの外側——渡した記憶の側——にあった例でした。

腐る事実と、腐らない事実を分けます

対策を考えはじめたとき、最初に浮かんだのは全部のメモリに有効期限を付けることでした。三か月で失効させて、都度読み直すという案です。素直な発想だと感じていました。

やってみて、これは筋が悪いと分かりました。失効するのは記憶のほうではなく、記憶が指している対象のほうだからです。三か月経っても正しい事実は正しいままですし、三日で嘘になる事実もあります。一律の期限は、腐っていないものを捨てて、腐ったものを残します。

期限という発想そのものが、腐り方の違いを均してしまうのかもしれません。代わりに、事実の種類で仕分けることにしました。私の手元では、おおむね次のように分かれます。

事実の種類例腐り方
場所を指す事実素材の置き場所、正本のパス、出力先整理・移動のたびに黙って腐ります
名前を指す事実スクリプト名、タスク名、フラグ名改名で腐ります。参照側は気づけません
外の世界の事実モデルの世代、料金、提供終了の予定自分が何もしなくても腐ります
手順の事実実行順序、前提条件、依存関係実装を直したときに一緒に腐ります
判断の事実なぜその方式を選ばなかったか、線引きほとんど腐りません
好みの事実文体、命名の癖、避けたい表現ほとんど腐りません

上の四つには共通点があります。どれも外部に対応物があり、その対応物の有無を機械で確かめられるという点です。下の二つには対応物がありません。判断の理由を検算するコマンドは書けません。

そして、この線はそのまま「検算を添えるべきか」の線になりました。腐る事実には検算を添えます。腐らない事実には添えず、そのまま渡します。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦永続メモリが古い事実を主張し続け、無人実行が誰にも気づかれないまま空振りする事故を、参照の前に止められるようになります
✦自分のメモリを「腐る事実」と「腐らない事実」に仕分けし、どれに検算を添えるべきかを自分の基準で判断できるようになります
✦依存ライブラリなしの検算ランナーとローダーを手元に置き、落ちた記憶を黙って捨てずに保留として扱えるようになります
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

◈ Cowork2026-10-18
前読みを head -150 で切っていた朝、読んだ 15.6KB のうち最新日は 3.3KB でした
日次メモの前読みを head -150 にしていた定期タスクで、行数は予算にならないと分かりました。日付ブロック単位で読む小さなリーダーと、切るときに消えやすい「まだ使っていない案」の守り方をお伝えします。
◈ Cowork2026-10-01
定期タスクの手順書を削る前に、その一冊が何回読み直されるかを数えました
前読みの手順書を13KB削った見積もりは、再読込で数え直すと呼び出し約1.3回ぶんでした。削る前に何回読み直されるかを数える台帳と、実行中に読み込み量を残す関数をお伝えします。
◈ Cowork2026-09-16
定期タスクが動く日と動かない日があったのは、フォルダを1つ指定していたからでした
Cowork の定期タスクは既定でリモート実行ですが、手元のファイルやアプリを必要とした瞬間に端末実行へ切り替わります。作成画面の最後の一項目が実行場所を決めている仕組みと、タスクを作る前に決めておきたい三つの問いを書き残します。