◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/API & SDK
⬡ API & SDK/2026-07-08上級

無人エージェントの挙動変更を、フィーチャーフラグで少しずつ試す設計

無人で走るエージェントのプロンプトや挙動を一度に全変更すると、劣化が朝まで見えません。フィーチャーフラグで一部の実行にだけ新挙動を割り当て、品質を見てから広げる設計と、決定論的バケット・自動ロールバック・監査証跡の実装を紹介します。

Claude Agent SDK13feature flag無人運用9カナリアリリース設計6

✦ プレミアム記事

四つのサイトのプロンプトを、同じ晩にまとめて書き換えたことがありました。

意図は良かったのです。導入部の言い回しを揃え、口調をもう一段ていねいにする。手元で二、三本試すと、確かに読みやすくなっていました。そのまま全サイトの生成タスクへ反映し、私は眠りました。

翌朝、四つのログが揃って同じ表情で失敗していました。品質ゲートの一つが、変更後のプロンプトが生む微妙な構造の崩れを弾いていたのです。手元の数本では出なかった問題が、夜間の実データではきれいに再現していました。全サイトを一度に変えたので、無事だった対照群がどこにもありません。「本当に新しい書き方が原因なのか」を切り分ける材料が、自分の手で消されていました。

無人で走るものほど、変更は一気に当ててはいけない。この記事は、その教訓を設計に落とし込んだ記録です。

なぜ「全適用」が無人運用で特に危ないのか

対話しながら使うツールなら、出力が変なら人がその場で気づいて止められます。無人のエージェントにはその目がありません。深夜二時に走る処理の劣化は、翌朝ログを開くまで誰も見ていないのです。

しかも失敗は必ずしもエラーで現れません。例外は投げず、生成は完了し、けれど記事の密度が落ちている。そういう「静かな劣化」は、機械的なゲートをすり抜けた瞬間に本番へ流れます。

私は四つの技術サイトと、AdMob で収益を得ているいくつかのアプリを、個人開発で回しています。どれも夜間に無人のジョブが走るため、この「見ていない時間帯の劣化」は、私自身が何度も踏んできた地面です。

だからこそ、変更を全実行へ即時反映するのではなく、一部だけに新しい挙動を割り当てて、残りを対照群として温存するという発想が要ります。ソフトウェアのカナリアリリースを、プロンプトやエージェントの挙動という「振る舞い」に対して適用する、という言い方が近いかもしれません。

最小のフラグ定義

まず、挙動の分岐を一枚の設定ファイルに集約します。コードの中に if (newBehavior) を散らすと、いま何が何%で走っているのかが誰にも分からなくなります。正本は一つに保ちます。

フィールド型役割
keystring分岐の識別子。コードから参照する名前
enabledbooleanこの分岐を評価するかどうかの大元のスイッチ
rollout0–100新挙動を割り当てる実行の割合
killedboolean緊急停止。true なら rollout に関わらず旧挙動へ固定
scopestring[]対象を絞る軸(サイト名など)。空なら全体
ownerstring誰が入れたか。棚卸しの手がかり
createdAtISO dateいつ入れたか。寿命管理に使う
// flags.json — 挙動分岐の正本
{
  "gentler-intro-phrasing": {
    "enabled": true,
    "rollout": 25,
    "killed": false,
    "scope": ["claudelab"],
    "owner": "masaki",
    "createdAt": "2026-07-08"
  }
}

rollout: 25 かつ scope: ["claudelab"] は、「まず一サイトの、さらにその四分の一の実行にだけ新しい言い回しを試す」という意味になります。四サイトを一晩で全部変えた昨日の自分とは、ここが決定的に違います。

✦

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

この記事の続きを読む

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

この記事で得られること
✦決定論的バケット割り当て: 実行キーのハッシュで同じ処理を常に同じ群へ振り分け、観測を安定させる実装
✦カナリア評価と自動ロールバック: control 群と canary 群の生成成功率を比べ、しきい値を割ったら次の実行でフラグを閉じる仕組み
✦フラグの寿命管理: 恒久化した分岐を残すと分岐爆発を招くため、棚卸しの運用ルールまで含めて設計する
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ API & SDK2026-10-07
モデルを切り替える前に、自分の呼び出しの形を候補モデルへ1トークンで再生する
モデルIDを書き換えて本番を回すと、400 は最初のリクエストで返ります。thinking の指定や tool_choice など自分の呼び出しの形を、max_tokens 16 の再生で先に確かめる小さな仕組みを書きました。
⬡ API & SDK2026-05-20
Claude Agent SDK で複数 MCP サーバを束ねるときのツール名衝突 — 名前空間と動的調停の設計
GitHub MCP と Linear MCP の create_issue が同居したとき、Sonnet 4.6 はどちらを呼ぶか分かりません。複数 MCP を束ねる Claude Agent SDK アプリで踏むツール名衝突の構造、TypeScript で書ける Reconciler の実装、そして本記事に最初に載せた schemaHash が5種類のスキーマ変更を全て見逃していた実測と訂正までをまとめます。
⬡ API & SDK2026-04-22
Claude Agent SDK × Temporal.io で耐障害性のある長期実行AIワークフローを構築する — Durable Execution と補償トランザクションの本番設計パターン
Claude Agent SDKとTemporal.ioを組み合わせ、数時間〜数日単位で走るAIワークフローをクラッシュや再起動に耐えさせる本番設計を完全解説。Durable Execution・リトライ・補償・シグナル統合の実装パターン。