Skip to main content

后台空闲时每半秒查询一次麦克风,导致系统服务持续空转

环境:

  • 闪电说 v0.8.0

  • Mackbook Pro M5, macOS 26.6.2(Apple Silicon)

  • 设置:快捷键 Alt+Space 短按录音,音频设备选「跟随系统」,未开启任何持续监听功能

问题描述: 闪电说在后台空闲、没有录音时,仍然大约每 0.5 秒触发一次麦克风访问。每次访问都会让 macOS 的音频统计服务 audioanalyticsd 新建一个统计会话,并请求 rtcreportingd 判断是否上报。由于我关闭了「共享 Mac 分析数据」,rtcreportingd 每次都会拒绝,然后很快又开始下一轮,形成持续的空转循环。

复现方法:

  1. 启动闪电说,让它在后台待机,不按快捷键

  2. 在终端运行: log stream --predicate 'process == "coreaudiod" AND eventMessage CONTAINS "kTCCServiceMicrophone"'

  3. 可以看到 coreaudiod 每秒约 2 次为闪电说的进程发起麦克风权限检查(kTCCServiceMicrophone)

  4. 同时运行 sudo fs_usage -w -f filesys rtcreportingd,可以看到 rtcreportingd 每 2 秒左右重复读取 /Library/Application Support/CrashReporter/DiagnosticMessagesHistory.plist

实测数据:

  • 10 秒内为闪电说的进程做了 20 次麦克风权限检查

  • rtcreportingd 同期跑了 17 轮检查

  • 退出闪电说后,上述循环立即停止;重新打开后马上恢复。重启 rtcreportingd 或重启电脑都无效

影响:

  • 系统服务长期空转,增加耗电和后台 CPU 占用

  • 系统的诊断和统计服务一直处于活跃状态,活动监视器里相关进程的读写计数持续增长

期望行为: 空闲待机时不要轮询麦克风,只在用户按下快捷键开始录音时才打开音频输入。如果需要监听设备变化,建议改用 CoreAudio 的设备变更通知,不要定时轮询。

另外的小建议: 历史录音(workspace/history/recordings)会一直累积。希望能增加「不保存录音」或「自动清理 N 天前的录音」的选项。

Log in to comment and vote

No comments yet

Be the first to share your thoughts.