docs(hosts): record the Hosts application first phase

Mark the host management entry migration as implemented across the PRD,
logic, UI and technical designs, and add a progress record with the
verification results and remaining gaps. Update the feature lists to point
to the new remote capability switch.
This commit is contained in:
mesalogo
2026-10-13 08:09:20 +08:00
parent 2e204e6a4b
commit 5e255747ee
9 changed files with 124 additions and 41 deletions
+6 -4
View File
@@ -291,8 +291,8 @@ records are listed separately and do not introduce another feature status.
Runtime activation reuses the registry and manifest verified during setup
instead of rehashing or rechecking the complete OpenCode binary.
- [x] **Managed SSH OpenCode and Continue**: Controlled by the
separate Remote Projects tab under Settings / Platform
Features and disabled by default. Disabling it does not affect local
Enable remote capability switch in the Hosts application settings
and disabled by default. Disabling it does not affect local
projects, ordinary desktop capabilities, or desktop releases. When enabled,
users can manage SSH Hosts with pinned Host Keys, browse bounded remote
directories, and create remote projects. Requests start the signed Runtime
@@ -1223,8 +1223,10 @@ records are listed separately and do not introduce another feature status.
offline GoodBuddy transfer release acceptance. Until these gates pass, this
path must not be described as published or as having passed formal release
acceptance.
- [ ] **Host and cloud environment management** (planned): Move host management
into App Center with a list/detail workspace. A sibling cloud application
- [ ] **Host and cloud environment management** (partly done): On 2026-10-13 host
management moved into App Center as the Hosts application, with the host list
and Agent packages; see [progress](./docs/features/remote-host/progress.md).
The list/detail workspace is still planned. A sibling cloud application
reuses host connections and remote execution. The first-version adapter plan
covers AWS, Azure, Alibaba Cloud, Tencent Cloud, VMware vCenter / vSphere,
and ZStack, delivered in batches with real instance discovery, import, and
+2 -2
View File
@@ -53,7 +53,7 @@
- [x] **高效直连模型工作区工具**:直连模型使用随包 ripgrep 的原生参数按当前账号权限发现文件和搜索内容,按行分页读取大型 UTF-8 文件,并应用多文件补丁;读取和补丁 API 保留工作区相对路径合同。用户无需另行安装 ripgrep。搜索保留原生输出与退出码,大结果通过 `output_read` 完整续读,可处理的参数错误允许模型调整后继续。
- [x] **长上下文与工具输出分页**:历史消息、长回复和文档解析文本不再采用旧的固定截断限制。直连模型可分页续读已保存的搜索、命令和 Subagent 输出;所选模型的上下文窗口及传输边界仍然有效。
- [x] **OpenCode 与 Continue**:使用隔离子进程、环境变量白名单、统一配置、取消、启动与控制请求时限、有界流式输出和活动记录;共享进程回收逻辑保留 Windows 完整进程树终止,并对采用独立进程组的 POSIX 子进程执行组回收。聊天状态检查使用一次性探测 Runtime 并在返回后立即回收,不进入按模型与项目隔离的执行 Runtime 缓存;本机 GoodBuddy 管理的 OpenCode 在该被动检查中只确认所选路径和模型凭据,不启动用后即毁的 Server,设置中的显式连接测试和原生能力清单仍执行完整启动及健康检查,原生能力清单随后与首次实际请求复用同一个执行 Runtime,不再重复冷启动;执行 Runtime 仍按项目复用,但 OpenCode 配置依赖和按内容摘要生成的 Skill 快照在所有本机项目间全局复用,会话数据、工具输出及请求级 MCP 状态继续隔离。本机 GoodBuddy 管理的 OpenCode 只对同一会话内的请求保持顺序,不同会话即使属于同一项目也可并行,不同项目同样可并行;请求级动态 MCP 通过默认通配禁用和当前请求精确放行保持隔离。托管的本机和远端 OpenCode 跳过界面未使用的自动 Git 快照,避免同步差异计算拖住会话,文件工具、子代理与工作区 Git 差异保留;Continue 持续排空不用展示的宿主 stdout,防止控制台输出填满管道。这些调整随新启动的 Runtime 生效,不改写外部 OpenCode Server 配置。OpenCode 与 Continue 不再按固定工具调用数或活动数中止单次运行,已观察到的工具与 Subagent 活动全部保留在本地会话,不再在原生任务继续执行时丢弃后续详情。交互提问只由前台对话回答,定时任务、远程通道和委派等后台执行遇到提问时会立即失败并提示改为前台运行,避免无限等待。本机 OpenCode 启动时直接使用已选择的绝对路径,不预先检查文件或运行 `--version`,路径失效时由实际启动返回错误;托管 Linux ARM Host 激活 Runtime 时复用准备阶段已验证的 registry 和 manifest,不重新哈希或检查完整 OpenCode 二进制。
- [x] **托管 SSH OpenCode 与 Continue**:该能力由“设置 > 平台功能”中的独立“远程项目”页签控制并默认关闭;关闭时不影响本地项目、普通桌面功能或桌面发布。支持 Linux x64、Linux arm64 和 macOS arm64 Host,不支持 Intel Mac;通过 SSH 按需启动 detached Agent,不要求开机服务。请求使用所选 SSH 账号权限和已接入能力,无产品模式或一般工具审批。Agent 持有 Prompt、模型和工具轮次、Runtime 进程及语义 transcript,Desktop 断开后重新 Attach 原操作而不重发 Prompt;模型凭据仅在当前操作内存中使用,不写入 Renderer、SSH 参数、环境或磁盘。当前 Agent 可以常驻,更新替换的旧 Agent 排空活动任务后退出。任务完成后回收空闲 Runtime,共享进程仍有任务或待答问题时保留;下一轮重建 Runtime 并恢复对话历史。设置页按平台和架构显示包状态,用户显式下载、更新或导入/导出包含 Agent、固定 Node、OpenCode 和 Continue 的签名 `.gbagent`;三个目标共用一个签名 catalog,继续校验签名和 SHA-256。Continue 需要更新后的联合包与配套 Desktop。首次发布混合 catalog 前需先升级 Desktop,旧版 Linux-only 目录读取器无法解析包含 Darwin 的目录。历史 macOS OpenCode 原生安装、生命周期、Attach、真实 Ask/Execute 和独立进程组工具取消已在真实 Host 验证,不代表 Continue 的同等实机覆盖。当前 Agent 源码锁为 `0.15.5`,配套 Desktop 候选为 `0.15.12`;无模式源码要求 runtime/acp 6,发布前须重建配套工件。详细运行边界和 Linux 历史回归证据见[远程主机技术设计](docs/features/remote-host/technical-design.md),正式发布状态以独立发布渠道为准。
- [x] **托管 SSH OpenCode 与 Continue**:该能力由应用中心“主机管理 > 应用设置”中的“启用远程能力”开关控制并默认关闭;关闭时不影响本地项目、普通桌面功能或桌面发布。支持 Linux x64、Linux arm64 和 macOS arm64 Host,不支持 Intel Mac;通过 SSH 按需启动 detached Agent,不要求开机服务。请求使用所选 SSH 账号权限和已接入能力,无产品模式或一般工具审批。Agent 持有 Prompt、模型和工具轮次、Runtime 进程及语义 transcript,Desktop 断开后重新 Attach 原操作而不重发 Prompt;模型凭据仅在当前操作内存中使用,不写入 Renderer、SSH 参数、环境或磁盘。当前 Agent 可以常驻,更新替换的旧 Agent 排空活动任务后退出。任务完成后回收空闲 Runtime,共享进程仍有任务或待答问题时保留;下一轮重建 Runtime 并恢复对话历史。设置页按平台和架构显示包状态,用户显式下载、更新或导入/导出包含 Agent、固定 Node、OpenCode 和 Continue 的签名 `.gbagent`;三个目标共用一个签名 catalog,继续校验签名和 SHA-256。Continue 需要更新后的联合包与配套 Desktop。首次发布混合 catalog 前需先升级 Desktop,旧版 Linux-only 目录读取器无法解析包含 Darwin 的目录。历史 macOS OpenCode 原生安装、生命周期、Attach、真实 Ask/Execute 和独立进程组工具取消已在真实 Host 验证,不代表 Continue 的同等实机覆盖。当前 Agent 源码锁为 `0.15.5`,配套 Desktop 候选为 `0.15.12`;无模式源码要求 runtime/acp 6,发布前须重建配套工件。详细运行边界和 Linux 历史回归证据见[远程主机技术设计](docs/features/remote-host/technical-design.md),正式发布状态以独立发布渠道为准。
- [x] **SSH Host 手动环境准备源码链路**:Host Key、认证和系统探针成功后先保存 Host,并只读探测共享 Agent/Runtime;保存 Host、打开项目都不自动安装。Host 卡片只有一个按版本事实显示“安装远程环境”“更新远程环境”或“重新安装”的主按钮,次级 SegmentedControl 选择默认且不持久化的“自动”、Host 下载或 GoodBuddy 传输;“版本匹配”badge 不等同环境健康。自动模式只在 operation/prepare 前探测并择一,显式选择保持有效,任何 prepare、commit 或 adoption 失败都不跨 acquisition 自动 fallback。两种方式把同一签名 compound `.gbagent` 交付到固定 staging 后,共用 control-plane prepare、commit、Agent activate/health、Runtime activate、finalize 与显式 cleanup。GoodBuddy 路径可在同一次操作下载并验证缺失候选、缓存并取得 lease,再有界流式 SFTP 上传一个归档和其中已验证的 bootstrap Node,不把约 294 MiB 整包读入 Main `Buffer`;Host 在解包时完成一次完整 payload 校验。未完成操作只记录暂存 cleanup 所需的 operation ID;下次更新尽力清理旧暂存后重新 prepare,不保存远端 metadata 副本,也不让 cleanup 失败阻塞新更新或回滚健康环境。已有项目在实际使用 Workspace/Runtime 时按需解析 Host current identity 并执行固定 `attach-or-bootstrap`,注册后的 health、capabilities 和 prompt 启动不扫描完整 payload。详见 [设计说明](./docs/features/remote-host/environment-provisioning-technical-design.md)。
- **SSH Host 环境准备验证记录**:此前源码已在隔离 Linux x64 环境通过包安装、Ask/Execute、原生子代理工作区外写入、重连及 stop/bootstrap。现有记录未覆盖 Host 卡片的完整 GitHub、北京镜像、Linux x64/arm64、取消和离线 GoodBuddy 传输矩阵,候选 CI/原生打包与系统休眠唤醒也尚未验证;开发记录不代表版本已经发布。
- [x] **远程工作区与长任务更新**:Agent `0.11.23` 新增远程文件/Git 管理和可选模型限额,随包 Runtime 不再施加固定十分钟 Prompt 时限;无限请求时长仍保留独立连接超时。请先升级 Desktop 至 `0.12.11`,再下载并更新 Host 上的 Agent。
@@ -198,7 +198,7 @@
- [ ] **Headless Runtime API**(规划中):提供本机优先的任务、事件、状态和成果 API,以及有范围、有效期、限流和撤销能力的令牌。
- [ ] **GoodBuddy Team Hub**(规划中):以可选服务提供组织、RBAC、项目共享、远程 Agent、策略下发和租户审计。
- **SSH 主机与远程执行空间历史验证记录**:当时已接线主机 CRUD、Host Key、加密凭据、Project UI、Workspace、OpenCode ACP v5、Agent-owned Prompt/gateway/transcript、Ask 只读、Execute 完整账号权限、取消、detached Agent 精确重连和 release-only 双架构资源校验。Linux x64 当时源码已用真实模型与工具通过 detach、进程结束、relay 丢失、并发、取消、Provider 异常、Agent 重启和 Desktop SQLite 恢复矩阵;测试签名 Agent `0.11.17` 又通过两个并发 Ask 读取、一次 Execute 写入并读回,以及 6 次带自定义 Header 和 Body 的真实受管网关模型请求,未发现 Provider 请求重放,隔离 Agent state 中也没有 API Key 或自定义请求值。公开 signing key registry 已供应。控制面直连源码不等待新 installer-bearing 包;现有记录未覆盖当前 Linux x64/arm64 正式签名工件的完整公开核对及 GitHub/北京镜像、双架构和离线 GoodBuddy 传输矩阵,发布结果另行记录。
- [ ] **主机管理与云环境管理**(规划中):主机管理迁入应用中心,提供列表与详情工作页面;云环境管理作为同级应用,复用主机连接和执行能力。首版适配计划覆盖 AWS、Azure、阿里云、腾讯云、VMware vCenter / vSphere、ZStack,分批完成已有实例发现、接入及真实执行验收;实例创建、启停、销毁和网络编排后续交付。平台 API 尚未实现,现有云主机可按 SSH 条件手工接入。详见[产品范围](./docs/features/remote-host/prd.md)。
- [ ] **主机管理与云环境管理**(部分完成):2026-10-13 主机管理已迁入应用中心,提供主机列表与 Agent 离线包,见[实施进度](./docs/features/remote-host/progress.md);列表与详情两栏仍待实现;云环境管理作为同级应用,复用主机连接和执行能力。首版适配计划覆盖 AWS、Azure、阿里云、腾讯云、VMware vCenter / vSphere、ZStack,分批完成已有实例发现、接入及真实执行验收;实例创建、启停、销毁和网络编排后续交付。平台 API 尚未实现,现有云主机可按 SSH 条件手工接入。详见[产品范围](./docs/features/remote-host/prd.md)。
## 规划原则
@@ -272,7 +272,7 @@ Modal 只有服务列表,显示名称、简短状态、引擎、模型、资
[技术清单](./technical-design.md#111-本机推理任务与执行服务),验证范围见[实施进度](./progress.md)。
原首期资源监控的 GoodBuddy 桌面进程统计范围不因此扩大。
### FR-17 主机管理与云环境管理(待实现)
### FR-17 主机管理与云环境管理(主机管理已实现)
2026-09-28 确认新增两个同级应用:“主机管理”和“云环境管理”。主机管理从设置中心迁入,
两个应用均从应用菜单、管理应用和常驻入口打开主内容区独立页面,不嵌入管理 Modal。
@@ -281,4 +281,8 @@ Modal 只有服务列表,显示名称、简短状态、引擎、模型、资
导航扩展须保留已有应用排序、常驻偏好和远程能力启用值;取消主机常驻不影响云环境使用
主机能力。两个应用的能力依赖、迁移范围及产品验收由
[主机与云环境 PRD](../remote-host/prd.md)和[功能逻辑](../remote-host/logic-design.md)定义,
业务页面布局见[界面设计](../remote-host/ui-design.md)。该项尚未实现,不改变上文五应用的当前状态描述。
业务页面布局见[界面设计](../remote-host/ui-design.md)。
2026-10-13 “主机管理”已实现,应用标识 `remote-hosts`,默认排在末尾、不常驻;“可打开”与
“已启用”分开判断,远程能力关闭时仍可打开页面。实现事实见
[主机管理实施进度](../remote-host/progress.md)。“云环境管理”仍待实现。
+9 -6
View File
@@ -3,8 +3,10 @@
本功能负责 SSH Host 管理、Host Key、远程环境安装、GoodBuddy Agent、签名 Runtime、
远程 Workspace 和无模式工具执行生产路径。
2026-09-28 新增待实现方向:主机管理迁入应用中心,与“云环境管理”成为同级应用;
2026-09-28 确认方向:主机管理迁入应用中心,与“云环境管理”成为同级应用;
云平台发现已有实例,接入执行时复用 SSH 主机。产品范围见 [PRD](./prd.md)。
2026-10-13 已完成一期:主机管理成为应用中心中的独立应用,包含主机和 Agent 离线包,
设置中心不再提供主机入口,见[实施进度](./progress.md)。云环境管理仍待实现。
本文中的平台连接指云账号或私有化 API 连接,云实例指平台中的虚拟机,主机指 GoodBuddy
保存的 SSH 连接目标;三者不等同。现有实现和历史验收仍以下列技术文档为准。
@@ -12,15 +14,16 @@
| 文档 | 权威职责 |
| --- | --- |
| [产品需求](./prd.md) | 应用迁移、六平台适配范围、分期与产品验收;待实现 |
| [功能逻辑](./logic-design.md) | 平台、实例、主机关系,独立状态、依赖和删除规则;待实现 |
| [界面设计](./ui-design.md) | 独立工作页面、主机列表与详情、云实例接入和响应式交互;待实现 |
| [产品需求](./prd.md) | 应用迁移、六平台适配范围、分期与产品验收;主机管理一期已实现 |
| [功能逻辑](./logic-design.md) | 平台、实例、主机关系,独立状态、依赖和删除规则;主机管理部分已实现 |
| [界面设计](./ui-design.md) | 主机管理页面、主机列表与详情、云实例接入和响应式交互;一期已实现 |
| [实施进度](./progress.md) | 主机管理与云环境管理的已验证实现事实、验证结果和剩余工作 |
| [远程主机与 Agent 技术设计](./technical-design.md) | 当前产品语义、Agent、Runtime、Workspace、协议、生命周期和验证事实 |
| [远程环境准备技术设计](./environment-provisioning-technical-design.md) | Host 下载、GoodBuddy 传输、安装事务、更新和恢复边界 |
| [执行清单验证记录](./runtime-checklist-validation.md) | 远程 OC/CN 原生清单、CN 开发包安装、取消及断线重放的实测结果与剩余验收 |
既有技术文档保留当前 SSH 行为及历史进度;新增 PRD、逻辑和 UI 文档只定义本次待实现范围,
不替代已有验证事实。验收场景随 PRD 维护,本次不单独创建 User Stories 或进度占位文档。
既有技术文档保留当前 SSH 行为及历史进度;PRD、逻辑和 UI 文档定义主机管理与云环境范围,
实施进度只记录该范围的验证事实。验收场景随 PRD 维护,不单独创建 User Stories。
跨会话共享 OpenCode 进程、ACP 连接与模型桥的实现设计,见
[Runtime 进程复用技术设计](../assistant-workbar/runtime-process-reuse-technical-design.md#6-ssh-opencode-与-agent)。
+5 -1
View File
@@ -1,6 +1,6 @@
# 主机与云环境功能逻辑
状态:2026-09-28 设计,待实现。对应[产品需求 FR-RH-1 至 FR-RH-6](./prd.md),验收场景使用其中的 AC-RH 编号。
状态:2026-09-28 设计;“导航与能力依赖”中主机管理部分 2026-10-13 已实现(见[实施进度](./progress.md)),云环境部分待实现。对应[产品需求 FR-RH-1 至 FR-RH-6](./prd.md),验收场景使用其中的 AC-RH 编号。
## 对象与关联
@@ -29,8 +29,12 @@
常驻只控制导航捷径,取消常驻不停止任务、禁用能力或删除数据。应用中心的主机管理设置承载共享远程能力启用状态,迁移保留原 `remoteProjectsEnabled` 值;旧设置不再维护第二个独立开关。云环境应用的启用单独控制云管理入口和新平台操作。(FR-RH-1、FR-RH-4、FR-RH-6)
主机管理的“已启用”即 `remoteProjectsEnabled`,但“可打开”与“已启用”分开判断:设置读取成功后即可打开页面,以便就地启用和管理 Agent 离线包;主机服务仍由 Main 按 `remoteProjectsEnabled` 校验。常驻入口同样按“可打开”显示。
| 操作 | 目标行为 |
| --- | --- |
| 打开主机管理但远程能力未启用 | “主机”页签提供就地启用,不调用主机服务;“Agent 离线包”照常可用 |
| 在任一入口关闭远程能力 | 当前项目为 SSH 项目时切回第一个普通本地项目;若正在主机管理页面则停留在该页面 |
| 打开云环境但远程能力未启用 | 允许配置平台及查询实例;接入主机时提供就地启用,保存成功后继续 |
| 取消主机常驻 | 云环境仍可引用主机,已有关联和运行不变 |
| 关闭共享远程能力 | 沿用现有远程项目停用语义,保留主机、凭据和项目;云资源浏览仍可用,依赖操作显示原因与启用入口 |
+4 -2
View File
@@ -1,6 +1,6 @@
# 主机管理与云环境管理产品需求
状态:2026-09-28 确认产品方向,待实现。本次仅更新文档;现有 SSH 实现与验证范围见[技术设计](./technical-design.md)。
状态:2026-09-28 确认产品方向。主机管理一期(FR-RH-1 中的主机管理入口,FR-RH-2 中的搜索与精简列表,FR-RH-6 中的配置迁移)2026-10-13 已实现,见[实施进度](./progress.md);列表与详情两栏、云环境管理和平台适配器待实现。现有 SSH 实现与验证范围见[技术设计](./technical-design.md)。
## 目标与范围
@@ -25,7 +25,9 @@
### FR-RH-1 应用入口
应用中心分别提供“主机管理”和“云环境管理”,打开独立主内容区页面,支持排序与常驻。应用中心只负责访问和通用应用设置,主机和云资源操作位于业务页面。迁移后移除设置中心内的重复主机管理表单;旧入口可提供跳转。
应用中心分别提供“主机管理”和“云环境管理”,打开独立主内容区页面,支持排序与常驻。应用中心只负责访问和通用应用设置,主机和云资源操作位于业务页面。迁移后移除设置中心内的重复主机管理表单。
主机管理页面包含主机和 Agent 离线包两部分;离线包只服务于远程主机的环境安装,随主机管理迁出设置中心。
### FR-RH-2 主机工作页面
+32
View File
@@ -0,0 +1,32 @@
# 主机管理实施进度
本文只记录主机管理与云环境管理([PRD](./prd.md) FR-RH-1 至 FR-RH-6)的已验证实现事实。现有 SSH、Agent 和 Runtime 的历史验证见[技术设计](./technical-design.md)和[执行清单验证记录](./runtime-checklist-validation.md)。
## 2026-10-13 一期:主机管理迁入应用中心
提交:`05838d2c feat(hosts): move host management into the Hosts application`。
### 已完成
| 范围 | 对应需求 | 实现事实 |
| --- | --- | --- |
| 应用入口 | FR-RH-1 | 应用中心、应用菜单和常驻侧栏新增“主机管理”,打开独立工作页面;应用标识 `remote-hosts`,默认排在末尾、不常驻 |
| 远程能力开关 | FR-RH-1、FR-RH-6 | 开关移到“主机管理 > 应用设置”,沿用 `remoteProjectsEnabled`,Main 校验不变;远程能力关闭时页面仍可打开并就地启用 |
| Agent 离线包 | FR-RH-1 | 从“平台功能 > 远程项目”迁到主机管理的“Agent 离线包”页签;远程能力关闭时仍可管理 |
| 设置中心 | FR-RH-1 | 删除“主机与远程执行”分类和“平台功能 > 远程项目”页签,无重复入口 |
| 主机列表 | FR-RH-2(部分) | 名称或地址搜索;多台主机默认收起为一行,显示验证、执行环境和关联项目徽标;编辑、删除在卡片头部;版本信息改为表格 |
| 配置迁移 | FR-RH-6 | 已保存的导航顺序和常驻偏好保留,新应用追加到末尾;远程能力开关值、主机、凭据、Host Key 和项目引用不变 |
| 应用设置 | — | 各应用设置中的开关统一靠右对齐,包括带说明图标的开关 |
### 验证
- `npm run typecheck` 通过;改动文件的 `eslint` 无问题。
- 下列测试 9 个文件、265 项全部通过:`SshHostsSettingsSection`、`RemoteHostsPage`、`AgentPackageInventoryPanel`、`ApplicationCenter`、`ApplicationMenu`、`SettingsPanel`、`settings-categories`、`application-settings-store`、`goodbuddy-config-contracts`。
- 存储测试覆盖:已发布的五应用完整顺序在远程能力开启和关闭两种情况下升级,新应用追加到末尾且常驻为否,重新读取后不变。
- `App.test.tsx` 350 项中有 8 项失败,均为流式消息与持久化终态收敛用例。在改动前的提交 `b22be514` 上单独运行这 8 项同样失败,与本次改动无关。
### 未验证与剩余工作
- 尚未在真实运行的应用中检查主机列表、离线包页签和应用设置开关对齐,也未覆盖深色主题和窄窗口;以上界面行为目前只有组件测试。
- 尚未连接真实主机执行添加、验证、安装和创建远程项目的完整流程。
- 未实现:列表与详情两栏、来源与连接状态筛选、关联项目页签(FR-RH-2 其余部分),云环境管理和平台适配器(FR-RH-3 至 FR-RH-5)。
+32 -16
View File
@@ -64,11 +64,12 @@ Agent `0.11.23` 提供,显式请求期限与取消仍有效。当前问答源
## 产品语义
本节记录现有实现。2026-09-28 确认的应用中心迁移与云环境管理目标见
[PRD](./prd.md)、[功能逻辑](./logic-design.md)及[UI 设计](./ui-design.md),尚未接入源码。
[PRD](./prd.md)、[功能逻辑](./logic-design.md)及[UI 设计](./ui-design.md);其中主机管理
入口迁移已于 2026-10-13 接入源码,云环境管理尚未实现。
远程 Host 与项目能力默认关闭。用户在“设置 > 平台功能”的独立
“远程项目”页签启用开关后,Renderer 才显示 SSH Host 管理、托管 SSH 项目创建和已保存
远程项目;Main 在 IPC 边界执行同一开关校验,避免隐藏界面被绕过。关闭开关不删除 Host、
远程 Host 与项目能力默认关闭。用户在应用中心“主机管理 > 应用设置”的“启用远程能力”开关,
或主机管理页面“主机”页签的就地启用按钮开启后,Renderer 才显示 SSH Host 管理、托管 SSH
项目创建和已保存远程项目;Main 在 IPC 边界执行同一开关校验,避免隐藏界面被绕过。关闭开关不删除 Host、
项目或凭据;当前远程项目切回第一个普通本地项目。应用启动仍固定
选择普通本地项目,不会因为保存了远程项目而自动连接 Host。
@@ -84,21 +85,35 @@ profile 和凭据作为有界、逐 Prompt 的控制消息交给 Agent;该凭
## 组件
### 应用迁移与云平台接入计划(待实现)
### 主机管理应用(2026-10-13 已实现)
实现顺序对应 FR-RH-1 至 FR-RH-6:
- 应用标识 `remote-hosts` 加入 `builtInApplicationIds` 和 `editableApplicationIds`,
常驻键 `pinned['remote-hosts']` 默认 `false`。公开导航 schema 中该键在输入侧默认
`false`,旧调用方不传也能通过;顺序数组仍须包含全部六个应用。
- 不新增设置字段,也不提升设置文件版本:启用状态直接使用 `remoteProjectsEnabled`。
已保存的导航由现有 `storedApplicationSettingsSchema` 归一化,把缺失的 `remote-hosts`
追加到末尾并补齐常驻默认值,原有相对顺序不变。Main 的 `requireRemoteProjectsEnabled`、
IPC 通道名(`settings:ssh-hosts:*`)和 `ssh-hosts.json` 均未改动;配置工具 schema
由 zod 派生,自动包含新应用。
- Renderer 新增 `RemoteHostsPage`(懒加载,由 `KeepAliveRoute` 缓存),包含复用的
`SshHostsSettingsSection` 和从平台功能抽出的 `AgentPackageInventoryPanel`。两个面板
切换时保持挂载;主机草稿、环境安装或离线包传输进行中时,通过
`useWorkspaceUnsavedChanges` 固定该路由,避免页面缓存淘汰。
- `isApplicationOpenable` 与 `isApplicationEnabled` 分开:主机管理在设置读取成功后即可
打开,应用菜单、应用中心和常驻入口都按此判断。
- 远程开关的副作用(当前 SSH 项目切回本地项目)由 `applyApplicationSettings` 在开关值
变化时统一触发,覆盖应用中心、主机页面和外部设置变更三种来源。
- 设置中心删除 `ssh-hosts` 分类、平台功能的“远程项目”页签及相关 props;平台功能只剩
通用设置,不再显示页签条。
1. 从 `SshHostsSettingsSection` 提取独立主机工作页面,接入 `ApplicationCenter` 和 `App`
页面导航;复用现有 SSH 服务、验证弹窗、安装操作及通知,完成列表与详情改版。
2. 扩展应用标识、排序、常驻和配置读取。读取已发布四应用配置时保留原相对顺序及偏好,
新入口追加且默认不常驻;云管理初始关闭,共享远程能力继承 `remoteProjectsEnabled`。
配置工具公开契约、默认值、持久化、Preload 和 Main 校验同步修改,不能仅扩展 Renderer。
3. 按功能逻辑整理能力依赖,将共享远程开关的设置入口迁入应用中心。保留旧值、Host ID、
加密凭据、Host Key 与项目引用;不为页面迁移重建主机或修改 Agent 协议。
4. 云平台适配器在 Main 中查询真实 API,凭据复用加密存储;Renderer 仅接收脱敏配置、
列表与详情两栏、来源和连接状态筛选、关联项目页签尚未实现。
### 云平台接入计划(待实现)
1. 云平台适配器在 Main 中查询真实 API,凭据复用加密存储;Renderer 仅接收脱敏配置、
实例快照与操作结果。采用满足首批平台发现和导入的最小接口,不预建资源编排框架。
平台连接和实例关联采用独立记录,SSH 主机仍为执行目标,项目继续使用 `local / ssh`。
5. 确认首批平台版本及测试环境,补齐需要的私钥和私网连接路径,逐个验收发现、导入、
2. 确认首批平台版本及测试环境,补齐需要的私钥和私网连接路径,逐个验收发现、导入、
SSH 验证、环境安装和真实任务执行。具体存储字段、迁移及适配 API 在实施时细化;
变更已发布存储前遵守[数据库迁移规范](../../development/database-migrations.md)。
@@ -187,7 +202,8 @@ Detached GoodBuddy Agent
GoodBuddy 所需版本比较。进入或切回该设置页只读取本地 Host 列表,不连接任何 Host;
用户点击“刷新版本”后才探测对应 Host,探测不安装或切换远端组件。项目切换与此按钮
解耦且不建立连接;实际远程操作才建立或复用 SSH/Agent 连接。
- “平台功能 > 远程项目”中的本地 Agent 包清单与 Host 状态分离。Main 对用户数据目录中
- “主机管理 > Agent 离线包”中的本地 Agent 包清单与 Host 状态分离(2026-10-13 前位于
“平台功能 > 远程项目”)。包清单 IPC 不受远程能力开关限制。Main 对用户数据目录中
Linux x64/arm64 `.gbagent` 分别执行外层可信签名、桌面/协议兼容性、内部 Agent/Runtime
签名、架构与完整 payload 校验;首次打开和手动刷新还会读取“关于与更新”所选来源的
小型签名目录。Renderer 只得到本地/在线版本、是否有更新、架构、远端 Runtime 版本、
+28 -8
View File
@@ -1,18 +1,34 @@
# 主机管理与云环境界面设计
状态:2026-09-28 设计,待实现。范围见[PRD](./prd.md),状态及依赖遵守[功能逻辑](./logic-design.md)。视觉、页面壳层和组件遵守[统一界面设计系统](../../../UI-DESIGN.md)。
状态:主机管理一期(入口迁移与列表精简)2026-10-13 已实现,见[实施进度](./progress.md);列表与详情两栏和云环境页面仍待实现。范围见[PRD](./prd.md),状态及依赖遵守[功能逻辑](./logic-design.md)。视觉、页面壳层和组件遵守[统一界面设计系统](../../../UI-DESIGN.md)。
## 应用入口
应用中心新增“主机管理”和“云环境管理”两个同级应用。应用菜单、管理应用中的“打开”和常驻侧栏入口进入同一主内容区页面,关闭来源菜单或管理 Modal,不在应用中心 Modal 内管理主机。业务页面使用全局范围标识;打开页面不切换当前项目、不连接主机或执行安装。
应用中心新增“主机管理”和“云环境管理”两个同级应用,其中“主机管理”已实现。应用菜单、管理应用中的“打开”和常驻侧栏入口进入同一主内容区页面,关闭来源菜单或管理 Modal,不在应用中心 Modal 内管理主机。业务页面使用全局范围标识;打开页面不切换当前项目、不连接主机或执行安装。
通用启用、常驻和排序遵守[应用导航设计](../application-tool-navigation/ui-design.md)。设置中心移除主机操作表单,保留必要的迁移跳转;共享远程能力开关归入主机管理的应用设置。Agent 包下载、导入等现有全局包管理暂留原位置,主机执行环境页提供相关入口,不复制包状态存储。
通用启用、常驻和排序遵守[应用导航设计](../application-tool-navigation/ui-design.md)。设置中心不再包含“主机与远程执行”分类和“平台功能 > 远程项目”页签。共享远程能力开关只在应用中心的“主机管理 > 应用设置”中,开关文字为“启用远程能力”;业务页面不重复提供设置页签。
## 主机页面
远程能力关闭时,主机管理仍可从应用菜单和应用中心打开:“主机”页签显示“远程能力未启用”及“启用远程能力”按钮,不调用主机服务;“Agent 离线包”页签照常可用,便于提前下载或导入。
页面使用共享 `dashboard` 壳层。标题区显示“主机管理”、全局范围和主操作“添加主机”。工具栏提供名称或地址搜索、来源筛选、连接状态筛选。列表显示名称、地址、来源、SSH 状态和执行环境摘要,避免每行展开安装表单。
## 主机页面(一期,已实现)
宽窗口使用列表与详情两栏,点击主机只更新详情,不重排列或滚动列表。详情使用共享 `PageTabs`:
页面使用共享 `standard` 壳层,标题区显示“主机管理”和全局范围。页签为“主机”和“Agent 离线包”;两个面板切换时保持挂载,安装、下载和导入的进度不中断。离线包页签首次显示时才读取包清单。
“主机”页签顶部是名称或地址搜索和“添加主机”。主机多于一台时,每台主机默认收起为一行,包含:
| 区域 | 内容 |
| --- | --- |
| 左侧 | 展开按钮、名称、`用户@地址:端口` |
| 状态徽标 | 验证状态;已验证时显示执行环境摘要(环境就绪、环境待更新、环境未安装、环境未检查、安装中);有关联项目时显示项目数 |
| 右侧 | “编辑”或“验证并保存”、“删除”,均为纯文字按钮 |
只有一台主机时默认展开。安装进行中、安装失败、版本读取失败或正在确认删除时,该主机强制展开且不能收起。保存或重新验证成功后自动展开该主机。展开后显示认证方式、凭据、验证状态、Host Key 指纹、连接结果和执行环境;执行环境的版本以表格呈现,列为“组件 / Host 已安装 / GoodBuddy 所需 / 状态”,悬停版本号显示架构。
删除确认在主机头部下方占满整行,列出会一并删除的关联项目记录,并说明不会连接主机或删除远端内容。展开状态只保存在当前页面,不持久化。
## 主机页面(后续,待实现)
后续改为列表与详情两栏,点击主机只更新详情,不重排列或滚动列表;工具栏补充来源筛选和连接状态筛选。详情使用共享 `PageTabs`:
| 页签 | 内容与操作 |
| --- | --- |
@@ -35,10 +51,14 @@
首版不展示尚未实现的创建、销毁或网络编排按钮。各适配器随真实能力交付,不能用不可操作的平台卡片代替接入功能。
## 应用设置
各应用的“应用设置”中,开关统一靠右对齐;带说明图标的开关,说明图标紧跟文字,开关仍在右侧对齐。
## 响应式与交互
两栏无法满足共享最小宽度时改为单面板,选择主机进入详情并提供“返回主机列表”,返回恢复筛选、滚动和列表项焦点。页签可横向滚动,搜索与筛选换行,长地址和错误信息折行,页面不整体横向溢出。
一期在窄容器下,主机行的状态徽标换到第二行,地址与名称上下排列,事实列改为单列。后续两栏无法满足共享最小宽度时改为单面板,选择主机进入详情并提供“返回主机列表”,返回恢复筛选、滚动和列表项焦点。页签可横向滚动,搜索与筛选换行,长地址和错误信息折行,页面不整体横向溢出。
列表项及操作使用语义按钮,提供可访问名称和可见焦点;页签沿用 `tablist`、`tab`、`tabpanel`、方向键及 Home/End。弹窗遵守共享焦点恢复及未保存编辑规则。通知使用全局应用通知,进行中的安装进度保留在对应主机,页面切换不重启操作。
列表项及操作使用语义按钮,提供可访问名称和可见焦点;一期展开按钮使用 `aria-expanded` 和 `aria-controls`,名称为“展开 / 收起 {主机名} 的详情”,编辑、删除按钮名称带主机名;页签沿用 `tablist`、`tab`、`tabpanel`、方向键及 Home/End。弹窗遵守共享焦点恢复及未保存编辑规则。通知使用全局应用通知,进行中的安装进度保留在对应主机,页面切换不重启操作。
验收对应 AC-RH-1 至 AC-RH-7,覆盖浅深主题、窄窗口、键盘操作、空列表、长名称、认证失败及安装取消;具体实施记录需附真实 UI 验证结果。