OpenCode 部署与使用指南:一键安装脚本、桌面应用分发与内置 Agent 体系
本文基于 OpenCode 仓库的官方 README(德语版 README.de.md,与英文版内容一致)展开,系统梳理 OpenCode 这个开源编码代理(AI Coding Agent)的完整部署路径:一键安装脚本的工作机制与参数、各平台包管理器安装方式、桌面应用(BETA)的分发产物,以及 build / plan / general 三类内置 Agent 的权限模型与切换方式。读完本文,你可以独立完成安装与升级,理解安装脚本的平台探测逻辑,并能从源码层面解释各内置 Agent 的权限边界与自定义 Agent 的配置入口。
项目定位与安装前准备
OpenCode 定位为"Der Open-Source KI-Coding-Agent"(开源 AI 编码代理),采用 MIT 协议发布,以终端 TUI 为主要交互形态,同时提供 BETA 阶段的桌面应用。当前仓库根目录的 package.json 显示其基于 Bun + TypeScript 的 monorepo 组织,核心可执行程序位于 packages/opencode,终端 UI 位于 packages/tui,桌面端位于 packages/desktop。
README 在安装章节前给出一条重要提示:
安装前请先移除 0.1.x 之前的旧版本,避免新旧版本共存导致的 PATH 冲突。
安装方式
1. 一键安装脚本(YOLO 方式)
README 给出的最简安装命令:
curl -fsSL https://opencode.ai/install | bash
该命令对应仓库根目录的 install 脚本(460 行 Bash)。从源码看,脚本支持以下命令行选项(install#L16-L20):
-v, --version <version> 安装指定版本(例如 1.0.180)
-b, --binary <path> 从本地二进制文件安装,跳过下载与平台探测
--no-modify-path 不修改 shell 配置文件(.zshrc、.bashrc 等)
指定版本安装的完整写法:
curl -fsSL https://opencode.ai/install | bash -s -- --version 1.0.180
# 或使用本地已编译的二进制
./install --binary /path/to/opencode
脚本内部的关键机制如下:
- 平台与架构探测(
uname -s/uname -m):支持linux-x64、linux-arm64、darwin-x64、darwin-arm64、windows-x64五种组合,不支持的组合作为错误退出(install#L79-L110); - Rosetta 检测:在 macOS x64 下通过
sysctl.proc_translated判断是否运行在 Rosetta 转译环境中,若是则强制选择 arm64 产物(install#L95-L100); - musl/glibc 区分:Linux 下通过
/etc/alpine-release或ldd --version识别 musl 环境,产物后缀加-musl(install#L117-L128); - CPU 基线降级:x64 平台检测 AVX2 指令集(读取
/proc/cpuinfo、sysctl或 PowerShell),无 AVX2 时选择-baseline变体,保证老 CPU 可运行(install#L130-L166); - 版本解析:未指定版本时从 GitHub Releases API 获取 latest 标签;指定版本时会先做 404 校验,避免下载到不存在的 release(install#L183-L204);
- 幂等检查:若已安装的
opencode --version与目标版本一致则直接退出,不重复下载(install#L221-L235); - 下载与解压:交互式终端下用
curl --trace-ascii+ FIFO 渲染实时进度条,Windows 或非 TTY 环境回退到标准curl -#;Linux 解压.tar.gz,其余平台解压.zip(install#L267-L346); - PATH 配置:根据
$SHELL类型(fish/zsh/bash/ash/sh)写入对应的 rc 文件,追加export PATH=$INSTALL_DIR:$PATH或 fish 的fish_add_path,已存在则跳过;在 GitHub Actions 环境还会把安装目录写入$GITHUB_PATH(install#L362-L444)。
安装成功后,脚本末尾直接给出最小启动序列(install#L453-L456):
cd <project> # 进入项目目录
opencode # 运行命令
并提示 OpenCode 内置免费模型,开箱即可使用。
安装目录优先级
README 说明安装脚本按如下优先级决定安装路径:
$OPENCODE_INSTALL_DIR- 自定义安装目录$XDG_BIN_DIR- XDG Base Directory Specification 规范路径$HOME/bin- 用户标准 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),脚本内未见 OPENCODE_INSTALL_DIR / XDG_BIN_DIR 的处理分支。从源码结构看,官方站点实际分发的安装脚本可能是另行维护的版本,以上四级优先级应以 README 的文档描述作为目标行为理解。
2. 包管理器安装
README 列出的各平台安装命令:
# npm / bun / pnpm / yarn
npm i -g opencode-ai@latest
# Windows
scoop install opencode
choco install opencode
# macOS 与 Linux
brew install anomalyco/tap/opencode # 官方 tap,更新更及时(推荐)
brew install opencode # Homebrew 官方 Formula,更新频率较低
# Arch Linux
sudo pacman -S opencode # Stable
paru -S opencode-bin # AUR 最新版
# 跨平台
mise use -g opencode
# Nix
nix run nixpkgs#opencode # 或 nixpkgs 源外指向 dev 分支以获取最新
其中 npm 包名为 opencode-ai,Nix 侧仓库还提供了 flake.nix 与 nix/opencode.nix 用于本地开发态构建。
桌面应用(BETA)
OpenCode 同时提供桌面应用,可从官方 Releases 页面或官网下载页获取。各平台产物命名如下表(来自 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
桌面端基于 Electron 实现(packages/desktop/package.json 中依赖 electron 42.3.3 与 electron-vite),发布产物由 electron-builder.config.ts 生成,可以逐条印证上表:
- 产物命名规则为
opencode-desktop-${os}-${arch}.${ext}(electron-builder.config.ts#L45),与 README 文件名完全对应; - macOS 目标为
dmg+zip,开启hardenedRuntime与notarize(electron-builder.config.ts#L75-L84); - Windows 目标为 NSIS 一键安装器(
oneClick: true,对应.exe); - Linux 目标同时产出
AppImage、deb、rpm(electron-builder.config.ts#L106-L118); - 通过环境变量
OPENCODE_CHANNEL区分 dev / beta / prod 三条发布通道,对应不同的应用 ID(ai.opencode.desktop.dev/.beta/ 正式版)与发布仓库,dev 通道还会把 CLI 二进制一并打进extraResources(electron-builder.config.ts#L32-L42)。
内置 Agents:build、plan 与 general
OpenCode 内置两个主 Agent,在终端中以 Tab 键切换:
- build - 默认开发 Agent,拥有完整权限,按配置的权限规则执行各类工具;
- plan - 只读分析 Agent,用于代码探索与方案规划:
- 默认拒绝文件编辑;
- 执行 bash 命令前会先询问;
- 适合探索陌生代码库或规划变更;
此外还有一个 general 子 Agent,面向复杂检索与多步骤任务,内部调度使用,也可以在消息中用 @general 显式调用。
源码中的权限模型
上述行为在 packages/opencode/src/agent/agent.ts 中有完整定义。所有 Agent 共享一套基于 Effect Schema 的 Info 结构(名称、描述、mode(subagent/primary/all)、native、hidden、温度、权限规则集、模型覆写等,agent.ts#L35-L55),而每个内置 Agent 的差异化全部体现在 Permission.merge 合并的权限规则上:
- build(agent.ts#L140-L155):在默认规则(通配允许、
.env读取需询问等)之上,将question设为allow、plan_enter设为allow,即 build 模式下可以进入计划模式,且可以回答用户提问; - plan(agent.ts#L156-L181):
edit规则为"*": "deny",仅放行两处写入:项目内.opencode/plans/*.md与全局数据目录下的 plans 目录——这解释了"plan 模式只读,但仍可产出计划文档"的行为;task.general设为deny(计划期间不允许再派发 general 子任务),plan_exit设为allow(允许退出计划模式);- 外部目录默认
ask,只有计划目录白名单为allow;
- general(agent.ts#L182-L195):
mode: "subagent",只额外禁用todowrite,其余继承默认规则,因此可作为后台研究/执行单元被主 Agent 并行调用;
从源码结构看,仓库中还定义了 explore 子 Agent(专用于快速检索代码库,放行 grep/glob/list/bash/webfetch/websearch/read 等只读工具,agent.ts#L196-L218),以及 compaction、title、summary 三个 hidden: true 的内部 Agent(分别负责会话压缩、标题与摘要生成,agent.ts#L219-L264)。这些不在 README 的对外列表中,属于内部机制。
默认 Agent 与自定义覆写
同一文件还揭示了默认 Agent 的选取与自定义机制:
defaultInfo()优先读取配置项default_agent,但要求该 Agent 存在、非 subagent、非 hidden,否则抛错;未配置时回退到第一个可见的 primary Agent(即 build)(agent.ts#L328-L340);list()会把默认 Agent 排在最前,其余按名称排序,这正是 TUI 中 Agent 列表的展示顺序(agent.ts#L316-L326);- 配置文件中的
agent段可以覆写任意内置 Agent(模型、温度、提示词、权限等),设置disable: true可整体移除某内置 Agent;未定义的新名称则以mode: "all"创建为用户 Agent(agent.ts#L267-L294)。
因此,若希望默认进入 plan 模式、或给 build 收紧 bash 权限,均可通过配置文件完成,而不需要修改源码。
参与贡献与命名规范
- 贡献:提交 Pull Request 前请先阅读 CONTRIBUTING.md,其中说明了对应的开发流程要求;
- 基于 OpenCode 构建:如果你在做的项目名称包含 "opencode"(如
opencode-dashboard、opencode-mobile),README 要求在该项目 README 中明确声明:它不是由 OpenCode 团队构建的,与 OpenCode 项目没有任何关联。
小结
- 安装首选
curl -fsSL https://opencode.ai/install | bash,安装脚本自动处理平台/架构/musl/AVX2 基线探测、指定版本安装与 PATH 写入,可用--version/--binary/--no-modify-path精确控制; - 桌面应用(BETA)按平台提供 dmg / exe / deb / rpm / AppImage,产物命名与 electron-builder 配置一一对应,并有 dev / beta / prod 三条发布通道;
- 两个主 Agent(build / plan)以 Tab 切换,权限差异全部来自 agent.ts 中的权限规则合并;general 子 Agent 负责多步骤研究,可用
@general显式触发; - 深入配置(模型、Agent 覆写、权限)请查阅官方 Docs,仓库内文档源见 packages/docs。
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 StartedRust0623
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