認識 Salix:Comma 的 AI 代理框架
Salix 全天候執行你的 Comma AI 代理,只在工作需要時才呼叫大型模型。
Salix 工作中
一個可以點開查看的範例。你請 Comma 盯著 #support 和你的收件匣,留意 bug 回報,它為此寫了一個 Loop。一位客戶回報了 bug,Loop 喚醒了 Comma。Comma 開始了一個任務,Worker 在雲端電腦上重現問題,並提交修復等你審查。視窗旁的編輯器展示了 Salix 核心中的兩個 Lean 證明。
深入 Salix
常見問題
Loop 能盯著什麼?怎樣啟動或停止 Loop?
Loop 可以盯著一個已連線的 App(例如 Gmail、GitHub 或 Slack)、輪詢一個 Web API,或透過它專屬的私密 webhook URL 接收事件。在對話中請 Comma 追蹤某件事,例如一個 PR 或一個討論串,它就會設定並啟動 Loop;不再需要時,請它暫停或刪除這個 Loop 即可。一個 AI 代理最多可以同時執行 20 個 Loop。
Loop 在等待時會產生什麼費用?
等待中的 Loop 是 Salix 叢集上的一個小程式,不是雲端電腦。它不呼叫模型,本身也不計費,只有它呼叫的東西才會消耗額度:例如向 Jev 提問,即使你使用自己的模型金鑰,這也會消耗額度;又例如它喚醒 AI 代理後產生的對話輪次,和其他輪次一樣計費。在每個十分鐘的時間區間內,它最多喚醒 AI 代理六次。
Jev 負責判斷什麼?它拿不準或判斷錯了怎麼辦?
Jev 回答 Loop 提出的問題,例如一封新郵件是否需要你處理;它不能傳送訊息、不能修改任何東西,也不能授予存取權限。當 Comma 替你追蹤一個 PR、議題或討論串時,只有 Jev 以 0.9 或更高的信心分數回答「靜默」,對應的 Loop 才會保持靜默;其他任何結果,包括出錯,都會交給你的 AI 代理,而 AI 代理被要求先核對來源,再傳訊息給你。如果 Jev 信心十足地答了「靜默」卻答錯了,那則更新就不會送到你這裡。
Loop 讀到的資料會被怎樣處理?
它始終只是資料:郵件或事件無法修改 Loop 的程式碼,也無法擴充它那份固定的能力清單。收到的事件只儲存到 Loop 確認收到為止;Loop 只保留一個檢查點,最大 16 KB。它讀到的內容只能透過 Loop 自己發起的呼叫繼續傳出,例如向 Jev 提問(Jev 由 TypeSafe AI 執行),或向你的 AI 代理傳送喚醒訊息。
Salix 的某個部分出故障時會怎樣?
每個 AI 代理都是 Erlang VM 上的一個獨立處理程序,所以出故障的部分會重新啟動,其他 AI 代理繼續執行。Salix 已接收的訊息在重新啟動後依然保留;一個會產生變更的操作如果被中斷,不會自動再執行一次。Loop 在重新啟動或被移到另一個節點後,會從上一個檢查點繼續;如果它自己的程式出錯,每小時最多重新啟動三次,之後就會停止並告知你的 AI 代理。
Lean 證明能保證什麼,不能保證什麼?
AI 代理迴圈的核心以 Lean 程式碼執行,它的證明由機器檢查。這些證明表明:Salix 已接收的工作在故障和重啟後依然保留;回覆失敗不算完成;每個會產生變更的操作,都會在 Salix 啟動它之前記錄下來,並且最多只啟動一次。這些證明建立在對核心周邊程式碼的明確假設之上,不對儲存、模型的判斷或任務是否成功做出證明。
Comma 能在我的 Mac 上做什麼?怎樣收回權限?
一開始,Comma 只能讀取已連線電腦上的檔案,你的 Mac 也不例外。要讓它修改檔案、執行命令並使用那台電腦上安裝的程式設計 AI 代理,請在「設定 > 裝置」中為那台電腦開啟「允許操作」。你隨時可以關閉:正在執行的命令會停止,Comma 也會回到唯讀狀態。
Salix 能在我的電腦上執行哪些程式設計 AI 代理?
當已連線的電腦上裝有 Codex、Claude Code、Pi 或 Kimi,並且開啟了「允許操作」時,Comma 就可以把工作交給它。程式設計 AI 代理在那台電腦上完成工作,對話則由 Salix 儲存。如果電腦離線,工作會等待,或返回錯誤而失敗;Salix 不會自行把它轉移到另一台機器上。