You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Cloud Shell启动教程提示Tutorial ID not valid报错求助

问题复现表现
  • 启动指定Cloud Shell教程时,多用户间歇性弹出错误提示:Tutorial ID not valid: RESERVED_ID:PACKAGED_TUTORIAL
  • 弹窗出现后教程面板直接消失,手动在终端执行teachme tutorial.md即可重新加载教程
  • 浏览器控制台抓包确认,报错来自Cloud Shell依赖的教程静态资源服务返回404状态,请求路径为/content/RESERVED_ID:PACKAGED_TUTORIAL/RESERVED_ID:PACKAGED_TUTORIAL.md?additional_params=cloudcodedevsessionenable,响应内容与弹窗提示完全一致
  • 切换其他Google账号在无痕窗口打开相同教程入口时,不会触发上述404弹窗,但控制台会循环记录302跳转引发的CORS请求失败日志
根因分析与排查建议

两个问题为独立故障,触发逻辑完全不同:

  1. 间歇性404报错
    RESERVED_ID:PACKAGED_TUTORIAL是Cloud Shell内置教程的固定保留标识,正常加载自定义仓库内的tutorial.md时不会请求该路径。该问题核心触发逻辑是Cloud Shell编辑器在会话重连(闲置唤醒、网络波动重连、页面刷新重连)时,未从会话元数据中读取到启动时传入的cloudshell_tutorial自定义教程参数,自动回退到内置教程的请求路径,而当前环境下对应内置教程资源不存在,就会返回404并弹出错误提示。
    验证方式:
  • 打开教程正常加载的Cloud Shell会话,手动刷新页面,观察刷新后是否复现弹窗报错,若稳定复现即可确认是重连时参数透传丢失导致的问题
  • 在Cloud Shell终端执行echo $CLOUD_SHELL_TUTORIAL查看环境变量值,正常加载自定义教程时该变量应指向仓库内的tutorial.md路径,若变量为空则说明参数未正确写入会话配置
  1. 无痕模式下的循环CORS报错
    该问题与404故障无关,是浏览器隐私设置导致的鉴权失败:
    无痕模式默认阻止第三方Cookie写入,教程资源所在域名作为第三方服务,在302跳转到Google账号鉴权页面时无法携带身份Cookie,跨域场景下鉴权页的响应不符合CORS允许规则,就会被浏览器拦截为CORS失败,之后前端循环重试请求形成重复报错日志。
    验证方式:临时关闭无痕窗口的第三方Cookie拦截,重新打开教程入口,若CORS报错消失即可确认根因。
临时规避与反馈路径
  • 临时规避404问题:在仓库的Cloud Shell初始化脚本中增加会话启动后自动执行teachme tutorial.md的逻辑,无需用户手动输入命令,即可绕过前端参数丢失导致的教程加载失败
  • 向Google Cloud Shell运维团队反馈问题时,提前准备以下信息可提升排查效率:
    • 触发报错时的Cloud Shell会话ID,可在终端执行echo $DEVSHELL_SESSION_ID获取
    • 报错前后浏览器导出的HAR网络日志包
    • 触发账号的类型(个人Google账号/Google Workspace企业账号)、访问时的网络区域
    • 稳定复现问题的操作路径(比如闲置时长、刷新页面是否必现等)

内容的提问来源于stack exchange,提问作者spurin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:39:41