OpenSquilla 是什麼?
OpenSquilla 是一套開源微核心 AI Agent 框架,以 Apache 2.0 授權釋出,技術棧以 Python 3.12+ 為主。 它不把「堆更多模型」當作唯一解法,而是從路由、步驟編排、本地推理切入,讓每一分 Token 預算換到更高的任務完成品質。
在相同預算下,讓 Agent 完成更多、更好的任務——提升的是「單位成本的 Agent 智能」,而不只是峰值能力。
主要亮點
60–80% Token 節省
依任務難度自動選模型與思維深度,簡單請求不再誤用旗艦模型,成本曲線可預測。
智能路由 SquillaRouter
本地 LightGBM + ONNX 嵌入,毫秒級判斷難度等級 T0–T3,再映射到你配置的實際模型。
MetaSkills 協議
用 DAG 把單一 Prompt 拆成多步驟工作流:可並行、有依賴、可把上一步輸出當模板注入下一步。
本地路由與安全沙箱
分類與特徵抽取可離線完成;工具執行走沙箱隔離,兼顧隱私與執行安全。
想像你有一組助理:有人專管回覆短訊,有人擅長寫程式,有人適合長篇推理。OpenSquilla 負責「先看問題難不難、再決定派誰、怎麼做」。
框架層把 路由策略、工作流圖、模型後端 解耦。開發者配置模型池與策略,運行時由 Router 與 MetaSkill 引擎決定每一步的模型與工具。
智能路由(SquillaRouter)完整原理
SquillaRouter 是 OpenSquilla 降低成本的關鍵:在呼叫昂貴模型之前,先用本地、低成本的分類器判斷任務難度,再決定模型等級與推理深度。
類比:像打車軟體一樣調度算力
🚌 簡單問題 → 坐公交
「把這段英文翻成繁中」「摘要三句話」——用輕量、便宜模型即可,關閉長鏈推理,回應快、成本低。
🚗 複雜問題 → 叫專車
「重構分散式系統並證明正確性」「多文件法律風險分析」——升級旗艦模型,開啟深度推理與更強 Prompt。
重點不在「永遠用最便宜的」,而在難度與成本匹配:該省的省,該花的花,整體 Token 曲線才會下降,同時保留處理難題的上限能力。
混合特徵分析
路由不是只看字數。SquillaRouter 同時使用手工特徵與語義特徵,讓分類器能同時理解「表層結構」與「語意難度」。
📝 手工特徵(Handcrafted)
- 長度與結構:字元數、句段數、是否多段指令
- 語言訊號:中英混合、專業術語密度
- 程式碼偵測:是否含 code fence、API 呼叫、錯誤堆疊
- 關鍵詞:如「證明」「重構」「多步驟計劃」「對比分析」等高難度提示
- 工具意圖:是否暗示需要搜尋、執行、檔案操作
🧠 語義特徵(Semantic)
- 本地 BGE 嵌入模型:把 Prompt 轉成稠密向量
- 語意相似度:與已知困難/簡單任務分布的距離
- 抽象度與歧義:開放式推理題 vs 明確指令題
- 離線可運行:嵌入推理走 ONNX Runtime,不需把原文先送上雲端分類
- 與手工特徵拼接:形成混合特徵向量再進 LightGBM
純關鍵詞容易漏判(同一句話難度差很多);純嵌入又可能忽略明顯結構訊號(例如超長 code review)。 混合特徵讓模型同時吃到「可解釋的規則線索」與「高維語意形狀」。
核心技術元件
LightGBM 是什麼?
LightGBM(Light Gradient Boosting Machine)是微軟開發的高效梯度提升決策樹函式庫, 以直方圖演算法與葉向生長(leaf-wise)策略聞名,特別擅長在表格/結構化特徵上做分類與迴歸。
- 為什麼適合路由? 路由本質是「多類分類」:把 Prompt 分到 T0–T3。
- 速度快、記憶體低:適合本機常駐、毫秒級決策,不拖慢 Agent 啟動。
- 對混合特徵友好:數值特徵、類別特徵、關鍵詞旗標都能自然建模。
- 可解釋性相對佳:可分析特徵重要度,調路由策略時較直觀。
ONNX Runtime 是什麼?
ONNX Runtime 是跨平台的高效模型推理引擎,可載入 ONNX 格式模型並在 CPU/GPU 上執行。 在 OpenSquilla 路由管線中,主要用來本地運行嵌入模型(如 BGE)。
- 為什麼用來跑嵌入? 訓練框架與推理解耦,部署輕、啟動穩。
- 可離線運行:分類前的向量化不依賴雲端 API,有利隱私與延遲。
- 跨平台一致:Windows/Linux/macOS 行為可預期。
- 與 LightGBM 分工:ONNX 產語義向量,LightGBM 做最終難度分級。
完整運作流程
從使用者送出 Prompt,到真正呼叫 LLM,中間大致經過四步本地決策:
提取混合特徵
手工特徵 + BGE/ONNX 語義向量
本地分類
LightGBM 輸出 T0~T3 難度
決定思維深度
開關推理、調整 Prompt 強度
映射實際模型
依使用者配置選後端模型
提取混合特徵
解析 Prompt 長度、語言、程式碼與關鍵詞等手工特徵;同時以本地 BGE(ONNX Runtime)產生語義嵌入向量,拼接成混合特徵。
本地 LightGBM + ONNX 分類,輸出 T0~T3
嵌入推理由 ONNX Runtime 完成,難度分類由 LightGBM 完成。輸出離散等級 T0(最便宜)到 T3(旗艦),全程可本地、可離線。
決定思維深度與 Prompt 強度
依等級決定是否開啟長鏈推理(reasoning)、思考預算、系統提示與工具使用激進度。簡單任務關推理,複雜任務開足馬力。
映射到使用者配置的實際模型
T0–T3 是抽象等級,真正呼叫哪個 API/本地模型由你的設定表決定(例如 T0→小模型、T3→旗艦)。換供應商不必重訓路由。
# SquillaRouter 決策管線(示意)
def route(prompt: str, config: ModelMap) -> RouteDecision:
hand = extract_handcrafted_features(prompt) # 長度、語言、code、關鍵詞…
emb = onnx_bge_embed(prompt) # 本地 ONNX 語義向量
x = concat(hand, emb)
tier = lightgbm_predict(x) # T0 | T1 | T2 | T3
depth = thinking_policy(tier) # 關閉 / 短 / 深推理
model = config.tier_to_model[tier] # 使用者映射表
return RouteDecision(tier=tier, model=model, thinking=depth)
四個難度等級:T0 → T3
等級是路由系統的「共同語言」:上游只負責判難度,下游負責把等級接到你真實可用的模型與預算策略。
| 等級 | 定位 | 思維深度 | 典型場景 | 成本取向 |
|---|---|---|---|---|
| T0 | 最便宜 · 輕量 | 關閉或極短推理 | 翻譯、格式轉換、簡短 QA、模板填空、明確單步指令 | 優先省 Token |
| T1 | 標準 · 日常 | 有限思考 | 一般寫作、中等複雜說明、輕量 debug、文件摘要與整理 | 成本/品質平衡 |
| T2 | 強化 · 專業 | 開啟推理 | 多檔程式修改、架構建議、資料分析、需要工具鏈的任務 | 偏向準確度 |
| T3 | 旗艦 · 高難 | 深度推理 | 複雜規劃、形式化推理、高風險決策、長上下文綜合分析 | 能力優先 |
Router 像櫃台分診:先看症狀(特徵),標上輕中重症(T0–T3),再安排對應診間(模型)與檢查深度(推理)。
等級與模型解耦(tier abstraction)。同一套 LightGBM 策略可接不同供應商;調整成本只需改 mapping 或 policy,不必重寫 Agent 邏輯。
如何把一個 Prompt 拆成多個步驟執行?
是真的可以。OpenSquilla 主要透過兩套機制把「一句話任務」展開成可控的多步驟流程: MetaSkills 協議,以及執行中的 Agentic Routing + 多模型 Ensemble。
MetaSkills 協議
什麼是 MetaSkill?
MetaSkill 是一種把 Agent 能力封裝成可組合工作流的協議/單位。 它不只是「一段 System Prompt」,而是明確描述:有哪些步驟、步驟之間如何依賴、每步用什麼執行型別、輸出如何傳遞。
MetaSkill 用 DAG(Directed Acyclic Graph,有向無環圖) 定義多步驟工作流: 節點是步驟,邊是依賴。沒有循環,才能安全地做拓撲排序、並行排程與失敗重試。
步驟類型(示意)
llm_chat
直接呼叫語言模型完成生成、改寫、抽取、判斷等純語言步驟。
agent
交由子 Agent 自主規劃與行動,適合邊界較模糊、需要多輪探索的子任務。
tool_call
執行具體工具:搜尋、讀檔、跑指令、呼叫 API 等,結果回寫到工作流上下文。
編排能力
可並行執行無依賴步驟、以依賴控制順序、用模板把上游輸出注入下游 Prompt。
簡單拆分範例:intake → classify → analyze → summarize
假設使用者只說:「幫我分析這份客服對話,找出問題類型並給改進建議。」MetaSkill 可拆成:
# MetaSkill:把單一 Prompt 展開為 DAG 步驟
name: support_analysis
steps:
- id: intake
type: llm_chat
prompt: "清理並結構化以下客服對話:{{input}}"
- id: classify
type: llm_chat
depends_on: [intake]
prompt: "依類別標註問題類型:{{steps.intake.output}}"
- id: analyze
type: agent
depends_on: [classify]
prompt: "根據分類結果深入分析根因與證據…"
- id: summarize
type: llm_chat
depends_on: [analyze]
prompt: "彙整成可執行改進建議:{{steps.analyze.output}}"
不要一次叫模型「做完整件事」。先拆成收件、分類、分析、總結;每步目標清楚,錯了也知道卡在哪一步。
DAG 排程器做拓撲排序;無依賴邊的節點可並行。模板系統把 {{steps.*.output}} 注入後續節點,形成可重現的資料流。
Agentic Routing + 多模型 Ensemble
路由不是只在進門時做一次。在 Agentic 執行過程中,每一個步驟都可以重新評估難度與模型選擇—— 這叫步驟級(step-level)路由。
🚪 入口只路由一次
- 整段任務綁定同一個模型
- 中間簡單步驟也吃旗艦價
- 難以針對子任務調整推理深度
- 失敗時通常整段重跑
🔁 步驟級 Agentic Routing
- 每步可重新選擇 T0–T3
- 分類用小模型、推理用強模型
- 困難步驟可開啟更深 thinking
- 單步失敗可局部重試或升級模型
多模型 Ensemble(集成)
對高不確定性或高風險步驟,系統可把同一子任務並行丟給多個模型,再以投票、評分器或綜合 Prompt 聚合答案。這通常比單一模型更穩,尤其在事實性、程式正確性與方案完整性上。
# 困難步驟:並行多模型 → 聚合
async def ensemble_solve(step, context):
tier = route(step.prompt, context.config).tier
if tier < T2:
return await single_model_run(step) # 便宜路徑
candidates = context.config.ensemble_for(tier) # 多個強模型
answers = await asyncio.gather(
*[m.complete(step.prompt) for m in candidates]
)
return await aggregate(answers, strategy="judge")
Ensemble 會提高單步成本,但只在 T2/T3 或高風險步驟觸發;搭配前面大量 T0/T1 省下的預算, 整體仍可更省,且難題更穩。這就是「把錢花在刀口上」。
為什麼這樣設計很重要?
智能路由與 MetaSkills 不是炫技模組,而是在回答一個現實問題: Agent 要規模化,必須同時管住成本、品質、隱私與可控性。
是輕量模型的 10 倍
帳單會明顯下降
降低單點失誤
雲端預處理
1. 成本節省的實際意義
用簡單數字理解:假設一個工作天有 1,000 次 Agent 請求,其中約 700 次其實是短指令或格式任務。 若全部打旗艦模型,成本近似「1000 × 高單價」。 若 Router 把 700 次導向輕量模型、200 次標準、100 次旗艦,總支出往往可落到原本的數成—— 這與社群常見的 60–80% Token 節省敘事方向一致(實際比例取決於流量分布與 mapping)。
更重要的是:省下的預算可以回補到真正困難的 10%——更長上下文、更深推理、必要時 Ensemble—— 讓「總帳不變甚至更低,但難題表現更好」。
2. 準確度提升:多模型 Ensemble 超越單一模型
單一模型有偏好與盲點。步驟級路由讓簡單步驟保持乾淨、低噪訊;困難步驟則可用多模型交叉驗證。 實務上,這比較像工程裡的「多檢核」:不是每行 code 都 code review 三遍,但關鍵路徑一定要。
3. 隱私與本地執行的優勢
特徵抽取與難度分類可在本地完成(LightGBM + ONNX 嵌入),代表:
- 不必為了「決定用哪個模型」先把全文送到第三方路由器
- 內網/敏感資料場景更容易落地
- 路由延遲可控,不依賴外部分類 API 的可用性
- 搭配工具沙箱,執行面與決策面都能收斂權限邊界
4. 從「會調工具」到「會自組織工作流」
傳統 Tool-using Agent
- 擅長選擇下一個 tool call
- 流程常隱含在對話歷史中
- 成本隨輪數不可控膨脹
- 重現與除錯較困難
MetaSkill + 步驟路由
- 顯式 DAG:步驟、依賴、輸出可見
- 每步可獨立選模型與深度
- 可並行、可局部重試、可觀測
- Agent 從「會用工具」升級到「會組裝流程」
工具呼叫解決的是「能不能做事」;MetaSkills 與步驟級路由解決的是「怎麼系統化地做事,並為每一步付出合理代價」。 這正是 Agent 從 demo 走向可營運系統的分水嶺。
總結與關鍵重點
讀完本頁,請帶走以下可複述的核心知識:
- 1 OpenSquilla 是開源微核心 AI Agent 框架(Apache 2.0、Python 3.12+),目標是提升「單位成本的 Agent 智能」。
- 2 SquillaRouter 像打車調度:簡單任務走便宜模型,困難任務走旗艦模型,避免一律頂配。
- 3 路由使用混合特徵:手工特徵(長度、語言、程式碼、關鍵詞)+ 本地 BGE 語義嵌入(ONNX Runtime)。
- 4 LightGBM 做 T0–T3 難度分類;再映射思維深度與使用者配置的真實模型——快、省、可本地。
- 5 MetaSkills 以 DAG 把單一 Prompt 拆成多步驟(如 intake → classify → analyze → summarize),支援依賴、並行與模板傳值。
- 6 Agentic Routing 在每個步驟可重新選模型;高難步驟可多模型 Ensemble 再聚合,兼顧成本與穩定性。
- 7 價值不只在省錢:還包含可觀測工作流、隱私友善的本地分類,以及 Agent 從「調工具」進化到「自組織流程」。
核心價值一句話: 本地分類 + 混合特徵 + 步驟級路由 + MetaSkills ——用更少 Token,組織出更強、更可控的 Agent。