文件 v1.1.1

壓縮與重置

·

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

執行期壓縮

除了上述儲存分層,internal/agents/exec/compact 負責把單次長時間執行維持在模型視窗內。各階段獨立,依序套用且只做到夠用為止:

階段 觸發 效果
CheckThreshold(model) 每次迭代 當前模型的 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 的回退值
ExtractOldHistories 超出預算,該次執行第一次 把較舊的對話輪次併入滾動摘要
ToolHistory 再次超出預算,或沒有較舊的對話可併入 將最舊的 tool-call 往返摘要成文字
TrimFallback Provider 回報 context 長度錯誤 v1.1.1 起先跑同一套 ExtractOldHistories → ToolHistory 壓縮後重送;只有該壓縮無法縮減時,才丟掉最舊的一組對話再重送
RawToolFallback 執行途中切換模型 將 tool 歷史轉為純文字,讓新模型可讀

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

搜尋路由

match 參數 來源 使用情境
semantic(預設) ToriiDB VSearch 「我們討論過關於 X 的什麼?」—— 基於語意
keyword SQLite 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.json ToriiDB DBSessionHist SQLite(messages + meta) summary.json
Compact(自動) 裁剪至 80% 移除早於 cutoff 的條目 不動(已含全部資料) 不動
Reset(/reset,mode=summary) 刪除 清除 清除 保留
Reset(mode=all) 刪除 清除 清除 刪除
Remove session 刪除目錄 清除 清除 刪除目錄
EN