Skip to content

kiro-cli acp process leak on /new #201

@thepagent

Description

@thepagent

問題

每次 /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 close kill 失敗,因 basename 不符 ⚠️
  • 進程洩漏問題尚未解決 ⚠️

完成條件

  • acpx registry 改為 kiro-cli-chat acp
  • sessions close 能正確 kill kiro-cli 進程
  • /new 不再累積殭屍進程

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpriority: mediumMedium priority

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions