目标:独立解决 OpenCode 使用中的常见问题,建立系统化排查能力
故障排查决策树
常见问题速查表
安装问题
| 症状 | 原因 | 解决 |
|---|---|---|
command not found | PATH 未包含 | export PATH="$HOME/.local/bin:$PATH" |
permission denied | 权限不足 | chmod +x 或用包管理器安装 |
EACCES | npm 权限 | 改用 nvm 或 npm --prefix |
| 安装卡住 | 网络问题 | 换镜像源或使用代理 |
连接问题
| 症状 | 原因 | 解决 |
|---|---|---|
API key invalid | 密钥错误/过期 | 重新 /connect 配置 |
Model not available | 模型名错误/地区限制 | 检查名称,切换模型 |
Rate limited | 请求过快 | 降低频率,检查配额 |
Timeout | 网络慢/模型慢 | 换网络,换轻量模型 |
终端问题
| 症状 | 原因 | 解决 |
|---|---|---|
| 乱码 | 字体不支持 Unicode | 换字体(JetBrains Mono) |
| 颜色异常 | TERM 变量不对 | export TERM=xterm-256color |
| 界面错位 | 终端太小 | 放大窗口至 80x24 以上 |
| 输入卡顿 | 网络延迟高 | 检查网络,换就近节点 |
性能诊断流程
Token 优化策略
{
// 限制上下文长度
"contextLimit": 8000,
// 禁用不必要的工具描述
"mcp": {
"unused": { "enabled": false }
},
// 使用轻量模型做简单任务
"models": {
"default": "anthropic/claude-sonnet-4-5",
"quick": "openai/gpt-4o-mini"
}
}日志分析指南
日志位置
# OpenCode 日志
~/.local/share/opencode/logs/
# 系统日志(systemd)
journalctl -u opencode --since "1 hour ago"
# Docker 日志
docker logs opencode-container --tail 200
# K8s 日志
kubectl logs -l app=opencode --tail 200启用调试模式
# 环境变量调试
DEBUG=opencode opencode
# 或
OPENCODE_DEBUG=1 opencode server
# 详细网络日志
DEBUG=opencode,http opencode日志分析示例
# 查找错误
grep -i "error\|fail\|timeout" ~/.local/share/opencode/logs/latest.log
# 统计 Token 消耗
jq -r '.token_usage' ~/.local/share/opencode/logs/*.log | awk '{sum+=$1} END{print sum}'
# 查找慢请求
jq 'select(.duration > 10)' ~/.local/share/opencode/logs/*.log诊断脚本
一键诊断
#!/bin/bash
# opencode-doctor.sh
echo "=== OpenCode 诊断 ==="
# 版本
echo -n "版本: "
opencode --version 2>/dev/null || echo "未安装"
# PATH
echo -n "安装路径: "
which opencode 2>/dev/null || echo "不在 PATH 中"
# Node.js
echo -n "Node.js: "
node --version 2>/dev/null || echo "未安装"
# 配置
echo -n "全局配置: "
test -f ~/.config/opencode/opencode.json && echo "存在" || echo "不存在"
# API 密钥
echo -n "API 密钥: "
test -f ~/.local/share/opencode/auth.json && echo "已配置" || echo "未配置"
# 终端
echo "终端: $TERM"
echo "终端大小: $(stty size 2>/dev/null || echo 'unknown')"
# 网络
echo -n "网络: "
ping -c 1 opencode.ai >/dev/null 2>&1 && echo "正常" || echo "异常"社区资源
| 资源 | 链接 | 用途 |
|---|---|---|
| 官方文档 | https://opencode.ai/docs | 权威参考 |
| GitHub Issues | github.com/anomalyco/opencode/issues | Bug 报告 |
| Discussions | github.com/anomalyco/opencode/discussions | 问答交流 |
| Discord | https://opencode.ai/discord | 实时社区 |
| 更新日志 | GitHub Releases | 版本变化 |
提交 Issue 模板
## 环境
- OS: Ubuntu 22.04
- OpenCode: 1.2.3
- Terminal: WezTerm
- Node.js: 20.11.0
## 问题描述
启动后界面显示乱码
## 复现步骤
1. 运行 `opencode`
2. 界面中文显示为方块
## 已尝试
- [x] 更换终端
- [ ] 更换字体
## 日志[ERROR] Unicode rendering failed
快速诊断清单
□ opencode --version 能正常运行吗?
□ 安装路径在 PATH 中吗?
□ API 密钥配置正确吗?
□ 网络连接正常吗?
□ 终端支持 Unicode 和 256 色吗?
□ 终端窗口足够大吗?
□ 配置文件格式正确吗?(JSON 有效)
□ 相关服务(MCP 等)运行正常吗?
□ 日志中有错误信息吗?
□ 磁盘空间充足吗?
□ 内存/CPU 够用吗?
紧急恢复
完全重置
# 重置配置(保留密钥)
mv ~/.config/opencode/opencode.json ~/.config/opencode/opencode.json.bak
# 重置所有数据(谨慎!)
rm -rf ~/.config/opencode
rm -rf ~/.local/share/opencode
# 重新初始化
opencode
/connect
/init降级版本
# 安装特定版本
npm install -g [email protected]🎉 恭喜完成全部教程!
你已掌握从入门到精通的完整 OpenCode 使用技能。
继续探索:
附:快捷键速查卡
| 快捷键 | 功能 |
|---|---|
Tab | 切换计划/构建模式 |
Enter | 发送消息 |
Shift+Enter | 换行 |
↑ / ↓ | 浏览历史 |
@ | 文件引用 |
Ctrl+C | 取消/退出 |
Ctrl+L | 清屏 |
附:常用命令速查卡
| 命令 | 功能 |
|---|---|
/init | 初始化项目 |
/connect | 配置 API 密钥 |
/models | 切换模型 |
/undo | 撤销修改 |
/redo | 重做修改 |
/share | 分享对话 |
/clear | 清空对话 |
/quit | 退出 |