最快的修法:文件存在一个临时的 Code Interpreter 沙盒里,沙盒已经被回收,所以链接是死的。不要试图修这个链接。回到原对话(或开个新对话),让 ChatGPT 重新生成文件,几秒内点下载,并确认能正常打开。这能解决绝大多数情况。
ChatGPT “生成的文件”运行在临时的 Code Interpreter / Advanced Data Analysis Python 沙盒里。这个沙盒按对话创建,闲置一小段时间后就被回收——截至 2026 年 6 月,社区反馈和 OpenAI 的会话机制都指向大约 30 分钟无操作就回收,有时短到 15 分钟,很少超过一小时;任务越大、跑得越久,回收得越早。沙盒被回收后,文件就没了,尽管链接看上去仍像一个永久 URL。这时点它,你会得到 404、0 字节文件、一直转圈,或下面这些报错之一:
The code interpreter tool session has expired.file not foundThis file is no longer available.
一旦理解链接指向的是一个临时沙盒,多数下载失败就好诊断了。
你属于哪一类?
| 现象 | 最可能的原因 | 跳到 |
|---|---|---|
| 几秒前还能下,几分钟后就不行 | 沙盒 TTL 过期 | 步骤 1、步骤 2 |
| 刷新页面后立刻失败 | 刷新触发沙盒重建 | 步骤 2 |
有链接但回复里没有 python / “Analyzed” 块 | 文件根本没生成(伪造链接) | 步骤 4 |
| 之前回复说过”我现在无法运行 analysis” | 计划配额耗尽 | 步骤 3、FAQ |
| 一个浏览器失败,换一个就行 | 浏览器 / 扩展拦截 | 步骤 5 |
| 进度到 100% 后文件不见 / 0 字节 | 浏览器拦了该 MIME 类型 | 步骤 5 |
| iOS/macOS app 里失败、Safari/Chrome 里能下 | 客户端路由差异 | 步骤 7 |
常见原因(按命中率从高到低)
1. 沙盒 session 过期,链接失效
最常见。文件生成后你等了一会儿才点下载——沙盒已被回收。链接 404,或显示 file not found / The code interpreter tool session has expired.
如何判断:文件链接刚出现约 5 秒内点击 = 成功;过 15-30 分钟再点 = 失败。这个时间差就是 TTL 过期。
2. 生成后刷新了页面,沙盒被清
刷新(或长时间闲置后被迫重连)会触发沙盒重建。旧沙盒里生成的文件不会带到新沙盒,旧链接全废。
如何判断:生成后点过一次下载有效,你刷新了页面,再点同一链接就失败——沙盒在你不知情时被重建了。
3. 文件实际从未生成(伪造链接)
模型可以在完全没调用 Python 工具的情况下,给出一个看着正常的下载链接。因为根本没往磁盘写东西,第一次点就 404。
如何判断:回复里没有灰底 python 代码块、也没有 “Analyzed” / “Working” 提示,说明 Code Interpreter 没真跑。让它”真正运行 analysis tool 并生成文件”再对比。
4. 计划级生成 / 下载配额耗尽
Free 用户的 Code Interpreter 用量限制很紧,而且是滚动窗口重置、不是固定时间点重置。配额用完时,模型仍可能口头说”我已经创建好文件了”,但实际运行悄悄失败,于是下载是空的。
如何判断:之前同会话能下、现在不行,而且模型最近回复过类似”我现在无法运行 analysis”。各档位的具体情况见 FAQ。
5. 浏览器安全策略 / 扩展拦截
Brave 的激进 Shields、广告拦截器、企业代理都可能拦下载(尤其是 CDN 域名 files.oaiusercontent.com,它不是 openai.com)。某些大二进制文件或罕见 MIME 类型会被静默丢弃,并弹出 “file may be dangerous”。
如何判断:在无痕窗口里或关掉广告拦截后能下 = 浏览器问题;换任何浏览器都失败 = 沙盒问题。
6. 文件过大或类型被浏览器阻止
大压缩包和不常见的类型有时”下载”完成了却始终没落地。
如何判断:进度条到 100% 但下载文件夹里没有 / 是 0 字节。打开 chrome://downloads(或浏览器的下载历史),找 Failed - Blocked / Blocked: dangerous。
7. App vs Web 路由不一致
iOS 和 macOS app 有时直接把文件存到 Files / Downloads,而不走浏览器,当底层沙盒已过期时,它会报一个笼统的”无法下载”。同一链接粘到 Safari 或 Chrome 里表现可能不同。
如何判断:app 下载失败,把链接复制到 Safari 或 Chrome 后结果变了——这是客户端路由差异,不是文件本身的问题。
动手前先确认
- 区分这是普通对话、Project,还是 Custom GPT。Code Interpreter 在三者里的行为和限额不同。
- 复现前把含下载链接的那条消息截图或复制下来——一旦重新生成,旧链接就没了。
- 确认你的账号档位(Free / Go / Plus / Business / Enterprise)。截至 2026 年 6 月,Go 为 $8/月、Plus 为 $20/月;更高档位会提高 Code Interpreter 的上限。
需要收集的信息
- 生成的文件类型和大概大小(KB / MB)。
- 生成到点击下载失败之间过了多久。
- 浏览器和操作系统,以及是否启用了广告拦截 / 隐私扩展。
- 完整的失败现象:404、0 字节文件、一直转圈,或上面那几个报错字符串之一。
- 当前 picker 里的模型(
GPT-5.5 Instant/Thinking/Pro)和订阅级别。
最短修复路径
按收益从高到低。前 2 步能解决绝大多数情况。
步骤 1:文件一出现立刻下载
最重要的习惯。看到链接或 “Download” 按钮时:
- 立刻点——不要先去看内容。
- 留在同一对话内,不要刷新、不要切对话。
- 保存到本地,确认文件能打开,再继续提问。
如果确实需要先预览内容,让模型同时 inline 输出,这样你不用赌:
Generate the file and also paste the first 30 lines inline so I can
sanity-check before downloading.
步骤 2:失败了就让它重新生成
不要试图修一个死链接——拿一个新的。沙盒链接本身不可寻址,重新加载它不可能成功,只有重跑才行。
That download link returned a 404 / "code interpreter session has expired".
Please re-run the analysis tool and regenerate the file as a new download
in this conversation.
如果你需要两次结果逐字节一致,就在 prompt 里把随机性和顺序写死(比如 random_state=0、明确的列顺序、固定排序),这样重生成的文件才会完全相同。
步骤 3:大文件或文本类内容改成 inline 输出
对 CSV / JSON / Markdown / 代码,干脆不下载,让它直接打印到对话里,彻底绕开沙盒 TTL:
Don't write to a file. Output the full content as a single fenced
code block. I'll copy it manually.
对几万行以内的数据够用;再大就还是用文件,配合步骤 1 的”立刻下载”习惯。
步骤 4:验证 Code Interpreter 真的跑了
这一步专门干掉”伪造链接”那种失败:
Use the analysis tool. Generate the file. After generating, print:
1. The full path of the generated file
2. The output of os.path.getsize(path)
3. The first 10 lines of the file
三项都打印出来 = 真跑了。只有链接、没有这些信息 = 模型可能在编——重发一次,要求”真正执行工具”。
步骤 5:换浏览器 / 关扩展
如果 Chrome 失败:
- 换 Brave、Firefox 或 Safari 试。
- 关掉广告拦截和隐私扩展(或给
chatgpt.com降低 Brave Shields)。 - 用无痕 / 隐私窗口(多数扩展默认关闭)。
- 在
chrome://downloads里查Failed - Blocked。
如果换了所有浏览器都还失败,就当作沙盒过期处理,回到步骤 2。
步骤 6:用 curl 兜底拉文件
如果文件还在沙盒里、只是浏览器一直拦,就复制真正的 CDN URL(它以 https://files.oaiusercontent.com/ 开头,而不是对话里那个 sandbox:/mnt/data/... 引用——后者不是公开 URL),自己拉下来:
# 在 chatgpt.com 的 DevTools -> Application -> Cookies 里拿到 session cookie
curl -L "https://files.oaiusercontent.com/..." \
-H "Cookie: __Secure-next-auth.session-token=YOUR_COOKIE" \
-o output.csv
这能绕开扩展和路由问题。但绕不开沙盒过期——如果沙盒已经没了,先回步骤 2 重新生成。
怎么确认已经修好
- 开一个新对话,重新生成同一任务的文件,下载并打开——内容正确说明是真修好了,不是侥幸重试成功。
- 让 ChatGPT 把生成代码贴出来,你本地跑一遍,能复现相同输出,就确认这不是沙盒的临时抽风。
- 让同事在他们账号里跑同一 prompt 并下载——他们那边也成功,说明问题不只是你这个会话特有的。
如果还是没修好
- 把任务缩到一个 10 行的 hello-world 文件,看它能不能下。如果连这个都失败,问题在沙盒或账号,而不在你的数据。
- 换几种文件类型试(CSV、TXT、PDF),排除是不是某种类型的渲染或下载路径有问题。
- 换模型 + 换设备:
GPT-5.5 ThinkingvsInstant、Web vs App、Chrome vs Safari。 - 准备好 prompt、生成截图、确切报错字符串和你的订阅级别,去 help.openai.com 提工单。
常见问题
为什么 ChatGPT 下载链接这么快就过期?
文件只存在于按对话创建的 Python 沙盒里,沙盒闲置一小段时间就被回收——截至 2026 年 6 月,约 30 分钟是典型值,有时短到 15 分钟,很少超过一小时,任务越重越早。链接看着永久,其实指向已经不存在的存储。
链接 404 之后还能找回文件吗?
不能。沙盒一旦回收就无可修复,只能重新生成(步骤 2)。如果原来那次运行是非确定性的,就把 random_state 和排序写死,让新文件和旧文件一致。
升级到 Plus 或 Pro 能解决吗?
更高档位会提高 Code Interpreter 的用量上限、减少配额相关的失败,但所有档位用的是同一个临时沙盒,TTL 照样存在。真正的解法是”文件一出现就立刻下载”,不是换计划。(截至 2026 年 6 月:Free、Go $8、Plus $20、Pro $100 或 $200。)
Free 计划能用 Code Interpreter 吗?
能,但有很紧的滚动限额。Free 账号跑的是一个更小的默认模型,而不是 GPT-5.5,而且分析配额用完时,模型可能仍声称生成了文件、实际运行却悄悄失败(原因 #4)。如果文件是在会话中途突然下不了了,多半是撞到配额了。
链接是 sandbox:/mnt/data/file.csv,为什么下不了?
sandbox:/mnt/data/... 这种形式是内部引用、不是公开 URL,只能在 ChatGPT 界面内部解析。改点真正的下载按钮,或让模型”给我可下载的文件”,它会生成一个真正的 files.oaiusercontent.com 链接。
怎么避免再次发生?
文件一出现就立刻下载,别”等再发几条消息”。文本类内容优先 inline(步骤 3)。生成文件时让它同时给出生成代码,万一链接失效你也能本地重跑。关闭对话前一定先打开下载的文件确认能用,别事后几小时才发现是 0 字节。
相关阅读
- ChatGPT 文件上传失败
- ChatGPT 不支持这种文件类型
- ChatGPT 把你的 CSV / Excel 数据看错了
- ChatGPT 项目功能
- ChatGPT 文件分析
- ChatGPT Projects 进阶工作流
标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #下载