昨天說 Agent 會自己決定下一步,今天看它憑什麼。
它沒有比較聰明,用的可能就是你在網頁上用的同一個模型。差別是賦予它手腳來做事。
分四個部分。
它的輸入不只是你那句話,而是整包現況:你的目標、先前做過哪些動作、上一個工具回傳了什麼、現在有哪些工具可以用。每跑一輪這包就長大一點,這個叫 context。
它的輸出則永遠只是文字。就算它「決定要讀檔案」,實際上也只是吐出一段「我要呼叫讀檔工具,路徑是這個」。真正去開檔案的是外面的程式,不是模型。
這件事很重要:模型從頭到尾沒有手,它只是一直在回答「接下來該做什麼」。
讀檔、寫檔、執行指令、上網,這些是它真正能碰到外面世界的方式。
每一項都可以單獨開關。你可以讓一個 agent 只能讀不能寫,也可以讓它完全碰不到網路。看起來只是設定,實際上是整套系統最重要的設計決策之一,後面有一整篇在講我在這裡摔的跤。
這裡有兩種東西。
一種是你寫的規則。它是檔案,可以版控、可以重複使用,不像提示詞打完就散在對話裡。
另一種是它跑出來的進度,也就是狀態。做到第幾份、哪些已經處理過、上次為什麼中斷。
昨天說 Gemini 做完什麼都沒留下,這兩樣就是在補這件事。
你在網頁上開一個新對話,它不知道你是誰、不知道你的檔案怎麼命名、不知道上次那個特例你決定怎麼處理。你得重講一次。講到第十次你會開始懷疑人生。
用久了會有一種錯覺,覺得它變聰明了,你講半句它就知道要幹嘛。
其實模型完全沒變。變的是它手上握著的東西:你累積下來的規則、你上次的決定、這套流程的來龍去脈。所謂「更聰明」,比較接近「它知道的比較多」。
也因為這樣,它會跟著你長。你的習慣、你的命名方式、你對邊界情況的判斷,一次一次寫進去,它就越來越像照你的想法在做事。
把現況丟給模型,模型說要用哪個工具,系統執行,結果加回現況,再問一次做完沒。沒做完就再跑一輪。
判斷、執行、看結果、再判斷。所謂自主,就是這個迴圈跑很多次。
讀檔失敗,它換個路徑再試。某一欄讀出來是空的,它回頭確認是真的沒有,還是自己剛才切錯範圍。前面五份都是某個格式,處理第六份時它會沿用同一套作法。
這就是「自主」真正的樣子。不是它一次就做對,是它做錯之後還會繼續。
所以 Agent 開發有很大一部分不在調模型,而在設計這個迴圈:哪些讓它自己決定、哪些必須寫死、出錯了怎麼被發現。