v1.3.11

壓縮與重置

最後更新


長時間執行如何維持在模型視窗內,以及 reset 與 remove 會清掉什麼。

執行期壓縮


除了上述儲存分層,internal/agents/exec/compact 負責把單次長時間執行維持在模型視窗內。各階段獨立,依序套用且只做到夠用為止:
階段觸發效果
CheckThreshold(model)第一次之後的每次迭代,以前一次 send 的 input tokens 比對當前模型的 token 預算——其 context window 的 80 %。自 v1.0.11 起 window 改由每小時向 https://llm-io.agenvoy.com/ 取一次的即時表提供,以 vendor + model 查表,取代原本寫死的各家族固定值;表中查不到的模型回退 128 K。v1.0.25 起表中查不到的 copilot@ 模型改用 Copilot 自身 /models 端點回報的 max_context_window_tokens(背景抓取、每 24 小時更新),取代原本一律 256 K 的回退值。v1.3.0 起從超限錯誤學到的上限若比表中值小就取而代之(表中查不到的模型也改用它),且 deepseek 的 deepseek-flash 固定為 1,048,576 input tokens。v1.3.1 起每次執行改在背景預熱此表、不再等待,抓取失敗則 5 分鐘後重試
ExtractContextHistories(v1.2.1 前為 ExtractOldHistories)超出預算,該次執行第一次把較舊的對話輪次併入滾動摘要
ToolHistory再次超出預算,或沒有較舊的對話可併入將最舊的 tool-call 往返摘要成文字
TrimRatio → TrimFallbackProvider 回報 context 長度錯誤v1.3.0 起先記下模型實際上限,再把歷史裁到原大小的 80 % 後重送。v1.3.1 起先由 decision model 移除信心至少 0.7 判定需求已用不到的工具步驟——最新一步與 write_todo 呼叫一律保留;接著由 TrimFallback 刪最舊的對話(一次兩則對話訊息,之後是最舊的 tool-call 步驟連同其結果),直到達標。v1.1.1 起「先跑 ExtractContextHistories → ToolHistory」的做法移除於 v1.3.0
RawToolFallback執行途中切換模型將 tool 歷史轉為純文字,讓新模型可讀

手動壓縮可從 TUI(/compact;/memory 指令已移除,重設改為 /reset)或 POST /v1/session/:id/memory 觸發。該端點以 action 區分:compact 丟棄較舊訊息並回傳 removed、summary 重建滾動摘要並回傳 count、reset 清空對話——mode: "summary" 保留滾動摘要,mode: "all" 一併清除。TUI 中 /compact 與 /reset 開啟同一個 popup,含三個分頁:summary(唯讀顯示當前滾動摘要,v1.1.1 起)、compact 與 reset;/compact 開在 compact 分頁,/reset 開在 reset 分頁。

搜尋路由


match 參數來源使用情境
semantic(預設)ToriiDB VSearch「我們討論過關於 X 的什麼?」—— 基於語意
keywordSQLite FTS5(封存)+ ToriiDB 子字串(近期)「找出含 'sandbox' 的訊息」—— 精確文字

跨 session error memory


Tool 失敗與解決它的修正方式以 90 天 TTL 存於 error_memory,跨 session 存續。只有以 outcome=resolved 寫入的紀錄會被儲存;failed / abandoned 的寫入會被丟棄,因此不再保留放棄的策略。命中時(透過關鍵字 Contains 或 db.VSearch),該條目的 TTL 透過 db.Expire 續期。
當同一 tool 名稱在未來 session 失敗時,toolCall.go 自動查詢 error_memory,把最多 3 筆相關紀錄以 related_errors 附在失敗的工具結果後;agent 套用已記錄的修正方式。
紀錄中的作法可在 web 儀表板的 Lessons 頁面編輯(PATCH /v1/torii/error,改寫 action 並保留 TTL);GET /v1/torii/error 列出紀錄。

Reset / remove 行為


操作history.jsonToriiDB DBSessionHistSQLite(messages + meta)summary.json
Compact(自動)裁剪至 80%移除早於 cutoff 的條目不動(已含全部資料)不動
Reset(/reset,mode=summary)刪除清除清除保留
Reset(mode=all)刪除清除清除刪除
Remove session刪除目錄清除清除刪除目錄
EN