ダッシュボード
2026年7月5日
著者: Boris Tane

私は会社をプロアクティブなエージェントに賭けている

Explore with AI

エージェントは頼めばほとんど何でもできます。そして、それこそが問題です。まだ頼まなければならないのです。

エージェントを「デジタルの同僚」と呼ぶ人の話をよく聞きます。この枕えは間違っています。完璧に範囲を切ったタスクを渡されるまで黙って座り、それを終えたらまた待ちに戻る同僚は、同僚ではありません。これまで使ったすべてのエージェントは、まさにこのように動いてきました。モデルは賢くなり、ハーネスは良くなり、実行は長くなりましたが、インターフェースは変わりませんでした。仕事を持ってくるのは人で、エージェントが持ってくるのは労働です。

そして多くの人はそれに気づいていません。プロンプトボックスが、いつのまにか私たちの頭の中でAIそのものであることになってしまったからです。

Ask anything about your stack...
AIの既定のインターフェース。

すべてのインターフェースは、いまだにプロンプトボックス

この時代のすべては入力ボックスから始まりました。ChatGPTがモデルの上に1つ置いて史上最速で成長したプロダクトになり、私たちは皆それを真似しました。以降のすべてのAIプロダクトは、同じやり取りの変奏です。人が打ち、機械が答え、機械が待つ。

Claude Codeが次の進化でした。エージェントはターミナルに移り、ファイル、シェル、gitの履歴を手に取り、話すだけでなく実際の仕事を始めました。エージェントにできることは変わりましたが、始まり方は変わりませんでした。人が打ち、エージェントが働き、止まり、また打たれるのを待つ。

~/app
$ claude
✳ 12 files · main · last session 2h ago
> fix the failing checkout tests
? for shortcuts
同じ入力ボックスが、ターミナルの中に。

それからエージェントはクラウドに移りました。Codex、Devin、Web版のClaude Code。数分ではなく数時間動き、作業を並列化するためにサブエージェントを立ち上げ、ラップトップを閉じても死にません。昼食の前にタスクを渡し、戻ってくるとプルリクエストができています。

graph TD
    A[You write the task] --> B[Cloud agent]
    B --> C[Sub-agent]
    B --> D[Sub-agent]
    B --> E[Sub-agent]
    C --> F[Pull request]
    D --> F
    E --> F
    style F fill:#d1fae5,stroke:#6ee7b7,color:#065f46

プロンプトはキーボードだけのものでさえなくなりました。バックグラウンドのエージェントはアラートやWebhookで起動でき、ほとんどのエージェントプラットフォームは今ではオートメーションを提供しています。このイベントが発火したら、あるいはこのcronが刻んだら、この指示でエージェントを実行する、というものです。

Triage Sentry alerts Enabled
When
a Sentry alert fires
Do
investigate, open an incident if it's real
Then
post the findings to #incidents
オートメーション:エージェントは書かれた指示に従ってイベントに反応します。

しかし、オートメーションとは何でしょうか。それは事前に書かれたプロンプトです。失敗モードを予測し、イベントを選び、何をすべきかを書き留めた。トリガーがエージェントを起動しますが、その中の判断は人のもので、設定時点で凍結されています。オートメーションは予期したことをちょうど捕まえ、それ以外は何も捕まえません。

スケジューラーは人

ツールをはぎ取ってみると、分業はこの3年間動いていません。エージェントが仕事をする。何が仕事かを決めるのは、依然として人の仕事です。

ダッシュボードを読み、ユーザーの声を聞き、何が重要かを見極め、学んだことすべてをプロンプトに圧縮する。キーボードの前でその場で打つか、トリガーの中に前もって書くか。エージェントは見事に実行しますが、システムの中のすべての判断は人から始まっています。

graph TD
    A[Dashboards] --> D[You]
    B[Alerts] --> D
    C[User complaints] --> D
    D --> E[The prompt you type today]
    D --> F[The automation you configured last month]
    E --> G[Agent]
    F --> G
    style D fill:#fee2e2,stroke:#fca5a5,color:#991b1b

次の進化:仕事を見つけるエージェント

私は、次の進化はエージェントがやるべき仕事を自ら見つけることだと賭けています。プロンプトもなく、設定するトリガーもなく、事前に書く指示もない。スタックを接続すると、エージェントが自分で仕事を見つける。人が見ているのと同じシグナルを見守り、おかしいところに気づき、それが重要かを判断し、自律的に取り組み始める。

