OpenCode 安装与配置指南:安装脚本、桌面应用与内置 Agent 机制
OpenCode 是一个开源 AI 编码代理(coding agent),支持终端 TUI、桌面应用与 Web 多种形态。本文以仓库根目录的官方 README(含 韩语版 等多语言版本)为主体,覆盖完整安装方式、安装目录优先级、桌面应用分发与内置 Agent 权限模型,并结合仓库内的安装脚本与 Agent 源码实现,说明每个环节背后的实际行为,帮助你在任意操作系统上正确完成部署并理解 build / plan / general 三类代理的边界。
一、安装
1.1 快速安装(curl 脚本)
官方推荐的一条命令安装方式:
# YOLO
curl -fsSL https://opencode.ai/install | bash
提示(官方建议):安装新版之前,请先移除 0.1.x 之前的旧版本,避免二进制冲突。
1.2 通过包管理器安装
各平台的包管理器命令如下(可直接复制执行):
npm i -g opencode-ai@latest # bun/pnpm/yarn 同样可行
scoop install opencode # Windows
choco install opencode # Windows
brew install anomalyco/tap/opencode # macOS 及 Linux(官方 tap,推荐,更新最及时)
brew install opencode # macOS 及 Linux(Homebrew 官方 formula,更新频率较低)
sudo pacman -S opencode # Arch Linux(Stable)
paru -S opencode-bin # Arch Linux(AUR 最新版)
mise use -g opencode # 任意操作系统
nix run nixpkgs#opencode # 也可用 github:anomalyco/opencode 获取最新 dev 分支
其中 Nix 支持两条路径:nix run nixpkgs#opencode 走 nixpkgs 稳定版,github:anomalyco/opencode 则直接构建最新 dev 分支——仓库根目录下的 flake.nix 与 flake.lock 即对应的 Nix 定义。
1.3 安装脚本的实现细节(源码级)
仓库根目录的 install 脚本就是随仓库分发的安装器。对照源码,可以确认它比 README 描述的更多几项能力,均可在 install#L10-L27 的帮助文本中查证:
| 选项 | 作用 |
|---|---|
-v, --version <ver> |
安装指定版本(如 1.0.180),下载前会先校验该 Release 是否存在(404 则报错退出) |
-b, --binary <path> |
跳过下载与平台探测,直接从本地二进制文件安装 |
--no-modify-path |
不修改任何 shell 配置文件(.zshrc、.bashrc 等) |
脚本的下载与安装流程(install#L79-L204)包含以下可验证的行为:
- 平台探测:仅支持
linux-x64 / linux-arm64 / darwin-x64 / darwin-arm64 / windows-x64五种组合,其余直接报错退出;macOS Intel 上通过sysctl.proc_translated检测 Rosetta 转译,若处于转译环境会自动改选 arm64 构建; - Linux 特化检测:通过
/etc/alpine-release或ldd --version识别 musl libc,自动追加-musl后缀;Linux 包为.tar.gz(依赖tar),其余平台为.zip(依赖unzip); - CPU 基线回退:x64 平台上检测 AVX2 指令集(Linux 读
/proc/cpuinfo、macOS 读hw.optional.avx2_0、Windows 通过 PowerShell 调IsProcessorFeaturePresent),不支持 AVX2 时自动下载-baseline版本二进制; - 版本查询:未指定版本时从 GitHub Releases API 获取最新 tag 号,并打印已安装版本以判断是否需要升级(install#L221-L235)。
安装完成后,脚本会按当前 shell(fish / zsh / bash / ash / sh)把安装目录写入对应的配置文件并追加 PATH(install#L362-L439);若运行在 CI 中(GITHUB_ACTIONS=true),则会写入 $GITHUB_PATH 供后续步骤使用。脚本结尾还会打印上手指引:进入项目目录后直接运行 opencode 命令即可。
二、桌面应用(BETA)
除终端形态外,OpenCode 也提供桌面应用,可从 Release 页或官方下载页获取。各平台产物命名如下(README 原表完整保留):
| 平台 | 下载文件名 |
|---|---|
| macOS (Apple Silicon) | opencode-desktop-mac-arm64.dmg |
| macOS (Intel) | opencode-desktop-mac-x64.dmg |
| Windows | opencode-desktop-windows-x64.exe |
| Linux | .deb、.rpm 或 AppImage |
包管理器方式:
# macOS (Homebrew)
brew install --cask opencode-desktop
# Windows (Scoop)
scoop bucket add extras; scoop install extras/opencode-desktop
桌面应用由 packages/desktop 中的 Electron 工程构建,其产物命名规则可在 electron-builder.config.ts#L45 中得到印证:artifactName: "opencode-desktop-${os}-${arch}.${ext}",与上表文件名一一对应;该包还保留了旧的 opencode-desktop.desktop 桌面入口文件以兼容既有 GNOME/KDE 用户(electron-builder.config.ts#L13-L16)。
2.1 安装目录优先级
安装脚本按以下顺序决定安装路径:
$OPENCODE_INSTALL_DIR—— 自定义安装目录;$XDG_BIN_DIR—— 符合 XDG Base Directory Specification 的路径;$HOME/bin—— 标准用户二进制目录(已存在或可创建时);$HOME/.opencode/bin—— 默认兜底目录。
示例:
OPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/install | bash
XDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bash
从当前仓库的 install 脚本结构看,其默认落点为 $HOME/.opencode/bin(install#L68),且安装后对二进制执行 chmod 755(install#L343-L344),与上表第 4 级兜底行为一致;线上分发的脚本以 README 所述四级优先序为准。
三、内置 Agents
OpenCode 内置 2 个主代理,在终端中按 Tab 键切换:
- build —— 默认代理,拥有完整开发执行权限的 agent;
- plan —— 只读分析代理,用于分析、探索代码与规划改动:
- 默认拒绝文件编辑;
- 执行 bash 命令前会请求授权;
- 适合探索陌生代码库或规划变更。
此外还有一个 general 子代理,用于复杂检索与多步骤任务。它内部使用,可在消息中以 @general 调用。
3.1 源码中的权限模型
上述代理行为可在 packages/opencode/src/agent/agent.ts#L140-L195 中得到逐条印证:
- build(
mode: "primary"):在默认权限基础上把question与plan_enter设为allow,即可以向你提问并进入计划模式;默认权限中read对*.env文件一律降级为ask(需要授权),避免把密钥类文件内容直接暴露给模型(agent.ts#L119-L136); - plan(
mode: "primary"):编辑权限整体为deny,仅放行计划文档写入——.opencode/plans/*.md及全局数据目录下的plans/*.md;同时task.general被设为deny,意味着计划模式内不会再派生 general 子代理,符合“只规划、不动手”的定位; - general(
mode: "subagent"):面向复杂问题的通用子代理,额外禁用todowrite(避免子代理篡改主会话的任务清单),权限其余部分继承默认策略。
从源码结构看,该文件还定义了另一个原生子代理 explore(agent.ts#L196-L218):只允许 grep、glob、list、read、bash、webfetch、websearch 等只读类工具,专用于快速探索代码库。README 未将其列为用户可直接切换的代理,但它是子代理体系的一部分,理解权限模型时值得留意。
用户可通过配置文件中的 permission 字段进一步覆盖以上默认值——代理最终权限是“默认策略 + 各代理策略 + 用户配置”三者按序合并(Permission.merge,见 agent.ts#L138-L152)。更多代理配置见官方文档(opencode.ai/docs,仓库内 docs 目录即其源码)。
四、贡献与品牌规范
- 贡献:向 OpenCode 提交 Pull Request 之前,请先阅读 CONTRIBUTING.md。仓库采用 Bun + monorepo 组织(package.json),根脚本
dev直接运行 packages/opencode 的入口src/index.ts;注意根目录的test脚本会拒绝执行,测试需在各 workspace 包内单独运行。 - 基于 OpenCode 做衍生项目:如果你的项目名包含 “opencode”(如 “opencode-dashboard”“opencode-mobile”),README 明确要求在该项目 README 中声明其与 OpenCode 团队无关、也未以任何方式与之关联。
五、适用前提小结
- 终端安装要求目标机器满足上述五种 OS/架构组合之一;musl 与无 AVX2 环境由脚本自动适配,无需手工选择;
- 桌面应用当前为 BETA 状态,安装前建议以 Release 页实际产物为准;
- Agent 行为描述基于当前仓库源码的权限配置,若版本升级调整了默认策略,以对应版本的 agent.ts 为准。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
