jkooe
aa72241080
fix: 真机全量测试修 5 个 bug(剪贴板假失败 / 音频后端误标 / CLI info 打印 / key press 崩溃 / Unicode 代理对)
在 192.168.1.100 真机逐项跑通 42 项能力,暴露并修复 5 个真 bug:
1. clip.set 假失败(间歇 ~20%)
Set-Clipboard 抛「所请求的剪贴板操作失败」时 exit_code 仍为 0(只写 stderr),
且内容其实已写入 —— 造成「成功却报错」。改为重试 3 次 + 退避 + 读回校验,
不再凭 exit_code 下结论。验证:修前 2/5 失败 → 修后 0/8 失败。
2. Windows 音频 backend 误标 'CoreAudio'
CoreAudio 是 macOS 的后端名;Windows 实际走 C# NAudio(CoreAudioAPI)。
抽常量并修正 manifest 描述,避免排查时误判平台。
3. CLI info 把嵌套对象打成 [object Object]
ps_helper / build 是嵌套对象,String(v) 丢失全部内容。新增 renderInfoValue():
null→—、空串→—(未设置)、对象→key=value 紧凑摘要(180 字截断)。
4. nodeagent key press 必崩(100% 复现)
字段契约不一致:被控端返回 {pressed,chords,times}(无 keys),
CLI 读 r.keys.join() 抛 TypeError。双端对齐 —— agent 补回 keys 字段,
CLI 改为 keys ?? chords 展开 ?? 参数回显。
5. Unicode 注入拆坏代理对(emoji / 生僻字)
UnicodeChar(char) 逐字符注入,BMP 外字符被拆成两个孤立代理项,
目标应用收到非法序列渲染 U+FFFD。新增 C# UnicodeString() 按 UTF-16 码元注入。
注:KEYEVENTF_UNICODE 扫描码位仅 16 位,代理对必须各自单独发(API 固有限制)。
验证:单测 147 全绿;真机验收 15 通过 / 0 失败 / 1 跳过;双端已部署上线。
另确认中文偶发错字为 IME 上屏竞争,非注入逻辑问题(30 次对照实验全对)。