<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Developer Tools on AI博士 万戈</title>
        <link>https://www.yesmiracle.net/tags/developer-tools/</link>
        <description>AI博士万戈的技术博客，聚焦 Agentic AI、AI Infra 与 Agent Security，分享 AI 基础设施与工程落地实践。</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>admin@yesmiracle.net (万戈)</managingEditor>
        <webMaster>admin@yesmiracle.net (万戈)</webMaster>
        <lastBuildDate>Sun, 04 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.yesmiracle.net/tags/developer-tools/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>OpenCode 安装完全指南：从一行 curl 到 v2 共享服务，附 v1 迁移！</title>
        <link>https://www.yesmiracle.net/post/20261004-opencode-installation-guide/</link>
        <pubDate>Sun, 04 Oct 2026 00:00:00 +0000</pubDate>
        <author>admin@yesmiracle.net (万戈)</author>
        <guid>https://www.yesmiracle.net/post/20261004-opencode-installation-guide/</guid>
        <description>&lt;img src="https://www.yesmiracle.net/post/20261004-opencode-installation-guide/cover.svg" alt="Featured image of post OpenCode 安装完全指南：从一行 curl 到 v2 共享服务，附 v1 迁移！" /&gt;&lt;p&gt;之前那篇 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260719-opencode-architecture/&#34; &gt;《OpenCode 源码深度拆解：Effect TS 代数效应系统构建的智能编码 Agent》&lt;/a&gt; 拆的是它的内部架构——Effect TS、四轴 LLM 路由、双 Agent 循环。文章底下问得最多的一类问题是：「所以到底怎么装？」&lt;/p&gt;
&lt;p&gt;这篇就把它补上。我不打算复述官网的流水账，而是按我自己在一台干净机器上把它跑通的顺序来写：选哪条安装路径、v2 的「共享后台服务」到底是什么、配置写在哪个文件才会生效、怎么接上模型、以及跑第一个会话时会碰到的那些小坑。顺带说一句：如果你还在用 v1，现在是个动手迁移的时间点。&lt;/p&gt;
&lt;p&gt;先说结论——&lt;strong&gt;OpenCode 现在的默认版本是 v2，命令行装的是 &lt;code&gt;@opencode/cli&lt;/code&gt;，不是以前那个 &lt;code&gt;opencode-ai&lt;/code&gt;。&lt;/strong&gt; 这一点搞混了，后面所有命令都会对不上。&lt;/p&gt;
&lt;h2 id=&#34;四条路选一条就好&#34;&gt;四条路，选一条就好&lt;/h2&gt;
&lt;p&gt;先看一张表。它是我自己会用来决策的那张，不是官网的复制。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;你的情况&lt;/th&gt;
          &lt;th&gt;推荐路径&lt;/th&gt;
          &lt;th&gt;关键命令&lt;/th&gt;
          &lt;th&gt;大概耗时&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;刚接触，想最快跑起来&lt;/td&gt;
          &lt;td&gt;官方脚本&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;curl -fsSL https://opencode.ai/v2/install | bash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;1 分钟&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Mac 用户，机器上已有一堆 brew tap&lt;/td&gt;
          &lt;td&gt;Homebrew&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;brew install anomalyco/tap/opencode-v2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;2 分钟&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;团队用 npm 统一管全局 CLI&lt;/td&gt;
          &lt;td&gt;npm（v2 包）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;npm install -g @opencode/cli&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;2 分钟&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;想要窗口界面 / 多端接入&lt;/td&gt;
          &lt;td&gt;桌面版 + Web / Docker&lt;/td&gt;
          &lt;td&gt;下安装包，或 &lt;code&gt;ghcr.io/anomalyco/opencode&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;5 分钟&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话原则：&lt;strong&gt;一台机器只留一条路径&lt;/strong&gt;。这三条路都能往 PATH 里塞一个叫 &lt;code&gt;opencode&lt;/code&gt; 的二进制，混装之后你排查问题时根本不知道跑的是哪一个。真要装也别同时装，装完立刻 &lt;code&gt;opencode --version&lt;/code&gt; 确认一下。&lt;/p&gt;
