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>_<hash>.json | v1.1.3 起,session 中每個用過的 claude-code 模型與 system prompt 雜湊一份(不帶工具的呼叫再加 _plain):記錄其 Claude Code session id、訊息指紋與最後回覆,讓 daemon 重啟後能 --resume 而非重送歷史(@、/ 與 | 轉為 _)。v1.1.1 至 v1.1.2 於 session 目錄下每個模型寫一份 claude_code_<model>.json |
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 同時決定確認要回送到哪個通道(v1.2.0 起由 TUI 發起的執行只詢問發起它的 TUI 視窗),也是 TUI session 選單的分組依據:偵測到至少兩組時,選單會顯示
all 分頁加上各 prefix 一個分頁,當前 session 排在最前。Daemon 端的 fsnotify watcher 會把每個新建 session 目錄的 ID 與設定名稱寫進 log。