For AI agents: the complete documentation index is available at https://scriptedalchemy.github.io/agent-bundle/zh/llms.txt, the full documentation bundle is available at https://scriptedalchemy.github.io/agent-bundle/zh/llms-full.txt, and this page is available as Markdown at https://scriptedalchemy.github.io/agent-bundle/zh/guide/distribution/preview-packages.md.
跳至主要内容
  • 简体中文
  • 预览包

    pkg.pr.new 是包分发通道。 每次 CI 的 package-preview 运行都会把全部四个可发布的工作区包 以真实、可安装的 tarball 形式发布到一个按 commit SHA 与 pull request 索引的免费持续发布注册表。消费者按 commit URL 固定版本;不需要也不应配置 npm 注册表凭据。

    安装命令与 runtime 配对规则在安装中。本页讲的是通道本身:预览包从哪里来、 你能信任它到什么程度,以及固定版本究竟保证了什么。

    预览包从哪里来

    .github/workflows/package-preview.yml 在一次完整构建之后运行 pnpm preview:publish。pull request 直接调用它;.github/workflows/release.yml 在每次推送到 main 时复用它。它以 --previewVersion --peerDeps --no-compact --no-template 发布 packages/agent-bundle、 packages/rsc-runtime、packages/rsc-markdown-stream(@agent-bundle/runtime 所依赖的 Markdown 渲染器)与 packages/create-agent-bundle。

    pull request 运行按 PR 分组并启用 cancel-in-progress,因此更新的推送会取消被取代的 PR 构建。 在 main 上,串行的 Release packages 工作流会等待可复用的 preview job,且不会取消较早的 release 运行。

    PR 或提交上的「Publish pkg.pr.new preview」检查会链接到该次构建的确切 URL。预览包由发布门禁所校验的 同一份 pnpm build 输出构建而来,但它们不是 npm 正式版本,并且携带预览版本号。

    固定版本,以及一条历史遗留注意事项

    配对规则与安装命令在安装中;有两个细节属于通道本身。

    PR 引用会解析到该 PR 最近一次发布的预览,因此 @1 表示「PR #1 最新一次构建」,而不是某个固定 提交。短 SHA 永远不会移动,这正是 lockfile 应当携带它的原因。

    在 peer 改写落地(PR #46)之前发布的预览包仍携带原始的 agent-bundle@^0.1.0 peer 范围,因此用 npm 配对安装那些较早的 SHA 仍然需要 --legacy-peer-deps。更新的预览包用原生 npm 即可安装。

    原生 pnpm 11 是例外。@agent-bundle/runtime 的预览包会把它的 rsc-markdown-stream 依赖指向渲染器同一 SHA 的预览 tarball,而 pnpm 11 的 blockExoticSubdeps(默认 true)会拒绝从 tarball URL 解析的传递依赖, 报 ERR_PNPM_EXOTIC_SUBDEP。请在消费项目的 pnpm-workspace.yaml 中设置 blockExoticSubdeps: false, 或改用 npm 安装预览包。

    脚手架发布在同一条通道上,其设计意图是直接运行而不是安装:

    npx https://pkg.pr.new/ScriptedAlchemy/agent-bundle/create-agent-bundle@<sha-or-pr> \
      my-plugin

    脚手架生成的项目会把 agent-bundle 固定到脚手架自身所来自的那个提交的预览版本,因此上述配对规则的 两侧会自动成立。

    合并 Version Packages

    Release packages 工作流会记录 version-maintenance-only、preview-release 或 failed 之一, 并列出已执行与已跳过的阶段。成功刷新 Version Packages PR 时结果为 version-maintenance-only。 合并该 PR 时,Release packages 会先调用可复用的 Package preview 工作流,发布并解析全部四个 https://pkg.pr.new/ScriptedAlchemy/agent-bundle/<package>@<sha> URL。release job 依赖这项证明, 并对完全相同的 merge SHA 执行资格认定,所以绿色表示打包门禁已经通过,且每个按 commit 固定的包都可安装。

    pnpm check:release 会运行 pnpm pack:dry-run、pnpm lint:release 与 pnpm test:packed:release。lint:release 先对打包后的 agent-bundle、@agent-bundle/runtime、rsc-markdown-stream 与 create-agent-bundle tarball 以 esm-only profile 运行 attw,再用 scripts/check-declaration-imports.mjs 检查同一份文件清单:消费者能从 exports 触达的每个 .d.ts 只能导入包内文件、包自身通过 exports 公开的子路径、能被 imports 映射解析的 # 导入、Node 内建模块,以及在 dependencies、 peerDependencies 或 optionalDependencies 中声明的包,绝对路径和 URL 在消费者的安装中永远无法解析, 任何打包声明里出现 zod 这类 devDependency 都会让门禁失败,lint:release 以 --strict 运行该检查,因此没有任何入口触达的内部声明与可触达声明一样会失败(不带该参数时只报告为 warning)。可触达性从 exports 下的每个 types 目标以及旧式 types 字段出发;/// <reference types> 按裸导入同样检查;相对导入、 /// <reference path> 或 exports 目标指向压缩包中不存在的文件时也会失败。publint 不是单独的门禁:每个可发布包的 rslib build 都会通过 rsbuild-plugin-publint 运行它,并在出现 warning 时让构建失败。该门禁仅用于 发布,并不替代日常的 pnpm check 交付门禁。

    下一步

    • 安装:确切的安装与配对命令。
    • 产物校验:这些预览包所经过的 prepack 清单门禁。