UFO² 还是 UFO³ Galaxy?基于 UFO 仓库的多设备 Agent 编排技术选型实战指南
【免费下载链接】UFOUFO³: Weaving the Digital Agent Galaxy项目地址: https://gitcode.com/GitHub_Trending/uf/UFO
本文是一份面向 UFO(UFO³: Weaving the Digital Agent Galaxy)开源仓库的技术选型指南,核心解决一个问题:你的自动化任务应该使用单设备桌面 Agent 框架 UFO²,还是使用面向多设备 DAG 编排的 UFO³ Galaxy?读完本文,你将掌握完整的决策树、对比矩阵、8 类典型场景推荐、3 种混合部署模式(含可运行的命令与配置)、常见认知误区澄清,以及一份可直接套用的决策清单,并能够结合仓库源码理解两种框架的底层工作方式。
🗺️ 快速决策树(Quick Decision Tree)
如果对选择毫无头绪,先走一遍下面的决策流程图。它以"是否涉及多设备/多平台"为第一判断维度,逐步收敛到最终方案:
决策树的核心逻辑可以归纳为三条主线:
- 涉及多设备/多平台,且需要并行执行,或子任务之间存在依赖关系→ 选 UFO³ Galaxy;
- 只涉及单个 Windows 桌面,任务是简单的多应用串行流程→ 选 UFO²;
- 当前只需要 UFO²,但未来可能扩展到多设备→ 现在就用 UFO²,同时按"Galaxy-ready"方式准备配置(见下文"混合方案")。
📊 快速对比矩阵(Quick Comparison Matrix)
| 维度 | UFO² Desktop AgentOS | UFO³ Galaxy |
|---|---|---|
| 目标范围 | 单一 Windows 桌面 | 多设备(Windows/Linux/macOS) |
| 最适合场景 | 简单本地自动化 | 复杂跨设备工作流 |
| 部署复杂度 | ⭐ 简单 | ⭐⭐⭐ 中等(需要设备池) |
| 学习曲线 | ⭐⭐ 容易 | ⭐⭐⭐⭐ 进阶 |
| 执行模型 | 顺序式多应用编排 | 并行 DAG 编排 |
| 是否需要网络 | ❌ 否 | ✅ 是(设备间 WebSocket) |
| 并行能力 | 单设备内部 | 跨设备并行 |
| 容错能力 | 同设备重试 | 重试 + 任务迁移 |
| 典型延迟 | 10-30s(本地) | 20-60s(含编排开销) |
| 理想任务规模 | 1-5 步 | 5-20+ 步且带依赖关系 |
快速经验法则(Quick Rule of Thumb):
- 1 台设备 + 简单工作流→ UFO²
- 2 台及以上设备,或存在复杂依赖→ Galaxy
- 不确定?→ 先用 UFO²,后续按 迁移指南 平滑升级
从源码看两种框架的本质差异
对比矩阵中的差异并非营销话术,而是由两种框架的底层架构决定的:
- UFO² 是"单机双层级"(Two-Tier Hierarchy):由
HostAgent统筹本机上的多个AppAgent(Excel/Word/PowerPoint/Web 等),全部在同一个 Windows 桌面上执行。其 CLI 入口即python -m ufo --task "..."(见 ufo/ufo.py),不依赖任何网络组件。 - UFO³ Galaxy 是"星座模型"(Constellation Model):
ConstellationAgent负责把用户请求分解为任务星座(Task Constellation)——一张由TaskStar(可执行单元)和TaskStarLine(依赖边)构成的 DAG,再把每个任务下发给对应设备执行。核心 DAG 管理实现位于 galaxy/constellation/task_constellation.py,其类TaskConstellation明确提供"DAG 校验与环检测、动态任务与依赖管理、LLM 驱动的创建与修改、执行状态跟踪、导入导出"等能力。 - 两者可以嵌套:UFO² 实例可以作为 Galaxy 的一个"设备 Agent"接入。从源码结构看,这正是文档所谓"Best of both worlds"的技术基础——Galaxy 只负责跨设备的编排与任务分配,设备本地的执行仍交给 UFO² 的 HostAgent/AppAgent 完成。
🎯 基于场景的推荐(Scenario-Based Recommendations)
场景 1:桌面生产力自动化(Desktop Productivity Automation)
任务示例:"创建每周报告:从 Excel 提取数据,在 PowerPoint 中生成图表,通过 Outlook 发送"
推荐方案:✅ UFO²
原因:
- 所有应用都位于同一台 Windows 桌面上;
- 流程是顺序式的(Excel → PowerPoint → Outlook);
- 不存在跨设备依赖。
延伸阅读:UFO² 总览与架构
实操命令:
python -m ufo --task "从 data.xlsx 生成报告 PPT 并通过 Outlook 发送"场景 2:开发工作流自动化(Development Workflow Automation)
任务示例:"在笔记本上克隆仓库,在 GPU 服务器上构建 Docker 镜像,在 CI 集群上跑测试,在桌面上打开结果"
推荐方案:✅ UFO³ Galaxy
原因:
- 跨越 3 台以上设备(笔记本、GPU 服务器、CI 集群、桌面);
- 存在顺序依赖(克隆 → 构建 → 测试 → 展示);
- 需要设备协同与数据传输。
延伸阅读:Galaxy 总览
实操命令:
python -m galaxy --request \ "Clone repo on my laptop, build Docker image on GPU server, run tests on CI cluster, open results on my desktop"场景 3:批量数据处理(Batch Data Processing)
任务示例:"处理 100 个文件:从云端拉取、清洗数据、运行 ML 模型、保存结果"
推荐方案:取决于你的基础设施
| 部署形态 | 推荐方案 | 原因 |
|---|---|---|
| 单台高性能工作站 | ✅ UFO² | 所有处理都在一台机器上,更简单 |
| 分布式集群 | ✅ Galaxy | 跨节点并行处理,更快 |
| 混合形态(本地 + 云端 GPU) | ✅ Galaxy | 异构资源统一编排 |
延伸阅读:
- 单设备场景的 UFO² 快速上手
- 分布式场景的 Galaxy 快速上手
场景 4:跨平台测试(Cross-Platform Testing)
任务示例:"在 Windows Chrome、Linux Firefox、macOS Safari 上测试 Web 应用"
推荐方案:✅ UFO³ Galaxy
原因:
- 需要 3 种不同的操作系统平台;
- 并行执行能显著节省时间;
- 支持集中式结果聚合。
延伸阅读:Galaxy 跨平台协作
实现基础:Galaxy 的设备池(device pool)本身支持异构 OS。以仓库自带的 config/galaxy/devices.yaml 为例,其中同时配置了os: "linux"的多个设备条目,而 Galaxy 的设备注册/状态管理则由 galaxy/client/components/device_registry.py 等组件维护,可支撑"每台设备用各自原生 Agent 实现"的多平台形态。
场景 5:文件管理与整理(File Management & Organization)
任务示例:"按文件类型整理 Downloads 文件夹、压缩旧文件、上传到云端"
推荐方案:✅ UFO²
原因:
- 单设备的本地文件操作;
- 无网络依赖;
- 简单的顺序工作流。
延伸阅读:UFO² 快速上手
场景 6:多阶段数据管道(Multi-Stage Data Pipeline)
任务示例:"从 5 台 Linux 服务器收集日志,在中央服务器聚合,进行分析,在 Windows 上生成仪表盘"
推荐方案:✅ UFO³ Galaxy
原因:
- 多数据源设备(5 台 Linux 服务器);
- 并行日志采集(比顺序快约 5 倍);
- 跨平台(Linux → Windows);
- 复杂依赖图。
延伸阅读:Galaxy 任务星座
仓库佐证:config/galaxy/devices.yaml 中给出了linux_agent_1/2/3三个 Linux 设备条目,每个都带logs_file_path、warning_log_pattern(如WARN)、error_log_pattern(如ERROR or FATAL)等元数据字段——这正是"从多台 Linux 服务器采集日志"这类管道场景的现成配置骨架。
场景 7:学习 Agent 开发(Learning Agent Development)
任务示例:"我是 Agent 开发新手,想通过构建简单自动化来学习"
推荐方案:✅ UFO²
原因:
- 架构更简单(更容易理解);
- 反馈闭环更快(本地执行);
- 文档与示例更完备;
- 后续可以升级到 Galaxy。
延伸阅读:UFO² 快速上手
场景 8:企业级工作流集成(Enterprise Workflow Integration)
任务示例:"与现有 CI/CD 管道集成,横跨开发笔记本、构建服务器和测试农场"
推荐方案:✅ UFO³ Galaxy
原因:
- 企业级设备协同;
- 带自动恢复的容错机制;
- 形式化安全保证(I1-I3 不变量);
- 支持异构基础设施。
延伸阅读:Galaxy 架构
🔀 混合方案(Hybrid Approaches)
不必二选一!以下三种常见混合模式可以让你同时享受两种框架的红利。
模式 1:把 UFO² 作为 Galaxy 设备(UFO² as Galaxy Device)
部署形态:在 Windows 桌面上运行 UFO² 的服务端与客户端(需要同时启动 server 和 client)。
# 终端 1:在 Windows 桌面上启动 UFO² Server python -m ufo.server.app --port 5000 # 终端 2:启动 UFO² Client(连接上面的 server) python -m ufo.client.client --ws --ws-server ws://localhost:5000/ws --client-id my_windows_device --platform windows收益:
- 保留 UFO² 在本地 Windows 场景的专业能力;
- 获得 Galaxy 的跨设备编排能力;
- 两者兼得(Best of both worlds)。
源码验证:上述命令与仓库入口完全一致:
- ufo/server/app.py 提供
--port(默认 5000)、--host(默认 127.0.0.1)、--api-key、--platform(windows/linux/mobile)、--log-level等参数,并对外暴露ws://<host>:<port>/ws的 WebSocket 端点; - ufo/client/client.py 提供
--client-id、--ws-server、--ws、--max-retries(默认 5)、--platform等参数,客户端会自动检测平台(Windows/Linux/mobile),并可通过--request直接下发任务文本。
延伸阅读:UFO² 作为 Galaxy 设备
模式 2:渐进式迁移(Gradual Migration)
策略:先用 UFO² 解决眼前需求,同时为 Galaxy 扩展做准备。
阶段 1:独立使用 UFO²
python -m ufo --task "Your current task"阶段 2:让 UFO² 具备 Galaxy 兼容性(提前准备设备池配置)
# config/galaxy/devices.yaml (提前准备) devices: - device_id: "my_windows" server_url: "ws://localhost:5000/ws" # UFO client 连接 UFO server 的地址 os: "windows" capabilities: ["office", "web"]阶段 3:启动 UFO 设备 Agent 并接入 Galaxy
# 终端 1:在 Windows 机器上启动 UFO Server python -m ufo.server.app --port 5000 # 终端 2:启动 UFO Client(连接上面的 UFO server) python -m ufo.client.client --ws --ws-server ws://localhost:5000/ws --client-id my_windows --platform windows # 终端 3:启动 Galaxy(在控制机上,可与上面同一台或不同机器) python -m galaxy --request "Cross-device workflow"配置说明:设备池配置(devices.yaml)中的关键字段含义:
device_id:设备在星座中的唯一标识,Galaxy 用它寻址与路由任务;server_url:该设备上 UFO Server 暴露的 WebSocket 地址,Galaxy 通过它建立持久连接;os/capabilities:设备平台与能力标签,是ConstellationAgent做"能力匹配式任务分配"的依据。
延伸阅读:迁移指南
模式 3:按领域拆分(Domain-Specific Split)
策略:不同类型的 workflow 使用不同的框架。
| 工作流类型 | 框架 | 示例 |
|---|---|---|
| 日常桌面任务 | UFO² | 邮件处理、文档创建 |
| 开发工作流 | Galaxy | 代码构建 → 测试 → 部署 |
| 数据处理 | Galaxy(若为分布式) | 多节点 ML 训练 |
| 快速一次性自动化 | UFO² | 一次性任务 |
延伸阅读:何时使用哪种框架
🚫 常见误解澄清(Common Misconceptions)
误解 1:"Galaxy 更新,所以总是更好"
事实:对简单的单设备任务而言 UFO² 反而更优,原因在于:
- 延迟更低(无网络开销);
- 部署与调试更简单;
- 经过实战检验、稳定性高。
结论:只有在确实需要多设备编排时才使用 Galaxy。
误解 2:"迁移到 Galaxy 需要重写一切"
事实:UFO² 只需极少改动即可作为 Galaxy 设备运行:
# 终端 1:启动 UFO Server python -m ufo.server.app --port 5000 # 终端 2:以 WebSocket 模式启动 UFO Client python -m ufo.client.client --ws --ws-server ws://localhost:5000/ws --client-id my_device --platform windows现有 UFO² 的 HostAgent/AppAgent、混合 GUI-API 执行、MCP 集成、持续学习等能力全部保留(详见 迁移指南 中的"Galaxy 中保留的 UFO² 特性"清单)。
延伸阅读:迁移指南 · 选项 2:将 UFO² 实例转换为 Galaxy 设备
误解 3:"Galaxy 无法在单台设备上运行"
事实:如果你需要以下能力,Galaxy 在单设备上同样工作得很好:
- 基于 DAG 的工作流规划;
- 高级监控与轨迹报告(trajectory reports);
- 为未来的多设备扩展做准备。
# 单设备 Galaxy 配置 devices: - device_id: "localhost" server_url: "ws://localhost:5005/ws"误解 4:"UFO² 已被 Galaxy 取代(deprecated)"
事实:UFO² 仍在积极维护,并且是单设备场景的推荐选择:
- 对本地任务更高效;
- 对初学者更简单;
- 作为 Galaxy 设备时是核心组件。
两种框架是互补关系,而非竞争关系(Both frameworks are complementary, not competing)。
🎓 学习路径(Learning Paths)
面向初学者(For Beginners)
第 1-2 周:从 UFO² 开始
- UFO² 快速上手
- 构建简单自动化(文件管理、邮件等)
- 理解 HostAgent/AppAgent 架构
第 3-4 周:探索 UFO² 进阶能力4. 混合 GUI-API 操作 5. MCP 服务器集成 6. 自定义与学习
第 5 周起:按需升级到 Galaxy7. 迁移指南 8. Galaxy 快速上手 9. 构建跨设备工作流
面向有经验开发者(For Experienced Developers)
若已明确需要多设备能力,可直接进入 Galaxy:
- Galaxy 快速上手
- 任务星座概念
- ConstellationAgent 深入解析
- 性能监控
📋 决策清单(Decision Checklist)
仍然不确定?逐条回答以下问题:
Q1:你的工作流是否涉及 2 台及以上物理设备?
- ✅ 是 →Galaxy
- ❌ 否 → 继续回答 Q2
Q2:你是否需要跨机器并行执行?
- ✅ 是 →Galaxy
- ❌ 否 → 继续回答 Q3
Q3:你的工作流是否存在复杂依赖(DAG 结构)?
- ✅ 是,复杂 DAG →Galaxy
- ❌ 否,简单顺序 → 继续回答 Q4
Q4:你是否熟悉分布式系统概念?
- ✅ 是 →Galaxy(只要 Q1-Q3 中任一项为是)
- ❌ 否 →UFO²(先打基础)
Q5:你是否需要跨平台支持(Windows + Linux)?
- ✅ 是 →Galaxy
- ❌ 否,仅 Windows →UFO²
结果判定:
- 3 个及以上"Galaxy"回答→ 使用 Galaxy(见 Galaxy 快速上手)
- 大部分是"UFO²"回答→ 使用 UFO²(见 UFO² 快速上手)
- 答案混合→ 先用 UFO²,保留 Galaxy 的扩展选项(见 迁移指南)
🔗 后续步骤(Next Steps)
如果选择了 UFO²:
- 📖 UFO² 快速上手指南
- 🎯 UFO² 总览与架构
- 🛠️ 配置指南
如果选择了 Galaxy:
- 📖 Galaxy 快速上手指南
- 🎯 Galaxy 总览与架构
- 🌟 任务星座概念
如果仍在探索:
- 📊 详细对比:何时使用哪种框架
说明:原文档此处的演示视频与论文链接为外部站点地址,本文档不提供外部链接;如需更完整的背景资料,可直接阅读仓库内的 UFO² 总览、Galaxy 总览 与 迁移指南。
💡 专业提示(Pro Tips)
!!! tip "从简单开始" 拿不准时,先用UFO²。先跑起来再升级到 Galaxy,比一上来就调试一个你根本不需要的复杂 Galaxy 部署要容易得多。
!!! tip "混合方案完全可行" 不要把自己锁死在单一选择上。你可以同时用UFO² 处理本地任务、用Galaxy 处理跨设备工作流。
!!! tip "提交前先测试" 用一个简单工作流分别跑一遍两种框架,感受哪个更贴合你的使用习惯: ```bash # UFO² 测试 python -m ufo --task "Create test report"
# Galaxy 测试 python -m galaxy --request "Create test report" ```!!! warning "网络要求" Galaxy 要求设备之间有稳定的网络连接(设备间通过 WebSocket 通信)。如果你的环境存在网络限制,UFO² 可能是更可靠的选择。
🧩 延伸:从源码理解 Galaxy 的编排入口与设备模型
为了让选型决策建立在更扎实的基础上,这里补充几个与选择直接相关的源码事实:
Galaxy CLI 与交互模式
Galaxy 的入口在 galaxy/galaxy.py(包级入口见 galaxy/main.py),支持多种运行模式:
# 简单模式:直接传入请求文本 python -m galaxy "Create a data analysis pipeline" # 显式请求 + 会话命名 python -m galaxy --request "Build ML pipeline" --session-name "ml_session" # 交互式命令行模式 python -m galaxy --interactive # 演示模式(内置示例请求) python -m galaxy --demo # WebUI 模式 python -m galaxy --webui常用参数还包括--max-rounds(默认 10,单会话最大编排轮数)、--log-level(DEBUG/INFO/WARNING/ERROR/CRITICAL,默认 WARNING)、--output-dir(结果输出目录)、--mock(使用 mock agent 测试,不产生真实 LLM 调用)。
GalaxyClient 编程式接口
如果需要把 Galaxy 嵌入自己的脚本或 CI/CD 管道,可使用 galaxy/galaxy_client.py 中的GalaxyClient:
import asyncio from galaxy import GalaxyClient async def main(): client = GalaxyClient(session_name="my_workflow") await client.initialize() result = await client.process_request( "Clone repo on laptop, build on server, test on Windows" ) print(f"Workflow completed: {result}") await client.shutdown() asyncio.run(main())从源码可见,GalaxyClient.process_request在提交请求前会自动检查设备注册表(device_registry)中处于CONNECTED/IDLE/BUSY状态的设备数量,若存在断连设备会先触发ensure_devices_connected()重连逻辑——这就是对比矩阵中"重试 + 任务迁移"容错能力的底层体现。
设备池配置与星座运行时
- 设备池:config/galaxy/devices.yaml 是 Galaxy 认识所有可用设备的唯一来源。每个条目含
device_id、server_url、os、capabilities、metadata、auto_connect、max_retries等字段;仓库模板中还演示了为设备配置operation_engineer_email、app_log_file、tips等运营类元数据。 - 星座运行时:config/galaxy/constellation.yaml 定义
CONSTELLATION_ID、HEARTBEAT_INTERVAL(默认 30.0 秒)、RECONNECT_DELAY(默认 5.0 秒)、MAX_CONCURRENT_TASKS(默认 6)、MAX_STEP(默认 15)、DEVICE_INFO(指向设备池文件路径)以及LOG_TO_MARKDOWN(是否生成轨迹报告)。 - 编排 LLM:config/galaxy/agent.yaml.template 提供
CONSTELLATION_AGENT的 LLM 配置模板(API_TYPE、API_BASE、API_KEY、API_MODEL及四类提示词文件路径)。注意:galaxy/config/config_loader.py会通过get_galaxy_config()加载这些配置,GalaxyClient初始化时即解析DEVICE_INFO指向的设备池。
任务星座:DAG 编排的数据结构
Galaxy 的核心数据结构是 galaxy/constellation/task_constellation.py 中的TaskConstellation类,它实现了IConstellation接口,提供:
- DAG 校验与环检测;
- 动态任务与依赖管理(
TaskStar/TaskStarLine); - LLM 驱动的创建与修改;
- 执行状态跟踪;
- 导入/导出能力。
这正是决策树中"复杂依赖(DAG)→ Galaxy"与"5-20+ 步带依赖任务"两项判断标准的源码级支撑。
🤝 常见问题与获取帮助
Q:迁移到 Galaxy 后还能继续用 UFO² 吗?A:可以,两者共存。简单本地任务用 UFO²,多设备工作流用 Galaxy。
Q:需要重写自定义 Agent 吗?A:不需要。现有 UFO² Agent 在作为 Galaxy 设备运行时可以原样工作。
Q:Galaxy 是否已可用于生产?A:Galaxy 处于活跃开发中;对关键的单设备工作流,UFO² 更成熟。
Q:能否混用 Windows 和 Linux 设备?A:可以,这正是 Galaxy 的核心特性之一。每台设备使用其原生的 UFO² 实现(Windows 设备用 WindowsAgent,Linux 设备用 LinuxAgent)。
Q:如何调试失败的跨设备工作流?A:查看logs/galaxy/<session>/output.md,其中包含逐步执行详情与 DAG 可视化。仓库源码层面,GalaxyClient.process_request会把执行结果(会话名、请求、状态、轮数、耗时、轨迹路径、星座信息等)写入result.json(默认保存到会话日志目录,可用--output-dir指定)。
至此,你已经完成了 UFO² 与 UFO³ Galaxy 的完整选型分析。核心结论再强调一次:单设备、简单、本地优先 → 选 UFO²;多设备、并行、复杂依赖、跨平台 → 选 Galaxy;两者并不互斥,混合部署与渐进迁移是官方推荐的稳妥路径。选择之后,按照 Galaxy 快速上手 或 UFO² 快速上手 直接开始搭建你的 Agent 体系即可。
【免费下载链接】UFOUFO³: Weaving the Digital Agent Galaxy项目地址: https://gitcode.com/GitHub_Trending/uf/UFO
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考