◉CLAUDE LABEN
●2.1.296 — サブエージェントごとに autoCompactWindow を指定でき、ワークフロー用のモデルも環境変数で固定できます●AGENTS — Managed Agents の動的ワークフローがベータに。大量の文書を扱う実行を agent が自分で組めます(10/09)●SONNET 4.5 — Claude API での提供終了は 11/30、残り48日。移行先は Sonnet 5.5●Q&A — ストリーミングを途中で止めても、閉じたタブへの課金が続かない実装が共有されています●WORKTREE — claude --worktree で同じリポジトリを並行して動かすとき、先に知っておきたい点が整理されています●NEW — つまづき集を毎回全文読ませるのをやめ、番号で一節だけ読む●2.1.296 — サブエージェントごとに autoCompactWindow を指定でき、ワークフロー用のモデルも環境変数で固定できます●AGENTS — Managed Agents の動的ワークフローがベータに。大量の文書を扱う実行を agent が自分で組めます(10/09)●SONNET 4.5 — Claude API での提供終了は 11/30、残り48日。移行先は Sonnet 5.5●Q&A — ストリーミングを途中で止めても、閉じたタブへの課金が続かない実装が共有されています●WORKTREE — claude --worktree で同じリポジトリを並行して動かすとき、先に知っておきたい点が整理されています●NEW — つまづき集を毎回全文読ませるのをやめ、番号で一節だけ読む
記事一覧/Cowork
◈ Cowork/2026-06-29上級

古い入力で無音劣化させない — 無人パイプラインの入力フレッシュネス契約

スケジュール実行の自動パイプラインが、空や古い参照データを読んで静かに劣化した成果物を出す事故を防ぐための設計。鮮度・非空・由来を契約として検証するゲートをbashで実装し、私自身がCoworkで踏んだ落とし穴も共有します。

Cowork44スケジュールタスク25自動化87パイプライン3信頼性5

✦ プレミアム記事

朝、スケジュール実行のログを開くと、成果物は確かに一本増えていました。けれど中身を読んで、背筋が少し冷えました。

それらしい体裁は整っているのに、肝心の固有情報が抜け落ちている。原因をたどると、参照していたデータファイルが、その時刻にはまだ空だったのです。前段の更新処理が数分遅れただけで、後段は「空のファイルを正常に読み込んだ」と判断し、薄い成果物を黙って世に出していました。

無人で処理を回すとき、いちばん怖いのはエラーで止まることではありません。止まらずに、間違ったまま完走してしまうことです。エラーは気づけます。けれど「静かな劣化」は、誰かが成果物を読み返すまで見つかりません。

私は個人開発の傍ら、Coworkのスケジュール機能で複数サイトの自動更新を回しています。その運用のなかで何度かこの種の事故に遭い、対症療法では再発が止まらないと痛感しました。要るのは、入力そのものを「信頼できる前提」として毎回検証する仕組み。本稿で扱うのは、それを「入力フレッシュネス契約」という形に落とし込む方法です。

無音で劣化するのは、たいてい入力側の問題です

成果物が静かに劣化するとき、生成ロジック自体が壊れていることは意外と少ないものです。多くは、生成器に渡る前の「入力」が想定と違っているのに、それを誰も検めていない。私が繰り返し見てきたのは、次の三つの形でした。

一つめは、空のファイルです。cat でパスを読み違えても、存在しないパスを読んでも、シェルは空文字列を返して何事もなかったかのように進みます。生成器は「参照データはありませんでした」と素直に受け取り、汎用的で当たり障りのない成果物を作ります。

二つめは、古いファイルです。前段の更新が失敗、または遅延しても、前回のファイルは残っています。後段はそれを「今日のデータ」として読み、昨日の文脈で今日の成果物を作ってしまう。ファイルは存在し、中身もある。けれど鮮度がない。

三つめは、前回の残骸です。固定名の一時ファイルに書き込む設計だと、今回の書き込みが失敗したときに前回の中身がそのまま残り、無音で混入します。これは空や古いより厄介で、もっともらしく見えるぶん発見が遅れます。

共通しているのは、どれも「処理は成功している」ように見えることです。だからこそ、入力を疑う関門を明示的に置かない限り、劣化は静かに通り抜けます。

入力を「契約」として扱う — 鮮度・非空・由来

そこで私は、上流の入力を暗黙の前提ではなく、明示的な契約として扱うことにしました。契約と呼ぶのは、満たされなければ後段に進ませない、という強制力を持たせたいからです。検証する条件は三つに絞っています。

鮮度(freshness)は、ファイルが許容範囲内に更新されているか。毎日再生成される参照データなら、たとえば24時間以内であること。閾値を超えたら「古い」と判定します。

非空(non-empty)は、最低限の中身があるか。単にゼロバイトでないだけでなく、その入力に意味のある下限バイト数を設けます。見出しだけの数十バイトを「内容あり」と誤認しないためです。

由来(provenance)は、その入力が正しい出所のものか。クローンしたリポジトリなら、ローカルのHEADがリモートの最新と一致しているか。一時ファイルなら、今回の実行で書かれたものか。古い場所を「最新」と取り違えないための条件です。

この三つを満たした入力だけを「信頼できる」とみなし、一つでも欠けたら実行を止める。判断を生成器に委ねず、関門で機械的に弾くのが要点です。

✦

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

この記事の続きを読む

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

この記事で得られること
✦参照データが空・古い・前回の残骸のとき、無音で劣化した成果物を出してしまう3つの失敗パターンと見分け方
✦入力に鮮度・非空・由来の3条件をassertする約60行のフレッシュネス・ゲートをbashで実装する手順
✦Coworkのスケジュール実行で私自身が踏んだ『UTC日付による上書き』『nobody所有のstaleクローン』を踏まえた設計判断
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◈ Cowork2026-09-18
Cowork と Claude Code のどちらに置くかを、承認の挟まり方で決めています
同じ Claude が動く Cowork と Claude Code を、機能の比較ではなく「途中で人の承認が挟まってよいか」で置き分けている基準と、無人の面に残す書き方を実例つきでお伝えします。
◈ Cowork2026-09-16
定期タスクが動く日と動かない日があったのは、フォルダを1つ指定していたからでした
Cowork の定期タスクは既定でリモート実行ですが、手元のファイルやアプリを必要とした瞬間に端末実行へ切り替わります。作成画面の最後の一項目が実行場所を決めている仕組みと、タスクを作る前に決めておきたい三つの問いを書き残します。
◈ Cowork2026-10-01
定期タスクの手順書を削る前に、その一冊が何回読み直されるかを数えました
前読みの手順書を13KB削った見積もりは、再読込で数え直すと呼び出し約1.3回ぶんでした。削る前に何回読み直されるかを数える台帳と、実行中に読み込み量を残す関数をお伝えします。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます