Harbor 架构
约 687 字大约 2 分钟
Harbor GUI
├── Vue 3 UI
├── Tauri command layer
└── Core manager
├── local: 127.0.0.1:29385
└── remote: SSH deploy + host:29385
harbor_core
├── Workspace settings
├── YAML discovery and validation
├── UUID registry
├── Process supervisor
├── Runtime state
├── Log storage
└── HTTP API v1 (revision 3)数据职责
- YAML 留在用户项目中,是 Task 与 Group 的可版本控制定义。
- Workspace 保存发现范围和独立日志。
- 机器级 runtime 保存跨 Workspace 共享的进程状态。
- GUI 保存界面偏好和远端连接入口,不拥有任务进程。
组件职责
Harbor GUI
Vue 3 前端负责展示 Workspace、Task、Group、日志和 Panel。Tauri command layer 负责本机能力、Core 生命周期和远端 SSH 准备。
GUI 不直接启动用户 Task,也不保存任务运行状态。
harbor_core
Core 负责扫描 YAML、补齐和校验 UUID、启动进程树、记录日志,并通过 HTTP API 暴露实时状态。
一台机器只允许一个 Core 实例。GUI 退出不会终止 Core 或它已经托管的 Task。
项目配置
项目中的 harbor_taskcfg 是 Task 与 Group 的事实来源。Harbor 不复制或接管项目文件。
用户程序
用户程序是 Core 托管的普通系统进程。程序通过 stdout/stderr 输出日志;需要交互界面时自行提供 Web Panel。
本地连接
本地 GUI 连接 127.0.0.1:29385。Core 默认只监听本机,不向局域网开放。
GUI → HTTP API → local harbor_core → Task process远端连接
GUI 先通过 SSH 检查和准备远端 Core,随后直接通过远端 HTTP API 操作任务。
GUI ── SSH ──> deploy / start harbor_core
GUI ── HTTP ─> remote harbor_core ──> Task processSSH 不参与持续日志传输和任务控制,它只负责部署与启动 Core。
连接原则
GUI 把 Core 视为版本严格匹配的本地服务,而不是向后兼容的公共服务器。GUI 与 Core 必须来自同一次 release 构建,避免维护旧 API 分支。
GUI 使用 ~/.harbor/core/<version>/harbor_core 中的 release 产物,并校验:
- Harbor 版本。
- Core API revision。
- 构建时固化的 Core SHA-256。
远端缺少匹配 Core 时,GUI 会复制对应 release 产物和运行依赖后再启动。
运行原则
Task UUID 是进程唯一键。同一台机器不允许相同 UUID 同时运行多个实例;Workspace 和项目路径仅决定如何发现定义,不决定进程身份。
数据位置
project/harbor_taskcfg/ Task 与 Group 定义
~/.harbor/settings.json GUI 与 Workspace 设置
~/.harbor/core/<version>/harbor_core 受管理的 release Core
~/.harbor/runtime/ 机器级运行状态
~/.harbor/workspace/<id>/log/ Workspace 任务日志
~/.harbor/log/harbor.log Core 日志
~/.agents/skills/harbor/ Harbor Skill安装包中的 /usr/bin/harbor_core 只作为受管理 Core 的安装来源。GUI 实际运行的是 ~/.harbor/core/<version>/harbor_core 中通过 SHA-256 校验的副本。
完整接口见 Web API。