Writing

Skill 不只教 AI 做事,也能替子代理選好模型

最近因為 ChatGPT 20x 的額度很少了。

所以,我思考「子代理」應該怎麼開始使用。

Skill 已經知道自己要做什麼

Skill 和一般 prompt 最大的差別,是 Skill 已經知道自己要做什麼。

一個用來搜尋 Codex 工作紀錄的 Skill,會知道自己需要掃描哪些紀錄、怎樣縮小候選範圍,以及最後要回讀哪些證據。

一個操作瀏覽器的 Skill,也會知道自己需要連接瀏覽器、讀取頁面狀態,再完成指定操作。

每次輸入的內容當然不同,但它們要解決的是同一類問題,執行步驟和工作範圍也大致固定。

這代表,當一項工作被整理成 Skill 之後,這類問題的複雜度範圍其實也被決定了。

既然 Skill 已經知道工作會做到哪裡、需要多少判斷,開發者自然可以預測:這件事需要什麼級別的模型,以及多少 reasoning effort。

模型選擇應該寫進 Skill

如果一個 Skill 處理的是固定格式的搜尋與整理,開發者可以預先替它選擇較輕量的模型。

如果這項工作包含較多判斷,便可以指定能力更高的模型,或者使用更高的 reasoning effort。

這不是要替模型排出高低,也不是要讓所有 Skill 都使用最強的模型。Skill 作者只需要替這類工作選擇一個足夠的模型。

然後把選擇直接寫進 Skill:

當這個 Skill 被觸發:

1. 建立指定 model 與 effort 的子代理。
2. 把 Skill 的實際工作交給它完成。
3. 子代理完成後,把結果交回主代理。

如此一來,主代理不必在每次執行時重新評估模型。它只需要按照 Skill 已經定義好的方式呼叫子代理。

我在 Codex Skill 裡的實際做法

我現在有些 Skill 會明確指定由 Luna High 子代理執行,有些瀏覽器工作則指定 Terra High。

這些設定不是通用的模型推薦,只是因為不同 Skill 處理的問題不同。

例如,Codex session search 的流程相對固定:掃描紀錄、選出候選 task、回讀來源,再把整理結果交給主代理。

這個 Skill 的作者已經知道它會處理多少資料、需要哪些判斷,也知道整個工作範圍。因此,適合它的 model 和 effort 可以在開發 Skill 時決定,不必每次呼叫時重新討論。

模型的選擇於是成為 Skill 本身的一部分。

Skill 重用的不只是 Prompt

以前我會把 Skill 理解成一種 prompt 重用:把反覆使用的指令保存起來,下次不必重新交代。

但當 Skill 開始呼叫子代理,它還可以重用另一項東西:開發者對問題複雜度的判斷。

開發者只需要在設計 Skill 時回答一次:

這類問題,需要什麼級別的模型才足夠?

之後每次執行,都可以沿用相同的答案。

如果將來 Skill 的工作內容改變,或者原本選擇的模型不再合適,再修改 Skill 裡的設定就可以了。

因此,更優雅地使用子代理,不一定需要複雜的模型路由系統。

當 Skill 已經知道要做什麼,問題的複雜度也就變得可預測。既然複雜度已知,Skill 作者便可以預先選好合適的 model 和 effort。

Skill 重用的不只是工作方法,也包括一次已經做好的模型選擇。