{"release":{"tag":{"name":"v0.21.2","path":"/forgemaster/forge-shell/tags/v0.21.2","tree_path":"/forgemaster/forge-shell/tree/v0.21.2","message":"v0.21.2","commit":{"id":"5dc24c8c38e0da6ec1e165f0e07a918bda68c625","short_id":"5dc24c8","title":"v0.21.2: L3 强制超时 — tokio::time::timeout 包住整个 API 调用","title_markdown":"v0.21.2: L3 强制超时 — tokio::time::timeout 包住整个 API 调用","description":"\n## 根因\n- reqwest::Client::timeout() 对 SSE 流式请求不生效\n- 流一旦建立，read 操作无超时限制\n- 导致 1560 秒无限等待\n\n## L3 修复\n- tokio::time::timeout 包住整个 chat_stream+.await+流读取\n- thinking 模式 300s，普通 120s\n- 超时后自动中断，返回错误\n\nCo-Authored-By: Claude Opus 4.7 \u003Cnoreply@anthropic.com\u003E","description_markdown":"## 根因\n- reqwest::Client::timeout() 对 SSE 流式请求不生效\n- 流一旦建立，read 操作无超时限制\n- 导致 1560 秒无限等待\n## L3 修复\n- tokio::time::timeout 包住整个 chat_stream+.await+流读取\n- thinking 模式 300s，普通 120s\n- 超时后自动中断，返回错误\nCo-Authored-By: Claude Opus 4.7 \u003Ca href=\"mailto:noreply@anthropic.com\"\u003Enoreply@anthropic.com\u003C/a\u003E","message":"v0.21.2: L3 强制超时 — tokio::time::timeout 包住整个 API 调用\n\n## 根因\n- reqwest::Client::timeout() 对 SSE 流式请求不生效\n- 流一旦建立，read 操作无超时限制\n- 导致 1560 秒无限等待\n\n## L3 修复\n- tokio::time::timeout 包住整个 chat_stream+.await+流读取\n- thinking 模式 300s，普通 120s\n- 超时后自动中断，返回错误\n\nCo-Authored-By: Claude Opus 4.7 \u003Cnoreply@anthropic.com\u003E\n","message_markdown":"v0.21.2: L3 强制超时 — tokio::time::timeout 包住整个 API 调用\n## 根因\n- reqwest::Client::timeout() 对 SSE 流式请求不生效\n- 流一旦建立，read 操作无超时限制\n- 导致 1560 秒无限等待\n## L3 修复\n- tokio::time::timeout 包住整个 chat_stream+.await+流读取\n- thinking 模式 300s，普通 120s\n- 超时后自动中断，返回错误\nCo-Authored-By: Claude Opus 4.7 \u003Ca href=\"mailto:noreply@anthropic.com\"\u003Enoreply@anthropic.com\u003C/a\u003E","detail_path":"/forgemaster/forge-shell/commit/5dc24c8c38e0da6ec1e165f0e07a918bda68c625","commits_path":"/forgemaster/forge-shell/commits/5dc24c8c38e0da6ec1e165f0e07a918bda68c625","tree_path":"/forgemaster/forge-shell/tree/5dc24c8c38e0da6ec1e165f0e07a918bda68c625","author":{"name":"ForgeShell","email":"forgeshell@example.com","username":null,"user_path":null,"enterprise_user_path":null,"image_path":"no_portrait.png#ForgeShell-","is_gitee_user":false,"is_enterprise_user":null,"widget_url":null},"committer":{"name":"ForgeShell","email":"forgeshell@example.com","username":null,"user_path":null,"enterprise_user_path":null,"image_path":"no_portrait.png#ForgeShell-","is_gitee_user":false,"is_enterprise_user":null,"widget_url":null},"authored_date":"2026-05-23T14:11:50+08:00","committed_date":"2026-05-23T14:11:50+08:00","signature":null,"build_state":null},"archive_path":"/forgemaster/forge-shell/repository/archive/v0.21.2","signature":null},"operating":{"edit":false,"download":true,"destroy":false,"enterprise_forbid_zip":false},"release":{"title":"v0.21.2","path":"/forgemaster/forge-shell/releases/tag/v0.21.2","tag_path":"/forgemaster/forge-shell/tree/v0.21.2","project_id":47840842,"created_at":"2026-05-23T14:14:07+08:00","is_prerelease":false,"description":"v0.21.2","author":{"name":"熊师果","username":"forgemaster","path":"/forgemaster","avatar_url":"no_portrait.png#熊师果-forgemaster"},"attach_files":[{"download_url":"/forgemaster/forge-shell/attach_files/2762157/download/forge-shell.exe","name":"forge-shell.exe","cli_download_url":"https://gitee.com/forgemaster/forge-shell/releases/download/v0.21.2/forge-shell.exe","censor_failed":false,"censor_tip":null}],"zip_download_url":"/forgemaster/forge-shell/releases/tag/v0.21.2.zip","tar_download_url":"/forgemaster/forge-shell/releases/tag/v0.21.2.tar.gz"}}}