面向 OpenCode 的开源应用
OpenCode 是开源的。Happier 也是开源的,采用 MIT 许可,可以自托管。两者都不需要不由你掌控的服务器。
How Happier runs OpenCode
OpenCode 通过它自己的 attach 流程回到自家界面,画面里没有多路复用器,也没有需要先打开的开关——Happier 启动的那个会话,就是 opencode 重新接上的那个会话,而当终端占着它时,应用仍然继续接收消息。
另半边故事是凭据:OpenCode 自带供应商层,所以你连接过的 Codex、OpenAI、Claude 订阅和 Anthropic 配置在会话开始时都可以选,为别的智能体攒起来的账户池在这里也派上了用场。Claude 订阅那项接受这个版本所中转的两种形式——浏览器登录和 setup token——而 Anthropic 那一个仍然是 API 密钥;你在哪个之下运行,是在会话开始时选定的,而不是从那台电脑上次登录的状态继承下来的。
分叉是这个版本给这一个留出余地的地方。OpenCode 对话可以整段分叉,也可以从某条特定消息处分叉——这是“换个方式再试”和“回到第三次工具调用之前,再换个方式试”之间的差别。你放在 .opencode/skills 和 .opencode/commands 里、或者放在 ~/.config/opencode 下的技能和斜杠命令,会被当作提示词资源读取并随会话带走,所以你在工位上教给 CLI 的东西,在从手机回复这个会话时仍然在。
What OpenCode does, and what Happier adds
OpenCode 是 SST 的终端编码智能体,并且自带供应商层:你把它指向你已经有访问权限的模型,它就用那个模型来处理你的仓库。happier opencode 用同样的 opencode auth 凭据、在同样的目录里运行同样的可执行文件。
Happier 提供的是设备。你在某个房间的终端里开始的会话,可以在另一个房间用手机读取和回复,而对话记录在离开你的电脑之前就已在本机加密。
happier opencodeRead, approve and answer OpenCode from any device
iOS 和 Android 应用、面向 macOS、Windows 和 Linux 的桌面应用,以及 app.happier.dev,都是通向运行在你电脑上的 OpenCode 进程的客户端 —— 而不是只读的镜像。回应一个权限请求、发送下一条指令、浏览仓库、阅读 diff。会话记录在离开你的电脑之前就已端到端加密,所以承载它的服务器持有的是密文。
Happier can install OpenCode for you
Happier 安装在已经存放着你仓库的那台电脑上,而 happier opencode 会在那里把 OpenCode 作为一个普通子进程启动,在你指定的目录里,用你自己登录好的身份。智能体和 SST 之间没有网关,你的源码在别处也没有任何副本。
Happier 会先在你的 PATH 上找 opencode,运行你装的那份。如果没有,它可以把 opencode-ai 安装到 ~/.happier/tools/providers/opencode/ — 那是它自己的目录,不是你全局的 npm prefix。你自己管理的那份,永远不会在你不知情的情况下被替换或升级。
SST 自己的安装与登录指南在 opencode.ai/docs。Happier 不会镜像一份,因为把别人的安装说明抄一份过来,抄的就是一份会过期的东西。
Happier 这一侧的配置参考 —— Happier 文档中的 OpenCode。
OpenCode 跑在哪个账号上
OpenCode 是 Happier 可以指向“你连接过一次的凭据”的智能体之一,而不是指向那台电脑当下登录的账号。它接受 a Codex subscription, an OpenAI API key, a Claude subscription or an Anthropic API key。
已连接服务是以凭据为键,而不是以智能体为键,所以同一份 Codex subscription 在每一台你连接过的电脑上,都能给任何接受它的智能体选用 — 这也正是把你自己的账号组成一个池、跨多台电脑使用会有帮助的原因。凭据的加密和解密都在你自己的设备上进行;文档页面 记载了各类配置档的规则,因为每个智能体接受哪些种类的配置档,正是会随版本变动的那类细节。
One app for OpenCode and 12 other agents
OpenCode 是 Happier 运行的 13 个命令行编码智能体之一,它们共用一份会话列表、一个权限收件箱、一套键盘快捷键和一份 MCP 配置。
You define an MCP server once and OpenCode receives it as native MCP inventory, next to whatever MCP servers it already had of its own.
这在你同时跑不止一个的日子里最要紧:不同厂商的会话并排摆着,点一下通知打开的是发出该请求的那个会话,而不是应用的首页。完整名单在这里。
The same OpenCode session in your terminal and in the app
在终端里输入 happier opencode,会话就在你站着的地方启动,而同一个会话同时也在应用里。你在那个 shell 里读到的是 Happier 自己对会话的呈现 —— 会话记录、权限提示、工具输出 —— 而不是 OpenCode 的界面。没有人需要为了拿到一个手机客户端而放弃终端。
happier attach <session-id> 会通过 OpenCode 自己的 attach 流程,在同一个会话上打开 OpenCode 自己的 TUI。两端都能写入,中间没有多路复用器,也不必先打开什么开关 — 在 TUI 里输入会出现在应用里,从应用发送也会出现在 TUI 里。
attach 指南列出了具体适用的情形,而不是把所有情形都许诺下来。
关于通过 Happier 运行 OpenCode 的问题
- 我需要事先装好 OpenCode 吗?
- 不一定。Happier 优先使用你 PATH 上的
opencode,如果没有,它可以把opencode-ai包安装到自己的目录里。你自己的安装绝不会被背着你替换或升级。 - Happier 会改变 OpenCode 连接哪个供应商吗?
- 不会。OpenCode 保留自己的供应商配置和自己的凭据;Happier 只是启动它并读取对话。如果你在
opencode auth里设置了多个供应商,决定请求发往何处的仍然是它。 - 承载我会话的那部分可以自托管吗?
- 可以。中继就在同个 MIT 许可的仓库里,以 Docker 镜像分发,后端可以是 PostgreSQL、SQLite 或 MySQL。把你的客户端指向你自己的服务器,就没有任何流量经过我们的。
- 我的代码会被上传到什么地方吗?
- 不会。OpenCode 在你的电脑上运行,并在那里读取你的工作目录。穿过网络的是会话记录,在离开你的设备之前就已加密——中继保存的是它读不懂的密文。
- 哪些设备可以打开会话?
- iOS、Android,macOS、Windows 和 Linux 上的桌面应用,以及浏览器里的 app.happier.dev。它们都登录同个账户,看到同样的会话列表。
Get OpenCode onto your phone in two commands
在存放你代码的那台电脑上执行一条命令,然后在你想工作的仓库里执行 happier opencode。
curl -fsSL https://happier.dev/install | bash分步说明在指南里。这一切都是 MIT 许可的,而 relay 是你可以自己运行的。

