构建与分发

直接下载已发布的 SDK 与 Server,或从固定源码构建候选包并核对交付证据。

需要直接使用 SDK、server 或开发者设备 CLI,可从 SDK 0.1.2 Developer Alpha下载带依赖的归档、校验和及源码元数据,按 SDK 首次真实任务运行;Linux 服务端可按已发布 Server 归档部署路径操作。下面是维护者构建流程。

设备用户直接下载 v0.1.2 macOS 客户端,按客户端快速开始安装,无需运行本页命令。本页面向开发者与维护者,说明如何从固定提交构建独立运行包。运行包分别包含 server、daemon、controller 和 SDK 归档;所有 workspace package 保持 private,生成本地候选不会自动上传 npm 或创建 GitHub Release。

从冻结源码构建#

使用可信源码提交,在隔离目录中安装并串行运行;check:privacy 需要先安装 Gitleaks(macOS:brew install gitleaks)。

sh
npm install --global pnpm@12.15.0
pnpm install --frozen-lockfile
pnpm check
pnpm smoke:source
pnpm check:privacy
pnpm audit --prod
pnpm audit
pnpm bundle .local/bundles/candidate
node --import tsx scripts/accept-bundle.ts .local/bundles/candidate --offline

bundle 输出三个完整运行目录及 controller.tgz。依赖由冻结锁文件安装,分发时携带实际依赖,不依赖源码工作区或 registry。运行包带项目许可、第三方索引和 daemon 补丁;封存后不要在其中重装依赖。

设备包必须在目标平台构建,不跨系统复制 node_modules。设备执行范围为 macOS arm64:App v0.1.3 与 SDK sdk-v0.1.2 均提供 Codex 支持和 dsh 实验适配;新源码或候选包需按自身 revision 验收,不能据此扩展 App 的已发布能力。Linux 构建的 daemon 仅为内部检查产物,不构成设备支持。

候选归档#

sh
pnpm package:local --bundles .local/bundles/candidate --output .local/distribution/candidate

输出 server/controller/daemon 归档、离线 SDK、release.json、README.txt 和 SHA256SUMS。产物去除构建用户属主与 macOS 扩展属性、ACL 和文件标志。来源为实际源码 revision,工作区未提交时明确标记 dirty。

在 Linux 构建 server 镜像并一同导出:

sh
docker build -t harness-dock-server:<固定提交> .local/bundles/candidate/server
pnpm package:local --bundles .local/bundles/candidate \
  --output .local/distribution/linux-candidate --server-image harness-dock-server:<固定提交>

命令只导出已存在的本地 Linux 镜像,不推送 registry、不运行或部署服务。摘要用于完整性检查,不替代源码来源和发布者认证。

CI#

CI 在 main push、pull request 和手动触发时运行 macOS/Linux 构建、类型、确定性测试、无原生账户的源码冒烟、独立离线分发、密钥/隐私检查及依赖审计,不提供 Provider 凭据。

在 Actions 手动运行 CI 并启用 prepare_artifacts,才额外生成可下载候选包;Linux 作业构建并导出 server 镜像。核对工作流成功状态、源码提交、平台、artifact 摘要和 release.json;配置文件存在不代表实际构建成功。

真实 Codex 模型检查需在已登录的受控设备显式执行,见 验证方法。设备首装、升级和回滚另按 设备维护 验收。

交付检查#

  • 冻结的源码、版本、依赖和变更说明一致;工作区清洁。
  • 运行包和 SDK 在仓库外可安装、编译与启动,许可和补丁完整。
  • 真实能力有对应环境证据;不把协议 ready 当作全部工具可用。
  • 实际归档、完整待分发历史与软链目标无凭据、私人地址或相邻项目内容。
  • 独立设备的安装和升级限制已明确,恢复材料由所有者保存。

密钥扫描与隐私语义复核分别执行。仅分发本仓库,不打包本机 .local/、认证、会话、日志或相邻仓库。仓库可见性、公共 Release、npm/镜像发布和现用服务部署需要各自明确授权。

App v0.1.3 发行#

v* 标签触发 macOS App 工作流:从已进入 main 的干净提交安装锁定依赖,验证源码、离线运行包和 GPUI 客户端,生成 macOS 15+ arm64 ZIP。Release 仅包含客户端、校验和、README 与 release.json;不上传本机配置、日志或测试证据。发布前下载读回并比对摘要。SDK 继续由 sdk-v* 独立工作流发行,不发布 npm。

本地构建 GPUI 客户端#

客户端位于 apps/gpui-panel,固定 GPUI Kit 0.9.0。运行 pnpm panel:gpui:check 检查 Rust,pnpm panel:gpui:build --output .local/gpui-candidate 构建 macOS 15+ arm64 App、ZIP 和校验和。运行时、Daemon、Node 与 Rust 依赖许可随包提供。构建不等于目标设备或真实模型执行已经通过。

单服务器绑定

客户端一次绑定一个服务器。停止连接保留绑定;移除服务器需要确认,并通过受保护的本地拥有者检查空闲与未知结果,关闭对应登录自启后移除当前绑定。旧身份与历史保留,新服务器使用独立接入身份。不扫描或接管独立 CLI 实例,不重领邀请或重派任务。

本版仍为 Developer Alpha,采用 ad-hoc 签名,未进行 Developer ID 签名与 Apple 公证。Windows GPUI 桌面已有本地源码候选;登录自启、链接协议注册和正式发行包尚未提供。旧 Swift v0.1.2 的最低系统为 macOS 13;本版为 macOS 15。

Windows 另有 windows-2025 CI 作业运行 pnpm check:windows,验证原生 daemon 控制链路,并构建和测试 GPUI 客户端。手动启用 prepare_artifacts 时生成便携候选包。作业不提供 Harness 凭据、不调用模型。

界舟 · Harness Dock · 原生 Harness 接入与执行管理更新于 2026-11-11