重置用户数据、升级或降级版本、备份与恢复。复制下面任意一行直接运行, 不用先下载脚本,也不用打开编辑器。
curl -fsSL /sh | bash -s -- --status
bash <(curl -fsSL /sh)
curl -fsSL /sh | bash -s -- --execute --backup --keep auth
curl -fsSL /sh | bash -s -- --execute --version latest
iex "& { $(irm /ps) } -Status"
irm /ps | iex
iex "& { $(irm /ps) } -Execute -Backup -Keep auth"
iex "& { $(irm /ps) } -Execute -Version latest"
--execute / -Execute 时,它会先告诉你打算做什么,确认没问题再加参数执行。
清空 data / state / config / cache / tmp,可选保留登录信息与配置目录。
自动识别 1.x 与 2.x 两条版本线,可装当前、同系列最新或指定版本。
动手前把 data / state / config 打包保存,之后可以一键回滚。
清空用户数据并重装 CLI,回到和刚安装时一样的状态。
opencode 的目录和数据库文件,拦家目录与盘符根目录。
opencode auth export / auth import 中转;导入失败会把凭据留到备份目录并给出恢复命令。
直接 curl / irm 拿到的是加密后的入口文件——不是明文脚本,也没法直接读懂。
但源码是公开的:点下面的按钮可以在这里把完整源码展开来看,或者下载成文件慢慢审。
curl -fsSL /source/sh.txt | less
irm /source/ps.txt | more
只读诊断:检查 Node / npm / registry 连通性、数据目录可写性、磁盘余量、备份数量、是否有进程占用。 不改动任何文件,出问题可以直接把这个结果发出来。
iex "& { $(irm /ps) } -Doctor"
curl -fsSL /sh | bash -s -- --doctor
备份默认保留最近 5 份,超出会自动清理。也可以手动查看或指定保留份数。
iex "& { $(irm /ps) } -ListBackups"
iex "& { $(irm /ps) } -PruneBackups 3 -Execute"
单独用 -Backup / --backup 就只做备份。会话、登录信息、配置一个都不动,也不安装任何东西。
iex "& { $(irm /ps) } -Backup -Execute"
curl -fsSL /sh | bash -s -- --backup --execute
OpenCode 出问题时按顺序跑这三个,基本能定位到原因。
iex "& { $(irm /ps) } -Logs -LogLines 100"
iex "& { $(irm /ps) } -Info"
iex "& { $(irm /ps) } -CleanCache -Execute"
data(会话 + 登录)、config、state 打成一个 .tar.gz,换电脑或重装系统时整个带走。2.5 MB 左右,比手工复制目录可靠得多。会排除 service.json、locks、shell、log —— 这些绑定当前机器,搬过去只会让新机器启动卡在陈旧锁上。导入前自动备份、自动停服务,解包失败可以回滚。opencode session export,只认「非空且以 { 或 [ 开头」的结果,不会把错误信息当 JSON 存下来。删除要二次确认。--sessions、--export-sessions、--migrate、--migrate-import、--service、--models、--disk、--fix、--uninstall,脚本里也能用。1) 查看状态 只读:版本、数据占用、登录信息,不改任何文件。原来说明单独占一行,12 个选项要滚两屏。q 取消。输错会提示范围并重问,不会退出。[Y/n] / [y/N] —— 大写的那个是默认值,直接回车即为默认;也接受 是 / 否 / y / n,q 取消。Esc 取消后也不会再多出一条竖线。Max(40, WindowWidth-1) 计算,终端比 40 列窄时内容照样溢出折行。现在优先用真实窗口宽度。scripts/opencode-tool.ps1 在一次批量改写中丢了 UTF-8 BOM,PowerShell 5.1 直接运行它时会按 ANSI 解码,中文乱码导致 here-string 被截断、整个文件语法错误。已恢复,并在构建流程里加了强校验:缺 BOM 直接构建失败。/sh 和 /ps 现在下发的是加密后的入口文件,直接 curl 或 irm 拿到的是密文,源码不会摊在 URL 上。PowerShell 侧为 gzip + AES-256-CBC,bash 侧为 gzip + base64 + 字母表移位(零外部依赖,Linux / macOS / Git Bash 通用)。.sh / .ps1 文件慢慢审。-match 'S'(应为 '\S'),导致每行都被算成一条登录记录,永远显示「N 条」。^s*//(反斜杠丢了),正确是 ^\s*//;带注释的 opencode.jsonc 一直解析不出来。Stop-Stage 在未调用 Start-Stage 时读取未定义变量,在 Set-StrictMode -Version 2 下会直接抛异常。已给变量设初始值。Cancelled / dry run / Ready / Done 等英文;交互确认项由 Yes / No 改为 是 / 否。Write-Pair、重复的注释分节块。-Backup / --backup 会被误判成「重置」,配上 -Execute 就会直接删掉会话数据。现在它只做备份,一个文件都不动。-Logs / --logs —— 直接看 OpenCode 最近的日志,不用自己去翻目录。配 -LogLines N / --log-lines N 指定行数。-Info / --info —— 一屏看清:版本、安装方式、配置文件内容摘要(当前模型、agent / plugin / MCP 数量)、数据库大小、会话数、登录数、备份情况。-CleanCache / --clean-cache —— 只清缓存目录(实测常有 200+ MB),会话、登录信息、配置一个都不碰。默认演练,加 -Execute 才真删。Stop-Stage 被连调两次,耗时永远是空的;现在正常显示 (438ms) 这类结果。User data、Login: none、-Done 之类),现在统一成中文,只有 data / db 这类目录名保留原名并附中文标注,如 data(会话与登录)。Documents 后面少了路径分隔符,已修。-Backup 时「备份到」会打印两次,已去重。-PruneBackups 0 这种会删光所有备份的输入现在直接拒绝。> Yes / No 光标切换。(1.1.2 起改为 [Y/n] 直接输入。)T | • ! — 四个符号,格式为 • Key: Value 与 • Key: Value 缩进子项,组间以单独的 | 分隔。管道输出时自动去掉颜色。-Doctor / --doctor —— 只读环境体检:Node / npm / registry 连通性、各数据目录可写性(真的写一个探针文件再删)、磁盘余量、备份数量、进程占用。有问题会汇总成清单。-ListBackups / --list-backups —— 列出全部备份,含大小与包含哪些目录,标出最新一份。-PruneBackups N / --prune-backups N —— 只保留最近 N 份,其余删除。默认演练,加 -Execute / --execute 才真删。-KeepBackups N / --keep-backups 可调),避免备份堆积占满磁盘。(1.2s))。session list / auth list 的输出格式统一;删除失败时不再只提示一个数字。/ps 是纯 ASCII,完整脚本 base64 内嵌,不依赖任何域名,换域名不用重新打包。opencode 的目录和 opencode.db;符号链接只清目标不穿透;登录信息走 auth export/import 中转。