你的运行环境(版本号「点击帮助-关于-复制」):
TRAE 版本:0.1.23(TRAE SOLO CN)
操作系统:macOS 26.5.1(Build 25F80,Darwin 25.5.0),Apple Silicon(arm64)
模型接入:自定义模型(Anthropic 格式),上游为 NVIDIA Inference API 的 aws/anthropic/bedrock-claude-opus-4-8
链路:TRAE 自定义模型 → 本机 Anthropic 兼容代理(base_url = http://192.168.64.1:8787/v1/messages )→ 上游
问题描述(你遇到了什么问题?):
在累积了大量截图/图片的长会话里,自定义模型几乎每一轮都报「模型请求失败,请稍后重试。(4054)」/「Custom model internal error… check the proxy response」,即使只发一句“你好”也失败;而新建会话做同样的事完全正常、秒回。该会话最终彻底不可用、无法自救。
逐条核对本地代理日志(代理就跑在本机,可读完整 proxy.log)与 TRAE 自身日志后,定位到 4 个 TRAE 侧可改进的点(根因里上游网关阈值那部分是 NVIDIA/Bedrock 侧、TRAE 改不了,下面只列 TRAE 能改的):
每轮重发全部历史 + 图片,无裁剪 → 图一多,会话永久性变慢变脆。 该会话累积约 156 次 image tool-call / 930 处 image 引用(TRAE 侧 prompt_max_tokens=184000,带 0.9 自动压缩)。即便只输入“你好”,TRAE 仍把整段多模态历史一起发往模型,导致该会话每一轮在网络上都是 18~44 秒的巨型请求(实测 ttfb 7~8s、total 18~44s);新会话同样“你好”约 2 秒。用户无法让该会话任何一轮变轻。
客户端在“慢但合法”的流式响应上误判失败。 代理日志显示这些慢请求大多数其实成功了(本次启动以来 38 次正常 stream done、仅 1 次中断),包括那条“你好”(18s 内完成、收到完整 message_stop),但 TRAE 仍向用户报失败。说明客户端对耗时较长(>~20–30s)的流式响应存在超时/状态误判,即使流已完整返回。
流式中途被截断后,未原子回滚,残缺 turn 固化进历史,导致会话永久损坏且用户无法自救。 TRAE 自身 ai-agent 日志中可见:某次流被中断后出现 task failed: LLMRemoteError { code: 4054 },紧接着 update_content_message_if_need_upsert_finish error-finish … parse task content error: Error(“missing field task_id”)。即一条失败/截断的 turn 没有被干净回滚,留下了缺字段的残缺记录写入会话历史。此后该会话每次新消息(哪怕“你好”)都携带这条坏历史一起发出,被持续判失败,会话再也无法恢复;前端又不提供删除/重置最后一条失败 turn 的能力,用户只能放弃整个会话。建议:流被中断时原子回滚该 turn,且提供“删除/重置最后一条失败消息”的自救入口。
错误文案误导。 4054 / check the proxy response 把原因指向代理,但代理实际已成功返回;UI 完全看不出真实原因(上游 504 网关超时 / 流中途被截断 / 客户端超时 / 历史损坏)。建议把代理/上游返回的真实原因透传到 UI(可折叠在“详情”里),否则用户只能像这样翻日志才能定位。
附加建议:
重试策略区分:首字节超时(可重试)vs. 流已开始返回后中途截断(不应盲目重发整条长流,应提示用户拆分)。
多模态历史增量/缓存,避免每轮重发全部图片。
大图/长产物会话预警:“当前会话体量较大,建议拆分或新建会话”,而不是撞墙后报 4054。
自定义模型允许配置请求/流超时与 keep-alive。
复现步骤(如何才能重现这个 Bug/问题?):
配置一个自定义模型(Anthropic 格式),指向任意本机可用的兼容端点;
在同一个会话里持续进行带大量截图/图片的多轮对话,直到累积上百张图、产物较大;
之后在该会话发送任意消息(哪怕只是“你好”)→ 频繁出现「模型请求失败 (4054)」/「check the proxy response」;
若其间某轮流式响应被中途截断,该会话此后将持续失败、无法恢复;
新建会话发送同样的消息 → 正常秒回。
报错信息或截图(如有):
UI 报错: 模型请求失败,请稍后重试。(4054) Custom model internal error… check the proxy response
本地代理日志节选(证明:大多数请求其实成功,故障在上游/客户端侧): 08:56:14 [fwd] 大请求进来 (stream) 08:56:18 首字 ttfb=3902ms ← 上游正常起流 08:57:29 stream broken: terminated total=75010ms ← 上游流跑 75s 后被对端中断 09:05:09 retry 1/2 (prev: HTTP 504) ← 上游网关首字节 504 超时(HTML 错误页) 09:51:37 [fwd] “你好” 这一轮 09:51:44 首字 ttfb=7203ms 09:51:55 stream done total=18216ms ← 代理成功返回完整响应,但 TRAE 仍报失败 本次启动累计:stream done 38 / stream broken 1 ← 大多数请求其实成功
TRAE 自身日志节选(证明:会话历史被残缺 turn 污染而永久损坏): ERROR … [CloudTaskService] task failed: LLMRemoteError { code: 4054, message: “Custom model internal error occurred. Please check the proxy response for details.” } ERROR … update_content_message_if_need_upsert_finish error-finish … parse task content error: Error(“missing field task_id”, line: 0, column: 0)
注:代理侧 terminated(undici)与 TRAE 6/24 自身日志里的 hyper IncompleteMessage 是同一现象的两端——“响应流被对端异常中断”。复现规律:小请求秒回;累积大量图片的会话里每一轮(含“你好”)都慢且易失败;一旦某轮被截断,该会话即永久不可用。