&lt;h2 id=&#34;装之前需要准备什么&#34;&gt;装之前需要准备什么&lt;/h2&gt;
&lt;p&gt;两样东西就够了。&lt;/p&gt;
&lt;p&gt;一是终端。OpenCode 的 TUI 用了真彩色，官方推荐的终端是 Ghostty、WezTerm、Alacritty、Kitty 这几个。没有也能跑，只是主题配色会退化成近似色，不影响功能。&lt;/p&gt;
&lt;p&gt;二是模型凭证。你可以用自己已有的任意 provider 的 API Key，也可以在 TUI 里跑 &lt;code&gt;/connect&lt;/code&gt; 走官方那套 OpenCode Console。如果只是想先试试，OpenCode Go 是个每月 $10 的订阅，专门给你开放一批主流开源编码模型，算是新人摩擦最小的一条路。&lt;/p&gt;
&lt;h2 id=&#34;路径一官方脚本推荐&#34;&gt;路径一：官方脚本（推荐）&lt;/h2&gt;
&lt;p&gt;一行命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://opencode.ai/v2/install | bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个安装脚本有几个参数值得知道，尤其是在做批量部署的时候：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 装一个指定版本（做灰度时把机器钉在已知版本上）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://opencode.ai/v2/install | bash -s -- --version 2.0.22
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 已经手上有本地二进制，只想让它帮忙放到位&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://opencode.ai/v2/install | bash -s -- --binary /path/to/opencode
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 我的 shell 配置文件由配置管理工具托管，别去改它&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://opencode.ai/v2/install | bash -s -- --no-modify-path
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;脚本默认会帮你把 &lt;code&gt;opencode&lt;/code&gt; 加到 PATH。如果你用 Nix、Ansible 这类工具管环境，就用 &lt;code&gt;--no-modify-path&lt;/code&gt; 自己接管。&lt;/p&gt;
&lt;h2 id=&#34;路径二homebrew&#34;&gt;路径二：Homebrew&lt;/h2&gt;
&lt;p&gt;Mac 和 Linux 都能用。注意 tap 名字带 &lt;code&gt;-v2&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;brew install anomalyco/tap/opencode-v2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里有个容易踩的坑：Homebrew 官方仓库里也有一个 &lt;code&gt;opencode&lt;/code&gt; formula，但那个更新慢，追不上版本。要最新的就用 &lt;code&gt;anomalyco/tap/opencode-v2&lt;/code&gt; 这个 tap。v1 时代的 tap 是 &lt;code&gt;anomalyco/tap/opencode&lt;/code&gt;（不带 v2），别装错。&lt;/p&gt;
&lt;h2 id=&#34;路径三npm给用-npm-管全局工具的团队&#34;&gt;路径三：npm（给用 npm 管全局工具的团队）&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm install -g @opencode/cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个包是 v2 的。&lt;strong&gt;Bun 和 pnpm 需要额外放行一个脚本&lt;/strong&gt;，否则会出现「装成功了，但真正的原生二进制没落下来」这种最气人的失败：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bun install -g --trust @opencode/cli
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pnpm add -g --allow-build&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;@opencode/cli @opencode/cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;npm 包靠一个 postinstall 脚本去挑对应平台的原生二进制，Bun 和 pnpm 默认会拦掉生命周期脚本，所以不加参数的话命令会「成功」返回，然后 &lt;code&gt;opencode&lt;/code&gt; 一跑就找不到文件。yarn 和 Vite+（&lt;code&gt;vp install -g @opencode/cli&lt;/code&gt;）则不需要额外参数。Arch 用户可以直接走 AUR：&lt;code&gt;paru -S opencode-beta&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;路径四桌面版web-和-docker&#34;&gt;路径四：桌面版、Web 和 Docker&lt;/h2&gt;
&lt;p&gt;OpenCode 现在不只是终端里的东西。同一个后台服务后面挂着好几种客户端，你想用哪个都行。&lt;/p&gt;
&lt;p&gt;桌面版直接下对应平台的安装包——macOS、Windows，以及 Linux 的 &lt;code&gt;.deb&lt;/code&gt;、&lt;code&gt;.rpm&lt;/code&gt;、AppImage 都有。&lt;/p&gt;
&lt;p&gt;想做 Web 访问，在装好 CLI 的机器上跑：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode pair
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;它会打印一个本地地址和一组临时用户名密码，端口是随机分的，形如 &lt;code&gt;http://127.0.0.1:49374&lt;/code&gt;。手机、平板浏览器打开就能接上同一个服务。&lt;/p&gt;
&lt;p&gt;Docker 走版本化标签：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -it --rm ghcr.io/anomalyco/opencode:2.0.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意&lt;strong&gt;Windows 不支持用包管理器装&lt;/strong&gt;。官方文档写得很明确：Windows 上要么下独立二进制，要么进 WSL。别去翻什么 Chocolatey、Scoop、Winget 的配方，v2 这条线没有。这是 v2 和 v1 一个明显的分歧——v1 当年是给了 &lt;code&gt;choco install opencode&lt;/code&gt; 和 &lt;code&gt;scoop install opencode&lt;/code&gt; 的。&lt;/p&gt;
&lt;h2 id=&#34;v2-到底变了什么共享后台服务&#34;&gt;v2 到底变了什么：共享后台服务&lt;/h2&gt;
&lt;p&gt;这是 v1 到 v2 最本质的一处改动，也是很多人装完发现「行为不对」的根源。&lt;/p&gt;
&lt;p&gt;v1 基本是「每个终端一个自己」。v2 改成了 client-server：&lt;strong&gt;OpenCode 会为你的用户账号自动发现或启动一个共享的后台服务，所有本地客户端都连到它上面。&lt;/strong&gt; 会话、配置、权限、工具执行，全归这个服务管。&lt;/p&gt;
&lt;p&gt;大多数时候你不用管它，但有几个开关得记一下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode --standalone        &lt;span style=&#34;color:#75715e&#34;&gt;# 这个终端用私有服务，不碰共享的那份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode --server http://localhost:4096   &lt;span style=&#34;color:#75715e&#34;&gt;# 连到指定服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode service status      &lt;span style=&#34;color:#75715e&#34;&gt;# 看后台服务现在什么状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode service restart     &lt;span style=&#34;color:#75715e&#34;&gt;# 卡住了就重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你希望命令行默认别启动共享服务，可以显式关掉：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode service set disabled true
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;关掉之后 &lt;code&gt;--server&lt;/code&gt; 仍然能连指定服务，&lt;code&gt;opencode service start&lt;/code&gt; 也能手动把共享服务拉起来。但要注意：&lt;strong&gt;Web 端的 &lt;code&gt;opencode pair&lt;/code&gt; 依赖共享服务，服务一关配对就不能用了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你从 v1 升上来、发现行为怪怪的，第一步就是 &lt;code&gt;opencode service status&lt;/code&gt; 看看是不是有个旧的后台进程在捣鬼。想彻底清干净再重装，可以先用 &lt;code&gt;opencode uninstall --dry-run&lt;/code&gt; 预览会删什么，再用 &lt;code&gt;opencode uninstall&lt;/code&gt; 执行；想保留配置和会话数据，加 &lt;code&gt;--keep-config --keep-data&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;配置全局还是项目哪个说了算&#34;&gt;配置：全局还是项目，哪个说了算&lt;/h2&gt;
&lt;p&gt;OpenCode 用 JSON（也吃带注释的 JSONC）配置，文件叫 &lt;code&gt;opencode.json&lt;/code&gt;。两个位置最常用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;全局：&lt;code&gt;~/.config/opencode/opencode.json&lt;/code&gt;——放你个人的 provider、默认模型、权限这类跨项目偏好。&lt;/li&gt;
&lt;li&gt;项目：项目根目录下的 &lt;code&gt;opencode.json&lt;/code&gt;——放这个项目专属的设置，可以放心提交进 Git。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它跟你直觉不太一样的一点是：&lt;strong&gt;这些配置文件是「合并」而不是「覆盖」的。&lt;/strong&gt; 全局设了 &lt;code&gt;autoupdate: true&lt;/code&gt;，项目设了 &lt;code&gt;model&lt;/code&gt;，最后两个都生效。优先级从低到高大致是：组织下发的远程配置（&lt;code&gt;.well-known/opencode&lt;/code&gt;）→ 全局 → &lt;code&gt;OPENCODE_CONFIG&lt;/code&gt; 指定的自定义文件 → 项目配置 → &lt;code&gt;.opencode/&lt;/code&gt; 目录 → 内联配置。此外还有一组管理员强制配置（macOS 是 &lt;code&gt;/Library/Application Support/opencode/&lt;/code&gt;，Linux 是 &lt;code&gt;/etc/opencode/&lt;/code&gt;）优先级最高，用户改不动。&lt;/p&gt;
&lt;p&gt;一个 provider 配置长这样，换 baseURL 就能走代理或自建端点：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;$schema&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://opencode.ai/config.json&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;provider&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;anthropic&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;options&amp;#34;&lt;/span&gt;: { &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;baseURL&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://api.anthropic.com/v1&amp;#34;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;whitelist&amp;#34;&lt;/span&gt;: [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;claude-sonnet-4-20250514&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;whitelist&lt;/code&gt; 是只留列出的模型，&lt;code&gt;blacklist&lt;/code&gt; 是屏蔽列出的模型，两个按顺序叠加生效。这在 provider 暴露了一堆你根本不会用的模型时很有用，&lt;code&gt;/models&lt;/code&gt; 选择器会干净很多。&lt;/p&gt;
&lt;h2 id=&#34;接上模型&#34;&gt;接上模型&lt;/h2&gt;
&lt;p&gt;装完还没配凭证时，OpenCode 是连不上任何模型的。两个办法：&lt;/p&gt;
&lt;p&gt;在 TUI 里直接跑：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/connect
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;选一个 provider，粘贴 API Key。凭证会落到 &lt;code&gt;~/.local/share/opencode/auth.json&lt;/code&gt;。命令行等价的做法是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode auth login          &lt;span style=&#34;color:#75715e&#34;&gt;# 交互式登录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode auth list           &lt;span style=&#34;color:#75715e&#34;&gt;# 看已经登录了哪些 provider&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode auth logout         &lt;span style=&#34;color:#75715e&#34;&gt;# 退出某个 provider&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;OpenCode 底层靠 Models.dev 维护的 provider 列表，官方口径是支持 75+ 家 provider，也支持本地模型（Ollama、LM Studio、llama.cpp 这些都能接）。想确认自己到底能用哪些模型、以及它们在配置里的准确名字，跑：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode models              &lt;span style=&#34;color:#75715e&#34;&gt;# 列出所有可用模型，格式 provider/model&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode models anthropic    &lt;span style=&#34;color:#75715e&#34;&gt;# 只看某一家&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode models --refresh    &lt;span style=&#34;color:#75715e&#34;&gt;# 强制刷新模型缓存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;模型名必须写成 &lt;code&gt;provider/model&lt;/code&gt; 的格式&lt;/strong&gt;，比如 &lt;code&gt;openai/gpt-4.1&lt;/code&gt;、&lt;code&gt;opencode/kimi-k2&lt;/code&gt;。写错了会报 &lt;code&gt;ProviderModelNotFoundError&lt;/code&gt;，别去怀疑网络，先检查这一条。&lt;/p&gt;
&lt;h2 id=&#34;跑起第一个会话&#34;&gt;跑起第一个会话&lt;/h2&gt;
&lt;p&gt;找个项目目录进去，然后跑起来：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /path/to/your/project
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第一次进项目，先让它读一遍代码库：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/init
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;它会在项目根目录生成一个 &lt;code&gt;AGENTS.md&lt;/code&gt;，描述这个项目的结构和编码约定。&lt;strong&gt;这个文件建议提交进 Git&lt;/strong&gt;，之后每次会话它都靠这个快速理解你的项目长什么样，省掉大量重复的上下文说明。&lt;/p&gt;
&lt;p&gt;然后是日常用法里我认为最值得先学会的三件事：&lt;/p&gt;
&lt;p&gt;用 Tab 键在 Build 和 Plan 两个模式之间切。Plan 模式会禁掉写文件的能力，只让模型给你实施思路——改大功能之前先在 Plan 里过一遍，比直接让它动手稳得多。&lt;code&gt;@&lt;/code&gt; 键可以模糊搜项目里的文件，比手打路径快。改错了就 &lt;code&gt;/undo&lt;/code&gt;，可以连着撤好几步，&lt;code&gt;/redo&lt;/code&gt; 是反悔回去。想给同事看这段会话，&lt;code&gt;/share&lt;/code&gt; 生成一个链接。&lt;/p&gt;
&lt;p&gt;不想开全屏界面的话，还有两条：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode run &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;解释一下这个仓库的入口在哪&amp;#34;&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# 一次性出结果，适合脚本和 CI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode mini                              &lt;span style=&#34;color:#75715e&#34;&gt;# 极简交互界面&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;opencode run&lt;/code&gt; 还有个实用技巧——常驻一个服务再挂上去，避免每次冷启动 MCP 服务器：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode serve                                             &lt;span style=&#34;color:#75715e&#34;&gt;# 一个终端里跑无头服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode run --attach http://localhost:4096 &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;解释下 async/await&amp;#34;&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# 另一个终端里挂上去跑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;装完之后&#34;&gt;装完之后&lt;/h2&gt;
&lt;p&gt;常用命令我列一份给自己备忘用的清单：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode --version              &lt;span style=&#34;color:#75715e&#34;&gt;# 确认装的是哪个版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode session list           &lt;span style=&#34;color:#75715e&#34;&gt;# 看历史会话&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode stats                  &lt;span style=&#34;color:#75715e&#34;&gt;# 看 token 用量和花费&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode export &amp;lt;sessionID&amp;gt;     &lt;span style=&#34;color:#75715e&#34;&gt;# 导出会话 JSON&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opencode uninstall --dry-run    &lt;span style=&#34;color:#75715e&#34;&gt;# 卸载前先看会删什么&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最后一句提醒：&lt;strong&gt;跑 &lt;code&gt;opencode&lt;/code&gt; 之后如果觉得哪里不对劲，先看日志。&lt;/strong&gt; v2 的日志在 &lt;code&gt;~/.local/share/opencode/log/opencode.log&lt;/code&gt;，可以 &lt;code&gt;tail -f&lt;/code&gt; 跟着复现。它每条日志都带 &lt;code&gt;run=&lt;/code&gt; 和 &lt;code&gt;role=&lt;/code&gt; 字段，用 &lt;code&gt;role=server&lt;/code&gt; 过滤就能只看到服务侧的会话、provider、插件、权限活动。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;装完 &lt;code&gt;opencode&lt;/code&gt; 命令找不到？&lt;/strong&gt;
先确认 PATH 有没有刷新（重开一个终端）。用 npm/Bun/pnpm 装的，八成是 postinstall 脚本被拦了——回到路径三，加上 &lt;code&gt;--trust&lt;/code&gt; 或 &lt;code&gt;--allow-build&lt;/code&gt; 重装。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;提示 &lt;code&gt;ProviderModelNotFoundError&lt;/code&gt;？&lt;/strong&gt;
模型名格式不对。必须是 &lt;code&gt;provider/model&lt;/code&gt;，用 &lt;code&gt;opencode models&lt;/code&gt; 查出准确名字再填。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;报 &lt;code&gt;ProviderInitError&lt;/code&gt;，配置像坏了？&lt;/strong&gt;
一般是凭证文件或配置损坏。v1 时代的处理方式是删掉 &lt;code&gt;~/.local/share/opencode&lt;/code&gt; 再重新 &lt;code&gt;/connect&lt;/code&gt;。做这一步前先备份。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;AI_APICallError&lt;/code&gt; 或者模型参数报错？&lt;/strong&gt;
OpenCode 会按需动态下载 provider 包并缓存。这类兼容性问题清缓存通常能解决：删掉 &lt;code&gt;~/.cache/opencode&lt;/code&gt;，重启让它重新拉最新的 provider 包。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux 上复制粘贴没反应？&lt;/strong&gt;
缺剪贴板工具。X11 装 &lt;code&gt;xclip&lt;/code&gt; 或 &lt;code&gt;xsel&lt;/code&gt;，Wayland 装 &lt;code&gt;wl-clipboard&lt;/code&gt;。OpenCode 会自动检测 Wayland 并优先用 &lt;code&gt;wl-clipboard&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows 上能用包管理器装吗？&lt;/strong&gt;
不能。v2 明确不支持 Windows 包管理器，下独立二进制，或者干脆进 WSL——官方也推荐 WSL，性能和兼容性都更好。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我怎么知道自己该装 v1 还是 v2？&lt;/strong&gt;
新装一律 v2。还在跑 v1、依赖某个 v1 插件的话，先在隔离环境里迁，确认插件在 v2 上能跑，再换掉生产机器。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;
&lt;p&gt;把 OpenCode 装上本身不难，四行命令的事。真正花了点时间才想明白的是它 v2 的共享服务模型——一旦你接受「会话和权限归一个后台服务管，客户端只是连上去的壳」，很多看起来奇怪的行为就都顺了，桌面版、Web、Docker 这些客户端也才讲得通。&lt;/p&gt;
&lt;p&gt;如果你想在装之前先搞清楚它内部那套 Effect TS 的架构是怎么回事，回去看那篇源码拆解；想横向比较它和别的编码 Agent 的设计取舍，可以顺手读这两篇：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;相关阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260719-opencode-architecture/&#34; &gt;《OpenCode 源码深度拆解：Effect TS 代数效应系统构建的智能编码 Agent》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260719-grok-build-open-source/&#34; &gt;《Grok Build 开源！万字拆解 40 万行 Rust 构建的 AI Coding Agent 内部架构》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260719-pi-agent-architecture/&#34; &gt;《Pi Agent 深度拆解：TypeScript 多包架构下的 Steering + Follow-up 双队列设计》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260924-jev-installation-guide/&#34; &gt;《Jev 安装完全指南：从零代码 Playground 到 Claude Code 技能包》&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/anomalyco/opencode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anomalyco/opencode&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
