From 8b978d8a4c78cdd8c2024130297ccab49f2b1628 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Mon, 4 May 2026 21:00:55 +0000 Subject: [PATCH] chore(i18n): refresh zh-CN translations --- docs/zh-CN/cli/update.md | 89 ++++++++------- docs/zh-CN/help/testing-updates-plugins.md | 120 ++++++++++----------- docs/zh-CN/plugins/manage-plugins.md | 50 ++++----- docs/zh-CN/reference/test.md | 98 ++++++++--------- 4 files changed, 176 insertions(+), 181 deletions(-) diff --git a/docs/zh-CN/cli/update.md b/docs/zh-CN/cli/update.md index 32f9bebc9..c8d55a8dc 100644 --- a/docs/zh-CN/cli/update.md +++ b/docs/zh-CN/cli/update.md @@ -1,15 +1,15 @@ --- read_when: - - 你想安全地更新源代码检出副本 - - 你正在调试 `openclaw update` 的输出或选项 - - 你需要了解 `--update` 简写行为 -summary: '`openclaw update` 的 CLI 参考(相对安全的源码更新 + Gateway 网关自动重启)' + - 你想安全地更新源码检出副本 + - 你正在调试 `openclaw update` 输出或选项 + - 你需要了解 `--update` 的简写行为 +summary: '`openclaw update` 的 CLI 参考(较安全的源更新 + Gateway 网关自动重启)' title: 更新 x-i18n: - generated_at: "2026-05-03T20:54:25Z" + generated_at: "2026-05-04T20:59:52Z" model: gpt-5.5 provider: openai - source_hash: 53ec06b8db5e2aba4000922f92a36834e8782986a77f6b5889bb19031a59f1b8 + source_hash: b12b1837ae80a3688fb7805d78d5a354f07dccdaba175cfa429e18145e543a1f source_path: cli/update.md workflow: 16 --- @@ -18,8 +18,7 @@ x-i18n: 安全更新 OpenClaw,并在 stable/beta/dev 渠道之间切换。 -如果你通过 **npm/pnpm/bun** 安装(全局安装,没有 git 元数据), -更新会通过 [更新](/zh-CN/install/updating) 中的包管理器流程完成。 +如果你是通过 **npm/pnpm/bun** 安装的(全局安装,没有 git 元数据),更新会通过 [更新](/zh-CN/install/updating) 中的包管理器流程进行。 ## 用法 @@ -40,16 +39,15 @@ openclaw --update ## 选项 -- `--no-restart`:成功更新后跳过重启 Gateway 网关服务。会重启 Gateway 网关的包管理器更新会先验证重启后的服务报告预期的更新版本,然后命令才会成功。 -- `--channel `:设置更新渠道(git + npm;会持久化到配置中)。 -- `--tag `:仅为本次更新覆盖包目标。对于包安装,`main` 会映射到 `github:openclaw/openclaw#main`。 -- `--dry-run`:预览计划的更新操作(channel/tag/target/restart 流程),不会写入配置、安装、同步插件或重启。 -- `--json`:打印机器可读的 `UpdateRunResult` JSON,包括在更新后插件同步期间检测到 npm 插件构件漂移时的 - `postUpdate.plugins.integrityDrifts`。 -- `--timeout `:每个步骤的超时时间(默认 1800s)。 +- `--no-restart`:成功更新后跳过重启 Gateway 网关服务。会重启 Gateway 网关的包管理器更新会先验证重启后的服务报告预期的已更新版本,然后命令才会成功。 +- `--channel `:设置更新渠道(git + npm;持久化到配置中)。 +- `--tag `:仅为本次更新覆盖包目标。对于包安装,`main` 映射到 `github:openclaw/openclaw#main`。 +- `--dry-run`:预览计划的更新操作(渠道/标签/目标/重启流程),不写入配置、不安装、不同步插件,也不重启。 +- `--json`:打印机器可读的 `UpdateRunResult` JSON,包括在更新后插件同步期间检测到 npm 插件构件漂移时的 `postUpdate.plugins.integrityDrifts`。 +- `--timeout `:每个步骤的超时时间(默认是 1800 秒)。 - `--yes`:跳过确认提示(例如降级确认)。 -`openclaw update` 没有 `--verbose` 标志。使用 `--dry-run` 预览计划的 channel/tag/install/restart 操作,使用 `--json` 获取机器可读结果;如果你只需要渠道和可用性详情,请使用 `openclaw update status --json`。如果你在调试更新前后的 Gateway 网关日志,控制台详细程度和文件日志级别是分开的:Gateway 网关 `--verbose` 会影响终端/WebSocket 输出,而文件日志需要在配置中设置 `logging.level: "debug"` 或 `"trace"`。参见 [Gateway 网关日志](/zh-CN/gateway/logging)。 +`openclaw update` 没有 `--verbose` 标志。使用 `--dry-run` 预览计划的渠道/标签/安装/重启操作,使用 `--json` 获取机器可读结果;当你只需要渠道和可用性详情时,使用 `openclaw update status --json`。如果你在调试更新期间的 Gateway 网关日志,控制台详细程度和文件日志级别是分开的:Gateway 网关 `--verbose` 会影响终端/WebSocket 输出,而文件日志需要在配置中设置 `logging.level: "debug"` 或 `"trace"`。参见 [Gateway 网关日志](/zh-CN/gateway/logging)。 降级需要确认,因为旧版本可能会破坏配置。 @@ -57,7 +55,7 @@ openclaw --update ## `update status` -显示当前更新渠道 + git tag/branch/SHA(针对源码 checkout),以及更新可用性。 +显示当前更新渠道 + git 标签/分支/SHA(针对源码检出),以及更新可用性。 ```bash openclaw update status @@ -68,12 +66,11 @@ openclaw update status --timeout 10 选项: - `--json`:打印机器可读的状态 JSON。 -- `--timeout `:检查超时时间(默认 3s)。 +- `--timeout `:检查超时时间(默认是 3 秒)。 ## `update wizard` -交互式流程,用于选择更新渠道,并确认更新后是否重启 Gateway 网关 -(默认会重启)。如果你选择 `dev` 但没有 git checkout,它会询问是否创建一个。 +用于选择更新渠道并确认更新后是否重启 Gateway 网关的交互式流程(默认会重启)。如果你在没有 git 检出的情况下选择 `dev`,它会提示创建一个检出。 选项: @@ -83,79 +80,77 @@ openclaw update status --timeout 10 当你显式切换渠道(`--channel ...`)时,OpenClaw 也会保持安装方式一致: -- `dev` → 确保存在 git checkout(默认:`~/openclaw`,可用 `OPENCLAW_GIT_DIR` 覆盖), - 更新它,并从该 checkout 安装全局 CLI。 +- `dev` → 确保存在 git 检出(默认:`~/openclaw`,可用 `OPENCLAW_GIT_DIR` 覆盖),更新它,并从该检出安装全局 CLI。 - `stable` → 使用 `latest` 从 npm 安装。 -- `beta` → 优先使用 npm dist-tag `beta`,但当 beta 缺失或早于当前稳定版本时,会回退到 `latest`。 +- `beta` → 优先使用 npm dist-tag `beta`,但当 beta 缺失或比当前稳定版本更旧时,会回退到 `latest`。 -Gateway 网关核心自动更新器(通过配置启用时)会在实时 Gateway 网关请求处理器之外启动 CLI 更新路径。控制平面 `update.run` 包管理器更新会在包替换后强制执行非延迟、无冷却的更新重启,因为旧 Gateway 网关进程可能仍有内存中的 chunk 指向新包已删除的文件。 +Gateway 网关核心自动更新器(通过配置启用时)会在实时 Gateway 网关请求处理器之外启动 CLI 更新路径。控制平面的 `update.run` 包管理器更新会在包替换后强制执行一次非延迟、无冷却的更新重启,因为旧 Gateway 网关进程内存中可能仍有指向新包已移除文件的分块。 -对于包管理器安装,`openclaw update` 会在调用包管理器前解析目标包版本。npm 全局安装使用分阶段安装:OpenClaw 会把新包安装到临时 npm prefix,验证其中打包的 `dist` inventory,然后把这棵干净的包树替换到真实全局 prefix。如果验证失败,更新后的 Doctor、插件同步和重启工作不会从可疑的包树运行。即使已安装版本已经匹配目标,命令也会刷新全局包安装,然后运行插件同步、核心命令补全刷新和重启工作。这会让打包的 sidecar 和渠道拥有的插件记录与已安装的 OpenClaw 构建保持一致,同时把完整的插件命令补全重建留给显式的 `openclaw completion --write-state` 运行。 +对于包管理器安装,`openclaw update` 会在调用包管理器之前解析目标包版本。npm 全局安装使用分阶段安装:OpenClaw 会把新包安装到临时 npm 前缀中,在那里验证打包的 `dist` 清单,然后将这个干净的包树替换到真正的全局前缀中。如果验证失败,更新后 Doctor、插件同步和重启工作都不会从可疑的包树运行。即使已安装版本已经匹配目标版本,该命令也会刷新全局包安装,然后运行插件同步、核心命令补全刷新以及重启工作。这会让打包的 sidecar 和渠道拥有的插件记录与已安装的 OpenClaw 构建保持一致,同时把完整插件命令补全重建留给显式的 `openclaw completion --write-state` 运行。 -当本地托管的 Gateway 网关服务已安装且启用了重启时,包管理器更新会先停止正在运行的服务,再替换包树,然后从更新后的安装刷新服务元数据、重启服务,并在报告成功前验证重启后的 Gateway 网关报告预期版本。在 macOS 上,更新后检查还会验证 LaunchAgent 已为当前 profile 加载/运行,并且配置的 loopback 端口健康。如果 plist 已安装但 launchd 没有监管它,OpenClaw 会自动重新 bootstrap LaunchAgent,然后重新运行健康/版本/渠道就绪检查。全新的 bootstrap 会直接加载 RunAtLoad job,因此更新恢复不会立即对新生成的 Gateway 网关执行 `kickstart -k`。如果 Gateway 网关仍然无法变为健康状态,命令会以非零状态退出,并打印重启日志路径,以及明确的重启、重新安装和包回滚说明。使用 `--no-restart` 时, -包替换仍会运行,但托管服务不会停止或重启,因此正在运行的 Gateway 网关可能会继续使用旧代码,直到你手动重启它。 +当本地托管的 Gateway 网关服务已安装且启用重启时,包管理器更新会先停止正在运行的服务,然后替换包树,再从更新后的安装刷新服务元数据,重启服务,并在报告成功前验证重启后的 Gateway 网关报告预期版本。在 macOS 上,更新后检查还会验证活动配置文件的 LaunchAgent 已加载/正在运行,并且配置的 loopback 端口健康。如果 plist 已安装但 launchd 没有监管它,OpenClaw 会自动重新 bootstrap LaunchAgent,然后重新运行健康/版本/渠道就绪检查。全新 bootstrap 会直接加载 RunAtLoad 作业,因此更新恢复不会立即对新生成的 Gateway 网关执行 `kickstart -k`。如果 Gateway 网关仍未变为健康,命令会以非零状态退出,并打印重启日志路径以及明确的重启、重装和包回滚说明。使用 `--no-restart` 时,包替换仍会运行,但托管服务不会被停止或重启,因此正在运行的 Gateway 网关可能会继续使用旧代码,直到你手动重启它。 -## Git checkout 流程 +## Git 检出流程 ### 渠道选择 -- `stable`:checkout 最新的非 beta tag,然后构建并运行 Doctor。 -- `beta`:优先使用最新的 `-beta` tag,但当 beta 缺失或更旧时回退到最新的稳定 tag。 -- `dev`:checkout `main`,然后 fetch 并 rebase。 +- `stable`:检出最新的非 beta 标签,然后构建并运行 Doctor。 +- `beta`:优先使用最新的 `-beta` 标签,但当 beta 缺失或更旧时,回退到最新稳定标签。 +- `dev`:检出 `main`,然后 fetch 并 rebase。 ### 更新步骤 - + 要求没有未提交的更改。 - 切换到所选渠道(tag 或 branch)。 + 切换到选定渠道(标签或分支)。 - - 仅 dev。 + + 仅限 dev。 - 在临时 worktree 中运行 lint 和 TypeScript 构建。如果 tip 失败,会向前回退最多 10 个 commit,寻找最新的干净构建。 + 在临时工作树中运行 lint 和 TypeScript 构建。如果顶端提交失败,会向前回退最多 10 个提交,以找到最新的干净构建。 - Rebase 到所选 commit(仅 dev)。 + Rebase 到选定提交(仅 dev)。 - 使用仓库包管理器。对于 pnpm checkout,更新器会按需 bootstrap `pnpm`(先通过 `corepack`,然后回退到临时的 `npm install pnpm@10`),而不是在 pnpm workspace 中运行 `npm run build`。 + 使用仓库包管理器。对于 pnpm 检出,更新器会按需 bootstrap `pnpm`(先通过 `corepack`,然后回退到临时 `npm install pnpm@10`),而不是在 pnpm 工作区内运行 `npm run build`。 构建 Gateway 网关和 Control UI。 - `openclaw doctor` 会作为最终安全更新检查运行。 + `openclaw doctor` 会作为最终的安全更新检查运行。 - 将插件同步到当前渠道。Dev 使用内置插件;stable 和 beta 使用 npm。更新被跟踪的插件安装。 + 将插件同步到当前渠道。Dev 使用内置插件;stable 和 beta 使用 npm。会更新被跟踪的插件安装。 -在 beta 更新渠道上,跟随默认/latest 线的已跟踪 npm 和 ClawHub 插件安装会先尝试插件 `@beta` 版本。如果插件没有 beta 版本,OpenClaw 会回退到记录的默认/latest spec。精确版本和显式 tag 不会被改写。 +在 beta 更新渠道上,遵循默认/latest 线的已跟踪 npm 和 ClawHub 插件安装会先尝试插件 `@beta` 版本。如果插件没有 beta 版本,OpenClaw 会回退到记录的默认/latest spec。对于 npm 插件,当 beta 包存在但安装验证失败时,OpenClaw 也会回退。精确版本和显式标签不会被重写。 -如果精确固定的 npm 插件更新解析到的构件完整性与存储的安装记录不同,`openclaw update` 会中止该插件构件更新,而不是安装它。只有在确认你信任新构件后,才应显式重新安装或更新该插件。 +如果精确固定的 npm 插件更新解析到的构件与存储的安装记录完整性不同,`openclaw update` 会中止该插件构件更新,而不是安装它。只有在验证你信任新构件后,才显式重新安装或更新该插件。 -更新后插件同步失败会使更新结果失败,并停止后续重启工作。修复插件安装或更新错误后,重新运行 `openclaw update`。 +更新后插件同步失败会使更新结果失败,并停止后续重启工作。修复插件安装或更新错误,然后重新运行 `openclaw update`。 -更新后的 Gateway 网关启动时,插件加载仅做验证:启动不会运行包管理器,也不会修改依赖树。包管理器 `update.run` 重启会在包树替换后绕过正常的空闲延迟和重启冷却,因此旧进程无法继续懒加载已删除的 chunk。 +更新后的 Gateway 网关启动时,插件加载仅做验证:启动不会运行包管理器,也不会修改依赖树。包管理器 `update.run` 重启会在包树已替换后绕过正常的空闲延迟和重启冷却,因此旧进程不能继续惰性加载已移除的分块。 -如果 pnpm bootstrap 仍然失败,更新器会提前停止并给出特定于包管理器的错误,而不是尝试在 checkout 中运行 `npm run build`。 +如果 pnpm bootstrap 仍然失败,更新器会提前停止并给出包管理器特定错误,而不是尝试在检出内运行 `npm run build`。 ## `--update` 简写 -`openclaw --update` 会改写为 `openclaw update`(适用于 shell 和 launcher scripts)。 +`openclaw --update` 会重写为 `openclaw update`(对 shell 和启动器脚本有用)。 ## 相关 -- `openclaw doctor`(在 git checkout 上会提示先运行 update) +- `openclaw doctor`(在 git 检出上会先提议运行更新) - [开发渠道](/zh-CN/install/development-channels) - [更新](/zh-CN/install/updating) - [CLI 参考](/zh-CN/cli) diff --git a/docs/zh-CN/help/testing-updates-plugins.md b/docs/zh-CN/help/testing-updates-plugins.md index a76e2faad..e9cc84f5f 100644 --- a/docs/zh-CN/help/testing-updates-plugins.md +++ b/docs/zh-CN/help/testing-updates-plugins.md @@ -1,34 +1,34 @@ --- read_when: - - 更改 OpenClaw 的更新、Doctor、软件包验收或插件安装行为 + - 更改 OpenClaw 更新、Doctor、软件包验收或插件安装行为 - 准备或批准发布候选版本 - - 调试软件包更新、插件依赖清理或插件安装回归问题 + - 调试包更新、插件依赖清理或插件安装回归问题 sidebarTitle: Update and plugin tests summary: OpenClaw 如何验证更新路径、包迁移以及插件安装/更新行为 title: 更新和插件测试 x-i18n: - generated_at: "2026-05-03T08:22:52Z" + generated_at: "2026-05-04T20:59:52Z" model: gpt-5.5 provider: openai - source_hash: 309ac7785a8d49db241989d28580887d3f6739982108af7148b624082c5f23dd + source_hash: e83a847c76f424199b5fccbd9a2b30d0bf01e4f466c4f9822bf7693d1c2ad286 source_path: help/testing-updates-plugins.md workflow: 16 --- -这是用于更新和插件验证的专用检查清单。目标很简单:证明可安装的软件包能够更新真实用户状态,通过 `doctor` 修复陈旧的旧版状态,并且仍然可以从受支持的来源安装、加载、更新和卸载插件。 +这是更新和插件验证的专用检查清单。目标很简单:证明可安装包能够更新真实用户状态,通过 `doctor` 修复过时的旧版状态,并且仍然能从受支持来源安装、加载、更新和卸载插件。 -更广泛的测试运行器映射见 [测试](/zh-CN/help/testing)。实时提供商密钥和会触达网络的套件见 [实时测试](/zh-CN/help/testing-live)。 +如需更广泛的测试运行器映射,请参阅[测试](/zh-CN/help/testing)。如需实时提供商密钥和会触达网络的套件,请参阅[实时测试](/zh-CN/help/testing-live)。 ## 我们保护什么 更新和插件测试保护这些契约: -- 软件包 tarball 是完整的,具有有效的 `dist/postinstall-inventory.json`,并且不依赖未打包的仓库文件。 -- 用户可以从较旧的已发布软件包迁移到候选软件包,而不会丢失配置、智能体、会话、工作区、插件 allowlist 或渠道配置。 -- `openclaw doctor --fix --non-interactive` 负责旧版清理和修复路径。启动过程不应为陈旧的插件状态增长隐藏的兼容性迁移。 -- 插件可从本地目录、git 仓库、npm 软件包和 ClawHub 注册表路径安装。 -- 插件 npm 依赖会安装在托管 npm 根目录中,在信任前被扫描,并在卸载期间通过 npm 移除,避免提升的依赖残留。 -- 当没有任何变更时,插件更新应保持稳定:安装记录、解析后的来源、已安装依赖布局和启用状态都保持不变。 +- 包 tarball 完整,包含有效的 `dist/postinstall-inventory.json`,并且不依赖未打包的仓库文件。 +- 用户可以从较旧的已发布包迁移到候选包,而不会丢失配置、智能体、会话、工作区、插件允许列表或渠道配置。 +- `openclaw doctor --fix --non-interactive` 负责旧版清理和修复路径。启动过程不应为过时插件状态增加隐藏的兼容性迁移。 +- 插件安装可从本地目录、git 仓库、npm 包和 ClawHub 注册表路径正常工作。 +- 插件 npm 依赖安装在受管理的 npm 根目录中,在信任前会被扫描,并在卸载期间通过 npm 移除,因此提升安装的依赖不会残留。 +- 当没有任何变化时,插件更新保持稳定:安装记录、解析后的来源、已安装依赖布局和启用状态都保持完整。 ## 开发期间的本地证明 @@ -40,25 +40,25 @@ pnpm check:changed pnpm test:changed ``` -对于插件安装、卸载、依赖或软件包清单变更,还要运行覆盖已编辑接缝的聚焦测试: +对于插件安装、卸载、依赖或包清单变更,还要运行覆盖已编辑边界的聚焦测试: ```bash pnpm test src/plugins/uninstall.test.ts src/infra/package-dist-inventory.test.ts test/scripts/package-acceptance-workflow.test.ts ``` -在任何软件包 Docker lane 使用 tarball 之前,先证明软件包构件: +在任何包 Docker 通道消费 tarball 之前,先证明包构件: ```bash pnpm release:check ``` -`release:check` 会运行配置/文档/API 漂移检查,写入软件包 dist 清单,运行 `npm pack --dry-run`,拒绝禁止打包的文件,将 tarball 安装到临时前缀中,运行 postinstall,并对内置渠道入口点进行 smoke 测试。 +`release:check` 会运行配置/文档/API 漂移检查,写入包 dist 清单,运行 `npm pack --dry-run`,拒绝被禁止打包的文件,将 tarball 安装到临时前缀中,运行 postinstall,并对内置渠道入口点执行冒烟测试。 -## Docker lanes +## Docker 通道 -Docker lanes 是产品级证明。它们在 Linux 容器内安装或更新真实软件包,并通过 CLI 命令、Gateway 网关启动、HTTP 探测、RPC 状态和文件系统状态断言行为。 +Docker 通道是产品级证明。它们会在 Linux 容器内安装或更新真实包,并通过 CLI 命令、Gateway 网关启动、HTTP 探测、RPC Status 和文件系统状态断言行为。 -迭代时使用聚焦 lanes: +迭代时使用聚焦通道: ```bash pnpm test:docker:plugins @@ -69,16 +69,16 @@ pnpm test:docker:published-upgrade-survivor pnpm test:docker:update-migration ``` -重要 lanes: +重要通道: -- `test:docker:plugins` 验证插件安装 smoke、本地文件夹安装、本地文件夹更新跳过行为、带预安装依赖的本地文件夹、`file:` 软件包安装、带 CLI 执行的 git 安装、git 移动引用更新、带提升传递依赖的 npm 注册表安装、npm 更新空操作、本地 ClawHub fixture 安装和更新空操作、marketplace 更新行为,以及 Claude bundle 启用/检查。设置 `OPENCLAW_PLUGINS_E2E_CLAWHUB=0` 可使 ClawHub 块保持 hermetic/离线。 -- `test:docker:plugin-lifecycle-matrix` 在裸容器中安装候选软件包,让一个 npm 插件依次完成安装、检查、禁用、启用、显式升级、显式降级,以及删除插件代码后的卸载。它会记录每个阶段的 RSS 和 CPU 指标。 +- `test:docker:plugins` 验证插件安装冒烟测试、本地文件夹安装、本地文件夹更新跳过行为、带预安装依赖的本地文件夹、`file:` 包安装、带 CLI 执行的 git 安装、git 移动引用更新、带提升传递依赖的 npm 注册表安装、npm 更新空操作、本地 ClawHub fixture 安装和更新空操作、marketplace 更新行为,以及 Claude 包启用/检查。设置 `OPENCLAW_PLUGINS_E2E_CLAWHUB=0` 可让 ClawHub 区块保持封闭/离线。 +- `test:docker:plugin-lifecycle-matrix` 在裸容器中安装候选包,让一个 npm 插件经过安装、检查、禁用、启用、显式升级、显式降级,以及删除插件代码后的卸载。它会记录每个阶段的 RSS 和 CPU 指标。 - `test:docker:plugin-update` 验证未变更的已安装插件在 `openclaw plugins update` 期间不会重新安装或丢失安装元数据。 -- `test:docker:upgrade-survivor` 将候选 tarball 安装到脏旧用户 fixture 上,运行软件包更新和非交互式 doctor,然后启动一个 local loopback Gateway 网关并检查状态保留。 -- `test:docker:published-upgrade-survivor` 先安装一个已发布基线,通过内置的 `openclaw config set` 配方配置它,将其更新为候选 tarball,运行 doctor,检查旧版清理,启动 Gateway 网关,并探测 `/healthz`、`/readyz` 和 RPC 状态。 -- `test:docker:update-migration` 是清理密集型的已发布更新 lane。它从已配置的 Discord/Telegram 风格用户状态开始,运行基线 doctor,让已配置的插件依赖有机会物化,为已配置的打包插件播种旧版插件依赖残留,更新到候选 tarball,并要求更新后的 doctor 移除旧版依赖根目录。 +- `test:docker:upgrade-survivor` 将候选 tarball 安装到脏的旧用户 fixture 之上,运行包更新和非交互式 Doctor,然后启动 local loopback Gateway 网关并检查状态保留情况。 +- `test:docker:published-upgrade-survivor` 首先安装一个已发布基线,通过内置的 `openclaw config set` 配方对其进行配置,将其更新到候选 tarball,运行 Doctor,检查旧版清理,启动 Gateway 网关,并探测 `/healthz`、`/readyz` 和 RPC Status。 +- `test:docker:update-migration` 是清理密集型的已发布更新通道。它从已配置的 Discord/Telegram 风格用户状态开始,运行基线 Doctor,让已配置的插件依赖有机会落地,为已配置的打包插件植入旧版插件依赖残留,更新到候选 tarball,并要求更新后的 Doctor 移除旧版依赖根目录。 -有用的已发布升级 survivor 变体: +有用的已发布升级幸存者变体: ```bash OPENCLAW_UPGRADE_SURVIVOR_BASELINE_SPEC=openclaw@2026.4.23 \ @@ -90,9 +90,9 @@ OPENCLAW_UPGRADE_SURVIVOR_SCENARIO=bootstrap-persona \ pnpm test:docker:published-upgrade-survivor ``` -可用场景包括 `base`、`feishu-channel`、`bootstrap-persona`、`plugin-deps-cleanup`、`configured-plugin-installs`、`tilde-log-path` 和 `versioned-runtime-deps`。在聚合运行中,`OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues` 会展开为所有已报告问题形态的场景,包括已配置插件安装迁移。 +可用场景包括 `base`、`feishu-channel`、`bootstrap-persona`、`plugin-deps-cleanup`、`configured-plugin-installs`、`stale-source-plugin-shadow`、`tilde-log-path` 和 `versioned-runtime-deps`。在聚合运行中,`OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues` 会展开为所有呈现为已报告问题形态的场景,包括已配置插件安装迁移。 -完整更新迁移有意与 Full Release CI 分离。当发布问题是“从 2026.4.23 起的每个已发布稳定版本是否都能更新到此候选版本并清理插件依赖残留?”时,使用手动 `Update Migration` 工作流: +完整更新迁移有意与完整发布 CI 分离。当发布问题是“从 `2026.4.23` 起每个已发布稳定版本是否都能更新到此候选版本并清理插件依赖残留?”时,请使用手动 `Update Migration` workflow: ```bash gh workflow run update-migration.yml \ @@ -103,20 +103,20 @@ gh workflow run update-migration.yml \ -f scenarios=plugin-deps-cleanup ``` -## Package Acceptance +## 包验收 -Package Acceptance 是 GitHub 原生的软件包门禁。它将一个候选软件包解析为 `package-under-test` tarball,记录版本和 SHA-256,然后针对这个精确 tarball 运行可复用的 Docker E2E lanes。工作流 harness ref 与软件包源 ref 分离,因此当前测试逻辑可以验证较旧的受信任发布。 +包验收是 GitHub 原生包门禁。它会将一个候选包解析为 `package-under-test` tarball,记录版本和 SHA-256,然后针对该精确 tarball 运行可复用 Docker E2E 通道。workflow harness 引用与包源码引用分离,因此当前测试逻辑可以验证较旧的受信任版本。 候选来源: - `source=npm`:验证 `openclaw@beta`、`openclaw@latest` 或精确的已发布版本。 -- `source=ref`:使用所选当前 harness 打包受信任的分支、标签或提交。 -- `source=url`:验证需要 `package_sha256` 的 HTTPS tarball。 +- `source=ref`:使用选定的当前 harness 打包受信任的分支、标签或提交。 +- `source=url`:验证 HTTPS tarball,并要求提供 `package_sha256`。 - `source=artifact`:复用另一个 Actions 运行上传的 tarball。 -Full Release Validation 默认使用 `source=artifact`,从解析后的发布 SHA 构建。对于发布后证明,传入 `package_acceptance_package_spec=openclaw@YYYY.M.D`,让同一个升级矩阵目标指向已发布的 npm 软件包。 +完整发布验证默认使用 `source=artifact`,基于解析后的发布 SHA 构建。对于发布后证明,传入 `package_acceptance_package_spec=openclaw@YYYY.M.D`,让同一升级矩阵以已发布的 npm 包为目标。 -发布检查会使用 package/update/plugin 集合调用 Package Acceptance: +发布检查会用包/更新/插件集合调用包验收: ```text doctor-switch update-channel-switch upgrade-survivor published-upgrade-survivor plugins-offline plugin-update @@ -130,11 +130,11 @@ published_upgrade_survivor_scenarios=reported-issues telegram_mode=mock-openai ``` -这会让软件包迁移、更新渠道切换、陈旧插件依赖清理、离线插件覆盖、插件更新行为和 Telegram 软件包 QA 绑定到同一个解析后的构件上。 +这会让包迁移、更新渠道切换、过时插件依赖清理、离线插件覆盖、插件更新行为和 Telegram 包 QA 使用同一个解析后的构件。 -`all-since-2026.4.23` 是 Full Release CI 升级样本:从 `2026.4.23` 到 `latest` 的每个稳定 npm 已发布版本。要获得详尽的已发布更新迁移覆盖,请在单独的 Update Migration 工作流中使用 `all-since-2026.4.23`,而不是 Full Release CI。`release-history` 仍可用于手动更广泛抽样,适用于你也需要旧版日期前锚点的情况。 +`all-since-2026.4.23` 是完整发布 CI 升级样本:从 `2026.4.23` 到 `latest` 的每个已发布到 npm 的稳定版本。对于穷尽式已发布更新迁移覆盖,请在单独的更新迁移 workflow 中使用 `all-since-2026.4.23`,而不是完整发布 CI。`release-history` 仍可用于手动更宽采样,适用于你还想包含旧版日期前锚点的情况。 -在发布前验证候选版本时,手动运行软件包 profile: +在发布前验证候选包时,手动运行包 profile: ```bash gh workflow run package-acceptance.yml \ @@ -148,49 +148,49 @@ gh workflow run package-acceptance.yml \ -f telegram_mode=mock-openai ``` -当发布问题包含 MCP 渠道、cron/subagent 清理、OpenAI web search 或 OpenWebUI 时,使用 `suite_profile=product`。仅在需要完整 Docker 发布路径覆盖时使用 `suite_profile=full`。 +当发布问题包含 MCP 渠道、cron/subagent 清理、OpenAI web search 或 OpenWebUI 时,使用 `suite_profile=product`。只有在需要完整 Docker 发布路径覆盖时,才使用 `suite_profile=full`。 ## 发布默认值 -对于发布候选版本,默认证明栈是: +对于候选发布版本,默认证明栈是: -1. 用于源代码级回归的 `pnpm check:changed` 和 `pnpm test:changed`。 -2. 用于软件包构件完整性的 `pnpm release:check`。 -3. 用于安装/更新/插件契约的 Package Acceptance `package` profile 或 release-check 自定义软件包 lanes。 -4. 用于特定 OS 安装器、新手引导和平台行为的跨 OS 发布检查。 -5. 仅当变更面触及提供商或托管服务行为时运行实时套件。 +1. `pnpm check:changed` 和 `pnpm test:changed`,用于源码级回归。 +2. `pnpm release:check`,用于包构件完整性。 +3. 包验收 `package` profile 或发布检查自定义包通道,用于安装/更新/插件契约。 +4. 跨 OS 发布检查,用于特定 OS 的安装器、新手引导和平台行为。 +5. 只有当变更表面触及提供商或托管服务行为时,才运行实时套件。 -在维护者机器上,广泛门禁和 Docker/软件包产品证明应在 Testbox 中运行,除非明确执行本地证明。 +在维护者机器上,宽范围门禁和 Docker/包产品证明应在 Testbox 中运行,除非明确要做本地证明。 ## 旧版兼容性 -兼容性宽容范围很窄,并且有时间限制: +兼容宽容范围很窄并且有时限: -- 直到 `2026.4.25` 的软件包,包括 `2026.4.25-beta.*`,可以在 Package Acceptance 中容忍已经发布的软件包元数据缺口。 -- 已发布的 `2026.4.26` 软件包可以对已经发布的本地构建元数据 stamp 文件发出警告。 -- 后续软件包必须满足现代契约。相同缺口会失败,而不是警告或跳过。 +- 到 `2026.4.25` 为止的包,包括 `2026.4.25-beta.*`,在包验收中可以容忍已经发布的包元数据缺口。 +- 已发布的 `2026.4.26` 包可以对已经发布的本地构建元数据戳文件发出警告。 +- 后续包必须满足现代契约。同样的缺口会失败,而不是警告或跳过。 -不要为这些旧形态添加新的启动迁移。添加或扩展 doctor 修复,然后用 `upgrade-survivor` 或 `published-upgrade-survivor` 证明它。 +不要为这些旧形态添加新的启动迁移。添加或扩展 Doctor 修复,然后用 `upgrade-survivor` 或 `published-upgrade-survivor` 证明它。 ## 添加覆盖 -更改更新或插件行为时,在能够因正确原因失败的最低层添加覆盖: +更改更新或插件行为时,在能因正确原因失败的最低层添加覆盖: -- 纯路径或元数据逻辑:源代码旁边的单元测试。 -- 软件包清单或打包文件行为:`package-dist-inventory` 或 tarball 检查器测试。 -- CLI 安装/更新行为:Docker lane 断言或 fixture。 +- 纯路径或元数据逻辑:源码旁的单元测试。 +- 包清单或打包文件行为:`package-dist-inventory` 或 tarball 检查器测试。 +- CLI 安装/更新行为:Docker 通道断言或 fixture。 - 已发布版本迁移行为:`published-upgrade-survivor` 场景。 -- 注册表/软件包来源行为:`test:docker:plugins` fixture 或 ClawHub fixture server。 -- 依赖布局或清理行为:同时断言运行时执行和文件系统边界。npm 依赖可能被提升到托管 npm 根目录下,所以测试应证明根目录已被扫描/清理,而不是假设存在软件包本地 `node_modules` 树。 +- 注册表/包来源行为:`test:docker:plugins` fixture 或 ClawHub fixture 服务器。 +- 依赖布局或清理行为:同时断言运行时执行和文件系统边界。npm 依赖可能会被提升到受管理的 npm 根目录下,因此测试应证明该根目录被扫描/清理,而不是假设存在包本地的 `node_modules` 树。 -默认保持新的 Docker fixtures hermetic。除非测试重点是实时注册表行为,否则使用本地 fixture 注册表和伪软件包。 +默认保持新的 Docker fixture 封闭。除非测试目的就是实时注册表行为,否则使用本地 fixture 注册表和假包。 ## 失败分诊 从构件身份开始: -- Package Acceptance `resolve_package` 摘要:来源、版本、SHA-256 和构件名称。 -- Docker 构件:`.artifacts/docker-tests/**/summary.json`、`failures.json`、lane 日志和重新运行命令。 -- Upgrade survivor 摘要:`.artifacts/upgrade-survivor/summary.json`,包括基线版本、候选版本、场景、阶段耗时和配方步骤。 +- 包验收 `resolve_package` 摘要:来源、版本、SHA-256 和构件名称。 +- Docker 构件:`.artifacts/docker-tests/**/summary.json`、`failures.json`、通道日志和重新运行命令。 +- 升级幸存者摘要:`.artifacts/upgrade-survivor/summary.json`,包括基线版本、候选版本、场景、阶段耗时和配方步骤。 -优先使用相同软件包构件重新运行失败的精确 lane,而不是重新运行整个发布总括流程。 +优先使用同一个包构件重新运行失败的精确通道,而不是重新运行整个发布总括任务。 diff --git a/docs/zh-CN/plugins/manage-plugins.md b/docs/zh-CN/plugins/manage-plugins.md index 3af175457..ac321d3cb 100644 --- a/docs/zh-CN/plugins/manage-plugins.md +++ b/docs/zh-CN/plugins/manage-plugins.md @@ -4,18 +4,18 @@ read_when: - 你想在 ClawHub 和 npm 插件分发之间做出选择 - 你正在发布一个插件包 sidebarTitle: Manage plugins -summary: 用于安装、列出、卸载、更新和发布 OpenClaw 插件的快速示例 +summary: 安装、列出、卸载、更新和发布 OpenClaw 插件的快速示例 title: 管理插件 x-i18n: - generated_at: "2026-05-02T21:57:54Z" + generated_at: "2026-05-04T20:59:54Z" model: gpt-5.5 provider: openai - source_hash: ec25a811b942f155f5d5e4cac475dbef74f0616bc85ff182c74598184e910320 + source_hash: 7fa7aa78c1ba9c83ba09bea073987ed5e037031f7c7f29307fe18934b0bd2a1c source_path: plugins/manage-plugins.md workflow: 16 --- -大多数插件工作流只需要几个命令:搜索、安装、重启 Gateway 网关、验证,以及在不再需要插件时卸载。 +大多数插件工作流只需几个命令:搜索、安装、重启 Gateway 网关、验证,并在不再需要插件时卸载。 ## 列出插件 @@ -26,35 +26,35 @@ openclaw plugins list --verbose openclaw plugins list --json ``` -脚本请使用 `--json`。当插件包声明了 `dependencies` 或 `optionalDependencies` 时,它会包含注册表诊断信息以及每个插件的静态 `dependencyStatus`。 +对脚本使用 `--json`。当插件包声明 `dependencies` 或 `optionalDependencies` 时,它会包含注册表诊断信息和每个插件的静态 `dependencyStatus`。 ```bash openclaw plugins list --json \ | jq '.plugins[] | {id, enabled, format, source, dependencyStatus}' ``` -`plugins list` 是一次冷态清单检查。它显示 OpenClaw 能从配置、清单和插件注册表中发现的内容;它不能证明已经运行的 Gateway 网关进程已导入该插件运行时。 +`plugins list` 是一次冷清单检查。它显示 OpenClaw 可以从配置、清单和插件注册表中发现的内容;它不能证明已经运行的 Gateway 网关进程导入了插件运行时。 ## 安装插件 ```bash -# 在 ClawHub 中搜索插件包。 +# Search ClawHub for plugin packages. openclaw plugins search "calendar" -# 裸包规范会先尝试 ClawHub,然后回退到 npm。 +# Bare package specs try ClawHub first, then npm fallback. openclaw plugins install -# 强制使用一个来源。 +# Force one source. openclaw plugins install clawhub: openclaw plugins install npm: -# 安装特定版本或 dist-tag。 +# Install a specific version or dist-tag. openclaw plugins install clawhub:@1.2.3 openclaw plugins install clawhub:@beta openclaw plugins install npm:@scope/openclaw-plugin@1.2.3 openclaw plugins install npm:@openclaw/codex -# 从 git 或本地开发检出安装。 +# Install from git or a local development checkout. openclaw plugins install git:github.com/acme/openclaw-plugin@v1.0.0 openclaw plugins install ./my-plugin openclaw plugins install --link ./my-plugin @@ -67,7 +67,7 @@ openclaw gateway restart openclaw plugins inspect --runtime --json ``` -当你需要证明插件已注册运行时表面时,请使用 `inspect --runtime`,例如工具、钩子、服务、Gateway 网关方法,或插件拥有的 CLI 命令。 +当你需要证明插件注册了运行时表面,例如工具、钩子、服务、Gateway 网关方法或插件拥有的 CLI 命令时,请使用 `inspect --runtime`。 ## 更新插件 @@ -77,16 +77,16 @@ openclaw plugins update openclaw plugins update --all ``` -如果插件是从 npm dist-tag(例如 `@beta`)安装的,后续 `update ` 调用会复用该记录的标签。传入显式 npm 规范会将被跟踪的安装切换到该规范,以供后续更新使用。 +如果插件是从 npm dist-tag(例如 `@beta`)安装的,之后的 `update ` 调用会复用该记录的标签。传入显式 npm spec 会将跟踪的安装切换到该 spec,供未来更新使用。 ```bash openclaw plugins update @scope/openclaw-plugin@beta openclaw plugins update @scope/openclaw-plugin ``` -当插件此前固定到精确版本或标签时,第二个命令会将插件移回注册表的默认发布线。 +当插件之前固定到精确版本或标签时,第二个命令会将插件移回注册表的默认发布线。 -当 `openclaw update` 在 beta 渠道上运行时,默认线 npm 和 ClawHub 插件记录会先尝试匹配的插件 `@beta` 版本。如果该 beta 版本不存在,OpenClaw 会回退到记录的默认/latest 规范。精确版本和显式标签(例如 `@rc` 或 `@beta`)会被保留。 +当 `openclaw update` 在 beta 渠道上运行时,默认线 npm 和 ClawHub 插件记录会先尝试匹配的插件 `@beta` 发布。如果该 beta 发布不存在,OpenClaw 会回退到记录的默认/latest spec。对于 npm 插件,当 beta 包存在但安装验证失败时,OpenClaw 也会回退。精确版本和显式标签(例如 `@rc` 或 `@beta`)会被保留。 ## 卸载插件 @@ -97,15 +97,15 @@ openclaw plugins uninstall --keep-files openclaw gateway restart ``` -卸载会移除插件的配置条目、插件索引记录、允许/拒绝列表条目,以及适用时的链接加载路径。除非传入 `--keep-files`,否则托管安装目录会被移除。 +卸载会移除插件的配置条目、插件索引记录、允许/拒绝列表条目,以及在适用时移除链接的加载路径。托管安装目录会被移除,除非你传入 `--keep-files`。 ## 发布插件 -你可以将外部插件发布到 [ClawHub](https://clawhub.ai)、npmjs.com,或同时发布到两者。 +你可以将外部插件发布到 [ClawHub](https://clawhub.ai)、npmjs.com,或两者都发布。 ### 发布到 ClawHub -ClawHub 是 OpenClaw 插件的主要公开发现表面。它会在安装前向用户提供可搜索的元数据、版本历史和注册表扫描结果。 +ClawHub 是 OpenClaw 插件的主要公共发现表面。它让用户在安装前获得可搜索的元数据、版本历史和注册表扫描结果。 ```bash npm i -g clawhub @@ -115,7 +115,7 @@ clawhub package publish your-org/your-plugin clawhub package publish your-org/your-plugin@v1.0.0 ``` -用户可通过以下方式从 ClawHub 安装: +用户可以通过以下方式从 ClawHub 安装: ```bash openclaw plugins install clawhub: @@ -143,7 +143,7 @@ openclaw plugins install npm publish --access public ``` -用户可通过以下方式安装仅 npm 的插件: +用户可以通过以下方式仅从 npm 安装: ```bash openclaw plugins install npm:@acme/openclaw-plugin @@ -151,14 +151,14 @@ openclaw plugins install npm:@acme/openclaw-plugin@beta openclaw plugins install npm:@acme/openclaw-plugin@1.0.0 ``` -如果同一个包也可在 ClawHub 上获得,`npm:` 会跳过 ClawHub 查找,并强制使用 npm 解析。 +如果同一个包也可在 ClawHub 上获得,`npm:` 会跳过 ClawHub 查找并强制使用 npm 解析。 -## 来源选择 +## 源选择 -- **ClawHub**:当你需要 OpenClaw 原生发现、扫描摘要、版本和安装提示时使用。 -- **npmjs.com**:当你已经发布 JavaScript 包,或需要 npm dist-tag/私有注册表工作流时使用。 +- **ClawHub**:当你想要 OpenClaw 原生发现、扫描摘要、版本和安装提示时使用。 +- **npmjs.com**:当你已经发布 JavaScript 包,或需要 npm dist-tag/private registry 工作流时使用。 - **Git**:当你想直接从分支、标签或提交安装时使用。 -- **本地路径**:当你正在同一台机器上开发或测试插件时使用。 +- **本地路径**:当你在同一台机器上开发或测试插件时使用。 ## 相关内容 diff --git a/docs/zh-CN/reference/test.md b/docs/zh-CN/reference/test.md index 151bf8539..4fe51b7b0 100644 --- a/docs/zh-CN/reference/test.md +++ b/docs/zh-CN/reference/test.md @@ -4,60 +4,60 @@ read_when: summary: 如何在本地运行测试(vitest),以及何时使用强制/覆盖率模式 title: 测试 x-i18n: - generated_at: "2026-05-02T18:56:59Z" + generated_at: "2026-05-04T20:59:42Z" model: gpt-5.5 provider: openai - source_hash: 8a88599d079e1ca42d73d354b582d67dd85be40fc92eed5abe6dcef37dc21f4f + source_hash: 7e8421518d63cade24ce8c2a08fa10538b66d2332b1eb5744e47c6d5a5e84605 source_path: reference/test.md workflow: 16 --- -- 完整测试工具包(套件、实时、Docker):[测试](/zh-CN/help/testing) +- 完整测试工具包(套件、实时测试、Docker):[测试](/zh-CN/help/testing) - 更新和插件包验证:[更新和插件测试](/zh-CN/help/testing-updates-plugins) -- `pnpm test:force`:终止任何占用默认控制端口的残留 Gateway 网关进程,然后使用隔离的 Gateway 网关端口运行完整 Vitest 套件,避免服务器测试与正在运行的实例冲突。当先前的 Gateway 网关运行遗留端口 18789 被占用时使用此命令。 -- `pnpm test:coverage`:使用 V8 覆盖率运行单元套件(通过 `vitest.unit.config.ts`)。这是已加载文件的单元覆盖率门禁,不是全仓库所有文件覆盖率。阈值为 70% 行/函数/语句和 55% 分支。由于 `coverage.all` 为 false,该门禁测量单元覆盖率套件加载的文件,而不是把每个拆分车道源文件都视为未覆盖。 +- `pnpm test:force`:终止任何仍占用默认控制端口的残留 Gateway 网关进程,然后使用隔离的 Gateway 网关端口运行完整 Vitest 套件,避免服务器测试与正在运行的实例冲突。当前一次 Gateway 网关运行留下端口 18789 被占用时使用。 +- `pnpm test:coverage`:使用 V8 覆盖率运行单元套件(通过 `vitest.unit.config.ts`)。这是已加载文件的单元覆盖率门禁,不是整个仓库的全文件覆盖率。阈值为行/函数/语句 70%,分支 55%。因为 `coverage.all` 为 false,该门禁衡量单元覆盖率套件加载的文件,而不是把每个分片通道源文件都视为未覆盖。 - `pnpm test:coverage:changed`:仅对自 `origin/main` 以来变更的文件运行单元覆盖率。 -- `pnpm test:changed`:廉价的智能变更测试运行。它会从直接测试编辑、同级 `*.test.ts` 文件、显式源映射和本地导入图运行精确目标。宽泛/配置/包变更会被跳过,除非它们映射到精确测试。 -- `OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed`:显式的宽泛变更测试运行。当测试 harness/配置/包编辑应回退到 Vitest 更宽泛的变更测试行为时使用。 -- `pnpm changed:lanes`:显示相对于 `origin/main` 的差异触发的架构车道。 -- `pnpm check:changed`:针对相对于 `origin/main` 的差异运行智能变更检查门禁。它会为受影响的架构车道运行类型检查、lint 和保护命令,但不会运行 Vitest 测试。使用 `pnpm test:changed` 或显式 `pnpm test ` 获取测试证明。 -- `pnpm test`:通过有作用域的 Vitest 车道路由显式文件/目录目标。未指定目标的运行使用固定分片组,并展开为叶子配置以便本地并行执行;扩展组始终展开为按扩展划分的分片配置,而不是一个巨大的根项目进程。 -- 测试包装器运行结束时会带有简短的 `[test] passed|failed|skipped ... in ...` 摘要。Vitest 自身的耗时行保留为每个分片的详情。 -- 共享 OpenClaw 测试状态:当测试需要隔离的 `HOME`、`OPENCLAW_STATE_DIR`、`OPENCLAW_CONFIG_PATH`、配置夹具、工作区、智能体目录或认证配置存储时,在 Vitest 中使用 `src/test-utils/openclaw-test-state.ts`。 -- 进程 E2E 辅助工具:当 Vitest 进程级 E2E 测试需要把运行中的 Gateway 网关、CLI 环境、日志捕获和清理集中到一处时,使用 `test/helpers/openclaw-test-instance.ts`。 -- Docker/Bash E2E 辅助工具:source `scripts/lib/docker-e2e-image.sh` 的车道可以将 `docker_e2e_test_state_shell_b64