SuperAPI AI 工具集

release-smoke-test

测试与质量

查看项目

更新于 10-27 16:32

技能介绍

Release Smoke Test 是一个用于在正式发布到 npm 之前验证 oh-my-opencode-slim 候选版本的技能。它的核心原则是测试打包后的产物,而不是 @latest,也不是源码树。

用途 该技能用于在发布前对 oh-my-opencode-slim 的候选版本或缺陷修复进行冒烟验证,确保打包产物在隔离环境中能够正常运行,并且原始崩溃特征不再出现。

核心工作流

  1. 从发布准备分支或提交开始。
  2. 构建并打包候选版本。
  3. 将 tarball 安装到一个临时应用中。
  4. 创建隔离的 OpenCode 配置,指向已安装的 node_modules/oh-my-opencode-slim/dist/index.js。
  5. 运行 opencode debug config,并在进行隔离冒烟时验证 plugin_origins 仅包含预期的插件。
  6. 运行非纯模式的 opencode run --print-logs --log-level DEBUG。
  7. 在隔离日志中搜索原始崩溃特征。
  8. 在发布 issue 或 PR 上记录确切的产物、模型、OpenCode 版本、命令形态、结果和限制。

打包候选版本 使用临时目录,使发布验证不依赖本地包缓存。

SMOKE=/tmp/oh-my-opencode-slim-release-smoke rm -rf "$SMOKE" mkdir -p "$SMOKE/pkg" "$SMOKE/app" "$SMOKE/home" "$SMOKE/xdg/opencode" "$SMOKE/run"

bun run build npm pack --pack-destination "$SMOKE/pkg"

安装 tarball:

cd "$SMOKE/app" bun init -y bun add "$SMOKE/pkg"/oh-my-opencode-slim-*.tgz node -p "require('./node_modules/oh-my-opencode-slim/package.json').version"

隔离配置 写入最小 OpenCode 配置:

cat > "$SMOKE/xdg/opencode/opencode.json" <<EOF { "model": "opencode/deepseek-v4-flash-free", "plugin": [ "file://$SMOKE/app/node_modules/oh-my-opencode-slim/dist/index.js" ], "agent": { "orchestrator": { "model": "opencode/deepseek-v4-flash-free" } } } EOF

使用 env -i 获得最干净的冒烟环境。这会剥离宿主机的 OPENCODE_、ORCA_ 以及项目覆盖变量,这些变量可能静默添加插件或提供者别名。

env -i PATH="$PATH" HOME="$SMOKE/home" XDG_CONFIG_HOME="$SMOKE/xdg"
opencode debug config

确认:

  • plugin_origins 恰好有一个条目。
  • 该条目指向临时应用的打包 dist/index.js。
  • 模型是本次冒烟预期的模型。

如果 OpenCode 需要来自宿主机环境的提供者别名,则运行第二次非隔离的、针对特定模型的冒烟,并明确标注其隔离性较弱。

运行时冒烟 使用超时运行实际提示:

env -i PATH="$PATH" HOME="$SMOKE/home" XDG_CONFIG_HOME="$SMOKE/xdg"
timeout 120
opencode run --print-logs --log-level DEBUG "Say OK only."

预期结果:

OK

在日志中搜索缺陷特征。对于 OpenCode 1.17.11 的 malformed-message 崩溃,使用:

rg "message\.info\.role|undefined is not an object|Cannot read properties of undefined|TypeError"
"$SMOKE/home/.local/share/opencode/log" -n 2>/dev/null || true

不应出现任何匹配。

OpenAI / 宿主提供者冒烟 如果完全隔离的环境无法解析 OpenAI 提供者别名,则在保持插件路径指向 tarball 安装的同时,运行单独的宿主提供者冒烟。

mkdir -p "$SMOKE/config" cat > "$SMOKE/config/opencode.json" <<EOF { "model": "openai/gpt-5.6-fast", "plugin": [ "file://$SMOKE/app/node_modules/oh-my-opencode-slim/dist/index.js" ], "agent": { "orchestrator": { "model": "openai/gpt-5.6-fast" } } } EOF

OPENCODE_CONFIG_DIR="$SMOKE/config"
timeout 120
opencode run --print-logs --log-level DEBUG "Say OK only."

将此报告为宿主提供者冒烟,因为现有的项目、用户或 Orca OpenCode 配置可能仍会合并进来。使用 opencode debug config 披露还加载了什么。

报告模板

Release-candidate smoke validation

  • Commit under test:
  • Tarball:
  • Installed package version:
  • OpenCode version:
  • Config isolation: sanitized env -i / host-provider
  • Plugin origin:
  • Model:
  • Command:
  • Result:
  • Crash signature search:
  • Limitations:

适用场景 适用于验证打包插件产物、发布分支、崩溃修复等发布前检查场景。

限制 资料未提供关于收费、价格、平台支持范围或效果保证的信息。该技能依赖 OpenCode、bun、npm、rg 等工具,具体版本要求暂未提供。