Sanity 公開公司代理架構:員工填文件建代理,路由、知識與權限怎麼接?
Sanity 公開內部公司代理架構,以文件設定代理、Jev 分派問題、知識庫提供資料,並用 Temporal 延續工作。解析 42 個全部或部分可用的黑客松結果,理解工具、知識與存取權限如何影響落地。
Sanity 代理架構要處理的,是每個部門都做 AI 代理之後,同事不知道該叫誰回答的問題。代理變多,入口與分工反而更需要整理。
就算叫對了代理,指示裡寫著能查公司資料,也不代表它已經拿得到那份文件、系統或工作權限。
Sanity 在 2026 年 10 月 20 日公開內部代理架構,22 日再編修,讓員工以文件設定代理,再由 Slack 裡的共同入口分派問題。
這種做法降低了建立代理的門檻,但公司黑客松的六十一個參賽代理,只有約四十二個全部或部分可用,主要阻礙是缺少需要的資源存取。
我認為這個案例值得借鏡的是如何把代理、知識與權限接在一起,而不是把「員工填文件」理解成工作已能自動完成。
要看懂成功與卡住的地方,先從同事傳進 Slack 的那一句問題,如何找到負責的代理開始。
Sanity 代理架構如何從一個入口找到正確代理?
共同入口先用 Jev 為候選代理分類,依問題和代理描述判斷要交給誰。員工不必記住每個代理名稱,只需要把問題交給公司在 Slack 裡的共同入口 @s。
官方工程文章說明,當時有六十六個已發布且開放路由的代理,另有一個選項處理 @s 自己的問題,例如有哪些代理,以及如何建立新的代理。
這裡的 Jev 是替有限選項打分的判斷模型,不是先生成一長段推理,再臨時創造新的接手者。每個候選項目的描述,就是它判斷是否相關的重要依據。
系統會提供最多八千個字元的當前訊息,以及討論串最近二十則訊息。這讓它不只看到一句孤立的「再整理一下」,也能知道前面正在談哪一項工作。
如果信心低於 0.4,系統會列出最可能的三個代理,交給使用者選擇。這是 Sanity 的具體設定,不能直接當成所有公司的最佳門檻。
後續訊息與旁聽頻道有不同問題
同一個討論串已由某個代理處理時,路由會知道目前的接手者。因此「改成表格」可以繼續留在原代理,而新的問題則仍可轉向另一個適合的代理。
對會自動回覆的頻道,系統問的是另一個問題:眼前這則沒有人特別叫它的訊息,代理是否應該回答。這能減少它跑進感謝、閒聊與一般狀態更新裡插話。
但分類器只看得到描述,描述過廣就可能選錯。作者提到一個會議代理曾因為「工作流程」之類範圍太大的描述,到處回覆,團隊發現後便修改了設定。
因此路由仰賴描述是否清楚,接下來要看的是員工如何定義一個代理,並讓修改能立刻被使用。

