[Bug] context 壓縮打斷 tool 訊息鏈,嚴格 provider 回 400(tool 訊息缺少對應 tool_calls)
長 session 觸發 context 壓縮時,可能把帶 tool_calls 的 assistant 訊息壓掉、留下孤兒 tool 訊息,違反 OpenAI Chat Completions 契約。DeepSeek 等嚴格 provider 會回 HTTP 400,寬鬆的 provider 可能默默吞掉。此 issue 已關閉。
官方標記為最高優先級 P1 的 issue,多為尚無解法的已知問題。 資料來自官方 GitHub repo,狀態由官方 label 推導,每筆附原始連結與最後檢查日期。
長 session 觸發 context 壓縮時,可能把帶 tool_calls 的 assistant 訊息壓掉、留下孤兒 tool 訊息,違反 OpenAI Chat Completions 契約。DeepSeek 等嚴格 provider 會回 HTTP 400,寬鬆的 provider 可能默默吞掉。此 issue 已關閉。
_polling_heartbeat_loop 偵測到 CLOSE-WAIT socket 後會觸發 _handle_polling_network_error,但裡面呼叫 app.updater.stop() 沒有設定 timeout。如果底層 TCP 連線卡在 CLOSE-WAIT,polling task 會卡在 epoll 上永遠不會醒來,導致 stop() 永久掛住,後續 reconnect 永遠不會被觸發,訊息會被靜默丟棄長達數小時直到手動重啟。
gateway 的 Telegram adapter 連線時卡在「Connecting to Telegram (attempt 1/8)...」,即使等超過 15 分鐘也不會拋出 TimeoutError,也不會重試。回報者在多種情境下做了診斷測試,發現問題只在特定執行環境(s6-overlay supervision)下才會出現。
trajectory_compressor 在執行 context compaction 後,會產生不合法的訊息序列(孤兒 tool 訊息),造成 DeepSeek API 以 HTTP 400 拒絕請求,錯誤訊息為「tool 角色訊息必須回應前一則帶 tool_calls 的訊息」;長時間運行、累積大量工具呼叫訊息的 session 在多次壓縮後會完全無法繼續對話。此 issue 已關閉。
回報者指出 AsyncSessionDB 把 SessionDB 的每個方法都包成非同步協程,但 slash_commands.py 呼叫這些方法時忘記加上 await,導致執行 /resume 指令時拋出 TypeError: coroutine object is not subscriptable。此 issue 已關閉。
內建的 Anthropic OAuth 登入流程在 token 交換階段失敗並回傳 404,根因是 Anthropic 現在會封鎖所有帶有 claude-cli/ 開頭 User-Agent 的 token 交換請求,不論版本號為何;回報者測試多種 User-Agent 字串驗證了這個結論。此 issue 已關閉。
這個 issue 指出即使先前 PR #47276 的修復曾經成功,在拉取最新程式碼更新後 Desktop build 又再次失敗,因為更新過程會清除 Electron binary 快取,出現「electronDist does not exist」錯誤,顯示 #47266 的修復並未徹底解決問題。此 issue 已關閉。
回報者指出在 Hermes Desktop 中,即使在 Settings 中正確設定了新的 Working Directory 並寫入 config.yaml 的 terminal.cwd,若 renderer 端的 localStorage 已記住舊的 workspace 路徑,新 session 仍會在舊目錄啟動,造成 UI 顯示已設定新路徑但實際行為不一致。
Windows 安裝腳本在裸執行時參數衝突,官方標為 P1,代表這是會擋住安裝且目前沒有官方 workaround 的重大問題。
官方 nousresearch/hermes-agent:latest(v0.15.0)Docker image 啟動時發生三個初始化錯誤並以 exit code 127 結束:找不到 /opt/hermes/docker/stage2-hook.sh 與 main-wrapper.sh(原始碼中存在但未進到建置後的 image 裡),以及呼叫已在 v0.15.0 重構時被移除的 hermes_cli.container_boot 模組。此 issue 已關閉,狀態為已修復。
回報者指出切換到 gpt-5.5(透過 OpenAI Codex provider,以 OAuth 訂閱登入)後,傳送第一則訊息就會立即觸發「Non-retryable error (HTTP None): 'NoneType' object is not iterable」的當機。雖然會自動 fallback,但 Codex provider 本身無法使用,回報者認為問題可能出在回應解析路徑。
回報者指出在 macOS 的 --tui 模式下,即使使用內建 memory(未啟用 byterover),Python gateway 仍會在對話進行到一半時因「stdin EOF (TUI closed the command pipe)」而退出,12 小時內發生三次,回報者判斷此問題與另一個因 byterover 記憶外掛觸發 SIGPIPE 的既有 issue(#14036)不同。
使用者回報官方 Docker image 中 Matrix/Synapse 的 gateway 從某個版本之後開始故障,log 卡在「fixing ownership :1000」不再往下跑,但 bot 仍能發送訊息到 Matrix,只是不會回應頻道內的提示。使用者同時建議原生支援 Matrix 加密功能(可能缺少 mautrix 等套件)。此 issue 已關閉,狀態為已修復。
回報者指出 Telegram bot 因 MiniMax-M2.7 與 kimi-k2.6(皆為 32,768 context)被 Hermes Agent 判定 context window 低於 64K 門檻而全面拒絕,導致 Telegram bot 與 cron job 同時失效。這些模型先前皆可正常運作,使用者並未變更任何設定。
回報者描述其部署架構在 Hermes 之後接了一個自訂的 OpenAI 相容 LLM dispatcher,依規則(如 context 大小、佇列優先權、安全邊界)在本地與雲端 LLM 之間路由請求;回報者指出目前 Matrix room 中使用者輸入的 /model 指令無法把路由決策帶給下游 dispatcher,缺少一個頻內管道能讓 dispatcher 依每則訊息做出正確的模型調度判斷。
使用者持有 Claude Max 20x 訂閱,並使用 ~/.claude/.credentials.json 中有效的 OAuth access token,但透過 Hermes 呼叫原生 Anthropic API(provider: anthropic)時,每個請求都收到 HTTP 400 錯誤,訊息顯示「額外用量已用完,請至 claude.ai/settings/usage 加購」。此 issue 已關閉,狀態為已修復。
回報者在 Docker/Coolify 部署環境下,CLI 使用 openai-codex provider 可正常運作且 hermes status 顯示已登入,但透過 Telegram gateway 使用同一組憑證時卻收到「No Codex credentials stored」的錯誤。此 issue 已關閉。
回報者指出在全新安裝的 Hermes(WSL2 Ubuntu)中,所有 OpenRouter 模型呼叫都回傳 HTTP 400,hermes doctor 也顯示 OpenRouter API 為 HTTP 400,但用同一組 API key 以 curl 測試則能拿到正常回應。
使用者啟動 hermes chat 後,畫面顯示歡迎訊息並提示 tirith 安全掃描器不可用,接著程式直接印出 Goodbye 並拋出例外,追溯訊息顯示是 asyncio selector 在處理檔案描述子時發生 KeyError,接著在 main.py 中引發另一個例外導致程式崩潰。此 issue 已關閉,狀態為已修復。