本文へスキップ
hdknr blog
戻る

目標駆動・自律改善システムの構築ベストプラクティス — Claude Code で自分で改善しながら回るシステムを作る

実運用中の自律トレーディングシステムで踏んだインシデント(データ凍結による出口シグナル遅延と、それを毎日のレビューが見逃した一件)から抽出した設計原則。姉妹編 自律システムはなぜ自分の欠陥に気づけないのか の実践編。

0. 前提:何を作ろうとしているか

「目標に対して自律的に改善するシステム」を、次のループを回すものと定義する(OODA の変種)。

目標駆動・自律改善ループの図。①Sense収集・②Decide判断・③Act実行・④Review評価・⑤Improve改善の5段階が縦に並び、⑤から①へ「ループを閉じる」矢印が戻る。右側の人間ボックスから「素朴な問い/反実仮想」の破線矢印がReviewへ刺さり、人間が問いと原則判断で外から介入することを示している

典型的な事故は、①でデータが静かに古くなり、②④が同じ古い前提を共有し、⑤が真因(データ層)ではなく②のしきい値を触りに行くという、ループ全体の合意的な失明である。以下の原則は「各ステージで何を守るか」に対応する。

原則1:目標を「北極星 + リスク予算」で定義し、計器を正直に保つ

自律ループは目標に向かって最適化するので、目標の表現が歪むとシステム全体が歪みを増幅する

アンチパターン:CI やダッシュボードの赤を、しきい値を緩めて緑にする(= 体温計をいじる)。目標は下げない。計器を正直にする。

原則2:入力の鮮度と整合性を「境界」で能動チェックする(GIGO 対策)

GIGO(Garbage In, Garbage Out=ゴミを入れればゴミが出る)は自律ループの静かな天敵だ。自律ループは自分のデータストアを盲信する。「データが無い」は例外で気づけるが、「データが古い/ズレている」は無言で通過する。

原則3:観測(observability)と制御(control)を混同しない

「ダッシュボードに出ている」は「システムが対処できる」を意味しない。

原則4:「やったこと」だけでなく「避けたこと」を測る

学習信号のサバイバーシップ・バイアスは自律システムの静かな殺し屋。

原則5:自己改善は「安全ゲート付き」で段階的に自律化する

⑤(コード/ルールの自己書き換え)が最も価値が高く、最も危険。

原則6:メタ盲点を受け入れ、「人間の問い」を設計に織り込む

最重要のメタ教訓:

自律システムは、自分の盲点を自分では監査できない。

Claude Code 機能へのマッピング

やりたいことClaude Code の機構
定期実行のループ(収集・提案・レビュー)Scheduled agents / cron、self-hosted runner + GitHub Actions
「毎回この手順」を固定化Skill / スラッシュコマンド(.claude/commands/*.md
「Xしたら必ずYする」自動挙動hooks(settings.json)。プロンプトで保証できない自動化はフックで
大規模な調査・レビューの並列化サブエージェント(Agent tool)で fan-out、独立視点で adversarial verify
自己改善の安全ゲートPR + CI + auto-merge ゲート + 人間承認。デフォルトブランチ保護
ガバナンス/規約の常時注入CLAUDE.md(規約・安全則・テスト規約を集約し全セッションに効かせる)
盲点の考古学(後から原因を辿る)実行時状態の永続化(判断の根拠テキスト・スナップショット・レポートをDBに残す)

「エージェントに優しいコードベース」の実装規律

自律改善はエージェントが読める・変えられる・検証できるコードでこそ回る。

  1. 判断ロジックを純関数に切る(DB非依存)。テスト・モック・grep が容易になる。
  2. 実 DB セッションでテストする(モックではなく実インメモリ DB)。制約・型変換・flush が本番同様に発火し、モックが空振りするバグを捕まえる。
  3. 出力は「存在」でなく「内容」をアサートする(必須セクション・数値まで検証)。
  4. エラー/例外の再現は実物で。短い代用文字列は整形パスを通らず本番特性を再現しない。
  5. 意思決定の根拠を永続化する。「何を入力に、なぜそう判断したか」を残すのが、後の自己監査の生命線。

アンチパターン・チェックリスト(黄色信号)

3つ以上該当したら、機能追加より先にここを塞ぐ。

構築順序(段階的に立ち上げる)

  1. 観測から始める(Lv0):目標・リスク予算を定義し、ギャップを毎日正直に表示するだけ。まだ何も自動で変えない。
  2. 境界を固める:鮮度ガード・ソース乖離検知・契約テストを先に入れる(GIGO を塞いでから賢くする)。
  3. 提案を足す(Lv1):エージェントが行動を提案、人間が承認。両側(機会損失/損失垂れ流し)を測る。
  4. ループを閉じる:検出した構造問題を PR 化する橋を作り、CI + 人間マージでゲート。
  5. 限定自動化(Lv2+):低リスク・可逆な操作から自動実行を解禁。危険操作は承認/権限で縛る。
  6. メタ層を常駐させる:定期的な素朴問診・反実仮想・完全性クリティックを制度化。

一言で

速く作れることは、盲点も速く量産する。 効くのは派手な自律機能ではなく、「境界で鮮度を見る / ソース乖離を監視する / ループを閉じる / 避けたことを測る / 計器を正直に保つ / 人間の問いを設計に織り込む」という地味な規律。そして自己改善コードは必ず PR + 人間マージのゲートを通す。

この記事の背景となった実際のインシデント(データ凍結が「毎日のレビュー」を素通りした顛末)は、姉妹編 自律システムはなぜ自分の欠陥に気づけないのか を参照。



前の記事
自律システムはなぜ自分の欠陥に気づけないのか — Claude Code で自律システムを作るときの5つの教訓
次の記事
テスト失敗を「人が直す」から「キューを自律消化する」へ — 監査ツール + 自律修正スキルの設計