-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
概要
Agent SDKのsession resume機能を使用する際、時々プロセスが100% CPUでハングする問題が発生している。根本原因は特定できていないが、暫定対策を実装済み。
症状
- 2回目以降のメッセージ送信時(
--sessionでresume)にハング - agent-wrapperプロセスが100% CPUで応答なし
for await (const message of stream)ループに入るが、最初のメッセージが来ない
調査結果
Agent SDK自体は正常動作
isolated testでは問題なし:
- 基本的なresume ✅
- canUseTool付きresume ✅
- 全オプション付き3連続resume ✅
- 存在しないsession IDでresume → エラーで終了(ハングしない)✅
vibing.nvim環境との差異
- プロセス起動方式:
vim.system()vs 直接node実行 - stdout/stderr処理: Luaコールバック vs 直接コンソール
- プラグイン読み込み: 複数プラグインがロードされる
- 環境変数/cwd: 差異がある可能性
session jsonlファイル
- 場所:
~/.claude/projects/<project-path>/<uuid>.jsonl - vibing.nvimは直接操作していない
- Agent SDKが完全に管理
- ファイル破損/不整合の可能性は排除できない
実装済み対策
1. 前のリクエストのキャンセル (buffer.lua)
function ChatBuffer:send_message()
if self._current_handle_id then
adapter:cancel(self._current_handle_id)
self._current_handle_id = nil
end
-- ...
end2. タイムアウト機構 (stream-processor.ts)
// 30秒でタイムアウト → session_corrupted として処理
const stream = withInitialTimeout(resultStream, INITIAL_MESSAGE_TIMEOUT_MS);今後の調査ポイント
- タイムアウト発生頻度のモニタリング
- session jsonlファイルの整合性確認
- vim.system()特有の問題がないか調査
- Agent SDK側のissue/discussionを継続監視
関連
- mote統合を実装したあたりから発生し始めた(直接的な因果関係は不明)
- Agent SDK V2 APIはresumeは動くが、canUseToolが未サポートのため使用不可
ベンチマーク参考
| 項目 | 値 |
|---|---|
| Node.js起動 | ~21ms |
| Agent SDK読込 | ~31ms |
| API初回応答 | ~750ms |
| プロセスメモリ | ~70MB |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels