文件
Factory Droid
Droid 的自訂模型是含有三個必填欄位的 JSON 陣列。最容易誤解的是 baseUrl,因為正確格式取決於你選擇的三種提供者值。
在 ~/.factory/settings.json 中設定 customModels 項目 — model、baseUrl 與 provider — 讓 Droid 使用任何支援 Anthropic Messages 或 OpenAI Chat Completions 的端點。
// ~/.factory/settings.json (Windows: %USERPROFILE%\.factory\settings.json)
{
"customModels": [
{
"model": "claude-sonnet-5",
"displayName": "Sonnet 5 [Kunavo]",
"baseUrl": "https://api.kunavo.com",
"apiKey": "${KUNAVO_API_KEY}",
"provider": "anthropic"
},
{
"model": "gpt-5-6-sol",
"displayName": "GPT-5.6 Sol [Kunavo]",
"baseUrl": "https://api.kunavo.com/v1",
"apiKey": "${KUNAVO_API_KEY}",
"provider": "generic-chat-completion-api"
}
]
}
// Then, in the shell Droid starts from:
// export KUNAVO_API_KEY=sk-kn-...
// ${VAR_NAME} expansion is a settings.json feature. It does NOT apply to the
// legacy ~/.factory/config.json, which Factory still loads and merges./v1 僅屬於其中一個項目,不適用於另一個。Factory 文件以表格而非句子說明這一點:其 Provider 參考資料為 https://api.anthropic.com — 僅來源站台,不含路徑 — 使用於 provider: "anthropic";而 https://api.openai.com/v1、https://openrouter.ai/api/v1 和 https://api.groq.com/openai/v1 都含有 /v1 根路徑。Droid 會自行附加路由,因此上方 Anthropic 項目使用不含路徑的來源站台,而 Chat Completions 項目則使用 /v1。在 Anthropic 項目加入 /v1 會導致請求路徑成為 /v1/v1/messages,結果是 404,而非驗證失敗 — 請參閱基本 URL 參考資料。curl 是您可以在十秒內檢查的部分;用戶端的實際行為則須由您與 Factory 確認。authMode。Factory 記載的預設值 provider-default 會將憑證放在 x-api-key 中,而 Kunavo 的 Messages 端點也接受該標頭以及 Authorization: Bearer。如果你想明確使用 bearer 格式,Factory 為 provider: "anthropic" 記載了 authMode: "bearer",此處也可以使用。sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 Factory Droid 設定。逐步操作
- 在
/app/keys建立金鑰並複製 — 金鑰只會顯示一次。在啟動 Droid 的 shell 中將其匯出為KUNAVO_API_KEY,這樣金鑰本身就不會寫入設定檔。 - 開啟
~/.factory/settings.json(若檔案不存在就建立),並加入上方的customModels陣列。Factory 明確標示三個必填欄位 —model、baseUrl和provider— 而displayName是選擇器中顯示的標籤。 - 檢查
provider的拼字。它必須完全符合anthropic、openai或generic-chat-completion-api其中之一;Factory 的疑難排解章節指出,此處拼字錯誤會導致"Invalid provider"錯誤。 - 在 CLI 中執行
/model。你的項目會出現在 Factory 自有模型下方的獨立 Custom models 區段中,並以你設定的displayName標示。Factory 會監看設定檔,因此儲存後就會生效 — 不必重新啟動。 - 請給它一項需要讀取並編輯檔案的任務,而非只打招呼。Droid 幾乎所有操作都依賴工具呼叫,而一般聊天回合無法測試這部分。接著執行
/cost,Factory 會在此處回報快取命中率 — Kunavo 原生支援 Anthropic 的cache_control標記,而 Factory 自己也指出,對通用 Chat Completions 供應商而言,快取「因供應商而異,無法保證」。
已於 2026年9月21日 根據 Factory 的自訂模型(BYOK)頁面 進行確認。第三方設定會變動;如果這裡的欄位名稱不再與你看到的內容相符,應以該頁面為準,而不是本頁。
除錯用戶端前先驗證
一個請求就能判斷失敗原因是端點、金鑰還是設定檔。如果這裡回傳 JSON,則相同的基礎 URL 與金鑰在 Factory Droid 中也能運作。
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/messages \
-H "Authorization: Bearer sk-kn-..." \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'欄位中應填入哪個模型 ID
每個文字模型都能以模型 ID 存取——即時清單位於 GET /v1/models,帶有價格的目錄位於模型頁面。費率是每 1M 權杖的美元價格,輸入/輸出。
| 模型 ID | Kunavo 輸入/輸出 | 它在 Factory Droid 中的位置 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 預設工作模型 — 填在 provider: "anthropic" 項目中 |
claude-opus-5 | $3.50 / $17.50 | 規劃一項一旦出錯代價高昂的變更;使用相同的 anthropic 項目 |
claude-haiku-4-5 | $0.70 / $3.50 | 低成本回合與檔案分流,適合數量占主導的情況;使用相同的 anthropic 項目 |
gpt-5-6-sol | $2.00 / $12.00 | 來自另一個系列的第二意見 — 需要 generic-chat-completion-api 項目 |
Droid 中的自訂模型無法涵蓋哪些情況
有三項限制來自 Factory 自家的頁面,每一項都會影響你對上述設定的預期,但不影響它是否能運作。
- 僅限本機介面。 Factory 的 BYOK 頁面指出,自訂模型可用於 Droid CLI 和桌面應用程式,兩者會讀取本機的
settings.json;這些模型「不會出現在 Factory 託管的網頁版或行動平台」。透過託管產品委派的工作,仍會使用由 Factory 計費的推論服務執行,不受您在此設定的金鑰影響。 - 管理員可以將它關閉。 Factory 的企業控制文件說明了
modelPolicy.allowCustomModels和allowedBaseUrls,前者會完全停用使用者的 BYOK,後者則會將所有自訂模型限定在一個核准的主機上。在受管理的裝置上,請先確認這點,再開始檢查檔案。 - 方案費用仍然存在。 在此使用金鑰是額外增加,而非取代方案 — Factory 對超出 BYOK 額度的用量收取多少費用,以及額度是多少,請參閱費用指南;本頁不會重新推算這些資訊。
在任何地方複製設定之前,有個容易踩到的陷阱值得先知道:Factory 仍會載入舊版 ~/.factory/config.json,其中使用 snake_case 格式的 custom_models 和 base_url,並將其合併到 settings.json 之下;Factory 也有說明,${VAR_NAME} 展開功能不適用於該檔案。若在該檔案中以佔位文字填入金鑰,該文字會照原樣送出。請使用 settings.json。
常見問題
如何為 Factory Droid 新增自訂 API 端點?
編輯 ~/.factory/settings.json(Windows 上為 %USERPROFILE%\.factory\settings.json),並新增 customModels 陣列。每個項目都需要三個必填欄位 — model、baseUrl 和 provider — 以及 displayName、apiKey、authMode、maxOutputTokens 和 extraHeaders 等選填欄位。這沒有設定表單;JSON 檔案就是操作介面。Factory 會監看該檔案,因此儲存後,在 CLI 執行 /model,該項目就會出現在獨立的「自訂模型」標題下。
Factory Droid 的 baseUrl 末尾需要加上 /v1 嗎?
這取決於 provider 值;Factory 的文件透過 Provider 參照表,而非文字說明,明確列出了規則。Anthropic 那一列填的是 https://api.anthropic.com,不含路徑,因此 provider "anthropic" 應使用不帶路徑的來源網址 — Kunavo 則是 https://api.kunavo.com。表格中的每個 Chat Completions 列出的都是 /v1 根路徑(https://api.openai.com/v1、https://openrouter.ai/api/v1),因此 provider "generic-chat-completion-api" 應使用 https://api.kunavo.com/v1。Droid 會自行附加路由,所以 Anthropic 項目若加上 /v1,就會產生 /v1/v1/messages,並回傳 404,而不是驗證錯誤。
透過第三方端點使用 Claude 模型,應該選哪個 provider 值?
使用 "anthropic"。Factory 文件列出三種 provider 值,各自選擇一種線路協定:"anthropic" 對應 /v1/messages 的 Anthropic Messages API,"openai" 對應 OpenAI Responses API,而 "generic-chat-completion-api" 對應 OpenAI Chat Completions。這個值代表端點使用的協定,而非向你收費的廠商,因此能回應 /v1/messages 的閘道應選用 "anthropic",不論金鑰屬於哪個帳戶。Factory 自家的指示是,除非呼叫 OpenAI 或 Anthropic 的官方 API,否則使用 "generic-chat-completion-api" — 但這指的是可用的協定;若端點同時支援兩種,你可以自行選擇。
為什麼 Factory Droid 顯示 provider 無效,或略過我的自訂模型?
Factory 的疑難排解章節列出三個原因。模型未出現在選擇器中,通常是 settings.json 有 JSON 語法錯誤,或缺少必填欄位 — model、baseUrl 或 provider。若出現「Invalid provider」錯誤,則是拼字有誤:值必須完全符合 anthropic、openai 或 generic-chat-completion-api。驗證錯誤則表示金鑰或基礎 URL 有問題;Factory 自家的建議是確認基礎 URL 符合你所用 provider 的文件。先用上方的 curl 指令在用戶端之外確認是哪一種情況:若有 JSON 回應,代表端點和金鑰正常,問題出在設定檔。