-
Notifications
You must be signed in to change notification settings - Fork 15
Closed
Labels
Description
問題
每次 /new 都會建立一個新的 kiro-cli-chat acp 進程,且從未被終止。長時間下來會持續累積,造成記憶體洩漏。
pahud 31421 18:27 kiro-cli-chat acp ← 從未被 kill
pahud 31569 18:28 kiro-cli-chat acp ← 從未被 kill
pahud 76044 21:06 kiro-cli-chat acp ← 從未被 kill
根本原因(已完整調查)
sessions close 的 kill 流程
closeSession2("klaw-tg")
│
├─ terminateQueueOwnerForSession
│ └─ kill queue owner pid(已死)→ skip
│
└─ record.pid = 122307 ← kiro-cli 的真實 pid ✅
│
├─ isProcessAlive(122307) → true ✅
│
└─ isLikelyMatchingProcess(122307, "kiro-cli acp")
│
├─ 讀 /proc/122307/cmdline
│ → "/home/pahud/.local/bin/kiro-cli-chat acp"
│
├─ expectedBase = basename("kiro-cli") = "kiro-cli"
├─ executableBase = basename("kiro-cli-chat") = "kiro-cli-chat"
│
└─ "kiro-cli-chat" === "kiro-cli" → false ❌
terminateProcess 被跳過,kiro-cli 永遠不被 kill 💀
真正的根本原因
acpx agent registry 的 kiro 指令是 "kiro-cli acp",但實際執行檔是 kiro-cli-chat(kiro-cli 的內部 binary)。isLikelyMatchingProcess 做 basename 比對時:
- 期望:
kiro-cli - 實際:
kiro-cli-chat
比對失敗 → kill 被跳過。
修法
一行修正:acpx agent registry 改為使用實際執行檔名:
// src/agent-registry.ts
kiro: "kiro-cli-chat acp", // 原本是 "kiro-cli acp"這樣 isLikelyMatchingProcess 的 basename 比對就會通過,sessions close 即可正確 kill kiro-cli。
需在 openclaw/acpx PR #40 補上此修正,或另開 PR。
目前狀態
relay.sh已加入/new處理(close + new)✅SOUL.md已簡化為單一規則 ✅sessions closekill 失敗,因 basename 不符⚠️ - 進程洩漏問題尚未解決
⚠️
完成條件
- acpx registry 改為
kiro-cli-chat acp sessions close能正確 kill kiro-cli 進程/new不再累積殭屍進程
Reactions are currently unavailable