代理變成文件後,員工能改什麼?
員工把名稱、描述、模型、指示、知識與可用工具填進 Sanity 文件,就能更新代理設定。一般使用者因此不必先取得程式庫存取權,再學會提交與合併程式。
這份文件也包含負責人,以及哪些人可以得到回答、是否可以啟動獨立執行環境等選項。執行環境是代理做資料工作時使用的電腦空間,並不是一段提示詞本身。
當文件發布,設定就能供共同入口使用,之後修改也能很快反映。這讓寫指示的人可以反覆調整描述與資料來源,而不用每次都等工具程式重新部署。
例如,若代理一直拿不到該有的問題,作者可以先改描述。如果回答缺少特定政策,則要看知識庫用途和內容。兩種錯誤雖然都表現成回答不好,修改的位置並不相同。
快速發布與完整治理仍是兩件事
文章說明,文件化讓系統能在發布前給即時提醒,也容易查出公司有哪些代理。但更多評測、審查與治理流程,是作者提到之後可以增加的方向。
因此不能把「可以發布文件」理解成每個代理都已完成同樣的審查。文件降低建立門檻,團隊仍要決定什麼內容由誰核對,以及哪些能力不能只靠填表開放。
這也和現成代理產品不同。Sanity 分享的是自己打造的內部架構,使用了多種既有程式庫與雲端服務,並沒有因此承諾讀者能直接下載一套相同的公司代理成品。
保存了一份設定,還不代表它能執行真正的工作,因為文件中的工具選項仍要對應到實際程式。
工具與技能為什麼仍要分開?
工具是能查系統或執行動作的程式,技能則是代理需要時才讀取的工作方法。兩者一個提供能力,一個描述怎麼使用能力,不能互相取代。
團隊把工具保存在程式庫。員工可以請代理協助寫新的工具或連接器,再開一份程式變更供審查,合併之後才會出現在文件介面的可選工具中。
這個順序讓一般員工可以設定代理,卻沒有把所有外部動作都變成任意文字。若公司系統還沒有對應工具,單純在指示中寫「幫我處理」仍不足以取得能力。
黑客松結束時,工具從九個增加到九十八個。這個數字說明團隊找到許多可整合的工作,但它是工具數,不是代理成功數,也不代表九十八種工具都已證明能長期可靠運作。
技能先給目錄,必要時才讀完整內容
團隊也透過 Sanity 文件管理共同技能。代理收到任務時,先看到技能的簡短目錄,只有當工作需要,才用讀取工具取得完整程序。
這能避免每次回答都載入整家公司的工作方法,也讓技能作者把範圍寫得更清楚。如果不同技能的描述大量重疊,代理就比較難知道應該先讀哪一份。
文章也提到可以用 Jev 替技能作者提供重疊提醒。這是協助整理內容,不是替所有工作程序自動判定安全,更不會因為技能存在,就讓代理取得原本沒有的系統存取權。
延伸閱讀:Agent Relay 發表:同事的 AI 代理如何共享歷史、接手工作?
即使動作和方法都備齊,代理仍要知道答案從哪裡找,這就輪到知識庫的用途與範圍。
知識庫為什麼先給目錄,而不一次塞進所有文件?
代理先拿到知識庫用途與內容目錄,再讀需要的條目,避免把所有資料都塞進一次回答。這套知識庫會依指定用途,從文件、網址或資料集整理可供代理查找的內容。
例如,財務長替費用與差旅政策建立知識庫。這時最重要的不是收進多少文件,而是用途是否足夠清楚,讓系統把回答政策問題需要的事實整理出來。
作者指出,有些知識庫缺少需要的資訊,原因正是用途寫得不明確。這和代理模型是否聰明不同,因為資料在整理階段就可能沒有被選進來。
每次問題交給代理後,系統加入知識庫標題、用途與條目路徑。團隊也試過把每條摘要一起塞進去,但增加的內容並沒有帶來更好的答案,所以沒有把更多背景當成固定解法。
讀取與搜尋負責不同層次
如果目錄已經能指出答案位置,代理可以直接讀整個條目,並取得其中事實的來源。作者把單次讀取上限設在約一萬五千個 token,也就是模型計算內容長度的單位,因為觀察到讀入太多內容後,答案反而變差。
如果目錄不夠,則用搜尋工具依關鍵字與相關程度找內容,並對標題和本文給不同權重。這讓代理能先縮小範圍,再讀具體資料,而不是一直向模型補上更多無關背景。
找不到答案時,代理被要求直接說明沒有找到。文章報告黑客松期間較少出現亂編答案,但這是公司自己的觀察,沒有提供可直接換算成整體正確率的完整評測。
知識庫仍在測試階段,需要組織管理員從實驗功能頁開啟。因此,內部案例展示的接法,不等於所有 Sanity 帳戶都已自動取得相同功能。
但資料找得對之外,長一點的工作還得撐過工具更新或程序重啟,否則結果仍可能做一半就消失。
更新程式時,Temporal 如何讓工作接著跑?
Sanity 以 Temporal 保存工作流程,使原本執行的程序重啟後,其他工作程序仍能接續處理。Temporal 是管理長時間工作步驟與狀態的服務,這裡用來處理代理工作中斷後的接續。
黑客松一天約有八十次程式提交,而合併到主要版本會重新啟動執行代理的程序。若所有狀態只存在那個程序裡,同事測到一半的工作就可能隨更新消失。
系統因此替訊息建立工作流程,並使用 Slack 討論串識別來管理同一段工作。這能讓新的工作程序接手既有狀態,但不應被擴寫成所有外部動作都有一次且僅一次的保證。
工具重試也要調整。作者說,Temporal 預設可能持續重試,但開發中的工具若根本連不到系統,只會讓使用者一直看到等待。這裡改成最多三次,再把失敗交回代理說明。
停止、串流與工作上限都要接好
Slack 回答若沒有順利結束串流,工作流程會補上完整答案。使用者按停止,也應傳到 Temporal,避免畫面停了,背後工作卻繼續。
一般回合的上限是四十步、一百萬個 token與十分鐘,並在步驟之間檢查,讓代理有機會帶著答案結束。背景工作則有不同上限,可到一小時與兩百步,兩者不能混成所有回合都能跑一小時。
為了持續執行,系統確實需要保存對話與工具結果。文章說,Temporal 保存的內容在離開公司叢集前會加密。推論服務採零資料保留,並不代表整個工作系統完全不儲存內容。
工作不會輕易中斷,仍不代表它取得了做事的權限,而黑客松的結果正好指出這個差別。
四十二個全部或部分可用,團隊真正卡在哪?
約四十二個參賽代理全部或部分可用,作者指出大多數失敗與拿不到所需資源有關。這個數字同時包含全部與部分可用的結果,無法換算成百分之六十九的實際任務成功率。
六十一個是黑客松參賽代理的範圍,前面的六十六個則是文章撰寫時開放路由的已發布代理,兩個數量也不能放進同一個分母計算。
可用的例子呈現不同做法。Sherlog 用一個日誌查詢工具、三個知識庫和一份技能協助查營運異常。Demo Concierge 則把建立示範環境的工作大量寫成程序,讓代理不必每次重新規劃所有動作。
這些例子支持的是「工作能否接起來」,而不是證明員工都能靠一句話打造無人部門。尤其原本沒有系統存取權的工作,不能只用更完整的提示詞補上。
延伸閱讀:Sakana Aquarium 發表:企業 AI 代理如何理解資料、等待核准並留下紀錄?
因此我會先確認代理的負責人、資料來源與工具授權,再借用這套文件化方法,讓同事可以持續改進已經接得起來的工作。
Sanity 代理架構常見問題 FAQ
這是可直接安裝的開源公司代理嗎?
不是。文章公開的是 Sanity 自己的內部架構與經驗,不是承諾一套可直接部署的同款產品。
六十六個代理中有四十二個成功嗎?
不能這樣讀。六十六個是當時開放路由的代理。四十二個全部或部分可用,是六十一個黑客松參賽代理中的結果。
使用零資料保留推論就不會保存聊天嗎?
不一定。這套架構仍保存工作流程、對話與工具結果,推論供應商的保留政策與工作系統自己的儲存是不同層次。