文件 v1.1.2

Session 與 Agent

·

Session

Session 是 Agenvoy 的核心單位。每個 session 擁有自己的對話 context、記憶、agent 人格與工具配置。

儲存路徑:~/.config/agenvoy/sessions/<sid>/

檔案 用途
history.json 近期對話,以差量追加
summary.json / .summary_cursor 滾動摘要與其增量游標
action.log 工具呼叫稽核日誌。每個事件一行,格式 [時間戳][window_hash][kind][task_hash] 內容(window_hash 為寫入視窗的 hash,與事件所帶的 window_hash 同值);結尾的 task_hash 欄位於 v1.0.2 新增,讓每一行都能追回寫它的那次執行,replay 解析器視其為選填,v1.0.2 之前的舊行仍可載入
.cmd_history 該 session 的 TUI 輸入歷史
claude_code_<model>.json v1.1.1 起,session 中每個用過的 claude-code 模型一份:記錄其 Claude Code session id、訊息指紋與最後回覆,讓 daemon 重啟後能 --resume 而非重送歷史(模型名稱中的 @ 與 / 轉為 _)
pending/ 待決的 ask_user / confirm metadata,每個 task hash 一份 JSON

其餘全部移入 ~/.config/agenvoy/.store/history.db:

SQLite 表 內容
session 顯示名稱、self_id、人格(role)、模型、reasoning 等級。v1.1.0 起人格同時寫入 role 欄與舊的 rule 欄,讀取時優先取 role
note + note_fts5 已於 v1.0.23 隨操作者筆記一併移除;舊資料庫中殘留的表不再被讀取
messages + messages_fts5 完整訊息封存與其全文索引
action_history 已完成的執行與其工具結果
file_history 工具改動過的每個檔案的版本紀錄。自 v1.0.14 起,帶 task 的列其 unique index 為 (dir, name, task_id, session_id),同一次 task 對同一檔案只記一筆 —— 它最初看到的那個版本 —— 而不是每次存檔各記一筆;migration 會刪掉已存在的重複列。task_id 為空的列不受影響
usage 各模型 token 花費,保留 28 天。自 v1.0.11 起每次送出另記 elapsed_ms,彙總時換算為 output_tps。v1.0.26 起每列另記該次回覆的 tool call id(tool_calls);v1.1.0 起 claude 與 claude-code 的 input 含 cache write,與其他 provider 回報未快取 input 的方式一致

向量、工具快取、錯誤記憶與執行中任務存活訊號存於 ToriiDB(.store/db_0 ... db_3)。v1.1.1 以前 daemon 啟動時會把舊版 per-session bot.json、bot.md、config.json、status.json、usage.log、summary.meta.json 與 history/ 任務目錄遷移進 SQLite;v1.1.2 移除這些遷移,舊版安裝留下的這類檔案不再被讀取——需保留資料時請先升級到 v1.1.1 再升級。state 表已於 v0.35.3 移除:執行中的任務改以 ToriiDB 的 action:<session_id>:<task_hash> key 表示,每 55 秒續期、TTL 60 秒,被砍掉的行程靠過期自行下線,不需再檢查 PID 是否存活。

Session prefix 與生命週期

Prefix 生命週期
cli-* 永久 — 本機 CLI / TUI(TUI /new 或 POST /v1/session)
chat-* 永久 — Web / API(POST /v1/send 帶 persist=true)
dc-* 永久(Discord channel)
tg-* 永久(Telegram chat — per-chat,該 chat 內所有使用者共用)
temp-* idle 30 分鐘後回收(POST /v1/send 與 subagent session 的預設值)

清理透過 cron 每 30 分鐘執行一次(並於啟動時執行一次),僅針對 temp-* prefix — cli-*、chat-*、dc-* 與 tg-* 永不自動回收。

Prefix 同時決定確認要回送到哪個通道,也是 TUI session 選單的分組依據:偵測到至少兩組時,選單會顯示 all 分頁加上各 prefix 一個分頁,當前 session 排在最前。Daemon 端的 fsnotify watcher 會把每個新建 session 目錄的 ID 與設定名稱寫進 log。

EN