Skip to content

AgEnD 2.3.0

Choose a tag to compare

@changhansung changhansung released this 23 Oct 05:10
· 300 commits to main since this release
dd41c81

AgEnD 2.3.0

2.3 的正式版,寫給從 2.2.x(2.2.5、2.2.6)升級的使用者。

2.2.5 已經收進 2.3 beta 前半段的大部分功能,例如網頁外觀、訪客登入、網頁授權、用量頁面和組織圖,所以這裡只列 2.2.6 之後才有的東西。

從 2.2.x 升級

  • 怎麼升級:在 General 傳 /update,或在主機終端機執行 agend update。從 2.2.6 升級:Linux(systemd)與 macOS(launchd)都已實機演練(#2277)。
  • 從 Discord/Telegram 傳 /update:在 General 傳 /update 就能從 2.2.6 升上來,root 或 WSL 類主機也一樣;下面 #2369 的額外步驟只在主機上自己跑 agend update 時才需要(#2277 已實際演練)。
  • 從 2.2.x 用 /update 時看到的訊息:中途會先出現一次 2.2.x 自己的「✅ 安裝完成」,那時 fleet 還在重啟;最後出現「✅ 更新完成 — v2.3.0 · N 個 Agent 已就緒」才是全部好了。升上 2.3 之後的更新就不會再有提前的 ✅(#2480)。
  • 以 root 執行的 WSL 類主機要多一步(#2369):在沒有 XDG_RUNTIME_DIR 的 shell(一般的 wsl shell、docker exec、cron)執行 2.2.x 的 agend update,會因為連不到 systemd 使用者服務而自動退回 2.2.x。舊的 fleet 不受影響。
    • 怎麼做:改用 XDG_RUNTIME_DIR=/run/user/$(id -u) agend update,或重跑官方安裝指令。
    • 升上 2.3 之後:就不再需要這一步。
  • Mac 從 2.2.x 升級:更新完請確認 fleet 有起來(#2481):執行這次更新的是 2.2.x 自己的更新程式。在 Mac(launchd)上,即使 2.3 沒有起來,它也可能回報成功,而且不會自動退回;Linux 則會退回。
    • 怎麼確認:agend ls 列得出 fleet 和它的 instance,儀表板也打得開。
    • 沒有起來時:執行 npm i -g @songsid/agend@2.2.6,再執行 agend restart,然後到 GitHub 開 issue 回報。
    • 2.3 會直接告訴你(#2488):如果 2.3 裝好了卻一直起不來,任何 agend 指令開頭都會顯示「已安裝但起不來」,附上回到前一版的指令和舊版備份的位置;agend doctor 會有一列「Fleet start」失敗;Mac 會跳一次系統通知。只是提示,不會自動退回。
    • 升上 2.3 之後:之後的更新會自己確認新的 fleet 真的在跑,沒有的話會自動退回。
  • 之後的更新改用新版本自己的安裝程式(#2264):/update 和 agend update 會執行目標版本的 agend-install --upgrade,安裝、升級、修復走同一條路。
    • 被打斷的安裝:再跑一次安裝指令就能修好。
    • 同時有兩個安裝:另一個安裝或更新還占著安裝鎖時,新的這個會在改動任何東西之前停下並說明原因,不會回報「安裝失敗」;等前一個完成再執行一次(#2285)。
  • 更新失敗會自動退回(#2420):新版的 service 起不來時,更新會試著裝回前一版的套件、service 設定,以及(如果原本在跑)它的 service。只有能確認原本狀態時才還原;否則保留復原用的副本並印出要檢查什麼。訊息會說明前一版是否已重新在跑;復原不完整時,照它印出的步驟處理。
    • macOS:從 2.3 起,launchd 下要等 fleet 真的跑起來才算更新成功;從 2.2.x 升級的那一次例外,見上面的 Mac 項目。
  • 比一般安裝多約 235 MB 的空間:退回機制要先把目前的版本另外存一份,安裝新版時也會保留。這份副本存不下來時,更新會在改動任何東西之前停下;安裝本身需要的空間不會事先檢查,所以也要留夠。
  • service 設定會一起修好:
    • Linux 每 15 分鐘被重啟(#2331):unit 沒有載入 NotifyAccess=all 時,systemd 收不到就緒訊號,fleet 會每 15 分鐘被重啟。升級時會寫進 unit 並確認實際載入的值。
    • OOMPolicy(#2446):會檢查實際載入的值並回報。
  • 網頁不用重新登入(#2403):升級後原本的登入會自動沿用。只有一種例外:升級前,這個瀏覽器的登入 cookie 已經被同主機的另一個 AgEnD 蓋掉,這時要再登入一次。
  • 升級後行為會變的預設值:
    • 任務看板在聊天裡的提醒預設關閉(#2425):「等你處理」裡的看板卡片要設 needs_you.task_board: true 才會出現。每日摘要要設 defaults.task_board.summary_at 才會發。
    • 新建立的 fleet 預設關閉任務看板(#2391):新寫的 fleet.yaml 會帶 defaults.dashboard.task_board: false。既有的 fleet.yaml 不會被改寫,看板照常可用。
    • Canvas Worker 特效是實驗功能,預設關閉(#2275):本機管理者可以在「設定 → 網頁外觀」開啟。落花、點擊星星這類環境效果不受影響。
    • CLI 的語言跟著 fleet(#2404):先看 defaults.locale,沒設時,台灣時區(UTC+8)的主機會用中文。給程式讀的那幾行固定保持英文。
    • 有安裝 AgEnD 服務的主機(#2356):手動執行 agend fleet start / agend fleet stop 會改交給 agend start / agend stop,不會在服務旁邊多跑一個沒人管的 fleet。

主要新功能

網頁儀表板

  • 任務看板(#2246,感謝 @igs-willyliao):「Fleet › Tasks」變成看板,分成專案、主任務(M-n)和子任務(S-n)。
    • 基本操作:主任務跟著子任務的進度走,支援依賴關係、留言和歷史,可以拖拉與篩選。公開連結只能看。
    • agent 協作:卡片被指派、退回、問題被回答、有新留言、被確認或取消時,相關的 agent 會收到通知,10 秒內的變動合成一則。
    • 派工者:卡片會記錄是誰派的,派工者可以回答 agent 卡住的問題。每個 agent 同時只做一張卡。
    • 誰確認:只有你派出去的卡片需要你確認(#2434)。agent 派的卡片由派工的 agent 確認。派工的 agent 被刪掉時,卡片會改回給你(#2451)。
    • 在聊天室處理:開啟 needs_you.task_board 後,等你確認和卡住的卡片會出現在 General 的「等你處理」,可以直接確認、退回或回覆。
    • 每日摘要:設了 defaults.task_board.summary_at 才會發。看板的 Instance 抽屜依團隊列出每個 agent 手上的卡。
  • 全域搜尋(#2293):按側邊欄的「🔍 搜尋」,或按 Ctrl+K/⌘K。
    • 範圍:聊天訊息、agent 之間的訊息和任務,依 agent 分組,點一下就跳到原訊息。
    • 只搜一個 agent:在聊天裡按 Ctrl+F。
    • 篩選:可以依 agent/team、時間、來源篩選,或只看自己說的。
    • 權限:只有登入的管理者能用,從臨時公開連結登入的管理者也可以(#2486);只想在公開連結上關掉,設 web.search.public_link: false。訪客永遠不能用。索引保留 90 天(web.search.retention_days)。
  • Office 像素辦公室(#2399,感謝 @hxhsandy):「Fleet → 組織圖」多了「Office」檢視,把 fleet 畫成像素風辦公室。
    • 畫面:每個團隊一間房、每個 agent 一張桌子。工作中在打字、閒置在喝茶、暫停在睡覺、等你處理會閃燈,agent 之間的訊息會沿著走廊飛過去。
    • 風格:有 Desks 和 Studio 兩種。
    • 編輯:管理者可以新增、改名、刪除辦公室,指定成員和風格;同時有人修改時會保留你的草稿,讓你選要保留哪一份。訪客和公開連結不能編輯。
  • 網頁聊天:
    • 回覆指定訊息(#2272):滑鼠移上去按 ↩、按右鍵、手機左滑或長按,或按 R。
    • 同步成原生回覆(#2281):同步到 Discord/Telegram 的那一則會直接「回覆」原訊息。
    • reaction(#2305):agent 可以對網頁訊息 react 一個 emoji,當成只需確認或道謝時的回覆。
    • 送出狀態:送出後訊息立刻以灰色出現,agent 收到才變成正常顏色;失敗時可以重試、放回輸入框或刪除。圖片和檔案各自顯示上傳進度。重試不會讓同一則訊息送兩次。
    • 聊天圖片(#2333):可以縮放和拖曳。
    • 復原與重做(#2342):每個文字欄位都可以用 Ctrl/⌘+Z 復原、Ctrl+Shift+Z 重做。
    • 輸入框下方只剩一行(#2215):桌機省了約 45 px。
    • 輸入框提示(#2479):用 agent 的顯示名稱,固定一行。
    • 手機(#2479、#2485):鍵盤的換行鍵是換行,只有送出按鈕會送出;打字時底部分頁列收起,輸入框直接貼著鍵盤。
  • 外觀:
    • agent 的主題可以套用到整個頁面(#2196):左側欄、標題列和右側欄會換成它的顏色,可以在 ⋯ →「頁面配色」覆蓋。
    • 身分卡(#2217):顯示方式集中在聊天標題列的一個卡片按鈕。
    • 其他:各處左側色條統一成直條(#2330)。組織圖的連線和箭頭重新繞線,不再貼框或擠在一起(#2182、#2329)。
  • 用量面板:
    • 精簡檢視:標題旁有「完整/精簡」切換。精簡檢視依供應商分組,每個帳號三行:名稱、方案和重置時間,再加上 5 小時和 7 天各一條長條和百分比。選擇會同步到每台裝置。
    • 每個 Claude 登入各一列(#2236):預設帳號和每個 profile 都會顯示;額度用完顯示 100% 和重置時間,被限流顯示「Rate limited」。
    • 讀不到時保留上次的數字(#2236、#2385):會標示「已過期 · 快取於 HH:MM」,不再閃「無法載入」。
    • 方案徽章不再擠掉標題(#2412):過長的方案名稱會縮短。
    • Antigravity(#2240):顯示方案名稱,付費方案顯示正確的 Gemini 額度,Gemini 4 Argon 也有自己的一行,完整和精簡檢視都有。
  • 啟動時網頁先起來(#2398,感謝 @hxhsandy):冷啟動或完整重啟時,網頁在 agent 啟動前就能打開,可以看到每個 agent 依序啟動的進度。
  • Canvas Worker 特效(實驗功能,預設關閉)(#1629):開啟後,可以在「設定 → 網頁外觀」的特效庫上傳特效、放到聊天或個人區域。agent 也能用工具放置自己的特效,mod 會一起帶著特效。特效在隔離的 Worker 裡執行,接觸不到頁面內容和輸入欄位。

設定

  • 每個 agent 可以個別關閉儀表板功能(#2391,感謝 @igs-willyliao):外觀、任務看板、網頁設定三項。可以設在個別 agent 或 fleet 預設值(dashboard: { appearance, task_board, web_settings }),關掉後那幾項的工具就不能用。
  • 從儀表板登入 backend(#2233):在設定的「登入」、/backend 選單、「等你處理」和每頁的提示列都可以登入。
  • 只用網頁、不接 bot:設定頁可以建立第一個 agent,不連任何聊天平台。
  • 公開連結可以用自己的網域(#2307,感謝 @hxhsandy):填入 Cloudflare 具名 tunnel 的 hostname 和 token,每次開啟都是同一個網址,手機「加入主畫面」不會隔天失效。
    • token:只能設定或清除,設定後讀不回來,也不會出現在 log;格式不對會直接提示(#2344)。
    • 有效時間(#2448):用自己的網域時,ttl_minutes 可以設 1–10080 分鐘,或設 0 代表不過期。
    • 自動重開:web.public_link.auto_open(預設關)會在 fleet 重啟後替最後開連結的管理者重新打開。
  • 自訂 App 圖示(#2308,感謝 @hxhsandy):「設定 → 網頁外觀 → App 圖示」上傳一張圖,「加入主畫面」就會顯示你的圖。
  • tool set 選單列出所有 profile(#2407,感謝 @igs-willyliao):沒有自己設定的 agent 會顯示實際生效的 profile。

更新與服務的穩定性

  • agend restart 是唯一的完整重啟(#2356):它會透過實際管理 fleet 的對象重啟(systemd、launchd 或 detached)。從 agent 窗格執行也不會讓 fleet 停在半路。
    • 單一 instance:agend restart <instance> 立即重啟那一個。
    • agend stop:也會停止系統 unit。
  • /update 的訊息照實顯示(#2480):「已安裝、正在重啟」→「啟動中 N/M」→ 全部 Agent 起來才顯示 ✅。
  • 記憶體吃緊時不會重啟循環(#2461):延後啟動 agent 時,fleet 會向 systemd 申請延長啟動時間,不會在 15 分鐘時被整個砍掉。健康檢查提早開始,批次停止也會依記憶體分批。
  • 單一 agent OOM 不再拖垮整個 fleet(#2015、#2035):同一個 Claude Code session 連續兩次確定死於 OOM 時,會停在 crashed 並通知你,不再一直重開同一個 session。
  • 建立 agent 不再讓所有 agent 逐一重啟(#2317):改 fleet 層級的設定也一樣。
  • 啟動更快(#2288):startup.concurrency 能真正同時啟動。記憶體壓力下一次一個的保護不變。
  • /login 失敗只結束那一次登入(#2243、#2374):AgEnD 啟動的每個子程序,管線出錯時只會結束那一個子程序,不會讓 fleet 退出,也不會被誤當成成功。
  • 效能:狀態更新快約 4 倍,開多個分頁時快約 7 倍(#1956)。tmux 指令改由小的 helper 程序執行(每次約 26 ms → 0.4 ms)。沒設特效時完全不載入特效程式(#2193)。
  • Windows 一行安裝(#1853):powershell -ExecutionPolicy ByPass -c "irm https://songsid.github.io/AgEnD/install.ps1 | iex"。
    • 安裝過程:自動處理 WSL,重開機後自動接續;在瀏覽器完成設定,登入各 AI 後端;最後會建立桌面捷徑。
    • 壞掉時修復:安裝已經壞掉時,只做修復。
    • 已安裝的使用者:可以用 agend shortcuts 補建捷徑。

後端

  • Codex:
    • 429 重試失敗後自動接續(#2282):Codex 用完 429 重試、放棄這一輪時,AgEnD 會在 30/60/120 秒後請它接著做,最多三次。
    • 額度用完:「Quota exceeded」會正確判為額度用完並暫停。
    • 安裝不完整(#2357):agend doctor 多了「Codex package」一列,安裝缺件時會提醒。
  • Claude Code:2.1.304 的閒置冷啟提示會自動回答,不再卡住(#2268)。
  • kiro-cli 2.33:在 --trust-all-tools 下會自動回答「Trust this workspace?」。
  • Grok:
    • 誤判額度用完(#2324):程式碼或聊天裡提到 quota、rate limit,不再被誤判成額度用完。
    • 背景 watcher(#2334):開著背景 watcher 時,訊息不會再一直排隊。

安全與授權

  • 自己的網域也能「授權此瀏覽器」(#2453):設定 web.verified_authority.named_link(預設關),開啟要經管理者確認。只認你設定的那個網域,quick tunnel 一律不行。
  • 已驗證的網頁按「套用」就算確認(#2170):你的帳號是受影響連線的管理者時,被擋下的設定變更會直接生效。
  • 同一個瀏覽器開兩個 AgEnD 不再互相登出(#2396):每個 fleet 的登入 cookie 有自己的名稱。
  • 內建 Node 更新到 22.23.4(#2405):包含 Node 10 月的安全更新和 OpenSSL 3.5.9。
  • 套件漏洞降到 0(#2408):production 和開發用套件的 npm audit 都是 0。
  • 其他修補:修掉兩個 ReDoS(#2416)。~/.agend 一律建成 0700,之前被建成群組可寫的會自動收緊(#2435)。

變更

  • 指令整理(#2359):
    • 新的別名:agend status 等同 agend ls,agend fleet status 等同 agend ls --resources。
    • 已移除:agend schedule trigger、agend fleet logs(改用 agend logs)、聊天的 /install-cli(改用 /login)、agend install --activate。輸入這些會看到改用哪個指令的提示。
    • 已淘汰:/dashboard 仍可用,但請改用 /web。agend fleet restart [--reload] 會改執行 agend restart,2.4 會移除。
  • 多語系(#2390):
    • 介面:設定變更的確認卡片和按鈕、網頁上伺服器回的訊息、/login 的網頁終端機頁面都有中文了。
    • CLI 語言:CLI 訊息跟著 fleet 的語言。
  • 回報問題:可以產生已去除機密的回報檔,並附預填的 GitHub 連結(#2258)。
  • 小修正:
    • 設定檔:fleet.yaml 用 YAML anchor/alias 共用設定時,設定頁只會改到你編輯的那個連線(#2208)。連線沒寫 mode 時,確認範圍不會擴大到每個連線(#2211)。
    • 斷網:斷網時重啟或升級,「Fleet 就緒」會在恢復連線後補送一次(#2213)。
    • 設定頁:六個欄位在套用時被誤拒的問題已修正(#2346)。
    • CLI 顯示:agend ls 和 attach 選單的中文欄位對齊了;get_fleet_status 也會計入 ClassicBot 頻道。
    • 檢視頁:「編輯個人資料」移到身分卡上(#2394)。
    • 選取樣式:選取、滑過、焦點一律是直的左側色條,不再用圓角填色(#2330、#2489)。
  • log 更精簡(#2482):daemon.log 大約少六成;working/idle 切換和取消按鈕的紀錄移到 debug,送給忙碌中 agent 的訊息不再算警告。

已知問題

  • WSL 上偶爾 /login 後主程式卡住、被 watchdog 重啟(#1880):根因還在調查。
  • Codex 的 silent schedule 偶爾顯示「無法確認送達」(#2301):其實已經送達,也不會重送。
  • 以 root 執行的 WSL 類主機,從 2.2.x 升級要多一步(#2369):見上方「從 2.2.x 升級」。

完整變更