跳到內容
OmniRoute source

Compression Engines (中文 (繁體))

壓縮組合是可指派給路由組合的具名壓縮設定檔:

  • compression_combos:儲存模式、管線、RTK 設定、語言設定及預設標記
  • compression_combo_assignments:將壓縮組合對應至路由組合
  • 執行階段整合會先解析已指派的壓縮組合,再處理一般組合覆寫
  • 分析資料包含 compression_combo_id 和 engine

儀表板位置:Dashboard -> Context & Cache -> Compression Combos。

路由 用途
/api/settings/compression 全域壓縮設定(包含 mcpAccessibility 設定)
/api/compression/preview 預覽任何壓縮模式
/api/compression/language-packs 列出可用的 Caveman 語言套件
/api/context/caveman/config Caveman 設定別名
/api/context/rtk/config RTK 預設值及設定
/api/context/rtk/filters RTK 篩選器目錄
/api/context/rtk/test RTK 預覽/測試端點
/api/context/rtk/raw-output/[id] 經驗證且已遮蔽敏感資訊的原始輸出復原
/api/context/combos 壓縮組合 CRUD
/api/context/combos/[id]/assignments 路由組合指派 CRUD
/api/context/analytics 壓縮分析別名

管理路由需要管理驗證或 API 金鑰原則檢查。

壓縮功能提供五個 MCP 工具:

工具 範圍 用途
omniroute_compression_status read:compression 設定、分析資料、快取統計資料
omniroute_compression_configure write:compression 更新全域設定
omniroute_set_compression_engine write:compression 設定模式及選用的管線
omniroute_list_compression_combos read:compression 列出壓縮組合
omniroute_compression_combo_stats read:compression 讀取組合/引擎分析資料

嵌入向量絕不會被壓縮。 open-sse/handlers/embeddings.ts 絕不會呼叫任何 壓縮引擎——請求/回應主體會原封不動地直接傳遞給執行器。 目前這是由結構所保證(嵌入向量與聊天補全使用彼此獨立的處理常式),而非 執行階段檢查,但這表示 #8034 中的向量失真疑慮在嵌入向量路徑中沒有暴露面。

個別模型/端點排除篩選器(#8034)。 對於聊天補全,操作人員可以指定 絕不可壓縮的模型 ID/provider/model 目標——若日後壓縮功能接入更接近嵌入向量的路徑, 這會是很有用的防護措施;一般而言,對任何要求提示詞逐位元組完全一致的模型 (確定性評估、對快取敏感的前綴等)也很有幫助。

  • 設定欄位:全域壓縮設定中的 exclusions?: string[] (GET/PUT /api/settings/compression),透過現有的 key_value 壓縮 命名空間(src/lib/db/compression.ts)持久化——不新增資料表。
  • 儀表板分頁:Dashboard → Compression → Exclusions (/dashboard/compression/exclusions)。
  • 模式語法:* 是唯一的萬用字元。模式中的所有其他正規表示式中繼字元都會在 比對前逸出,因此 gpt-5.6 只會比對該字面字串,絕不會比對 gpt-5x6 (可防範 ReDoS、長度有界,且無巢狀量詞)。模式會以不區分大小寫的方式, 同時與裸模型 ID 及 provider/model 組合字串進行比對——gpt-5-6、 openai/gpt-5-6 和 openai/* 全都有效,而僅使用 * 會排除所有模型。
  • 比對:位於 open-sse/services/compression/exclusions.ts 中的 isCompressionExcluded()/normalizeCompressionExclusions()。chatCore.ts 會在解析 壓縮設定後立即檢查被排除的目標,且是在任何引擎執行之前;若比對成功, 其處理方式與全域停用壓縮完全相同——可證明請求主體逐位元組完全一致。 此次略過會透過 writeCompressionSkip(..., "excluded") 記錄,以便在分析資料中查看。
  • 預設值(清單為空/不存在):與 #8034 之前的行為相同——不排除任何項目。
  • LLMLingua-2 (SLM) 需要位於同一位置的選用相依套件。 Worker 只有在正式環境建置中,當 @atjsh/llmlingua-2 及其對等相依套件共同置於 dist/node_modules 時才會執行(請參閱 scripts/build/colocateOptionals.mjs、#4286)。若缺少這些套件,引擎會採用開放式失敗處理(回傳原始文字)。Worker 的解析已不再依賴 import.meta.url(它在獨立套件組合中無法運作),而是以執行階段的 cwd / argv[1] 為基準。
  • Caveman 語言套件 de / fr / ja 並不完整。 它們隨附 context + filler + structural 規則,但不含 dedup / ultra 套件,因此對這些語言而言,ultra 強度 並不會比 full 更強(它們只會使用各自的規則,不會在未告知的情況下 回退至英文的 dedup/ultra 規則,否則可能會破壞外語文字)。 en / es / id / pt-BR 是完整的。歡迎為這些不完整的套件貢獻 dedup.json + ultra.json。
  • 堆疊式遙測僅列出實際執行壓縮的引擎。 在堆疊式管線中,若某個步驟的 引擎已執行但節省率為 0%,則會回傳 stats:null,因此不會出現在 engineBreakdown 中——這與該步驟被略過的情況無法區分。若要區分 「已執行,0%」與「已略過」,則需要變更明細模型,目前已延後處理。

此區域的重點關卡為:

Terminal window
node --import tsx/esm --test tests/unit/compression/rtk-*.test.ts tests/unit/compression/pipeline-integration.test.ts tests/unit/compression/context-compression-api.test.ts
node --import tsx/esm --test tests/unit/compression/*.test.ts tests/golden-set/*.test.ts tests/integration/compression-pipeline.test.ts tests/unit/api/compression/compression-api.test.ts
node --import tsx/esm --test tests/unit/compression/mcpAccessibility*.test.ts
npm run typecheck:core

OmniRoute 原始碼 (a58000c7685f)

HagiCode

HagiCode 是智慧代理程式開發工作台,結合結構化工作流程、多代理程式執行與 Hero Dungeon 介面,將想法化為交付成果。

以更聰明、更快速且更有趣的智慧代理程式工作流程,打造實用的軟體。

HagiCode 淺色主題介面畫面
  • Smart結構化流程將意圖轉化為從構想到交付的可執行步驟。
  • Efficient多代理程式工作流程讓研究、實作與審查並行進行。
  • FunHero Dungeon 讓長時間的程式協作更直覺、更有參與感。
造訪 HagiCode