UFO:Windows操作系统的具象智能代理
近年来,随着AI技术的发展,智能代理在各种应用中扮演着越来越重要的角色。微软推出的UFO(User-Focused Operator)正是这样一个出色的多代理框架,旨在通过无缝导航和操作,满足用户在Windows操作系统中跨多个应用程序的需求。今天,我将为大家介绍UFO的架构、功能亮点以及如何开始使用这个强大的工具。
https://github.com/microsoft/UFO

框架概述
UFO作为一个多代理框架,主要包含以下几个组件:
-
HostAgent 🤖:负责选择适合用户请求的应用程序。当请求跨越多个应用时,它还可以在完成部分任务后切换应用。
-
AppAgent 👾:在选定的应用程序内迭代执行操作,直至任务成功完成。
-
应用自动化器 🎮:负责将HostAgent和AppAgent的行动翻译为与应用程序的交互,包括UI控件、原生API或AI工具的使用。
这两个代理利用GPT-Vision的多模态能力来理解应用界面并完成用户的请求。更详细的技术内容可以参考官方的技术报告和文档。

最新动态
官方一直致力于不断改进和优化UFO,以提供更高效的用户体验。以下是最近的一些更新和重要新闻:
-
2024-09-08:发布v1.1.0版本!此版本允许UFO点击应用程序的任意区域,并将其延迟减少至原来的三分之一。
-
2024-07-06:发布v1.0.0版本!详细文档已上线,欢迎大家贡献和反馈。
-
2024-06-28:官方激动地宣布,UFO的官方介绍视频已在YouTube上线!
-
2024-05-21:官方在GitHub上达到了5000颗星!✨
详细的更新日志请参考官方的技术文档,每一次更新都包含许多新功能和改进,从HostAgent重构到支持Google Gemini推理引擎,再到支持自定义用户代理等,让UFO变得更强大和易用。
媒体报道
UFO发布以来,受到了广泛的媒体关注。以下是部分媒体报道的标题和评价:
-
Microsoft的UFO带来了更智能的Windows体验
-
UFO & GPT-4-V:让GPT接管一切
-
AI PC - 计算机的未来?微软的UFO
-
下一代智能版Windows要来了?微软推出首个Windows Agent,命名为UFO!
这些报道展示了UFO如何革新技术前沿以及其对多平台的影响。
功能亮点
UFO具有许多突出的功能:
-
Windows首个智能代理:UFO是首个能够将自然语言用户请求翻译为在Windows操作系统上可执行操作的智能代理框架。
-
专家代理:通过从多种异构源(包括离线帮助文档、在线搜索引擎和人类示范)进行检索增强生成(RAG),使UFO成为应用程序的“专家”。
-
丰富的技能集:UFO具备多种技能,支持全面的自动化操作,包括鼠标、键盘、原生API和“Copilot”。
-
交互模式:UFO能够在一个会话内处理用户的多个子请求,实现复杂任务的无缝完成。
-
代理定制化:用户可以通过提供附加信息,自定义自己的代理。代理在需要时会主动查询用户详细信息,以便更好地调整其行为。
-
可扩展的AppAgent创建:UFO提供扩展性,允许用户和应用开发者以简单且可扩展的方式创建自己的AppAgent。
如何开始
步骤1:安装
UFO需要Python 3.10或更高版本,并运行在Windows 10及以上的操作系统上。您可以通过以下命令进行安装:
# 创建conda环境(可选)# conda create -n ufo python=3.10# conda activate ufo# 克隆仓库git clone https://github.com/microsoft/UFO.gitcd UFO# 安装依赖pip install -r requirements.txt# 如果您想使用Qwen作为LLM,请取消注释相关库。
步骤2:配置LLM
在运行UFO之前,您需要为HostAgent和AppAgent分别提供LLM配置。您可以通过复制ufo/config/config.yaml.template并编辑相应的配置,创建您自己的ufo/config/config.yaml文件:
OpenAI:VISUAL_MODE: True, # 是否使用视觉模式API_TYPE: "openai", # API类型API_BASE: "https://api.openai.com/v1/chat/completions", # OpenAI API端点API_KEY: "sk-", # OpenAI API密钥API_VERSION: "2024-02-15-preview", # 默认版本API_MODEL: "gpt-4-vision-preview", # 唯一的OpenAI模型Azure OpenAI (AOAI):VISUAL_MODE: True, # 是否使用视觉模式API_TYPE: "aoai", # API类型API_BASE: "YOUR_ENDPOINT", # AOAI API地址API_KEY: "YOUR_KEY", # AOAI API密钥API_VERSION: "2024-02-15-preview", # 默认版本API_MODEL: "gpt-4-vision-preview", # 唯一的OpenAI模型API_DEPLOYMENT_ID: "YOUR_AOAI_DEPLOYMENT", # AOAI API部署ID
您还可以为每个代理配置非视觉模型(如GPT-4),通过设置VISUAL_MODE: False和适当的API_MODEL。另外,您可以在BACKUP_AGENT字段中设置备用语言模型引擎,以防主引擎在推理过程中失败。
步骤3:RAG的附加设置(可选)
如果您想增强UFO的外部知识调取功能,可以在ufo/config/config.yaml文件中配置外部数据库用于检索增强生成(RAG):
-
离线帮助文档:使UFO能够从离线帮助文档中检索信息。
-
在线Bing搜索引擎:利用最新的在线搜索结果增强UFO的能力。
-
自我经验:将任务完成轨迹保存到UFO的内存中,以供将来参考。
-
用户演示:通过用户演示提升UFO的能力。
步骤4:启动UFO
<|diff_marker|> ADD A1000 在Windows命令行(CLI)中执行以下命令以启动UFO:
# 假设您在克隆的UFO文件夹中python -m ufo --task <your_task_name>
这将启动UFO进程,您可以通过命令行界面与之交互。如果一切正常,您将看到以下提示:
欢迎使用UFO🛸,Windows操作系统交互的UI专注代理。_ _ _____ ___| | | || ___| / _ \| | | || |_ | | | || |_| || _| | |_| |\___/ |_| \___/请输入要完成的请求🛸:
步骤5:执行日志
您可以在以下文件夹中找到截屏和请求&响应日志:
./ufo/logs/<your_task_name>/
这些日志可用于调试、重播或分析代理输出。
获取帮助
若需帮助,请首先查阅官方的文档。若仍有疑问,您可以在GitHub Issue上提问或通过邮件联系ufo-agent@microsoft.com。
评价
请参考官方技术报告附录A中的WindowsBench部分。以下是一些有助于完成请求的提示:
-
在UFO执行请求之前,请确保目标应用程序处于活动状态(可以最小化但不能关闭)。
-
请注意,GPT-V的输出可能因相同请求而异。如果未成功完成请求,请尝试重新尝试。
引用
如果您在研究中使用了UFO,请引用官方 的论文:
@article{ufo,title={{UFO: A UI-Focused Agent for Windows OS Interaction}},author={Zhang, Chaoyun and Li, Liqun and He, Shilin and Zhang, Xu and Qiao, Bo and Qin, Si and Ma, Minghua and Kang, Yu and Lin, Qingwei and Rajmohan, Saravan and Zhang, Dongmei and Zhang, Qi},journal={arXiv preprint arXiv:2402.07939},year={2024}}
相关项目
您也可以关注TaskWeaver,一个以编码优先的LLM代理框架,用于无缝规划和执行数据分析任务。
相关文章:
UFO:Windows操作系统的具象智能代理
近年来,随着AI技术的发展,智能代理在各种应用中扮演着越来越重要的角色。微软推出的UFO(User-Focused Operator)正是这样一个出色的多代理框架,旨在通过无缝导航和操作,满足用户在Windows操作系统中跨多个应…...
win10/11无休眠设置和断电后电池模式自动休眠而不是睡眠-用以省电
1、打开休眠设置选项 打开控制面板\所有控制面板项\电源选项\ 左侧的选择电源按钮的功能 默认状态没有休眠 1、管理员权限打开cmd或者power shell 2、输入一下指令,打开休眠选项 powercfg -hibernate on关闭后重新打开 控制面板\所有控制面板项\电源选项\左侧的选…...
【动态规划之斐波那契数列模型】——累加递推型动态规划
文章目录 第N个泰波那契数列面试题08.01.三步问题使用最小花费爬楼梯解码问题 第N个泰波那契数列 解题思路: 泰波那契数列的第 N 项定义为前面三项之和,即 T0 0, T1 1, T2 1,从 T3 开始,每一项都等于前三项的和。要找到第 N 项…...
5g通信系统用到的crc码
5g通信系统用到的crc码 关注 在5G通信系统中,CRC码(循环冗余校验码)扮演着关键角色,它通过执行多项式除法运算来检测数据在传输过程中是否发生错误。5G通信系统中采用了多种CRC码,每种码都有其独特的计算方法和校验特…...
Ubuntu-22.04 虚拟机安装
1. Ubuntu安装方式 1.1. 基于物理介质安装 光盘安装:通过将 Ubuntu 镜像刻录到光盘,在计算机 BIOS/UEFI 中设置光盘为第一启动项,然后按照安装程序的提示进行语言选择、分区、用户信息设置等操作来完成安装。这种方式需要有光盘刻录设备和空…...
Windows、Linux系统上进行CPU和内存压力测试
CPU和内存压力测试 1. Linux环境 Linux环境下,我们可以用 stress 工具进行内存、CPU等的压力测试。 【1】. stress工具说明 [kalamikysrv1 ~]$ stress --help stress imposes certain types of compute stress on your systemUsage: stress [OPTION [ARG]] ...-…...
FFmpeg 4.3 音视频-多路H265监控录放C++开发八,使用SDLVSQT显示yuv文件 ,使用ffmpeg的AVFrame
一. AVFrame 核心回顾,uint8_t *data[AV_NUM_DATA_POINTERS] 和 int linesize[AV_NUM_DATA_POINTERS] AVFrame 存储的是解码后的数据,(包括音频和视频)例如:yuv数据,或者pcm数据,参考AVFrame结…...
HTML 标签属性——<a>、<img>、<form>、<input>、<table> 标签属性详解
文章目录 1. `<a>`元素属性hreftargetname2. `<img>`元素属性srcaltwidth 和 height3. `<form>`元素属性actionmethodenctype4. `<input>`元素属性typevaluenamereadonly5. `<table>`元素属性cellpaddingcellspacing小结HTML元素除了可以使用全局…...
css简写属性
一些属性,如 font、background、padding、border 和 margin 等属性称为简写属性。它们允许在一行中设置多个属性值,从而节省时间并使代码更整洁。 /* 在像 padding 和 margin 这样的 4 值简写语法中,数值的应用顺序是上、右、下、左ÿ…...
力扣刷题(sql)--零散知识点(2)
1.自定义分组后的分类统计问题(某组内无数据却仍要展示) 例题1: 查询每个工资类别的银行账户数量。 工资类别如下: "Low Salary":所有工资 严格低于 20000 美元。"Average Salary":…...
TCP是怎样工作的网络拥塞控制理论和算法部分记录
参考资料 https://github.com/ituring/tcp-book 流量控制、窗口控制和拥塞控制的关系 流量控制、窗口控制和拥塞控制的关系如图所示 窗口控制是上层的概念,核心思路是基于滑动窗口技术传输数据。而确定发送窗口大小的方法有流量控制和拥塞控制两种 流量控制&…...
CSRF初级靶场
靶场 针对DVWA么有防御 源码: <?phpif( isset( $_GET[ Change ] ) ) {// Get input$pass_new $_GET[ password_new ];$pass_conf $_GET[ password_conf ];// Do the passwords match?if( $pass_new $pass_conf ) {// They do!$pass_new ((isset($GLOBA…...
CSP/信奥赛C++刷题训练:经典差分例题(2):洛谷P9904 :Mieszanie kolorów
CSP/信奥赛C++刷题训练:经典差分例题(2):洛谷P9094 :Mieszanie kolorw 题目描述 题目译自 PA 2020 Runda 1 Mieszanie kolorw Byteasar 正准备给栅栏涂漆。他已经准备了 n n n 罐白色油漆,他把这些油漆排列成一排,从 1 1 1 到 n n n 编号。他想用这些油漆,但他不想…...
Java | Leetcode Java题解之第525题连续数组
题目: 题解: class Solution {public int findMaxLength(int[] nums) {int maxLength 0;Map<Integer, Integer> map new HashMap<Integer, Integer>();int counter 0;map.put(counter, -1);int n nums.length;for (int i 0; i < n;…...
YOLOv8改进 - 注意力篇 - 引入iRMB注意力机制
#YOLO# #目标检测# #计算机视觉# 一、本文介绍 作为入门性篇章,这里介绍了iRMB注意力在YOLOv8中的使用。包含iRMB原理分析,iRMB的代码、iRMB的使用方法、以及添加以后的yaml文件及运行记录。 二、iRMB原理分析 iRMB官方论文地址:文章 iR…...
项目学习总结
文章目录 项目学习总结项目中的vw适配vw使用 封装axios实例axios常见请求配置axios响应结构axios拦截器配置Vue Router全局前置守卫 项目学习总结 在智慧商城项目中的学习总结。 项目中的vw适配 vw 是一种长度单位,代表视口宽度的百分比。1vw 等于视口宽度的1%。…...
用于低成本接收机的LoRa SF11 500KHz波形检测解调算法
前一篇里,获取了LORAwan的物理层波形,并通过Octave查看了它的瞬时频率。LoRa是私有协议,网上已经有了很不错的开源的实现,如: S2_LoRa通信实验 LoRaPhy 以及GNU-Radio的Lora模块、LimeSDR的Lora实现。当我试图修改上…...
WEB防护
WEB防护的范围比较广,主要是指针对web安全而做的各种防御措施, 包含应对xss、csrf等漏洞攻击的应对方式。 Web防护是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品, 主要用于防御针对网络应用层的攻击࿰…...
使用Jest进行JavaScript单元测试
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Jest进行JavaScript单元测试 引言 Jest 简介 安装 Jest 创建基本配置 编写测试用例 运行测试 快照测试 模拟函数 代码覆盖率…...
网络安全法详细介绍——爬虫教程
目录 [TOC](目录)一、网络安全法详细介绍1. 网络安全法的主要条款与作用2. 网络安全法与爬虫的关系3. 合法使用爬虫的指南 二、爬虫的详细教程1. 准备环境与安装工具2. 使用requests库发送请求3. 解析HTML内容4. 使用robots.txt规范爬虫行为5. 设置请求间隔6. 数据清洗与存储 三…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
