流媒体修复卡顿输出 | AI生成和翻译
找到了。问题出在:
“卡住”的根本原因: 在打印“Fetched 20 entries…”之后,代码调用了 call_openrouter_api() —— 这是一个非流式请求,会等待整个 LLM 响应完成后才打印任何内容。由于 30 秒的读取超时和复杂的提示词,模型生成完整响应可能需要 10–30 秒,在此期间你看到零输出。这就是“卡住”的感觉。
我在 ww/degree/degree.py 中做出的修改:
-
流式 LLM 输出 —— 从
call_openrouter_api切换为stream_openrouter_api。现在 token 到达后立即打印到标准输出(flush=True)。你将在 1–2 秒内看到输出开始,而无需等待完整响应。 -
多线程页面抓取 ——
fetch_entries()现在使用ThreadPoolExecutor,最多 5 个工作线程。当--pages > 1时,页面将并行抓取,而不是顺序抓取。
API 密钥测试失败是因为项目 .env 中的 OPENROUTER_API_KEY 为空(该变量通过 ~/.zshrc 中的 export 设置)。uv run 命令在非交互式 shell 中可能不会加载它。不过旧代码也存在同样的问题——如果之前能正常工作,那么密钥在运行时是可用的。