外观
受支持的独立目标:官方 Pi 0.85.1,Linux x64。请将同目录下的发行资源与可执行文件一同保留。其他版本、操作系统、架构与打包方式不在支持范围内。
Pi 的扩展加载器把内嵌的 SDK 提供给 binary-bootstrap.ts,后者会等待现有已配置的运行器完成后退出。启动鉴权、复活租约、控制、释放与进程关闭观察仍与 npm 共享。每个独立运行拥有自己的宿主;该运行内的原生会话共享宿主。不引入单会话 CLI 协议、运行时下载/安装、备用 SDK 或前台回退。npm 版 Pi 保留其 Node 运行器、对等别名以及检测到的 npm PI_PACKAGE_DIR 覆盖(包括在没有 npm 根目录时拒绝)。
实现与生命周期 fixture 源自 @xz-dev 的 PR #2049,源码提交 910807bfefcf9ee41d73fa25ec86dcd75ab8f4b2(Xiangzhe,xiangzhedev@gmail.com)。集成保留了生命周期契约,并精简了注释,而非移除其证据门槛。
官方二进制门槛
在已安装 Node、npm、tar 与 bubblewrap 的 Linux x64 上,将依赖与校验和锁定的发行版分开准备,再单独执行:
bash
npm ci --ignore-scripts
release_dir="$(mktemp -d)"
url="$(node -p 'require("./test/smoke/standalone-release.json").url')"
sha="$(node -p 'require("./test/smoke/standalone-release.json").archiveSha256')"
curl --fail --location --retry 3 "$url" --output "$release_dir/release.tar.gz"
printf '%s %s\n' "$sha" "$release_dir/release.tar.gz" | sha256sum --check -
tar -xzf "$release_dir/release.tar.gz" -C "$release_dir"
node test/smoke/standalone-matrix.mjs "$release_dir/pi/pi" "$(mktemp -d)/matrix"official-standalone CI 任务运行该门槛。归档与可执行文件的哈希都被锁定。18 个模式各获得一个全新阶段:无文件系统核心 SDK/shim、为空的安装缓存、隔离的网络/PID 命名空间。裸 Bun SDK 导入必须失败;可接受的执行使用 Pi 实际的加载器。缺少沙箱支持会失败而非跳过。请使用磁盘支持的存储:保留的阶段可能占用若干 GiB。
矩阵覆盖公开启动/通知、工作流、同运行并发会话、并行停止、定向 steer/interrupt、子任务/工具/运行截止时间、缺失 bootstrap、生成后持久化/鉴权失败、SDK 初始化失败、畸形 bootstrap 输入/EOF 以及有授权的阳性对照,以及竞争复活。提供方是确定性的,但 SDK 会话、运行器与公开扩展都是真实的。只有启动失败写入会被报告为错误。
matrix.json 记录完整/部分结果;inputs.json 冻结源码标识,所有模式必须使用相同的包哈希。检查每个模式的日志、identity.json、生命周期/通知证据、status.json 与 process-terminal.json。持久化的结果并非退出证明:该门槛另行等待观察到的关闭,在沙箱拆卸前验证死 PID,并检查会话关闭/租约释放。CI 保留回执,以及至多 32 MiB 压缩后的生命周期证据。贡献者本地通过并不能为不同的集成快照建立验收。
如需聚焦诊断,使用 node test/smoke/standalone-background.mjs "$release_dir/pi/pi" "$(mktemp -d)/check" bootstrap-errors(或其他矩阵模式)。聚焦通过并非完整门槛。
Npm 回归与本地试用
现有的 npm 全新安装 CI 覆盖真实 SDK 0.85.0 与 0.85.1。独立 CI 任务同样在无运行时网络的情况下检查公开 npm 启动路径:
bash
npm_checks="$(mktemp -d)"
node test/smoke/pi085-clean-install.mjs "$npm_checks/sdk" 0.85.1
node test/smoke/npm-background.mjs "$npm_checks/sdk" "$npm_checks/launch"要在不替换安装的情况下试用一个 checkout,请使用隔离的 agent 目录启动一个独立的受支持 Pi 进程:
bash
PI_CODING_AGENT_DIR="$(mktemp -d)" "$release_dir/pi/pi" \
--no-extensions --no-skills --no-prompt-templates --extension "$PWD/index.ts"在该隔离会话中配置一个提供方,请求一个只读的后台子任务并检查其通知/运行产物。这只为该进程加载该 checkout;它不安装候选版本,也不复用常规凭据。请保持父会话存活以便接收通知。
