依赖:Bun 1.3+,VSCode 插件 oven.bun-vscode
# WSL / 网络受限环境推荐
npm install -g bun
# 安装项目依赖
bun installopencode/
├── packages/
│ ├── opencode/ # 核心逻辑、API Server、TUI(SolidJS + opentui)
│ ├── app/ # Web UI(SolidJS + Vite)
│ ├── desktop/ # 桌面端(Tauri)
│ └── plugin/ # 插件包
改了代码想看效果,直接运行对应命令,保存后自动热重载。
TUI 模式(最常用):
bun dev # 在 packages/opencode 目录下运行
bun dev . # 在当前仓库根目录运行
bun dev <path> # 在指定目录运行注意:
- 要想在新文件夹中试用openresearch,需要开一个新窗口并先打开目标文件夹(如~/code/openresearch/test),然后在opencode项目(不是test项目)的终端运行bun dev ~/code/openresearch/test,此时会在opencode项目的终端显示opencode的对话框,在里面对话创建的代码文件会在test项目中出现。
Web UI 模式(需要两个终端):
# 终端 1
bun dev serve
# 终端 2(然后打开 http://localhost:xxxx)
bun run --cwd packages/app dev修改了 Server API 后,需重新生成 SDK:
./script/generate.tsBun 调试支持尚不完善,建议只用 attach 模式,不要用 launch 模式。
cp .vscode/launch.example.json .vscode/launch.json
cp .vscode/settings.example.json .vscode/settings.json调试 TUI + Server(推荐): 用 spawn 让 Server 跑在主进程而非 Worker 线程,断点才能命中。
bun run --inspect=ws://localhost:6499/ --cwd packages/opencode --conditions=browser src/index.ts spawn只调试 Server: 另开终端用 opencode attach 连接 TUI。
# 终端 1
bun run --inspect=ws://localhost:6499/ --cwd packages/opencode ./src/index.ts serve --port 4096
# 终端 2
opencode attach http://localhost:4096调试 Web App: 启动后直接用浏览器 F12 DevTools,无需 attach。
按 F5,选择 "opencode (attach)"。
小技巧: 将下面这行加入 .bashrc / .zshrc,之后 bun dev 自动带上 inspect 参数:
export BUN_OPTIONS="--inspect=ws://localhost:6499/"bun dev debug config # 查看当前配置
bun dev debug file # 调试文件读取
bun dev debug lsp # 调试 LSP
bun dev debug ripgrep # 调试搜索
bun dev debug agent # 调试 Agent
bun dev debug snapshot # 查看快照
bun dev debug skill # 调试 Skill在 WSL 里接入自己的 API(如私有部署的 Claude),按以下步骤配置。
直接在 WSL 终端创建,不要在 Windows 文件夹里新建(路径权限问题):
nano ~/.opencode.json填入以下内容(以接入 Claude 兼容接口为例):
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"my-claude": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://你的IP地址/v1",
"apiKey": "sk-你的真实KEY"
},
"models": {
"claude-opus-4-5-20251101": {},
"claude-haiku-4-5-20251001": {}
}
}
},
"model": "my-claude/claude-opus-4-5-20251101"
}注意:
baseURL结尾必须带/v1,否则接口找不到,是最常见的报错原因。
WSL 不会自动读取配置文件路径,需要手动指定:
echo 'export OPENCODE_CONFIG="$HOME/.opencode.json"' >> ~/.bashrc
source ~/.bashrc如果之前运行过 opencode auth login,会生成加密的 auth.json 并覆盖配置文件里的 Key,导致 429 报错。删除它:
rm ~/.local/share/opencode/auth.jsonopencode models # 能看到 my-claude/claude-opus... 说明配置生效断点没有命中: 确认用的是 attach 模式,进程带了 --inspect 参数;调试 Server 代码要用 spawn 子命令。
端口被占用: 换个端口,同步修改 .vscode/launch.json 中的 url 字段。
桌面应用无法启动: 需要 Rust 工具链,参考 Tauri 先决条件文档。
404 错误: 检查 baseURL 是否遗漏了 /v1。
429 频率限制: Key 填错,或被旧的 auth.json 干扰,参考上方"清理旧的认证缓存"。
模型列表为空: 检查环境变量 OPENCODE_CONFIG 路径是否正确。