同步模型调用在 get_next_action 中阻塞了事件循环

作者: Nievesjyl创建于 2026年8月20日更新于 2026年8月20日

描述 get_next_action() 是异步的,但其 GPT-4 分支直接调用了同步的 call_gpt_4o() 函数。 如果模型请求需要花费时间才能完成,则同步调用会占用事件循环线程,阻止其他已安排的异步工作继续执行。 我使用了一个控制的本地替换来重现此行为,该替换函数在 0.25 秒后阻塞。没有与模型 API 或网络端点进行联系。 观察到的行为: 选择的模型: GPT-4 模拟同步模型调用延迟: 0.25 秒 get_next_action() 所用时间: 大约 0.252 秒 事件循环定时器延迟: 大约 0.232 秒 未与外部网络进行联系 这意味着同步模型请求中的延迟可以直接阻塞在同一个事件循环上运行的无关协程和定时器。受影响的版本 已经确认的版本: self-operating-computer==1.5.8 operate/models/apis.py:34-39 get_next_action() PoC 运行时: Python 3.10.12 其他版本尚未进行测试。 重现 附件中的 PoC 加载了发布的 get_next_action() 实现,并执行其 GPT-4 分支。 call_gpt_4o() 被替换为一个本地同步函数,该函数在返回固定结果之前睡眠 0.25 秒。与此同时,一个事件循环定时器被安排在 0.02 秒后触发。 观察到的结果: 阻塞模型调用延迟: 0.25 秒 异步函数所用时间: 大约 0.252 秒 事件循环定时器延迟: 大约 0.232 秒 同步模型调用事件循环阻塞重现: 是的 在重现过程中没有进行实际的模型请求或外部网络请求。 附件 run.py

内容来源: OthersideAI/self-operating-computer