# HeightLab macOS 分发能力状态

> **状态**：本机候选能力清单，不构成公开发布认证、兼容性承诺或部署授权。
> **评估时间**：2026-07-30。
> **代码快照**：当前本地候选工作树；以最新 scoped validation evidence 为准。
> **适用范围**：macOS 11+、Apple Silicon（`aarch64-apple-darwin`）候选版本。

## 1. 当前已经实现

### 安装包与第一方运行时

当前工作树实现了 macOS Apple Silicon 的 `.app` / DMG 打包路径，并在包内包含 HeightLab 第一方默认运行时：

- HeightLab 桌面应用；
- cc-haha 默认 server / CLI；
- 默认 ACP bridge 与 ACP agent；
- HeightLab MCP tools；
- 本地 Marketing Intelligence authority / KB 运行时与离线模型资产；
- 本地 OCR；
- 视频服务所需 Python、FFmpeg、FFprobe。

默认路径设计为不依赖开发源码 checkout、系统 Bun 或系统 Node。包审计会检查关键运行时存在且可执行，拒绝资源目录内的 `.env`、`.mcp.json`、`node_modules`，并实际执行包内 ACP agent 的 `initialize`。

已在本机完成构建、安装和默认 ACP session 创建 smoke。该证据是本地运行验证，不是独立干净电脑验收。

### 对话与本地能力

- 登录后可使用默认 AI 对话和 ACP 会话；
- 对话过程可在输入框上方显示、展开；
- 本地资料能力、OCR 与视频运行时已纳入当前 Apple Silicon 包；
- 默认应用内更新的前端状态、版本检查、下载进度、安装/重启 UI，以及匿名 manifest endpoint 和独立 Web 管理后台均已实现；不可变 HTTPS artifact 托管与发布仍需单独授权和验收。

## 2. 尚未实现、尚未配置或尚未验证

### 分发认证与兼容性

- **Intel Mac / universal binary**：尚未实现；
- **Developer ID 签名、Apple notarization、stapling**：尚未实现；目标电脑当前可能需要在 Gatekeeper 中选择“仍要打开”；
- **独立干净 Apple Silicon Mac L3 验收**：尚未完成。仍需在无源码、无 Bun/Node/Python/FFmpeg 的用户环境完成安装、登录、对话、重启恢复、资料/OCR/视频 smoke；
- **正式 macOS release CI、SBOM/provenance**：尚未完成。

### 联网与第三方能力

“模型能够回答”不等于“具有实时联网搜索”。当前 WebSearch 需要可用的 Provider 支持或用户/组织配置的搜索服务凭据；安装包不会、也不能携带共享的第三方 API Key。

以下能力也不会因安装 DMG 自动具备：

- Tavily / Brave 等 WebSearch Provider 凭据；
- 自定义 MCP 命令；
- Docker、Git、tmux、开发工具链；
- 第三方 Harness；
- 浏览器或其他第三方桌面应用控制；
- 用户自己的模型服务账号、授权和配额。

### 自动更新

**当前信任根候选状态（v0.2.5）**：本机候选已完成签名校验、深度代码签名复查和包审计。旧版本迁移、应用内更新托管、下载与安装结果仍须在经授权的独立测试设备上验证，不能视为已公开发布或完成自动升级验收。

### 手动安装、校验文件与 Gatekeeper

当前候选尚未作为公开 DMG 或自动更新 artifact 发布。经授权的本机候选审计可生成校验和；未来托管的版本化 artifact、下载页和校验文件必须在发布授权、不可变 HTTPS 存储配置和签名验收完成后才可对外声明。

当前候选未使用 Apple Developer ID 签名和公证。未公证应用在目标 Mac 上可能被 Gatekeeper 拦截；不要关闭系统 Gatekeeper，也不要对任意下载文件执行 `xattr -cr`。

本机 package audit 与本地启动 smoke 已完成；独立 Apple Silicon Mac 的手动安装、登录和功能验收尚未完成，因此不能作为独立设备或正式 release evidence。

长期方案是 Apple Developer ID 签名 + notarization + stapling；这需要组织 Apple Developer Program 账户，属于账户持有人才能完成的 Apple 外部步骤。

更新 UI、匿名 manifest endpoint、独立 Web 发布后台和 artifact 托管已经启用。v0.2.4 因打包后的 App 未通过深度代码签名验证而被撤回；v0.2.5 的发布流程已加入“打包后必须重签并通过深度验证、验签通过才允许发布”的硬门禁。独立 Mac 的 L3-A 安装验收与 v0.2.3 → v0.2.5 的 L3-B 自动升级验收仍在进行中。

## 3. 后续实施路线

### 阶段 A：完成受控自动更新链路

1. 启用并验证主应用 Tauri updater plugin 与 updater artifacts；
2. 在安装前安全停止 ACP、cc-haha、MI、视频等应用托管进程；
3. 以外部密钥管理方式提供 Minisign 私钥：私钥不进入仓库、DMG、日志或前端；
4. 构建后生成签名 updater artifact、checksum 和 release metadata；
5. 上传至不可变 HTTPS artifact 地址，由服务端 manifest 只发布已校验的 release；
6. 在独立测试 Mac 上完成旧版发现更新、下载、签名校验、安装、重启、版本确认与核心对话 smoke。

**验收条件**：更新失败不能破坏原安装；安装前受管 sidecar 有界停止；签名、target/arch、版本和下载地址不匹配时拒绝发布或安装。

### 阶段 B：联网搜索能力

1. 在设置中明确显示 WebSearch 是否可用；
2. 接入 Claude 原生 WebSearch 或组织托管的 Tavily / Brave；
3. 凭据仅保存在组织安全配置或用户私有配置中；
4. 对实时天气、新闻等请求显示搜索工具执行和来源，失败时给出可理解状态。

**验收条件**：未配置搜索凭据时不伪造实时结果；配置后可以返回可核验的来源；凭据不会出现在聊天、日志或安装包中。

### 阶段 C：正式 macOS 分发

1. 完成 Developer ID 签名、公证和 stapling；
2. 在 macOS CI 或受控签名环境中构建并审计；
3. 支持 Intel 或发布 universal binary；
4. 建立版本化 release notes、校验和、artifact 留存和回滚策略；
5. 完成 clean-machine 与更新升级 L3 验收后，才将版本称为正式发布。

## 使用说明

当前 Apple Silicon 安装包适合受控试用和本机/受信任设备验证。它不应被描述为已经完成签名、公证、独立干净机验证或正式 release audit 的通用生产发行版。

<!-- wiki:navigation:start -->
<!-- wiki metadata; generated navigation only. Original content above is unchanged.
id: apps/web/public/desktop/macos-distribution-status
status: current
authority: reference
-->

## Wiki navigation

- [[wiki/L1/README]]
- [[wiki/L1/CURRENT]]
- [[AGENTS]]
<!-- wiki:navigation:end -->