これは言うのは簡単で、作るのは残酷なほど難しいです。プロアクティブであることは3つの問題が積み重なったもので、そのどれか1つでも飛ばすと、入力ボックスの後ろにいるエージェントより悪いものができあがります。

**コンテキスト。**当然ながら、エージェントには自分が動く世界のライブなモデルが必要です。プロンプト時にコンテキストウィンドウに貼り付けたスナップショットではありません。悪いコンテキストを持つリアクティブなエージェントは、悪い答えを返します。悪いコンテキストを持つプロアクティブなエージェントは、ステージングだと思って本番のデータベースを消します。

**判断。**これが私を最も苦しめてきたものです。どの瞬間にも、本番システムでは何千ものことが少しずつおかしくなっています。そのすべてを指摘するエージェントはノイズ発生器で、ノイズ発生器はミュートされ、ミュートされたエージェントは死んだエージェントです。プロアクティブであることの価値のすべては、「何かが変わった」と「何かが重要だ」の間の隙間にあります。

[
  {
    "signal": "memory up 3% on checkout-edge",
    "verdict": "no anomaly",
    "reasoning": "within the seasonal range for this hour on this worker"
  },
  {
    "signal": "new error pattern, 2 minutes after deploy 9f3c2a1",
    "verdict": "incident",
    "reasoning": "error class never seen on this worker, tightly correlated with a deploy"
  }
]

**行動。**気づくだけで行動しないのは、少し賢いアラートにすぎず、アラートこそ私が殺そうとしているものです。エージェントは仕事を終えなければなりません。自律を安全にする境界の内側で。元に戻せる操作、すべてに対する証拠、そして元に戻せないことが起きる前の固いゲートです。

この3つのどれにも、エージェントが良い状態とは何かを決めることは含まれていません。エージェントが決めるのは、何がおかしいか、それが重要か、何をすべきかで、それで全部です。本番環境では、誰も良い状態を定義する必要がないからです。エラーはゼロ、レイテンシーはベースライン、キューは空、証明書は有効。望ましい状態は領域に付いてきます。

つまり、本当の転換は「人がプロンプトを打つ」から「エージェントが自分にプロンプトを打つ」へではありません。命令的な運用から宣言的な運用へです。オートメーションは命令的です。失敗モードを事前に列挙し、それぞれへの対応を台本にする。プロアクティブなエージェントはリコンシリエーションループです。今あるシステムをあるべきシステムと突き合わせ、その差を埋めるために働く。Kubernetesは10年前にインフラでこれをやりました。レプリカ3つと書けば、コントローラーが3つのレプリカを生かし続けるために必要なことを何でもします。ソフトウェアの運用そのものに対して、これをやった者はいません。しかもここでは書くYAMLさえありません。望ましい状態はすでに分かっているからです。箱から出してすぐ動きます。

私は運用から始めた

プロアクティブなエージェントにプロダクトのロードマップを選ばせると、意見の強いインターンが手に入ります。プロダクトの方向性は趣味の問題だからです。本番環境は違います。3つの問題すべてが今日解ける唯一の領域です。

仕事は自ら名乗り出ます。エラー率が上がり、デプロイが横道に逸れ、証明書が切れ、キューが詰まる。仕事はすでにテレメトリーの中に座っていて、誰かが気づくのを待っています。そして趣味に左右される領域と違い、正解が存在します。エラー率は急上昇したかしなかったか、ロールバックはベースラインを戻したか戻さなかったか。だからエージェントの判断はシステム自身によって、継続的に、雰囲気の余地なく採点されます。

何より、私たちはこの仕事にすでに人を配置しています。それをオンコールと呼びます。電話の隣で眠り、ある機械が別の機械の不調を告げるのを待つ人です。私はオブザーバビリティに何年も費やし、オブザーバビリティの会社を創業してCloudflareに買収され、答えがクエリ1つ先にあるようテレメトリーを構造化することについてマニフェストを丸ごと1本書きました。その主張が、この会社が存在する理由です。2026年に誰もオンコールをするべきではありません

オブザーバビリティのこの10年の居心地の悪い真実は、私たちがシステムを午前3時に人が問い合わせやすいものにし、その上で人がまだ起こされる側のままなのに勝利を宣言したことです。ダッシュボードは美しくなり、ページャーはナイトテーブルの上に残りました。行動のないオブザーバビリティは、高価なストレージにすぎません。

どんな姿か

これがPolylaneのしていることです。ある具体的な火曜日を示します。

