Skip to content

fix(cli): WS 退避握手架空 + send 正文 --help 被吞(#373)#375

Merged
leeguooooo merged 1 commit into
mainfrom
fix/373-robustness
Jul 12, 2026
Merged

fix(cli): WS 退避握手架空 + send 正文 --help 被吞(#373)#375
leeguooooo merged 1 commit into
mainfrom
fix/373-robustness

Conversation

@leeguooooo

Copy link
Copy Markdown
Owner

两条经对抗性验证的健壮性问题(#373),leo-claude 接管(原 assignee leo-codex serve 已死)。

1. WS 重连退避被握手架空 — cli/src/client.ts

attempt = 0(指数退避计数)放在 sock.onopen,TCP/WS 101 握手一完成就清零,不等业务层 welcome。服务端"accept 后立刻 close"时,客户端每次:连上→清零退避→立刻断→无退避重连,退化成 ~1 次/秒无限紧循环锤服务端,长跑 serve/watch 首当其冲。

修复:把清零移到 onmessage 收到首个可解析业务帧时(accept-then-close 永远走不到那里)。幂等。happy-path 由现有 reconnect 测试兜底(welcome 是帧,照常触发清零)。

2. send 正文含 --help 被静默吞掉 — cli/src/args.ts

isHelpArg 对整 argv 匹配 --help/-h,无视 POSIX -- 终止符。party send -- "见 --help 说明" 命中 help→打印帮助→以 0 退出,消息从未发出且无报错,agent 自以为发了实则石沉大海。

修复:help 判定只扫 -- 终止符之前的 token(parseArgs 已把 -- 之后的都归 positionals,正文得以保留)。

验证

  • cli:658 用例全过(含 6 个新增 isHelpArg -- 终止符测试)、tsc 干净

Closes #373
https://claude.ai/code/session_01PgxkZeqJmDge3dYe9W2tPZ

两条经对抗性验证的健壮性问题:

1) WS 重连退避在握手完成即清零(client.ts):attempt=0 放在 sock.onopen,
   TCP/WS 101 握手一完成就清零、不等业务层 welcome。服务端"accept 后立刻
   close"(过载保护/拒绝/半坏实例)会让长跑 serve/watch 退化成 ~1 次/秒无限
   紧循环锤服务端。改到 onmessage 收到首个可解析业务帧才清零(accept-then-
   close 永远走不到),退避恢复生效。

2) --help/-h 在正文里被当 flag 吞掉整条 send(args.ts:isHelpArg):对整
   argv 匹配、无视 `--` 终止符。`party send -- "见 --help 说明"` 会命中
   help、打印帮助、以 0 退出,消息从未发出且无报错,agent 自以为发了。改成
   只扫 `--` 之前的 token(parseArgs 已把 `--` 后的都归 positionals)。

验证:cli 658 用例全过(含 6 个新增 isHelpArg 终止符测试)、tsc 干净。
退避修复happy-path 由现有 reconnect 测试兜底;accept-then-close 计时测试
易 flaky(#43/#48 史),靠代码审查。

Closes #373

Claude-Session: https://claude.ai/code/session_01PgxkZeqJmDge3dYe9W2tPZ
@leeguooooo leeguooooo merged commit 20d263a into main Jul 12, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[健壮性] WS 重连退避握手即清零致 accept-then-close 紧循环 + send 正文含 --help 被静默吞掉

1 participant