儀表板
2026年7月5日

我把公司賭在主動型代理上

Explore with AI

代理幾乎能做任何你要求的事,而問題正是這個:你仍然得開口要求

我一直聽到有人把代理稱為「數位同事」。這個說法是錯的。一個安靜地坐著,直到你交給他一項範圍完美界定的任務,完成後又回去等待的同事,不是同事。你用過的每一個代理都是這樣運作的。模型變聰明了、harness 變好了、執行變長了,但介面從來沒變:你帶來工作,代理帶來勞力。

而多數人沒有注意到,因為提示框已經悄悄成為我們腦中 AI 本身 的樣子。

Ask anything about your stack...
AI 的預設介面。

每一個介面仍然是一個提示框

輸入框是這整個時代的起點。ChatGPT 在一個模型上放了一個輸入框,成為史上成長最快的產品,然後我們全都照抄。從那之後的每一個 AI 產品都是同一種互動的變體:人打字,機器回應,機器等待。

Claude Code 是下一步演化。代理搬進你的終端機,拿起你的檔案、你的 shell 和你的 git 歷史,開始做真正的工作,而不是只談論它。它改變了代理能做什麼,但沒有改變它們如何開始:你打字,它工作,它停下,然後等你再打字。

~/app
$ claude
✳ 12 files · main · last session 2h ago
> fix the failing checkout tests
? for shortcuts
同一個輸入框,在終端機裡。

接著代理搬到了雲端。Codex、Devin、網頁版的 Claude Code。它們跑幾個小時而不是幾分鐘,啟動子代理來平行處理工作,而且不會因為你合上筆電就死掉。你在午餐前交給它一項任務,回來時就有一個 pull request。

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
一個自動化:代理依你寫好的指示對事件採取行動。

但自動化是什麼?它是你預先寫好的提示。你預測了失敗模式、選好了事件,並寫下該怎麼處理。觸發條件啟動代理,但裡面的判斷是你的,凍結在設定的那一刻。自動化抓到的正好是你預料到的,僅此而已。

你就是排程器

剝掉工具之後,勞力的分工三年來沒有移動過。代理做工作。決定工作是什麼,仍然是你的職責。

你讀儀表板、聽使用者說話、弄清楚什麼重要,然後把你學到的一切壓縮成一則提示,要麼即時在鍵盤上,要麼提前寫在觸發條件裡。代理執行得很出色,但系統裡的每一分判斷都源自於你。

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

下一步演化:自己找工作的代理

我賭的是,下一步演化是代理自己找出該做的事。沒有提示、沒有要設定的觸發條件、沒有預先寫好的指示。你接上你的技術棧,代理自己找到工作:它看著你看的同一批訊號、注意到哪裡不對、判斷是否重要,然後自主開始處理。

這說起來容易,做起來卻極為艱難,因為主動性是三個疊在一起的問題,跳過任何一個,你得到的都比輸入框後面的那個代理更糟。

情境。 顯然,代理需要一個它所處世界的即時模型,而不是你在提示時貼進情境視窗的一張快照。情境糟糕的反應型代理給你一個糟糕的答案。情境糟糕的主動型代理會刪掉你的生產資料庫,因為它以為那是 staging。

判斷。 這是最讓我頭痛的部分。在任何時刻,生產系統裡都有上千件事略微不對。一個把它們全部標出來的代理是一台雜訊機器,雜訊機器會被靜音,被靜音的代理就是死掉的代理。主動性的全部價值都存在於「有東西變了」和「有東西重要」之間的那道縫隙:

[
  {
    "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"
  }
]

行動。 只注意不行動,只是一個更聰明的警示,而警示正是我想消滅的東西。代理必須把工作做完,並且在讓自主性安全的邊界之內:可逆的動作、每件事都有記錄,以及在任何不可逆的事發生之前有一道硬性的關卡。

