傍晚 6:40,AI 助理剛告訴你失敗的測試已經修好了。你自己跑一次,還有兩個是紅的。你可以把輸出再貼回去重問一次,也可以把這件事交給一個「測試執行器點頭才會停」的東西。隔天早上,行銷部的同事問了另一個問題:同樣的東西,能不能在每個工作日她進公司之前,先幫她檢查三個競爭對手的網站?
這兩件事都在 osFoundry 的同一個角落,就在兩個相鄰的選單項目底下:Loop 和 Graph。
兩種不用一直盯著就能跑 agent 的方式
Loop 是一種可重複使用的方式,讓一組 agent 朝著一個目標工作。它把幾樣東西打包在一起:agent 名單、用白話寫的目標、確認目標是否達成的檢查方式、硬性上限(最多幾輪、連續失敗幾次就放棄),以及可選的觸發條件,例如排程。它一輪一輪地跑,每輪都拿目標來評分,然後自己停下來。Graph 則是一個存起來的工作流程程式,適合路徑不固定的情況:它可以依結果分支、把某一段重做到通過為止、把工作同時分給好幾個 agent、暫停等人核准,還能呼叫其他 graph。兩者都在 osFoundry 桌面應用程式的主側邊欄裡,Loop 在上、Graph 就在它正下方。應用程式自己給的一句話區分最值得記住:Loop 永遠走同一條路,Graph 邊走邊決定路線。
Loop 執行時你會看到什麼
這是一個已經跑完的 Loop 工作階段(測試和檔案名稱都是範例資料)。值得認識的部分:
- 左邊的工作階段列。每次執行 Loop 都是獨立的工作階段,底下有狀態。這裡的「Verified」代表最後一輪通過了檢查,而不是 AI 說它通過了。
- 中間欄位上方的輪數列。「Round 3 of 4」,加上它使用的檢查(「Runs npm test — a zero exit code means done」),以及連續驗證失敗的計數器,原地打轉的 loop 就是靠它停下來的。
- Rounds 分頁。每輪一列,顯示達成了幾項條件(「1 of 3 met」、「2 of 3 met」、「3 of 3 met」)。點開某一輪,就能看到那一輪到底通過了哪些條件。
- 右邊的檢視面板,有 Goal、Trigger 和 Hooks 三個分頁。
- 面板上方的 Pause 和 Cancel,想讓它馬上停、而不是等到下一次檢查時用。
使用情境 1:想讓測試真正變綠的開發者
誰:一位獨立開發者,一天快結束時,手上有一套紅燈的 JavaScript 測試,還有一個不斷宣布大功告成的助理。
打開 Loop,按下 New session。New loop run 對話框會列出現成的 loop,搜尋「JS suite」就能找到 Get the JS suite green。開始之前,右邊的卡片會告訴你它怎麼運作:Who runs it(一個除錯 agent 帶領三位測試專家)、How it stops(最多 4 輪,連續失敗 3 次就停)、How it grades itself(執行 npm test,只有 exit code 為零才算完成)。
在 Start it 底下選 Run once now 而不是 Just add it,選好專案和 agent 要工作的資料夾,按下 Run it now。接著打開 Rounds 分頁看著就好。在範例執行中,第一輪通過三個測試裡的一個,第二輪兩個,第三輪三個全過,loop 就在這時自己停下,工作階段被標成 Verified。
最後你拿到的不是一則聲稱已經修好的聊天訊息,而是一份逐輪紀錄,寫著哪個測試在什麼時候通過,評分的是你自己的測試執行器。同一份清單裡還有 Python、Go、Rust、Java 測試套件、型別錯誤、lint 和不穩定測試用的 loop。
使用情境 2:想在每個工作日拿到競品報告的行銷人員
誰:行銷或產品部門裡,會手動檢查競爭對手網站、但不寫程式的人。
在同一個 New loop run 對話框裡,最上面的區塊標著「Start here — these need nothing set up」,Watch the competitors 就在裡面,因為它只會上網搜尋,從不碰你的檔案。在 Goal for this run 裡輸入要盯哪些公司、要找什麼(例如價格、新功能和徵才),選 Run once now,按下 Run it now。第一份報告只列出有變動的地方,每一行都附上日期和來源,公司對自己的說法會標示為未經查證。
要讓它定期執行,就打開 Trigger 分頁,按下 Add a schedule。Run this on a schedule 對話框提供預設選項(Every 30 min、Hourly、Daily 09:00、Weekdays 09:00),顯示 cron 設定和接下來三次的執行時間,並問兩個很實際的問題:下一次該跑的時候上一次還沒跑完怎麼辦(Skip it,或 Wait, then run),以及電腦在睡眠狀態時怎麼辦(Up to an hour late、Up to 12 hours late 或 However late)。
按下 Save schedule 後,Trigger 分頁會顯示「On a schedule」和下一次的執行時間。她從此每個工作日早上都有一份報告在等她,完全不用打開終端機。排程只在桌面應用程式開著時執行,補跑設定就是為了這個而存在。
使用情境 3:工作流程需要分支的團隊主管
誰:一位主管,希望大型變更裡的每個檔案都分開審查,再合併成一份報告,而且在任何無法復原的動作之前,都要有人簽核。
到這裡,Loop 就不再是合適的形狀了。Loop 每一輪都重複同一個計畫,但這位主管需要每個檔案各一位審查者、接著一個合併步驟,有時還要暫停等核准。這就是 Graph。
打開 Graph,按下清單旁的加號按鈕。Create a Graph 提供兩條路:Start with a working graph(一個安全、可直接執行的程式,之後再調整)或 Choose a starter。Starter 是常見結構的完整範例,每個都附有簡短的使用時機說明。Review each item, then merge 會同時為每個項目跑一個 agent,最後做一次合併。Triage and route 會先把輸入分類一次,再送給剛好一位專家。Propose, ask, then apply 會先擬好變更,停下來等人回答,只有得到肯定答覆才動手。
程式本身是程式碼,不是拖拉式流程圖,因為分支和有上限的重試是真正的控制流程。通常你會讓 Maestro 或某個 agent 來寫或調整它,自己則在 Configure session 裡管理日常真正重要的部分:Maximum agents at once、token 警示、Hard token ceiling、預設輸入,以及每個步驟使用哪個 agent 和模型。
執行時,執行面板有三個分頁。Run 即時顯示每個步驟,可以 Pause、Resume 或 Cancel。如果 graph 走到核准步驟,會出現一張卡片請你 Approve 或 Decline,等待期間其餘的平行工作照常進行。Changes 列出這次執行建立或修改的檔案,其中有些可以復原。History 列出之前的執行紀錄,所以失敗的那次和修好它的重跑會並排在一起。主管最後得到一套可重複的審查流程,每次執行和檔案變更都能事後檢查。Graph 可以在瀏覽器裡查看,但要執行就需要桌面應用程式。
Loop 和 Graph 在哪裡交棒
這兩個功能都不是單打獨鬥。Loop 的 Team roster 裡的 agent 來自 Agent team 和 Agent Registry,而 loop 本身是一個可重複使用的預設組合,可以在 osStudio 裡做版本管理,所以調高品質門檻或重試上限都會留下歷史紀錄,而不是悄悄改掉。Graph 在建立時就會拿到一個固定的識別碼,目的正是讓 loop 和其他 graph 能呼叫它,也就是說,一個排程好的 Loop 可以在 9:00 啟動一個會分支的 Graph。在 Message 裡,loop 和 graph 可以跟人、單一 agent 一起成為頻道成員,它們的進度就會出現在團隊平常用的聊天室。想深入了解排程的部分,可以看 用 cron 排程 agent 和 agent 觸發條件。
新手常問的問題
Loop 不就是 cron job 嗎?
不是。排程只是其中一個可選的部分。Loop 是團隊加目標加檢查,再加上輪數上限,而且會記錄每一輪達成了哪些條件。你可以只手動跑一次,永遠不給它設觸發條件。
既然 Loop 也能平行跑 agent,那我為什麼還需要 Graph?
差別不在平行。當下一步取決於上一步的結果時,就該用 Graph:轉給某一位專家、只重跑失敗的部分、等人點頭,或是呼叫另一個工作流程。如果每次執行都走一樣的步驟,Loop 比較簡單。
loop 會不會一直跑下去,把我的 API 預算燒光?
每個現成的 loop 都有輪數上限,連續失敗到一定次數就會停,而且卡片在你開始前就會把這兩項都顯示出來。Graph 則在工作階段設定裡有 Maximum agents at once 和 Hard token ceiling。
我需要寫程式嗎?
用 Loop 不需要:選一個,在對話框裡設定目標和觸發條件就好。Graph 的程式是程式碼,但你可以從 starter 開始,讓 Maestro 或某個 agent 幫你改,而輸入、上限和每個步驟用的 agent 都能在不動程式的情況下調整。
兩者都可以在桌面應用程式裡試用,下載請到 osfoundry.io/zh/download。




