opencode常见问题
1、问题一:上下文限制

这个错误很明确:你的输入提示词(24577 tokens)加上请求的输出长度(8192 tokens),超过了模型的最大上下文长度(32768 tokens),总需求是 32769 tokens,刚好超了 1 个 token。
解决方法
方法一:减少输入长度(推荐)
在对话中缩短你的提问内容,比如:
-
删除不必要的背景信息
-
把长文本拆分成多个小问题分别提问
-
如果粘贴了代码或日志,只保留关键部分
方法二:减少请求的输出长度
在 OpenCode 中调整输出 token 限制:
# 在 OpenCode 对话中,用 /set 命令调整 /set max_tokens 4096
或者修改配置文件 ~/.config/opencode/opencode.json:
{ "$schema": "https://opencode.ai/config.json", "provider": { "internal": { "npm": "@ai-sdk/openai-compatible", "name": "vLLM GLM-5", "options": { "baseURL": "http://172.16.49.62:8002/v1", "apiKey": "dummy" }, "models": { "glm-5": { "name": "GLM-5 via vLLM", "limit": { "context": 32768, "output": 4096 } } } } }, "model": "internal/glm-5" }
输出 Token 变小,最直接的影响就是模型回答的篇幅会变短。你可以把它理解成限制了模型回答的“字数上限”,就像考试时规定了作文的字数,需要在有限的篇幅内把话说清楚。
核心建议
-
先调小再调大:在解决稳定性问题前,先将
output设为2048。如果模型能正常响应,再逐步增加。 -
注意请求总 Token:请求总 Token = 输入 Token + 输出 Token,必须小于模型的
context限制(这里是 32768)。你的错误正好超出 1 个 Token,所以稍微调小输出或精简输入即可解决。
不同输出长度对应的文本量参考
| 输出 Token 数 | 约等于中文汉字 | 约等于英文单词 | 适用场景 |
|---|---|---|---|
| 512 | ~250 字 | ~380 词 | 简短问答、分类 |
| 1024 | ~500 字 | ~760 词 | 常规对话、摘要 |
| 2048 | ~1000 字 | ~1500 词 | 详细解释、翻译 |
| 4096 | ~2000 字 | ~3000 词 | 长文写作、代码生成 |
| 8192 | ~4000 字 | ~6000 词 | 长文档分析、复杂推理 |
方法三:使用 /clear 清空历史上下文
在 OpenCode 对话中,输入 /clear 清除之前的对话历史,然后重新提问。
方法四:使用支持更长上下文的模型
如果经常需要处理长文本,可以考虑使用支持 128K 或 256K 上下文的模型,比如:
-
DeepSeek-V3
-
Qwen2.5-72B(支持 128K)
-
GLM-4-Plus(支持 128K)

浙公网安备 33010602011771号