這三者都不涉及代理決定什麼是好的。它決定什麼不對、是否重要,以及該怎麼處理,清單就這麼長,因為在生產環境中沒有人需要定義什麼是好:錯誤為零、延遲在基準線、佇列清空、憑證有效。理想狀態隨著這片領域一起到來。

這意味著真正的轉變不是從「你下提示」到「代理給自己下提示」。而是從命令式維運到宣告式維運。自動化是命令式的:你預先列舉失敗模式,並為每一種寫好回應。主動型代理是一個調和迴圈:它把你現有的系統與你應有的系統放在一起比對,並努力縫合差距。Kubernetes 十年前就為基礎設施做了這件事,你寫下三個副本,控制器就會不計代價讓三個副本活著。沒有人為軟體本身的營運做過這件事。而在這裡甚至沒有 YAML 要寫,因為理想狀態早已知道。它開箱即用。

我從維運開始

叫一個主動型代理決定你的產品路線圖,你會得到一個意見很多的實習生,因為產品方向是品味問題。生產環境不是。它是唯一一個三個問題今天都能解決的領域。

工作會自己宣告自己:錯誤率攀升、一次部署出了岔子、一張憑證過期、一個佇列積壓。工作早已躺在遙測資料裡,等著有人注意到。而且不像品味驅動的領域,這裡存在基準事實:錯誤率要麼飆高了要麼沒有,復原要麼恢復了基準線要麼沒有,所以代理的判斷由系統本身持續評分,沒有憑感覺的空間。

最重要的是,我們早就用人來做這份工作了。我們稱它為值班:一個人睡在手機旁邊,等著一台機器說另一台機器不高興。我在可觀測性領域待了多年,創辦了一家可觀測性公司並由 Cloudflare 收購,還寫了一整篇關於如何結構化遙測資料、讓答案只差一個查詢的宣言。它的論點就是這家公司存在的理由:2026 年不該再有人值班

因為過去十年可觀測性令人不安的真相是:我們讓系統更容易讓人在凌晨三點審問,然後宣告勝利,而被叫醒的仍然是人。儀表板變漂亮了,呼叫器還在床頭櫃上。沒有行動的可觀測性只是昂貴的儲存。

它看起來是什麼樣子

這就是 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

沒有人為這種失敗模式設定過檢查。沒有規則要寫、沒有閾值要調:代理以持續的節奏評估每一個已連接的資源,你既有的儀表板與儲存的查詢就是它們的檢查清單。判斷是我最嚴格的地方。預設的判定是沒有異常,因為漏掉一個邊緣問題,遠比為了雜訊叫醒某個人好得多。「部署可能會引入 bug」對每一次部署都成立,永遠不構成呼叫任何人的理由。

當事情是真的,調查會平行執行多個相互競爭的假設,而每個代理的工作是推翻自己的假設而不是證實它,所以相關性永遠沒有機會偽裝成原因。當確認的根本原因是一次程式碼變更時,修復會以附帶調查的 pull request 送達:

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

主動不等於無人監督

自主性在於注意、分流、凌晨三點的考古,以及緩解。任何能恢復已知正常狀態的事,代理都自己做:復原那次糟糕的部署、把 flag 關回去。這些動作從設計上就是可逆的,而它們正是真正讓呼叫器安靜下來的動作。仍然受關卡管控的是任何創造新狀態的事:程式碼變更經過你的審查與你的 CI 上線,絕不繞過它們。

界線不在人與代理之間。而在可逆與不可逆之間。這也是為什麼你不是偷偷地仍然在值班:復原在 02:33 結束了事件,比你合併 pull request 早了六個小時。PR 從來不是止血的東西。它是防止再次發生的東西,而那可以等到喝咖啡的時候。

而且這道關卡由你決定要不要委派。程式碼審查代理已經在讀你儲存庫裡的每一個 pull request。有一個離這裡不遠的世界,你的審查代理在 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 監看你的基礎設施、進行調查,並修復壞掉的東西。

加入候補名單