微软UFO项目:基于多模态AI的Windows操作系统自动化智能体

news2026/4/26 13:30:45
1. 项目概述当“统一”成为AI应用开发的新范式如果你最近在关注AI应用开发的前沿动态可能会被一个名字吸引UFO。这并非来自科幻电影而是微软研究院开源的一个名为“UFO: A UI-Focused Agent for Windows OS”的项目。简单来说UFO是一个能够理解、操作和自动化Windows操作系统图形用户界面的AI智能体。想象一下你只需要用自然语言告诉它“帮我把桌面上的所有截图整理到一个新建的‘截图’文件夹里并按日期排序”它就能像一位熟练的助手一样移动鼠标、点击按钮、输入文字自动完成这一系列操作。这听起来像是RPA机器人流程自动化的升级版但其核心在于UFO将大型语言模型的“大脑”与计算机视觉的“眼睛”以及精准的UI控制“手”结合在了一起形成了一套统一的操作系统级自动化解决方案。在过去要实现类似的自动化开发者往往需要面对一个复杂的“工具丛林”可能需要用SikuliX进行图像识别点击用PyAutoGUI模拟键盘鼠标用Playwright或Selenium控制浏览器再结合OpenCV处理更复杂的视觉场景。这些工具各有所长但将它们无缝集成、并让AI智能体理解整个操作流程的上下文是一个巨大的工程挑战。UFO的出现正是为了解决这个“最后一公里”的问题——它试图提供一个统一的框架让AI智能体能够像人类一样通过视觉感知和理解直接与任何Windows应用程序交互而无需为每个应用单独开发接口或脚本。这个项目的核心价值在于其“UI-Focused”以用户界面为中心的定位。它不关心后台的API或数据接口只关注屏幕上能看到的东西窗口、按钮、文本框、菜单。这种基于视觉的交互方式使其具备了理论上无限的扩展性。只要应用程序有图形界面UFO就有可能与之交互。这对于自动化那些没有开放API的遗留软件、处理复杂的多步骤工作流、甚至为残障人士提供辅助工具都具有革命性的意义。接下来我将从设计思路、核心实现、实操应用和常见问题四个维度为你深度拆解这个充满潜力的项目。2. 核心架构与设计哲学解析2.1 统一感知与执行的“双模态”智能体模型UFO的架构设计清晰地体现了其“统一”的理念。它本质上是一个由大型语言模型驱动的智能体但其特殊之处在于它同时处理两种模态的输入视觉和语言并输出动作。我们可以将其理解为一个“观察-思考-行动”的循环。观察PerceptionUFO的“眼睛”是计算机视觉模型。它通过截取当前屏幕图像并结合可访问性技术如UI Automation或MSAA获取的UI元素层级结构信息来构建对当前屏幕状态的全面理解。这不仅仅是识别出“这里有一个按钮”而是理解这个按钮在哪个应用的哪个窗口里它旁边有什么其他元素它的状态是启用还是禁用。这种结合了像素级图像和结构化元数据的感知方式比单纯依赖图像识别或单纯依赖可访问性树要稳健得多。思考Cognition这是大型语言模型发挥核心作用的地方。UFO将当前的屏幕状态以文本描述或结构化数据的形式和用户下达的自然语言指令一同提交给LLM。LLM的任务是进行任务规划将复杂的用户指令如“预订下周一的会议室”分解成一系列原子操作步骤如“打开Outlook”、“点击新建会议”、“在主题栏输入‘团队周会’”……。更重要的是LLM需要根据当前的屏幕内容决定下一步具体要操作哪个UI元素以及如何操作。例如它需要判断出屏幕上哪个蓝色矩形是“发送”按钮。行动Action根据LLM的决策UFO调用其执行模块模拟人类的交互动作。这包括导航将鼠标光标移动到目标UI元素上。操作执行点击、双击、右击、拖拽等鼠标动作或输入文本、按下快捷键等键盘动作。等待在执行操作后等待应用程序响应和屏幕状态更新然后进入下一个“观察-思考-行动”循环。这个闭环的核心在于LLM充当了“总指挥”它基于对屏幕的“理解”来发出动作指令而不是依赖于预先编写好的、死板的坐标或控件ID。这使得UFO能够处理前所未见的UI布局和动态变化的界面。2.2 为什么选择“视觉为主”的路径一个根本性的设计选择是UFO为何重度依赖屏幕截图和视觉理解而不是完全依赖Windows提供的UI自动化框架如UIAutomation这背后有深刻的考量。兼容性与泛化能力UI自动化框架需要应用程序本身提供良好的可访问性支持。对于许多老旧应用、定制化内部软件或游戏界面其可访问性树可能不完整、不正确甚至根本没有。而视觉是普适的——只要能在屏幕上看到就能被分析。这极大地扩展了UFO的潜在应用范围。应对动态与复杂UI现代应用界面充满动态效果、自定义控件和复杂的视觉状态如悬停、加载。纯靠可访问性树有时难以准确捕捉这些状态。视觉模型可以识别按钮是否处于高亮按下状态、进度条走了多少、某个区域是否有错误提示的红包图标这些信息对于做出正确的操作决策至关重要。简化开发与维护如果完全基于可访问性树开发者为每个新应用编写自动化脚本时可能需要深入理解其内部控件结构。而基于视觉的方式开发者更多是“描述”任务和目标由AI去理解如何达成降低了开发门槛。当然UFO并非抛弃可访问性信息而是将其作为增强视觉理解的辅助数据形成互补优势。注意这种视觉优先的策略也带来了挑战主要是对计算资源的要求更高需要运行视觉模型以及对屏幕分辨率、缩放比例、主题颜色等变化可能更敏感。在实际部署时需要在泛化能力和运行效率之间做出权衡。3. 关键技术组件与实操部署要点3.1 环境搭建与依赖管理UFO项目基于Python并深度集成了一系列强大的开源库。部署它的第一步就是建立一个干净、兼容的Python环境。强烈建议使用Conda或venv创建独立的虚拟环境避免与系统或其他项目的包发生冲突。核心依赖解析PyTorch作为底层深度学习框架承载视觉模型和可能的LLM本地运行。安装时需根据你的CUDA版本选择对应的命令这对于利用GPU加速至关重要。Transformers来自Hugging Face用于加载和运行预训练的视觉-语言模型。UFO很可能使用了类似于GIT或BLIP这类能够理解图像内容的VLMVision-Language Model。Windows-specific Libraries这是与操作系统交互的核心。包括pyautogui用于模拟鼠标键盘输入pyscreeze用于截图pythoncom和win32gui等用于访问Windows API和可访问性树。这些库的版本需要特别注意兼容性尤其是在不同的Windows版本上。OpenCV用于基础的图像处理如图像编码、缩放、特征匹配等是视觉管道的组成部分。一个典型的部署流程如下创建环境conda create -n ufo-agent python3.10激活环境conda activate ufo-agent安装PyTorch前往PyTorch官网根据你的CUDA版本生成安装命令。例如对于CUDA 11.8pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118克隆项目并安装依赖git clone https://github.com/microsoft/UFO.git然后cd UFO并pip install -r requirements.txt。这里经常出问题因为requirements.txt可能包含版本范围。如果遇到冲突可以尝试先安装核心包再逐个安装其他依赖。模型下载运行UFO可能需要下载预训练模型权重。项目README或脚本通常会提供下载链接或自动下载指令。由于模型文件通常较大几GB需要确保网络通畅和足够的磁盘空间。实操心得在Windows上安装pywin32等库时如果使用pip安装失败可以尝试从https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应的.whl文件进行离线安装。另外将项目路径添加到系统环境变量PYTHONPATH中或者确保在项目根目录下运行脚本可以避免很多模块导入错误。3.2 视觉感知模块的深度拆解UFO的“眼睛”是其最精妙的部分之一。它并非简单截图而是构建了一个分层的视觉理解管道。第一层屏幕捕获与元素定位当UFO需要观察时它首先捕获全屏或指定窗口的截图。同时它并行调用Windows UI Automation API获取当前焦点窗口的可访问性树。这棵树以XML结构描述了窗口中的控件按钮、编辑框等及其属性名称、类型、位置、状态。UFO会将视觉截图和这棵结构树进行对齐融合。例如视觉模型可能识别出图片中有一个“登录”按钮而可访问性树则提供了这个按钮的精确边界框坐标和程序化的控件ID。第二层视觉语言模型VLM理解截图和初步的结构化信息被送入一个视觉语言模型。这个模型的任务是将像素信息转化为富含语义的文本描述。例如它不会只说“有一个蓝色矩形”而是会生成如“这是一个位于窗口中央的深蓝色按钮上面有白色的‘提交’文字按钮目前处于可点击状态”的描述。这个描述与从可访问性树中提取的控件属性如Name‘SubmitButton’相结合形成了对当前屏幕状态的“富文本”表示。第三层任务相关的焦点识别根据用户指令如“点击提交按钮”UFO需要从屏幕上的众多元素中锁定目标。这里结合了多种信号文本匹配将指令中的关键词“提交”与所有UI元素的文本标签、名称进行匹配。视觉显著性VLM提供的描述中与动作相关的元素如按钮、输入框会被赋予更高权重。空间与逻辑上下文如果指令是“在用户名框里输入‘admin’”系统会先找到名为“用户名”的文本框而它通常位于“密码”框之上。这种布局和逻辑关系也被纳入考量。这个过程输出的是一个或多个候选UI元素以及对其是正确目标的置信度。高置信度的目标会被直接执行操作低置信度的则可能需要LLM在“思考”阶段进一步推理或者向用户请求澄清。3.3 大型语言模型的集成与提示工程LLM是UFO的“大脑”。项目可能支持多种集成方式通过API调用云端大模型如OpenAI的GPT-4 Azure OpenAI Service或运行本地量化后的小模型如Llama 3.1 Qwen2.5。选择哪种方式取决于对延迟、成本、数据隐私和离线能力的权衡。提示词Prompt设计是核心机密。我们可以推断其结构必然包含以下几个部分系统角色设定明确告诉LLM它是一个Windows操作系统自动化智能体需要理解屏幕和操作UI。屏幕状态描述将上一节产生的“富文本”屏幕描述以清晰的结构化格式如JSON或特定标记文本提供给LLM。用户指令用户当前轮次的具体要求。操作历史提供之前几步的“观察-行动”记录让LLM理解任务上下文和进度。输出格式规范严格要求LLM以指定的JSON格式输出例如{action: click, target_element_id: button_123, confidence: 0.95}或{action: type, text: Hello World}。这一步至关重要它确保了LLM天马行空的输出能被精确解析为可执行命令。一个简化的提示词示例可能如下你是一个Windows桌面自动化助手。你的目标是理解用户的自然语言指令并根据当前的屏幕状态决定下一步要执行的具体操作。 当前屏幕描述如下 [应用程序记事本] - 窗口标题无标题 - 记事本 - 中央有一个白色的文本编辑区域内部有光标闪烁。 - 顶部菜单栏包含“文件(F)”、“编辑(E)”等选项。 - 在文本编辑区域内已有文字“这是一个测试”。 用户指令”将已有的文字加粗“ 之前的操作无。 请从以下动作中选择一个并指定目标click点击 double_click双击 type输入 press_key按键 scroll滚动。你的回答必须是严格的JSON格式{action: 动作类型, target: 目标描述或元素ID, params: {}}。如果无法确定action设为request_clarification。LLM可能会输出{action: press_key, target: keyboard_shortcut, params: {keys: [ctrl, B]}}这将被翻译成模拟按下CtrlB快捷键的动作。注意事项提示工程的质量直接决定智能体的可靠性和准确性。需要大量的测试和迭代来覆盖各种边界情况例如当屏幕上有多个相似按钮时如何让LLM准确区分当指令模糊时如何引导其询问澄清。这部分工作是构建实用UFO智能体过程中最具挑战性的环节之一。4. 从演示到实战构建自动化工作流4.1 基础任务自动化脚本编写假设我们想用UFO自动化一个日常任务每天早晨打开Outlook查看特定发件人的未读邮件并将其中包含“报告”字样的邮件标记为重要。我们不可能为UFO编写传统的线性脚本而是需要定义“目标”和“规则”。首先我们需要让UFO“学会”操作Outlook。这可以通过演示学习Learning by Demonstration或指令微调Instruction Tuning来实现。UFO框架可能提供了录制功能你手动操作一遍流程UFO会记录下过程中的屏幕状态变化和你的操作动作形成一组状态动作配对数据。这些数据可以用来微调其内部的决策模型或者作为示例存入知识库供LLM在类似场景下参考。对于我们的任务一个高层次的“工作流定义”可能如下以伪代码/配置形式表示workflow: process_morning_outlook trigger: scheduled (9:00 AM every weekday) steps: - goal: “启动 Microsoft Outlook 应用程序” retry: 3 fallback_action: “按Win键输入‘outlook’按回车” - goal: “等待主窗口加载完成” success_criteria: “屏幕上出现‘收件箱’标题” timeout: 30s - goal: “在搜索框中输入‘from:bosscompany.com isread:false’” - goal: “点击‘搜索’按钮或按回车” - goal: “对于列表中的每一封邮件” loop_action: - goal: “检查邮件主题是否包含‘报告’” condition: “如果包含” sub_steps: - goal: “右键点击该邮件” - goal: “在上下文菜单中找到并点击‘标记为重要’”UFO的执行引擎会解析这个工作流。每一步的goal都是一个自然语言指令它会触发一次完整的“观察-思考-行动”循环。success_criteria用于让UFO判断该步骤是否完成condition和loop_action提供了基本的逻辑控制流。4.2 处理复杂交互与异常状态真实世界的UI自动化充满不确定性。弹窗、加载延迟、界面变化都是挑战。一个健壮的UFO智能体需要具备异常处理能力。超时与重试机制每个操作指令都应设置超时。例如“点击登录按钮”后UFO会观察屏幕期待出现登录后的页面。如果10秒内未检测到预期变化则触发重试逻辑。重试时可能会先尝试重新定位按钮因为屏幕可能轻微滚动或者执行一个备用操作如按ESC关闭可能弹出的提示。预期状态验证在关键步骤前后加入验证点。例如在输入密码后下一个指令不是直接点击“下一步”而是“验证是否存在‘下一步’按钮且其状态为可用”。这确保了自动化流程不会在错误的状态下盲目执行。动态元素定位策略不要依赖绝对的坐标或可能变化的控件ID。UFO的优势在于可以利用多模态信息进行定位。在配置中应优先使用相对定位如“位于‘用户名’输入框下方的按钮”和属性组合如“类型为Button且Name属性包含‘Confirm’的控件”。视觉特征如图标也是一种稳定的定位锚点。处理模态对话框这是自动化中最棘手的部分之一。UFO需要被训练或提示使其理解模态对话框会阻塞主窗口并且必须优先处理。在“思考”阶段LLM需要被赋予优先级逻辑当检测到弹窗时无论当前主任务是什么都应先评估并响应弹窗。实操心得在构建复杂工作流时建议采用“分治”策略。先将整个流程拆解成多个独立的、可测试的子任务模块如“登录模块”、“数据查询模块”、“导出模块”。单独测试和调试每个模块的可靠性然后再将它们组合起来。同时务必加入详尽的日志记录记录下每一步UFO“看到”的屏幕描述和它“决定”执行的动作。当流程失败时这些日志是无可替代的调试宝藏。5. 性能优化与安全考量5.1 提升响应速度与准确率UFO的延迟主要来自三部分屏幕截图与编码、视觉/语言模型推理、以及操作系统动作执行。在追求实时交互的场景下优化至关重要。视觉感知优化区域截图不要总是截取全屏。根据上一个操作和应用程序窗口位置智能预测下一个交互可能发生的区域只截取该区域可以大幅减少需要处理的数据量。缓存与差分更新连续两次观察之间屏幕大部分区域可能未变化。可以缓存上一帧的视觉特征和可访问性树只对变化区域进行重新分析和描述这能显著降低对VLM的调用频率和输入长度。轻量化模型对于不需要复杂场景理解的简单定位任务如点击一个图标明确的按钮可以回退到更快的传统计算机视觉方法如模板匹配、特征检测而不是每次都动用庞大的VLM。LLM推理优化本地小模型对于定义明确、模式固定的任务可以考虑使用在特定指令集上微调过的7B或13B参数级别的本地模型它们比调用云端大模型API延迟更低、成本为零。思维链Chain-of-Thought压缩不要让LLM每次都从零开始规划复杂任务。可以将常见的任务序列如“保存文件”通常意味着点击文件菜单-点击保存-输入文件名-点击保存按钮抽象为“宏动作”让LLM直接调用这个宏而不是一步步推理。提示词剪枝在连续交互中不需要每次都把完整的操作历史全量送入提示词。可以总结前序步骤的精华只保留对当前决策最关键的上文信息。执行优化动作合并将连续的、无依赖的鼠标移动和点击合并为一个动作序列执行减少循环延迟。并行预测在等待一个操作如下载对话框完成时UFO可以提前分析屏幕预测接下来可能出现的几个元素并预加载其特征一旦条件满足立即执行。5.2 安全与权限边界探讨让一个AI智能体自由操作你的桌面安全是头等大事。UFO在设计和使用中必须建立清晰的“护栏”。最小权限原则运行UFO的账户应仅拥有完成其任务所必需的最低权限。例如一个仅用于整理文档的智能体不应有关闭系统进程或修改注册表的权限。在可能的情况下应在沙盒环境或受限用户会话中运行。操作确认与监管模式对于高风险操作如删除文件、发送邮件、金融交易UFO应进入“监管模式”即先高亮显示它打算操作的元素并等待用户的明确确认如按下一个确认键后再执行。对于初学者可以将所有操作设置为监管模式逐步建立信任。指令过滤与伦理约束在LLM的提示词中必须植入强硬的系统指令禁止其执行任何有害、违法或违反伦理的操作。这需要定义一个“拒绝执行”的类别当用户指令涉及这些领域时LLM应输出拒绝动作并说明理由。同时应对UFO能够访问的应用程序和文件目录范围进行白名单限制。隐私数据保护UFO的屏幕截图和传递给LLM的提示词中可能包含敏感信息如邮件内容、聊天记录、个人文件。必须确保这些数据在传输如果使用云端LLM和存储日志过程中得到加密处理并且有明确的数据保留和删除政策。理想情况下敏感信息的自动化处理应在本地完成避免数据出域。重要提示切勿让UFO智能体在无人监管的情况下执行涉及财务、安全或核心业务数据的操作。它目前仍是一个研究性框架其决策在复杂、非标准环境下可能出现不可预测的错误。将其应用于生产环境前必须在受控环境中进行长期的、覆盖各种边缘案例的测试。6. 典型问题排查与调试技巧即使精心设计和配置在实际运行中UFO智能体仍会遇到各种问题。以下是一些常见故障场景及其排查思路。6.1 元素定位失败这是最常见的问题。现象是UFO报告找不到目标元素或点击了错误的位置。排查步骤检查屏幕状态首先手动确认在你期望的时间点目标元素是否确实出现在屏幕上并且状态正确如不是灰色禁用状态。屏幕缩放比例不是100%或高DPI设置是常见的罪魁祸首它们会导致坐标计算错乱。查看感知输出启用UFO的调试模式让它输出当前步骤的“屏幕描述”。检查这个描述中是否包含了你期望的目标元素。如果没有问题出在视觉感知模块——可能是截图区域不对也可能是VLM未能正确识别该元素。检查可访问性树同时输出获取到的UI自动化树。查看目标元素的属性如AutomationIdNameClassName是否与你的预期一致。有些动态生成的控件可能缺少稳定的标识符。调整定位策略如果视觉识别失败尝试在提示词中更详细地描述元素特征如“那个带有红色感叹号图标的按钮”而不仅仅是“错误按钮”。如果自动化树信息缺失可以更多地依赖视觉定位。或者考虑在应用程序开发阶段就为其添加更好的可访问性支持。使用混合定位结合视觉特征和相对位置如“在‘用户名’输入框正下方的按钮”。6.2 LLM决策逻辑错误现象是UFO执行了动作但动作不符合预期例如该点“保存”却点了“另存为”。排查步骤审查提示词检查提供给LLM的屏幕描述是否准确、无歧义。有时描述过于简略或包含误导信息会导致LLM误解。分析LLM输出查看LLM在做出错误决策时输出的完整JSON和其“思考过程”如果框架提供了Chain-of-Thought输出。这能直接揭示模型是基于什么理由做出了错误选择。是误解了指令还是混淆了屏幕上的两个相似元素增加上下文如果错误发生在多步任务的后半段可能是因为LLM忘记了之前的任务目标。尝试在提示词中更清晰地维护任务链上下文或者将大任务拆分成更小的、独立的子任务。提供反例如果某个错误反复出现可以将这个错误案例屏幕状态、错误动作作为一个反例加入到LLM的微调数据或Few-shot Prompt的示例中明确告诉模型在这种情况下应该怎么做。6.3 执行动作未生效现象是UFO发出了点击或键入命令但目标应用程序没有响应。排查步骤权限问题确保UFO进程以足够的权限运行。某些系统级应用程序或受保护的区域可能需要管理员权限才能交互。焦点问题确保目标窗口是当前的活动窗口并且目标控件拥有输入焦点。有时需要先发送一个SetFocus动作或点击一下窗口标题栏再进行后续操作。时机问题在操作之间添加适当的延迟time.sleep。应用程序可能需要时间来处理上一个操作、更新界面。UFO的等待机制可能基于视觉变化但如果变化不明显如列表项颜色微变可能导致它过早执行下一步。可以手动增加固定延迟或优化“等待完成”的成功判断条件。防自动化机制一些应用程序特别是游戏或安全软件会检测自动化脚本的输入。pyautogui等库的模拟信号可能被识别出来。这种情况比较棘手可能需要尝试更底层的输入模拟方法或者调整模拟动作的速度和随机性使其更接近真人操作。6.4 性能瓶颈分析如果UFO运行缓慢需要定位瓶颈所在。排查工具使用Python的cProfile模块对UFO脚本进行性能分析找出耗时最长的函数。分别记录截图、视觉推理、LLM调用、动作执行各阶段的耗时。如果LLM调用是瓶颈考虑使用更快的模型、优化提示词长度、或启用API的流式响应以降低感知延迟。如果视觉推理是瓶颈考虑降低截图分辨率、使用更轻量的VLM、或启用GPU加速确保CUDA和PyTorch配置正确。构建稳定可靠的UFO智能体是一个迭代过程。从简单的、确定性的任务开始逐步增加复杂性并建立一套完整的测试用例集在每次修改后回归测试是保证项目成功的关键。这个框架打开了一扇新的大门让我们能够用自然语言来“编程”我们的电脑虽然前路仍有诸多挑战但其展现出的潜力和统一化的设计思想无疑为未来的人机交互和自动化领域描绘了一幅激动人心的蓝图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2552152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…