你好,我刚刚用MTC尝试分析解决了一下,他搜索到网上有一篇掘金的文章提到过此类问题,我让他总结了一下你的问题尝试给出解决方案,内容如下:
掘金原文: Trae IDE 本地调用 Gemma4:E4B 大模型全场景开发完美配置教程# Trae IDE 本地Gemma 4B - 掘金
一、问题描述
用户使用 最新版 Trae-CN,调用本地部署的 Ollama + Gemma4:E4B 模型时,Trae 客户端返回 4054 错误代码。
已确认正常的部分
-
Ollama 服务端正常:通过 ollama ps可以看到模型正在运行 -
本地模型本身没问题:用户自己构建 Agent 可以正常调用 Ollama + Gemma4:E4b -
Ollama 的 OpenAI 兼容接口正常:用户确认了 Ollama 提供了 OpenAI 兼容的 API 说明 -
Base URL 配置正确:经确认,用户填写的 Base URL 地址无误
二、根因分析
最可能的原因:Ollama 默认 num_ctx 太小导致上下文溢出
根据多篇 Trae + Ollama + Gemma4 的配置教程,存在一个被广泛忽视的天坑:
Ollama 原生默认的
num_ctx仅为 2048 tokens,而 Trae 的 Builder 模式光系统提示词就会占用 1000~2000 token,剩下的空间跑 2 轮就满了。
用户使用的是原始的 gemma4:e4b 模型(没有经过 Modelfile 固化参数),这意味着:
-
默认
num_ctx = 2048 -
Trae 发送请求时,系统提示词 + 用户消息可能直接接近或超过这个上限
-
模型无法正常处理请求,返回异常,Trae 客户端将其解读为 4054 错误
这完美解释了以下现象:
| 现象 | 解释 |
|---|---|
Ollama 服务端正常(ollama ps 显示模型在运行) |
模型确实已启动,但请求处理失败 |
| 自己构建 Agent 能正常调用 | Agent 模式的提示词更短,没有超过 2048 上限 |
| Trae 的 Builder/Chat 模式报 4054 | Trae 内置的系统提示词过长,直接撑爆了默认上下文窗口 |
其他可能原因(按概率排序)
| 优先级 | 原因 | 说明 |
|---|---|---|
默认 num_ctx 太小 |
Ollama 默认 2048,Trae 系统提示词就快占满了,请求直接溢出 | |
| 服务商选择错误 | 选了 OpenAI 而非 Ollama。选 OpenAI 协议时 URL 需加 /v1,且 Ollama 的 OpenAI 兼容接口和原生接口行为有差异 |
|
| 模型 ID 填写问题 | 填的是 Gemma4:e4b,但 Ollama 中模型名可能是 gemma2:4b 或其他,大小写敏感 |
|
| Trae 版本兼容性 Bug | 同帖另一位用户反馈"昨天能用今天不能用",可能是 Trae 更新引入的回归问题 | |
| 网络/代理拦截 | 4054 也可能代表网络层错误,Trae 可能无法正常连接 localhost |
三、解决方案
第一步(最关键):创建固化参数的自定义模型
创建一个 Modelfile 文件:
FROM gemma2:4b
# 核心防断流/防截断参数
PARAMETER num_ctx 8192
PARAMETER num_predict 2048
# 代码开发专属稳定参数
PARAMETER temperature 0.25
PARAMETER top_k 25
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.1
然后执行:
ollama create gemma:4b-trae -f ./Modelfile
在 Trae 中使用 gemma:4b-trae 这个固化后的模型名。
硬件参考:8G 显存最大安全
num_ctx为 8192,16G+ 显存可设为 16384(需 RoPE 缩放)。
第二步:确认服务商选择
| 方案 | 服务商 | Base URL | 说明 |
|---|---|---|---|
| 方案一(推荐) | Ollama |
http://localhost:11434 |
不加 /v1 后缀 |
| 方案二(兜底) | OpenAI |
http://localhost:11434/v1 |
必须加 /v1 后缀 |
第三步:确认模型 ID
运行 ollama list 确认实际模型名称,确保 Trae 中填写的模型 ID 与 ollama list 显示的完全一致(大小写敏感)。
四、补充说明
4054 错误码的含义
帖子作者 JasonShane 在论坛中查询后表示,4054 错误码大多数源自网络问题。但结合上下文分析,在本场景中更可能是请求参数溢出导致模型无法正常响应,Trae 将其归类为网络/连接类错误。
同帖其他用户反馈
-
用户38490:昨天还能用的本地模型,今天相同配置就不行了,唯一变化是 Trae 更新了 → 可能存在 Trae 版本回归 Bug
-
用户16804:按照教程配置后成功,确认是 Base URL 的问题(需加
/v2/chat/completions后缀) -
用户44267:OpenRouter 自定义模型添加成功但对话内容为空 → 可能是模型 ID 或协议兼容问题
五、总结
核心原因大概率是:Ollama 默认 num_ctx=2048 太小,Trae 的系统提示词直接把上下文撑爆了,导致请求失败返回 4054。 用户自己构建 Agent 能用是因为 Agent 模式的提示词更短,没有触发这个限制。解决方案是通过 Modelfile 固化一个 num_ctx=8192 的自定义模型。