Agenvoy - Make AI actually work for you — your personal AI assistant.
同一個 session 可能同時被多個目標觀察,Web 界面(尚未釋出)、TUI 介面、Telegram / Discord,又或是被其他 agent 視窗呼叫
都需要看到同一個 session 的即時狀態,包括 agent 執行過程
第一版是讓各視窗啟動時輪詢狀態,搭配全局日誌檔讓外部工具 tail。但這兩種方式在長期使用下會遇到輪詢有延遲,啟動太多監聽器
v0.25.6 起設計了讓所有事件統一的 Pub/Sub,並且用的方式是截取發送的方式,最低影響原先的執行流程
讓視窗只需訂閱自己感興趣的 channel,就能即時接收最新動態,不只是 agent 回應,而是完整的 session 生命週期狀態
Agent 執行
agent 執行時產生的每一個事件,包含用戶輸入、工具呼叫結果、思考片段、最終回應都會透過攔截器截取並廣播,agent 不需要負責處理訂閱者的動作
agent 事件 → channel
↓
Pub(sessionID, event) ← 廣播
↓
原始 events channel ← 原有 handler
Daemon 日誌
新增 daemonSlogHandler 攔截所有 slog 呼叫,在寫入 stderr 的同時,向全部 channel 廣播(但不包含 Telegram / Discord 訊息),所有系統事件,包含連線建立、工具超時、記憶體壓縮、錯誤警告,只要有開啟 TUI 都能即時追蹤
slog.Info("xxx")
↓
daemonSlogHandler.Handle()
├── 寫入 stderr
└── Pub("daemon", EventDaemonLog{...}) ← 廣播
Top comments (0)