第八節 模型與參數
8.1 模型選擇
設置 → 模型 列出所有可用模型:
- 共享額度下可見的模型(由組織決定)
- 你自己接入的模型(OpenAI / Anthropic / 阿裡雲通義 / 火山方舟 / 自建大型語言模型服務等)
每個工作區可以指定預設模型;每次對話也可以臨時切換。
8.1.1 Provider 協議
設置 → 提供商 編輯面板「類型」下拉支持三種協議:
| 類型 | 適用場景 |
|---|---|
| AVL Delta 相容 | 內置 AVL-Zero 預設就用它;每輪只把"本輪新增內容"發給伺服器端,穩定歷史不重復回傳,配合前綴快取治理進一步省流量、省 token、提速 |
| OpenAI(相容) | OpenAI 官方接口、阿裡雲通義、火山方舟、Kimi、Moonshot、DeepSeek、自建 OpenAI 相容代理等 |
| Anthropic | Claude 官方接口、Anthropic 相容代理 — 用 x-api-key + anthropic-version 頭,支持工具呼叫、串流、思考鏈(extended thinking)、重試 |
「從 API 重新整理模型」按鈕會按所選協議自動派發,正常拉取對應模型列表。
Delta 端點自動安全降級:如果伺服器端暫未提供 Delta 接口(傳回 404/405/501),本次工作階段會自動一次性復原到標準的
chat/completions協議,對話不中斷;真正的驗證類錯誤(401/403)則照常報錯,不會被降級掩蓋。統計面板會顯示每次呼叫走的是哪種協議(OpenAI Chat / Anthropic Messages / AVL Delta)以及當時的用戶端版本號;發生 Delta 自動降級時,元訊息裡也能看出來。所有發往模型服務的請求都帶上了用戶端版本、協議識別與一個類瀏覽器 User-Agent,便於閘道側記錄檔與統計對賬。
8.1.2 自定義請求標頭(僅限自己新增的供應商)
設置 → 提供商 編輯面板底部的「進階選項」可展開,對於你自己新增的(非內置)供應商,新增了「自定義請求標頭」編輯區:可增刪多組 key / value,隨每次發往該供應商的請求逐條帶上,方便對接需要額外驗證頭、閘道識別或特殊版本頭的服務。
- 生效範圍:OpenAI、Anthropic、AVL Delta(串流 + 非串流)四類請求路徑全部生效。
- 順序與覆蓋:自定義頭在內置頭(驗證 /
User-Agent/anthropic-version等)之後應用,可覆蓋Authorization/User-Agent等預設頭;如果你不希望覆蓋,請避開同名 key。 - 防注入:自動跳過空 key,並拒絕 key / value 中含換行(CR/LF)的條目,防止請求標頭注入。
- 已知限制:自定義
Host頭不生效(Go HTTP 堆疊要求改req.Host而非頭本身),如需改 Host 請通過反向代理實現。
內置供應商(AVL-Zero 等共享額度)不暴露此入口,僅自定義供應商可編輯。
8.2 參數
每個模型可調參數:
- Temperature:溫度,0–1,控制隨機性。
- Top-P:核採樣上限,0–1。
- 最大輸出 Token:單次回復長度上限;無硬性上限,可超出模型標稱值,以上游實際限制為準。
- 串流:是否串流繪製(推薦啟用)。
參數同樣按工作區與模式分別儲存。
以上參數統一在「參數配置」抽屜裡編輯 — 從「模型」頁和「模型提供方」對話框進入的是同一個面板。收斂到唯一編輯面是有原因的:此前兩處編輯面各存一份、互相覆蓋,改好的參數會被靜默抹掉;現在兩處同時修改按樂觀鎖校驗,衝突就近提示而不是無聲覆蓋。
8.2.1 模型作用域:全域一致 / 跟隨工作階段
設置 → 模型 Tab 頂部提供分段開關,選擇當前模型的作用範圍:
| 作用域 | 行為 |
|---|---|
| 全域一致(預設) | 所有工作階段共用一個「當前模型」,升級零感知 |
| 跟隨工作階段 | 每個工作階段各自記住自己的模型,切到哪個工作階段就切回該工作階段上次用的模型;新增工作階段時快照當前全域選擇作為起點,之後獨立可改 |
「跟隨工作階段」模式下若工作階段記的模型已失效(被刪 / 下線),自動回落到全域選擇,不會卡住。
複製工作階段 /
.zsession匯入匯出都自動帶上模型欄位,跨設備 / 跨人交接不丟。匯出.zsession時一並打包子 Agent 工作記錄 — 主對話裡派出去的每個子任務當時怎麼做的、調了什麼也都會還原出來,跨機或發同事開啟後排查 / 復盤更完整。匯入 / 重建更穩:修了「把工作階段匯入到新增工作區後不顯示、空白工作區卻誤報『已存在』」的問題(根因是寫入目標錯位 + 沿用原工作階段 ID 造成同 ID 跨工作區衝突),現在匯入 / 重建都能正常完成。
8.2.2 未啟用模型預設折疊
設置 → 模型 每個供應商分組預設只顯示已啟用的模型,不再被一長串沒開的型號淹沒;組底部有「展開 N 個未啟用的模型」按鈕,點開看全部、可再收起。
- 展開狀態按供應商各自記憶(僅本次開啟期間)。
- 搜尋時自動繞過折疊:搜尋命中的未啟用模型照常顯示,不會被藏住。
- 開關切換過程中行不閃跳。
8.2.3 模型 ID 中的斜槓原樣保留
像 openrouter/free、openai/gpt-4o、anthropic/claude-3.5-sonnet 這類 OpenRouter / Cloudflare 等使用的 vendor/model 命名方式,斜槓是上游官方分隔符。AVL Code 現在原樣保留 — 手動新增與重新整理兩條路徑都不會把斜槓改成連字元。
此前若你新增這類模型遇到「模型不存在」的報錯,重新整理一次模型列表即可復原(舊的壞條目會被換成正確的 ID)。
8.3 多供應商兜底
如果你接入了多個供應商,AVL Code 支持設置優先級與兜底:第一供應商失敗 / 限流時自動切到第二供應商,避免單點。
8.4 上下文長度與折疊
不同模型上下文長度不同。AVL Code 會在接近上限時自動觸發歷史折疊(見第十七節),把早期訊息壓縮為摘要,確保對話可以無限延續。
8.5 自修正循環:發生錯誤自動換思路
AI 遇到錯誤時會按錯誤類型自動換政策接着自愈,而不是一條道走到黑。這套機制始終啟用、無需配置;自愈過程往對話裡注入的結果型內部訊息(auto_self_heal)不會顯示在對話中,你看到的仍是乾淨的正常輸出。上游報錯會先分流來源(請求側 / 閘道 / 上游供應商)與類別(認證 / 限流 / 配額 / 餘額 / 無可用通道 / 過載 / 伺服器端錯 / 上下文超限 / 內容被安全過濾等),再對症選擇修正政策:
| 修正政策 | 適用情形 | 處理方式 |
|---|---|---|
| 壓縮重試(transient_compact) | 上下文超限 | 先折疊壓縮上下文再續跑(預設最多 2 次) |
| 切換供應商(transient_fallback) | 無可用通道 / 上游過載 / 上游認證失敗 | 掛起並提示切到備用供應商,確認後接着跑(預設最多 3 次,見 §8.6) |
| 退避重試(backoff) | 限流 / 超時 / 網路抖動 | 按退避節奏自動重試(預設最多 3 次) |
| 交還你決定(terminal) | 餘額不足 / 需重新登入 / 模型不存在 | 直接給出明確提示並停下,不盲目重試 |
即使伺服器端 5xx / 4xx 沒有錯誤詳情,也能憑狀態碼兜底走對應的自愈路徑。除了上游報錯,AI 自身產出的問題也會自愈:
- 回復被長度截斷會自動從截斷處續寫(不重頭來),預設最多 3 次。
- 思考繞圈(反復重復同一段推理)會被打斷,提示直接給結論或採取下一步動作。
- 回復被內容安全過濾會換個表述自愈。
- 工具名不合規被上游拒絕時,會自動修正工具名後重試(幾種上游措辭——包括散文式報錯——都能識別)。
- 同一處檢查 / 測試反復失敗或待辦長時間無進展時,會升級提示讓 AI 換思路(如考慮復原本次改動重來),而不是反復撞牆;到達上限後停下交還給你。
網路抖動專門優化:網路瞬斷 / 臨時掉線時會自動等網路復原再接着重試,而且這種「等網路回來」的等待不消耗重試次數——出門進電梯、Wi-Fi 抖一下這類情況不會平白把重試預算燒光。連線被重設、域名一時解析不了、交握中斷等連線級瞬斷也能被正確識別為網路問題,不再被籠統報成「模型發生錯誤」,省得你白去查上游配置。
自愈也會從歷史裡學習(見 §8.5.1):每類自愈的成敗會被記錄,下次據此動態調整允許嘗試的次數——歷史上幾乎沒救回來的,少試兩次就盡早交還給你;還能救的也不輕易放棄。
8.5.1 自愈次數隨歷史動態調整
自修正會參考過去的自愈成敗記錄(落盤在設定目錄的 self-heal-stats.json),對每一類自愈動態調整本次允許的嘗試次數:樣本不足(< 5 次)時用預設上限;歷史平滑成功率 < 20% 壓到 1 次、20–50% 減 1 次、≥ 50% 用滿預設。每類至少保留 1 次嘗試,歷史只會調低、不會調高於預設上限。
8.6 供應商自動備選(需確認)
當某個模型供應商持續不可用(無可用通道 / 上游過載 / 上游側認證失敗)時,AVL Code 不會靜默切換、也不會卡住,而是掛起本輪並在輸入框上方彈出一條切換確認條:
- 只會切到同一個模型的另一個已啟用供應商(按配置順序選第一個真正包含該模型的,絕不降級到別的模型)。
- 確認條文案形如「切換備用模型? 首選 {A} 暫時不可用,可改用 {B}(模型 {M})重試本輪」,並提示「⚠ 備用通道可能走你自己的 key(產生你的費用),或把內容發往不同上游」。
- 點「切換並重試」即用新供應商無縫接着跑;點「不用」則放棄本次切換。
