UFO² 迁移至 UFO³ Galaxy 完整指南:从单机 AgentOS 到多设备分布式编排
发布时间:2026/9/16 13:24:26来源:尧图网络
UFO² 迁移至 UFO³ Galaxy 完整指南从单机 AgentOS 到多设备分布式编排【免费下载链接】UFOUFO³: Weaving the Digital Agent Galaxy项目地址: https://gitcode.com/GitHub_Trending/uf/UFO本指南以仓库文档 migration_ufo2_to_galaxy.md 为主线系统讲解 UFO 项目从 UFO v1纯 GUI 单机自动化到 UFO²Windows 桌面 AgentOS再到 UFO³ Galaxy跨设备分布式 AgentOS的演进脉络并给出从 UFO² 平滑迁移到 Galaxy 的三条可执行路径保留 UFO² 做本地任务、将 UFO² 实例转换为 Galaxy 设备、以及基于GalaxyClient的编程式迁移。读完你将掌握 Galaxy 的配置文件体系agent.yaml、devices.yaml、constellation.yaml、设备注册与 WebSocket 服务端启动方式以及 Task ConstellationDAG跨设备编排的核心概念能够把已有的 UFO² 工作流无缝迁移到 Galaxy 多设备架构中。一、理解 UFO 的演进v1 → UFO² → UFO³ GalaxyUFO 项目经历了三次大的迭代每一代都在解决越来越复杂的自动化难题演进关系如下1.1 UFO (v1.0)起点——纯 GUI 单机自动化发布时间2024 年 2 月愿景基于截图的 Windows 自动化架构多智能体HostAgent AppAgents方案GPT-4V 纯 GUI 自动化点击/输入范围单个 Windows 桌面、跨应用工作流局限没有深度的操作系统集成关键创新第一个由 LLM 驱动的多智能体 GUI 自动化框架。在仓库中这一代的设计思路仍保留在 ufo/agents/ 的 HostAgent / AppAgent 体系中不过后续已全部演进为更复杂的双层结构。1.2 UFO² (v2.0)桌面 AgentOS发布时间2025 年 4 月对应论文UFO²: A Windows Agent for Seamless OS Interaction愿景深度操作系统集成实现稳健自动化架构两层层级HostAgent AppAgents创新点混合 GUI–API 执行减少约 51% 的 LLM 调用Windows UIA Win32 WinCOM API从文档与经验中持续学习知识Continuous knowledge learning画中画桌面非侵入式自动化MCP 服务器集成以增强工具能力范围单个 Windows 桌面定位首个深度集成 Windows 系统内部机制的智能体框架这些能力在仓库中的实现对应ufo/automator/ui_control/UIA/Win32 控制、ufo/automator/app_apis/Excel/Word/PowerPoint/Web/Shell 应用 API、ufo/client/mcp/MCP 客户端以及 ufo/experience/经验学习。1.3 UFO³ Galaxy多设备 AgentOS发布时间2025 年 11 月对应论文UFO³: Weaving the Digital Agent Galaxy愿景大规模跨设备编排架构基于星座Constellation的分布式 DAG 编排创新点Task Constellation动态 DAG 任务分解跨设备异步并行执行事件驱动协调并带有形式化安全保证双模式 DAG 演化创建 编辑Agent Interaction Protocol持久化 WebSocket 通信异构设备支持Windows、Linux、macOS范围跨平台多设备工作流能力可同时编排 10 台设备关键创新第一个具备可证明正确性的 LLM 驱动的多设备编排框架。仓库中对应实现位于 galaxy/ 目录星座编排在 galaxy/constellation/orchestrator/Agent 交互协议AIP在 aip/状态机与安全不变量在 galaxy/agents/constellation_agent_states.py 等模块中。1.4 架构演进对照UFO v1纯 GUI 多智能体User Request ↓ HostAgent ↓ AppAgent 1, 2, 3... ↓ Windows Apps (GUI)能力多应用工作流、纯截图 点击/输入、无 API 集成、单设备。UFO²两层层级混合执行User Request ↓ HostAgent ↓ AppAgent 1, 2, 3... ↓ Windows Apps (GUI API)能力多应用工作流、桌面级编排、混合 GUI–API 执行、深度 OS 集成、单设备。UFO³ Galaxy星座模型分布式User Request ↓ ConstellationAgent ↓ Task Constellation (DAG) ↓ Device 1, 2, 3... (UFO² instances) ↓ Cross-Platform Apps能力多设备工作流、并行执行、动态自适应、异构平台。从源码结构看这条链路在 galaxy/session/galaxy_session.py 中由GalaxySession串联用户请求进入ConstellationAgentgalaxy/agents/constellation_agent.py经由TaskConstellationgalaxy/constellation/task_constellation.py维护 DAG再通过ConstellationClientgalaxy/client/constellation_client.py把 TaskStar 分发到各设备。二、何时用 UFO²何时用 Galaxy2.1 适合继续使用 UFO² 的场景在单个 Windows 桌面上完成自动化任务需要深度 Windows 集成Office、文件资源管理器等希望快速、简单执行避免网络开销正在学习智能体自动化的基础知识工作流完全本地化无跨设备依赖典型示例根据这份 Excel 数据创建一个 PowerPoint 演示文稿按文件类型整理我的 Downloads 文件夹给这个电子表格里的所有联系人发送邮件2.2 适合使用 UFO³ Galaxy 的场景工作流跨多台设备Windows、Linux、服务器需要并行任务执行以提升性能子任务之间存在复杂依赖希望根据结果动态调整工作流需要容错与自动恢复正在编排异构系统桌面 服务器 云典型示例在笔记本上克隆仓库在 GPU 服务器上构建 Docker 镜像部署到 staging 环境在 CI 集群上运行测试从云存储拉取数据在 Linux 工作站上预处理在 A100 节点上训练模型在我的 Windows 机器上可视化收集所有 Linux 服务器的日志分析错误在 Windows 上生成报告2.3 可以两者并用吗可以UFO² 可以作为 Galaxy 中的设备智能体运行Galaxy (Orchestrator) ├── Windows Device (UFO² instance) ├── Linux Device (UFO² instance) └── Server Device (UFO² instance)这是复杂工作流推荐采用的混合方案——这也是本文后面第三条迁移路径混合共存的底层原理。三、核心概念映射从 UFO² 迁移到 Galaxy 时最需要做的是把熟悉的概念翻译成新的星座语言UFO² 概念Galaxy 对应物关系HostAgentConstellationAgent全局编排者但跨设备AppAgentDevice AgentHostAgent每台设备上的本地执行器SessionGalaxySession工作流执行上下文RoundConstellation Round编排迭代轮次ActionTaskStar可执行单元但绑定到具体设备BlackboardTask Results任务间通信Config Fileconfig/ufo/→config/galaxy/配置文件位置Execution Modepython -m ufo.server.app --port port设备以 WebSocket 服务器运行3.1 架构翻译示例UFO²单设备# UFO² 在本地执行 python -m ufo --task Create report from data.xlsx # HostAgent 协调单个桌面上的 AppAgents HostAgent ├── ExcelAgent (data.xlsx) ├── WordAgent (report.docx) └── OutlookAgent (send email)Galaxy多设备# Galaxy 跨设备编排 python -m galaxy --request Create report from data on Server, generate PDF on Windows # ConstellationAgent 创建 DAG 并分配给设备 ConstellationAgent └── TaskConstellation (DAG) ├── TaskStar-1: Fetch data → Linux Server ├── TaskStar-2: Process → GPU Workstation └── TaskStar-3: Generate PDF → Windows Desktop从源码看TaskStargalaxy/constellation/task_star.py与TaskStarLinegalaxy/constellation/task_star_line.py构成了 DAG 的节点与依赖边由TaskConstellationgalaxy/constellation/task_constellation.py统一管理并提供环检测、动态增删依赖、导入导出等能力。四、配置迁移从config/ufo/到config/galaxy/4.1 第一步保留 UFO² 配置保留现有 UFO² 配置——设备智能体仍会用到它config/ufo/ ├── agents.yaml.template # 设备智能体的 LLM 配置模板 ├── mcp.yaml # MCP 服务器配置 ├── system.yaml # 系统级配置 └── ...无需任何改动——每台 Galaxy 设备都会使用自己的 UFO² 配置。配置中心机制见 config/config_loader.py 与 config/config_schemas.py实际模板位于 config/ufo/。4.2 第二步创建 Galaxy 配置Galaxy 新增了编排层配置共三份核心文件全部位于 config/galaxy/。A. ConstellationAgent LLM 配置agent.yaml# 复制模板 cp config/galaxy/agent.yaml.template config/galaxy/agent.yaml编辑config/galaxy/agent.yaml以下为仓库 agent.yaml.template 中的实际字段# Galaxy Constellation Agent Configuration CONSTELLATION_AGENT: REASONING_MODEL: False API_TYPE: openai # openai 使用 OpenAI APIaoai 使用 Azure OpenAIazure_ad 使用 Azure AD 认证 API_BASE: https://api.openai.com/v1/chat/completions # API 端点 API_KEY: YOUR_KEY API_VERSION: 2025-02-01-preview API_MODEL: gpt-5-chat-20251003 # 编排模型推荐使用 GPT-4o/Claude 等强推理模型处理复杂 DAG 分解 # Azure AD 认证参数使用 azure_ad 类型时必填 AAD_TENANT_ID: 72f988bf-86f1-41af-91ab-2d7cd011db47 AAD_API_SCOPE: openai AAD_API_SCOPE_BASE: feb7b661-cac7-44a8-8dc1-163b63c23df2 # ConstellationAgent 提示词配置 CONSTELLATION_CREATION_PROMPT: galaxy/prompts/constellation/share/constellation_creation.yaml CONSTELLATION_EDITING_PROMPT: galaxy/prompts/constellation/share/constellation_editing.yaml CONSTELLATION_CREATION_EXAMPLE_PROMPT: galaxy/prompts/constellation/examples/constellation_creation_example.yaml CONSTELLATION_EDITING_EXAMPLE_PROMPT: galaxy/prompts/constellation/examples/constellation_editing_example.yaml其中API_TYPE支持openaiOpenAI 兼容接口、aoaiAzure OpenAI、azure_adAzure AD 认证三种取值可直接复用 UFO² 中已有的 LLM 配置。提示词模板实际位于 galaxy/prompts/constellation/ 下负责驱动创建 DAG与编辑 DAG两种模式对应文档中提到的双模式 DAG 演化。B. 设备池配置devices.yamlGalaxy 新增能力声明所有可用设备。以下是仓库 devices.yaml 的完整结构# Device Configuration - YAML Format # 运行时设置constellation_id、heartbeat_interval 等在 constellation.yaml 中配置 devices: # - device_id: windowsagent # server_url: ws://localhost:5005/ws # os: windows # capabilities: # - web_browsing # - office_applications # - file_management # - send emails # - any windows tasks # metadata: # location: home_office # os: windows # performance: medium # description: Primary development laptop # operation_engineer_email: hidan.zhanggmail.com # app_log_file: log_detailed.xlsx # sheet_name_for_writing_log_in_excel: report # sender_name: Zac # operation_engineer_name: Hidan Zhang # tips: If you want to use PowerShell, please launch a new PowerShell window to run the commands. # max_retries: 5 - device_id: linux_agent_1 server_url: ws://localhost:5001/ws os: linux capabilities: - server metadata: os: linux performance: medium logs_file_path: /root/log/log1.txt dev_path: /root/dev1/ warning_log_pattern: WARN error_log_pattern: ERROR or FATAL auto_connect: true max_retries: 5 # ... linux_agent_2、linux_agent_3 结构相同端口分别为 5002/5003各字段说明字段含义说明device_id设备唯一标识字符串如linux_agent_1server_url设备 WebSocket 地址格式ws://host:port/ws对应设备端 UFO 服务os操作系统类型windows/linux/macos等capabilities能力标签列表如server、office_applications、docker、machine_learningmetadata自由扩展元数据可携带日志路径、GPU 信息、负责人邮箱、操作提示等任意键值auto_connect是否自动连接true时客户端初始化即发起连接max_retries最大重试次数连接失败重试上限默认 5能力匹配Capability MatchingConstellationAgent正是依据这些capabilities标签来智能分配任务的。从 config_loader.py 的DeviceConfig数据结构可以看到device_id、server_url、os、capabilities、metadata、auto_connect、max_retries与 YAML 字段一一对应ConstellationConfig.from_yamlgalaxy/client/config_loader.py#L102-L150负责把 YAML 解析为配置对象。C. 星座运行时配置constellation.yamlvi config/galaxy/constellation.yaml以下是仓库 constellation.yaml 的实际内容# Galaxy Constellation Configuration # Constellation Runtime Settings CONSTELLATION_ID: test_constellation # 星座唯一标识 HEARTBEAT_INTERVAL: 30.0 # 设备健康检查心跳间隔秒 RECONNECT_DELAY: 5.0 # 断线自动重连延迟秒 MAX_CONCURRENT_TASKS: 6 # 星座内最大并行任务数 MAX_STEP: 15 # 每个会话最大编排轮次 # Device Configuration DEVICE_INFO: config/galaxy/devices.yaml # 设备配置文件路径 # Logging Configuration LOG_TO_MARKDOWN: true # 是否将轨迹日志保存为 markdown 格式参数速查参数默认值作用CONSTELLATION_IDtest_constellation本次编排的星座标识出现在会话与日志命名中HEARTBEAT_INTERVAL30.0客户端向设备发送心跳、确认存活的间隔秒RECONNECT_DELAY5.0设备断线后自动重连的等待时间秒MAX_CONCURRENT_TASKS6同时派发到各设备的任务数上限控制并行度MAX_STEP15一次会话内编排轮次上限防止死循环DEVICE_INFOconfig/galaxy/devices.yaml设备注册表文件路径LOG_TO_MARKDOWNtrue是否生成 markdown 轨迹报告CONSTELLATION_ID、HEARTBEAT_INTERVAL等运行时参数由 config/config_loader.py 的 Galaxy 配置加载逻辑读取并最终注入ConstellationClientgalaxy/client/constellation_client.py用于初始化设备管理器的心跳与重连调度。五、三条迁移路径5.1 路径一保留 UFO² 做本地另起 Galaxy 做多设备适用场景渐进式采用保住现有工作流不动。单设备任务继续用 UFO²python -m ufo --task Your local task仅在多设备编排时使用 Galaxypython -m galaxy --request Your cross-device task无需迁移——两者独立共存互不干扰。这条路径的成本最低适合先在团队内验证 Galaxy 的价值。5.2 路径二把 UFO² 实例转换为 Galaxy 设备适用场景所有工作流都交给 Galaxy 编排。Step 1在每台设备上以 Agent Server 方式启动 UFO²在每台设备Windows、Linux 等上运行 UFO 服务端# Windows Desktop python -m ufo.server.app --port 5005 # Linux Workstation python -m ufo.server.app --port 5001 # GPU Server python -m ufo.server.app --port 5002这条命令的作用与源码 ufo/server/app.py 的实现一致在设备上启动 WebSocket 服务--port参数默认 5000可显式指定监听来自 Galaxy 的任务分派复用设备本地已有的 UFO² 智能体HostAgent/AppAgent执行任务把结果回传给 ConstellationClientStep 2配置 Galaxy 客户端在config/galaxy/devices.yaml中登记所有设备写法见 4.2-B 节。Step 3启动 Galaxy 客户端# 交互模式 python -m galaxy --interactive # 直接请求 python -m galaxy --request Clone repo on laptop, build on server, test on Windows启动后实际发生的流程ConstellationAgent把请求分解为 DAG创建 Task Constellation依据capabilities把 TaskStar 分配到对应设备设备使用本地 UFO² 智能体执行任务结果汇总后呈现给用户从源码看galaxy.py入口galaxy/galaxy.py支持--interactive、--request、--session-name、--task-name、--max-rounds默认 10、--output-dir、--log-level、--mock无 LLM 的测试模式等参数GalaxyClient.initialize()galaxy/galaxy_client.py内部会先注册所有设备若检测到设备离线process_request()会先调用ensure_devices_connected()自动重连。5.3 路径三编程式迁移适用场景自定义工作流、CI/CD 集成。UFO² API迁移前from ufo.module.session_pool import SessionFactory, SessionPool import asyncio async def main(): # 在本地设备上创建 UFO² session sessions SessionFactory().create_session( taskmy_task, modenormal, plan, requestCreate a presentation from data.xlsx ) # 运行 session pool SessionPool(sessions) await pool.run_all() asyncio.run(main())Galaxy API迁移后from galaxy import GalaxyClient import asyncio async def main(): # Galaxy session 协调多台设备 client GalaxyClient(session_namemy_workflow) await client.initialize() result await client.process_request( Clone repo on laptop, build on server, test on Windows ) print(fWorkflow completed: {result}) await client.shutdown() asyncio.run(main())关键差异两者都是async风格UFO² v2.0 基于 asyncioUFO² 使用SessionFactorySessionPool模式Galaxy 使用GalaxyClient做多设备编排Galaxy 返回的是星座级结果跨设备process_request()的返回值中会附带constellation信息id、name、task_count、dependency_count、state见 galaxy/galaxy_client.pyGalaxy 要求先注册设备GalaxyClient构造时会通过get_galaxy_config()读取DEVICE_INFO指向的devices.yamlGalaxyClient还提供了interactive_mode()交互式 CLI、reset_session()重置当前会话、create_next_session()创建新会话、shutdown(forceTrue)强制取消运行中任务并清理资源等完整生命周期方法。六、功能对比保留的能力 vs Galaxy 新增能力6.1 Galaxy 中完整保留的 UFO² 能力当 UFO² 作为 Galaxy 设备运行时UFO² 的全部能力原样保留UFO² 功能Galaxy 设备可用说明✅ 混合 GUI–API 执行✅ 是每台设备使用其原生 UFO² 智能体✅ Windows UIA/Win32/COM✅ 是完整的 OS 集成被保留✅ MCP 服务器集成✅ 是设备可使用自定义 MCP 服务器✅ 持续学习✅ 是每台设备维护自己的 RAG✅ 画中画✅ 是每台设备上非侵入式执行✅ AppAgent 专业化✅ 是HostAgent 管理本地 AppAgents6.2 Galaxy 独占的新功能功能描述收益Task Constellation基于 DAG 的任务分解复杂工作流规划并行执行异步多设备任务可并行任务提速明显动态自适应运行时修改 DAG自愈式工作流设备分配基于能力标签的任务放置资源利用最优化跨平台Windows Linux macOS 支持异构编排事件驱动协调面向任务事件的观察者模式响应式工作流控制形式化安全保证I1–I3 不变量可证明正确的并发执行其中动态自适应与双模式 DAG 演化对应ConstellationAgent的创建/编辑两套提示词见 4.2-A运行期对 DAG 的增删改由TaskConstellation的动态依赖管理 API 支撑galaxy/constellation/task_constellation.py事件驱动协调则由 galaxy/core/events.py 的事件总线与 galaxy/session/observers/ 下的一组观察者实现。七、实战示例7.1 示例一简单本地任务UFO²迁移前python -m ufo --task Create a presentation from data.xlsxGalaxy迁移后——方案 A继续用 UFO²# 无需改动——本地任务继续使用 UFO² python -m ufo --task Create a presentation from data.xlsxGalaxy迁移后——方案 B改用 Galaxy# Galaxy 会自动把任务分配给本地 Windows 设备 python -m galaxy --request Create a presentation from data.xlsx on my desktop何时用哪个只有一台 Windows 桌面时用 UFO²更简单需要日志/监控能力时用 GalaxyLOG_TO_MARKDOWN: true可生成轨迹报告7.2 示例二跨设备工作流UFO²迁移前# ❌ 不可能——UFO² 仅支持单设备 # 你只能手动 # 1. SSH 到服务器 # 2. 运行构建命令 # 3. 把结果拷回 # 4. 本地打开Galaxy迁移后python -m galaxy --request \ Clone https://github.com/myrepo on laptop, \ build Docker image on gpu_server, \ deploy to staging server, \ open logs on my Windows desktopGalaxy 会自动创建 4 任务的 DAG把任务分配给具备相应capabilities的设备在可能的地方并行执行受MAX_CONCURRENT_TASKS约束流式回传结果7.3 示例三数据管线UFO²迁移前——需要手动编排多步from ufo.module.session_pool import SessionFactory, SessionPool import asyncio async def main(): # Step 1: 拉取数据本地 sessions_1 SessionFactory().create_session( taskfetch_data, modenormal, plan, requestDownload dataset from cloud storage ) pool_1 SessionPool(sessions_1) await pool_1.run_all() # Step 2: 手动传输到服务器 # scp data.csv userserver:/data/ # Step 3: SSH 并运行处理 # ssh server python process.py # Step 4: 手动拷回结果 # scp server:/output/results.csv . # Step 5: 本地可视化 sessions_2 SessionFactory().create_session( taskvisualize, modenormal, plan, requestCreate charts from results.csv ) pool_2 SessionPool(sessions_2) await pool_2.run_all() asyncio.run(main())Galaxy迁移后——一次请求完成全管线import asyncio from galaxy import GalaxyClient async def main(): client GalaxyClient(session_namedata_pipeline) await client.initialize() # 单个请求——编排交给 Galaxy await client.process_request( Fetch dataset from cloud to laptop, preprocess on linux_workstation, train model on gpu_server, visualize results on my Windows desktop ) await client.shutdown() asyncio.run(main())Galaxy 会自动建立依赖链DAG 边在设备间传递数据按顺序执行管线各阶段失败时自动重试max_retries生效八、UFO² 用户的学习路径第 1 周理解概念阅读 Galaxy 总览理解 Task Constellation 与 DAG 模型与 UFO² 的两层层级结构做对比UFO² 总览结合本文第三节的概念映射表第 2 周动手实践把一台 Windows 设备配置为 Galaxy 设备按第五章节路径二运行一个简单的多步骤工作流对比 UFO² 与 Galaxy 的日志第 3 周多设备向设备池加入一台 Linux 设备创建跨平台工作流用轨迹报告Trajectory Report监控执行第 4 周进阶构建自定义设备能力自定义capabilities标签跨设备集成 MCP 服务器优化任务分配逻辑九、常见问题FAQQ迁移到 Galaxy 后还能继续用 UFO² 吗A可以两者共存。简单本地任务用 UFO²多设备工作流用 Galaxy。Q需要重写我的自定义智能体吗A不需要。现有 UFO² 智能体作为 Galaxy 设备运行时可以原样工作。QGalaxy 适合生产环境吗AGalaxy 处于活跃开发阶段对于关键的单设备工作流UFO² 更成熟稳定。Q可以混用 Windows 和 Linux 设备吗A可以这正是 Galaxy 的核心特性。每台设备使用其原生的 UFO² 实现。Q如何调试失败的跨设备工作流A查看logs/galaxy/session/output.md其中包含逐步执行细节与 DAG 可视化。Galaxy 的轨迹报告机制见 轨迹报告 与 性能指标 文档。十、相关文档导航迁移资源Galaxy 快速开始 — 逐步搭建 GalaxyUFO² 快速开始 — UFO² 参考设备配置 — 设备池设置Agent 注册 — 设备如何加入 Galaxy架构深度阅读Galaxy 总览 — 星座架构UFO² 总览 — 桌面 AgentOS 设计Constellation Agent — DAG 编排Task Constellation — DAG 结构运维指南轨迹报告 — 执行日志性能指标 — 监控AIP 协议 — 设备通信协议源码速查编排入口galaxy/galaxy.py、galaxy/galaxy_client.py设备客户端galaxy/client/constellation_client.py、galaxy/client/device_manager.py配置解析galaxy/client/config_loader.pyDAG 管理galaxy/constellation/task_constellation.py、galaxy/constellation/orchestrator/orchestrator.py会话编排galaxy/session/galaxy_session.py设备端服务ufo/server/app.py十一、迁移检查清单理解 UFO 演进v1 → UFO² → Galaxy决定迁移策略混合共存 vs 全面迁往 Galaxy保留 UFO² 配置config/ufo/不动创建 Galaxy 配置config/galaxy/agent.yaml、devices.yaml、constellation.yaml以服务端方式启动设备每台设备运行python -m ufo.server.app --port port测试单设备工作流验证连通性测试多设备工作流跨平台任务审查轨迹报告logs/galaxy/*/output.md对比性能针对你的用例对比 UFO² 与 Galaxy更新自动化脚本若使用编程式 API培训团队分享本指南按此清单推进即可在保留既有 UFO² 工作流的前提下逐步释放 UFO³ Galaxy 多设备编排的全部能力。【免费下载链接】UFOUFO³: Weaving the Digital Agent Galaxy项目地址: https://gitcode.com/GitHub_Trending/uf/UFO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网