graph TD
    A["02:14 — checkout p99 jumps from 180ms to 2.1s"] --> B["02:15 — agent flags it: new error pattern, right after the 01:52 deploy"]
    B --> C["02:16 — incident opens, 3 hypotheses investigated in parallel"]
    C --> D["02:31 — verdict: connection pool exhausted by a new N+1 query"]
    D --> R["02:33 — the 01:52 deploy is rolled back, p99 back to 180ms. The incident is over."]
    R --> E["02:38 — PR opened with the fix and the evidence attached"]
    E --> F["08:30 — you wake up, read the investigation, merge"]
    style A fill:#fee2e2,stroke:#fca5a5,color:#991b1b
    style R fill:#d1fae5,stroke:#6ee7b7,color:#065f46
    style E fill:#d1fae5,stroke:#6ee7b7,color:#065f46

この失敗モードのチェックを設定した人は誰もいません。書くルールも調整するしきい値もありません。エージェントは接続済みのすべてのリソースを継続的に評価し、既存のダッシュボードと保存済みクエリがそのチェックリストになります。判断は私が最も厳格な部分です。既定の判定は異常なしです。境界線上のイシューを見逃す方が、ノイズで誰かを起こすよりずっと良いからです。「デプロイはバグを持ち込み得る」はすべてのデプロイに当てはまり、誰かを呼び出す根拠には決してなりません。

何かが本物であるとき、調査は競合する複数の仮説を並行して走らせ、各エージェントの仕事は自分の仮説を確認することではなく否定することです。相関が原因のふりをすることは決してありません。確認された根本原因がコードの変更であるとき、修正は調査を添えたプルリクエストとして届きます。

Restore Hyperdrive pool size in checkout-edge
PR open coreplane/checkout-edge
Investigation report attached Checks passing
修正はPRとして届きます。レビューすれば、マージされます。

Opened by Polylane · gated on review and CI

プロアクティブは、無監督ではない

自律しているのは、気づくこと、トリアージ、午前3時の考古学、そして緩和です。既知の正常な状態を復元するものは、エージェントが自分で行います。悪いデプロイをロールバックする、フラグを戻す。これらの操作は構造的に元に戻せるものであり、ページャーを実際に黙らせるのはこれらです。ゲートの後ろに残るのは、新しい状態を作るものすべてです。コードの変更はレビューとCIを通って出荷され、決して迂回しません。

境界線は人かエージェントかではありません。元に戻せるか、戻せないかです。だからこそ、実はまだオンコールのままだということにはなりません。ロールバックは02:33にインシデントを終わらせました。プルリクエストをマージする6時間前です。PRは出血を止めたものではありませんでした。PRは再発を止めるものであり、それはコーヒーまで待てます。

そしてゲートは委任できます。コードレビューエージェントはすでにリポジトリのすべてのプルリクエストを読んでいます。ここからそう遠くない世界では、レビューエージェントが02:41に修正を読み、調査に照らして検査し、承認し、CIが目を覚ます前に本番環境にデプロイします。ループの中で変わるのは、承認ボタンを誰が持つかだけです。行き着く先はそこです。自らを修復するソフトウェア。人はマージをクリックする代わりにポリシーを書きます。

graph TD
    A[Signals] --> B[Detection]
    B --> C[Investigation]
    C --> R[Rollback, on its own]
    C --> D[Pull request]
    D --> E[You or your agent review, it merges]
    R --> F[Memory]
    E --> F
    F --> B
    style R fill:#d1fae5,stroke:#6ee7b7,color:#065f46
    style D fill:#d1fae5,stroke:#6ee7b7,color:#065f46
    style F fill:#dbeafe,stroke:#93c5fd,color:#1e40af

このループに欠けているものに注目してください。

Ask anything about your stack...
誰も何も打っていません。誰も何も設定していません。

プロンプトボックスは、こうしたシステムを信頼することを学ぶには素晴らしい方法でしたが、本番環境を運用するにはひどい方法です。エージェントはすべてのサービスにわたるすべてのデプロイ、すべてのログ行、すべてのメトリクスを一度に見ています。それをプロンプトの後ろに置いておくということは、チームで最も情報を持つメンバーが、話しかけられたときだけ口を開くということです。

2026年に誰もオンコールをするべきではありません。

2026年に誰もオンコールをするべきではありません。 Polylaneはインフラを見守り、調査し、壊れたものを直します。

ウェイトリストに登録