Skip to content

# 更新

OpenSoul 发展迅速(尚未到"1.0")。将更新视为发布基础设施:更新 → 运行检查 → 重启(或使用会重启的 opensoul update)→ 验证。

# 推荐:重新运行网站安装程序(原地升级)

首选的更新路径是重新运行网站上的安装程序。它会检测现有安装、原地升级,并在需要时运行 opensoul doctor

bash
curl -fsSL https://opensoul.ai/install.sh | bash

说明:

  • 如果你不想再次运行新手引导向导,添加 --no-onboard
  • 对于源码安装,使用:
    bash
    curl -fsSL https://opensoul.ai/install.sh | bash -s -- --install-method git --no-onboard
    安装程序在仓库干净时才会执行 git pull --rebase
  • 对于全局安装,脚本底层使用 npm install -g opensoul@latest
  • 旧版说明:opensoul 已全面替代旧版命名。

# 更新之前

  • 了解你的安装方式:全局(npm/pnpm)还是源码(git clone)。
  • 了解你的 Gateway 网关运行方式:前台终端还是受管理服务(launchd/systemd)。
  • 快照你的定制内容:
    • 配置:~/.opensoul/opensoul.json
    • 凭证:~/.opensoul/credentials/
    • 工作区:~/.opensoul/workspace

# 更新(全局安装)

全局安装(选择一个):

bash
npm i -g opensoul@latest
bash
pnpm add -g opensoul@latest

我们推荐将 Bun 用于 Gateway 网关运行时(WhatsApp/Telegram 有 bug)。

切换更新渠道(git + npm 安装):

bash
opensoul update --channel beta
opensoul update --channel dev
opensoul update --channel stable

使用 --tag <dist-tag|version> 进行一次性安装指定标签/版本。

渠道语义和发布说明参见开发渠道

注意:在 npm 安装上,Gateway 网关在启动时会记录更新提示(检查当前渠道标签)。通过 update.checkOnStart: false 禁用。

然后:

bash
opensoul doctor
opensoul gateway restart
opensoul health

说明:

  • 如果你的 Gateway 网关作为服务运行,opensoul gateway restart 优于杀死 PID。
  • 如果你固定在特定版本,参见下面的"回滚/固定"。

# 更新(opensoul update

对于源码安装(git checkout),首选:

bash
opensoul update

它运行一个相对安全的更新流程:

  • 需要干净的工作树。
  • 切换到选定的渠道(标签或分支)。
  • 获取并 rebase 到配置的上游(dev 渠道)。
  • 安装依赖、构建、构建控制 UI,并运行 opensoul doctor
  • 默认重启 Gateway 网关(使用 --no-restart 跳过)。

如果你通过 npm/pnpm 安装(没有 git 元数据),opensoul update 将尝试通过你的包管理器更新。如果无法检测到安装,请改用"更新(全局安装)"。

# 更新(控制 UI / RPC)

控制 UI 有更新并重启(RPC:update.run)。它:

  1. 运行与 opensoul update 相同的源码更新流程(仅限 git checkout)。
  2. 写入带有结构化报告(stdout/stderr 尾部)的重启哨兵。
  3. 重启 Gateway 网关并向最后活跃的会话 ping 报告。

如果 rebase 失败,Gateway 网关会中止并在不应用更新的情况下重启。

# 更新(从源码)

从仓库 checkout:

首选:

bash
opensoul update

手动(大致等效):

bash
git pull
pnpm install
pnpm build
pnpm ui:build # 首次运行时自动安装 UI 依赖
opensoul doctor
opensoul health

说明:

  • 当你运行打包的 opensoul 二进制文件(opensoul.mjs)或使用 Node 运行 dist/ 时,pnpm build 很重要。
  • 如果你从仓库 checkout 运行而没有全局安装,CLI 命令使用 pnpm opensoul ...
  • 如果你直接从 TypeScript 运行(pnpm opensoul ...),通常不需要重新构建,但配置迁移仍然适用 → 运行 doctor。
  • 在全局和 git 安装之间切换很容易:安装另一种方式,然后运行 opensoul doctor 以便将 Gateway 网关服务入口点重写为当前安装。

# 始终运行:opensoul doctor

Doctor 是"安全更新"命令。它故意很无聊:修复 + 迁移 + 警告。

注意:如果你是源码安装(git checkout),opensoul doctor 会提供先运行 opensoul update

它通常做的事情:

  • 迁移已弃用的配置键/旧版配置文件位置。
  • 审计私信策略并对有风险的"开放"设置发出警告。
  • 检查 Gateway 网关健康状况,可以提供重启。
  • 检测并将旧版 Gateway 网关服务(launchd/systemd;旧版 schtasks)迁移到当前 OpenSoul 服务。
  • 在 Linux 上,确保 systemd 用户 lingering(这样 Gateway 网关在登出后仍能存活)。

详情:Doctor

# 启动/停止/重启 Gateway 网关

CLI(无论操作系统都适用):

bash
opensoul gateway status
opensoul gateway stop
opensoul gateway restart
opensoul gateway --port 18789
opensoul logs --follow

如果你使用受管理服务:

  • macOS launchd(应用捆绑的 LaunchAgent):launchctl kickstart -k gui/$UID/ai.opensoul.gateway(使用 ai.opensoul.<profile>;旧版 com.opensoul.* 仍然有效)
  • Linux systemd 用户服务:systemctl --user restart opensoul-gateway[-<profile>].service
  • Windows(WSL2):systemctl --user restart opensoul-gateway[-<profile>].service
    • launchctl/systemctl 仅在服务已安装时有效;否则运行 opensoul gateway install

运行手册 + 确切的服务标签:Gateway 网关运行手册

# 回滚/固定(当出问题时)

# 固定(全局安装)

安装已知良好的版本(将 <version> 替换为最后可用的版本):

bash
npm i -g opensoul@<version>
bash
pnpm add -g opensoul@<version>

提示:要查看当前发布的版本,运行 npm view opensoul version

然后重启 + 重新运行 doctor:

bash
opensoul doctor
opensoul gateway restart

# 按日期固定(源码)

选择某个日期的提交(示例:"2026-01-01 时 main 的状态"):

bash
git fetch origin
git checkout "$(git rev-list -n 1 --before=\"2026-01-01\" origin/main)"

然后重新安装依赖 + 重启:

bash
pnpm install
pnpm build
opensoul gateway restart

如果你之后想回到最新版本:

bash
git checkout main
git pull

# 如果你卡住了

Released under the MIT License.