mcpField
R
release-smoke-test

release-smoke-test

github.com/alvinunreal测试与质量9.8k42 次安装2 天前更新
代码仓库

关于 release-smoke-test

release-smoke-test 是用于 oh-my-opencode-slim 发布前验证的技能,面向准备发布到 npm 的维护者。它在临时应用中测试打包产物,并记录产物、环境、结果及限制。

主要功能

  1. 01构建并打包候选版本
  2. 02在临时应用中安装 tarball
  3. 03配置隔离的 OpenCode 环境
  4. 04检查插件来源与调试日志
  5. 05记录验证详情和限制

适用场景

  1. 01发布到 npm 前验证候选版本
  2. 02检查打包产物是否复现崩溃
  3. 03区分隔离测试与宿主提供方测试结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alvinunreal/oh-my-opencode-slim --skill release-smoke-test

安装后在 Claude Code 中输入/release-smoke-test确认已加载。

详细介绍

发布冒烟测试

使用此技能在公开发布到 npm 前验证 oh-my-opencode-slim 候选版本。测试打包后的产物,而不是 @latest,也不是源码树。

核心工作流

  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 的格式错误消息崩溃,请使用:

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-6-sol-fast",
  "plugin": [
    "file://$SMOKE/app/node_modules/oh-my-opencode-slim/dist/index.js"
  ],
  "agent": {
    "orchestrator": {
      "model": "openai/gpt-6-sol-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:

评论

支持 Markdown