当前位置: 首页 > article >正文

OS Agent:基于多模态大模型的智能体如何操作电脑与手机

1. 从“能看”到“能干”OS Agent如何让AI真正学会使用电脑和手机如果你关注AI领域最近一年肯定没少听到“智能体”这个词。从能聊天的ChatGPT到能画图的MidjourneyAI似乎越来越“能干”了。但说实话这些能力大多还停留在“内容生成”层面——AI在它自己的数字世界里创作而我们人类依然需要手动操作电脑、手机和浏览器去完成那些重复、繁琐的数字化任务整理文件、填写表格、预订行程、查找信息……有没有可能让AI直接接管我们的鼠标和键盘像真人一样操作软件和网页这个听起来像科幻电影的场景正是“操作系统智能体”研究的核心目标。我最近深入研读了ACL 2025上的一篇重磅综述论文《OS Agents: A Survey on MLLM-based Agents for Computer, Phone and Browser Use》以及其背后庞大的开源项目库。这篇论文系统梳理了如何基于多模态大语言模型构建能真正在操作系统环境中“动手”的智能体。这不仅仅是让AI“看懂”屏幕更是让它理解任务意图、规划操作步骤、并精准执行点击、输入、滑动等动作最终完成一个完整的实际任务。简单来说OS Agent试图解决的是AI与真实数字世界交互的“最后一公里”问题。它不再满足于生成一段文本或代码而是要将这些指令转化为对图形界面或命令行界面的具体操作。想象一下你只需要对AI说“帮我把上个月所有关于项目A的邮件附件下载到‘2024Q1复盘’文件夹并按日期重命名”它就能自动打开邮箱、筛选、下载、整理——这才是我们期待的“数字助理”该有的样子。这篇综述和其关联的近百篇前沿研究正在为我们勾勒出实现这一愿景的技术路径与挑战。2. OS Agent全景图定义、架构与核心挑战在深入技术细节之前我们首先要厘清什么是OS Agent。根据这篇综述的定义OS Agent特指那些基于多模态大语言模型通过操作系统提供的环境与界面来操作计算机、手机和浏览器从而实现任务自动化的智能体。这里的“操作系统环境”是关键它包括了图形用户界面、命令行界面、应用程序接口等所有我们与计算设备交互的通道。2.1 核心能力拆解一个OS Agent需要什么一个合格的OS Agent绝不仅仅是“看图说话”那么简单。它需要一套复杂的能力栈我将其归纳为“感知-理解-规划-执行-反思”的闭环。1. 多模态感知与理解这是基础。智能体必须能“看到”屏幕。但这不仅仅是截图识别文字那么简单。它需要视觉定位精确识别屏幕上的UI元素如按钮、输入框、图标、链接并理解其功能可点击、可输入、可滑动。语义理解结合界面文本、布局、图标等上下文理解当前界面的状态和可执行的操作。例如识别出一个红色圆形按钮可能是“删除”或“停止”而一个蓝色对勾按钮可能是“确认”或“保存”。跨平台泛化不同操作系统、不同应用、不同网页的UI风格千差万别。模型需要能从训练数据中抽象出通用模式应对未见过的界面。2. 任务分解与规划用户给出的通常是高层级、模糊的指令如“订一张明天北京到上海最便宜的机票”。智能体需要将其分解为一系列原子操作打开浏览器-导航到机票网站-输入出发/到达城市-选择日期-点击搜索-在结果列表中按价格排序-选择最便宜的航班-填写乘客信息-完成支付。 这个过程需要常识推理知道订票的常规流程和对当前环境状态的判断如果网站要求登录则需要先执行登录操作。3. 动作执行与状态跟踪规划好步骤后需要将其转化为具体的交互指令。这涉及到动作空间定义对于GUI动作通常包括click(x, y),type(text),scroll(direction),press(key)等。如何将自然语言指令或内部决策精准映射到这些动作参数上是一大挑战。状态管理执行一个动作后屏幕状态会发生变化。智能体需要能感知到这种变化并判断任务是否按预期推进。例如点击“登录”后是跳转到了主页还是弹出了错误提示这要求智能体具备动态的环境建模能力。4. 记忆与经验复用为了更高效地完成任务智能体需要“记住”经验短期记忆记住当前任务会话中的操作历史避免重复或矛盾的操作。长期记忆/技能库将成功完成的任务轨迹存储为可复用的“技能”或“工作流”当下次遇到类似任务时可以直接调用或进行微调大幅提升效率。2.2 主流技术路线与框架盘点根据综述中的分类当前的OS Agent研究主要围绕两大方向展开基础模型和智能体框架。基础模型这类工作的目标是训练一个“通才”的视觉-语言-动作模型。它直接接收屏幕截图和用户指令输出下一步要执行的具体动作如click(520, 380)。代表性工作包括CogAgent一个专门为GUI任务设计的视觉语言模型通过高分辨率编码器处理屏幕细节在Android和Web任务上表现出色。Ferret-UI专注于移动端UI理解能精细地指代和描述UI元素为精准操作打下基础。OS-ATLAS旨在构建一个通用的GUI动作基础模型通过大规模合成数据训练希望获得跨平台、跨应用的动作生成能力。这类模型的优势是端到端决策直接。但劣势也很明显需要海量且高质量的“屏幕-动作”配对数据训练对计算资源要求高且模型一旦固化其行为逻辑较难调整。智能体框架这类工作不追求训练一个全能模型而是基于现有的、强大的LLM或MLLM如GPT-4V、Claude等构建一个围绕它的智能体系统。框架负责提供感知、规划、记忆、工具调用等组件。代表性框架包括OS-Copilot一个追求通用计算机控制的框架。它提出了“自我改进”的机制能让智能体从失败中学习更新自己的知识库和策略。Mobile-Agent专注于移动设备自动化。它采用“视觉感知”模块解析屏幕由LLM进行任务规划和决策再通过一个执行模块操控手机。WebVoyager构建端到端的网页智能体利用多模态大模型理解网页内容并完成复杂的多步骤网页任务。框架路线的优势是灵活。你可以随时接入更强大的基础模型也可以单独优化某个组件如设计更好的规划算法。它更像是在用软件工程的思想“组装”一个智能体。目前大多数展示出复杂任务能力的系统都属于此类。实操心得路线选择的关键考量如果你是一个研究者想探索模型能力的边界基础模型路线更有吸引力。但如果你是一个开发者想快速构建一个可用的自动化工具基于现有大模型API搭建智能体框架是更务实的选择。后者的启动成本低迭代快并且能直接受益于基础模型的快速进化。3. 从零构建一个简易OS Agent框架以网页自动化为例纸上得来终觉浅。要真正理解OS Agent的运作逻辑最好的方式是自己动手搭一个。下面我将带你一步步构建一个用于网页自动化的简易OS Agent框架。这个框架将采用智能体框架的路线基于现有的LLM API和浏览器自动化工具。3.1 环境准备与核心工具选型我们的目标是构建一个能理解指令、操作浏览器的智能体。我们需要以下组件“大脑”一个强大的LLM负责理解指令、规划步骤、做出决策。我们将使用OpenAI的GPT-4或成本更低的GPT-3.5-Turbo的API。选择它的原因是其强大的推理和指令遵循能力已被广泛验证。“眼睛”一个能捕获浏览器屏幕并提取结构化信息的工具。单纯截图送给LLM成本高且信息密度低。更好的方式是获取网页的DOM结构和可访问性树。这里我们选用Playwright它是一个现代浏览器自动化库不仅能驱动浏览器还能轻松获取页面内容。“手”执行LLM决策的动作执行器。同样由Playwright担任它可以模拟所有用户交互。“工作记忆”记录当前任务状态、操作历史和页面上下文。我们用Python的简单数据结构列表、字典在内存中实现。项目初始化# 创建项目目录并初始化虚拟环境 mkdir simple_web_agent cd simple_web_agent python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 安装核心依赖 pip install openai playwright # 安装Playwright的浏览器内核 playwright install chromium3.2 核心模块设计与实现我们的框架主要包含三个模块Perception感知、Brain决策、Actuator执行。模块一感知模块这个模块负责将当前的网页状态转化为LLM能理解的文本描述。我们不是简单截图而是提取关键信息。# perception.py from playwright.sync_api import Page import json class WebPerception: def __init__(self, page: Page): self.page page def get_page_state(self) - str: 获取当前页面的结构化描述 state { url: self.page.url, title: self.page.title(), interactive_elements: self._extract_interactive_elements(), main_content: self._extract_main_content()[:500] # 截取部分主要内容 } return json.dumps(state, indent2, ensure_asciiFalse) def _extract_interactive_elements(self) - list: 提取所有可交互元素按钮、链接、输入框 elements [] # 使用Playwright选择器获取元素 all_buttons self.page.locator(button, a, input, [rolebutton], [rolelink]) count all_buttons.count() for i in range(min(count, 20)): # 限制数量防止上下文过长 elem all_buttons.nth(i) elem_info { tag: await elem.evaluate(el el.tagName.toLowerCase()), text: (await elem.text_content() or ).strip()[:50], type: await elem.get_attribute(type) or N/A, placeholder: await elem.get_attribute(placeholder), id: await elem.get_attribute(id), classes: await elem.get_attribute(class), bounding_box: await elem.bounding_box() # 用于后续定位点击 } # 过滤掉完全不可见的元素 if elem_info[bounding_box]: elements.append(elem_info) return elements def _extract_main_content(self) - str: 尝试提取页面主体文本内容用于理解上下文 # 简单策略获取body的文本或主要article/div的文本 try: content self.page.locator(body).text_content() except: content return content.strip()模块二决策模块这是智能体的核心它接收用户指令和当前页面状态决定下一步做什么。# brain.py import openai from typing import Dict, Any class AgentBrain: def __init__(self, api_key: str, model: str gpt-4): openai.api_key api_key self.model model # 定义智能体可执行的动作类型 self.action_space [CLICK, TYPE, SCROLL, NAVIGATE, WAIT, EXTRACT_INFO, FINISH] def decide_next_action(self, user_goal: str, page_state: str, history: list) - Dict[str, Any]: 根据目标、状态和历史决定下一个动作 prompt self._construct_prompt(user_goal, page_state, history) response openai.ChatCompletion.create( modelself.model, messages[ {role: system, content: 你是一个网页操作智能体。请根据用户目标和当前页面状态决定下一步操作。你必须从给定的动作列表中选择并给出必要参数。}, {role: user, content: prompt} ], temperature0.1, # 低温度保证决策稳定 max_tokens500 ) decision_text response.choices[0].message.content return self._parse_action(decision_text) def _construct_prompt(self, goal: str, state: str, history: list) - str: 构建给LLM的提示词 history_str \n.join([f- {h} for h in history[-5:]]) if history else 无 prompt f 用户最终目标{goal} 当前页面状态 {state} 最近操作历史最近5步 {history_str} 请分析当前状态思考如何逐步接近用户目标然后决定下一步操作。 你只能从以下动作中选择一个 - CLICK: 点击一个元素。需要提供元素的索引从0开始基于下面列表或描述。 - TYPE: 在输入框输入文本。需要提供元素索引和要输入的文本。 - SCROLL: 滚动页面。方向为 up 或 down。 - NAVIGATE: 导航到一个新URL。需要提供完整的URL。 - WAIT: 等待一段时间秒或等待某个元素出现。 - EXTRACT_INFO: 从页面提取特定信息如价格、标题。 - FINISH: 任务已完成或无法继续。 当前页面可交互元素列表索引: 描述 {self._format_elements_for_prompt(state)} 请严格按照以下JSON格式输出你的决策 {{ reasoning: 你的思考过程解释为什么选择这个动作, action: 动作类型必须是上述之一, parameters: {{}} // 动作参数根据动作类型不同而不同 }} return prompt def _format_elements_for_prompt(self, state_str: str) - str: 从页面状态中提取元素并格式化为提示词部分 # 这里需要解析state_str中的interactive_elements # 为简化假设state是JSON字符串我们直接解析 try: state json.loads(state_str) elements state.get(interactive_elements, []) formatted [] for idx, elem in enumerate(elements): desc f标签:{elem.get(tag)} if elem.get(text): desc f 文本:{elem[text]} if elem.get(placeholder): desc f 占位符:{elem[placeholder]} formatted.append(f{idx}: {desc}) return \n.join(formatted) except: return 无法解析元素列表。 def _parse_action(self, decision_text: str) - Dict[str, Any]: 解析LLM的回复提取结构化动作指令 # 这里需要从文本中提取JSON部分实际应用中需要更鲁棒的解析 # 为演示我们假设LLM返回了纯JSON import json try: # 尝试找到JSON块 lines decision_text.strip().split(\n) json_str None for line in lines: if line.strip().startswith({): json_str line break if not json_str and len(lines) 1: json_str lines[0] if json_str: return json.loads(json_str) except: pass # 解析失败返回安全动作 return {reasoning: Failed to parse LLM response, action: WAIT, parameters: {seconds: 5}}模块三执行模块负责将决策模块输出的抽象动作转化为Playwright能执行的具体命令。# actuator.py from playwright.sync_api import Page import time class WebActuator: def __init__(self, page: Page): self.page page def execute(self, action: Dict[str, Any], page_state: Dict) - str: 执行动作并返回执行结果描述 action_type action.get(action) params action.get(parameters, {}) reasoning action.get(reasoning, ) print(f[执行] 动作: {action_type}, 参数: {params}) print(f[推理] {reasoning}) try: if action_type CLICK: element_idx params.get(element_index) elements page_state.get(interactive_elements, []) if 0 element_idx len(elements): # 通过选择器或坐标点击这里用简化方式 selector self._element_to_selector(elements[element_idx]) self.page.click(selector) result f成功点击元素 {element_idx} ({selector}) else: result f点击失败元素索引 {element_idx} 无效 elif action_type TYPE: element_idx params.get(element_index) text params.get(text, ) elements page_state.get(interactive_elements, []) if 0 element_idx len(elements): selector self._element_to_selector(elements[element_idx]) self.page.fill(selector, text) result f成功在元素 {element_idx} 输入文本: {text} else: result f输入失败元素索引 {element_idx} 无效 elif action_type SCROLL: direction params.get(direction, down) if direction down: self.page.mouse.wheel(0, 300) else: self.page.mouse.wheel(0, -300) result f向{direction}滚动页面 elif action_type NAVIGATE: url params.get(url) if url and url.startswith((http://, https://)): self.page.goto(url) result f导航到 {url} else: result f导航失败URL格式错误 {url} elif action_type WAIT: seconds params.get(seconds, 2) time.sleep(seconds) result f等待 {seconds} 秒 elif action_type FINISH: result 任务流程结束。 else: result f未知动作类型: {action_type} except Exception as e: result f执行动作 {action_type} 时出错: {str(e)} print(f[结果] {result}) return result def _element_to_selector(self, element_info: Dict) - str: 将元素信息转换为Playwright选择器简化版 # 优先使用id其次组合tag和文本 if element_info.get(id): return f#{element_info[id]} elif element_info.get(text): # 注意通过文本定位可能不稳定 return f{element_info[tag]}:has-text({element_info[text][:30]}) else: # 最后回退到基于位置的点击不推荐易变 bbox element_info.get(bounding_box) if bbox: x, y bbox[x] bbox[width]/2, bbox[y] bbox[height]/2 return fx{int(x)}y{int(y)} # Playwright支持坐标选择器 return body # 保底选择器3.3 主循环与任务执行将以上模块组合起来就形成了智能体的主循环。# main.py import json from playwright.sync_api import sync_playwright from perception import WebPerception from brain import AgentBrain from actuator import WebActuator def run_web_agent(task_description: str, start_url: str https://www.google.com): 运行网页智能体的主函数 openai_api_key your_openai_api_key_here # 请替换为你的API Key with sync_playwright() as p: # 启动浏览器 browser p.chromium.launch(headlessFalse) # 非无头模式便于观察 page browser.new_page() page.goto(start_url) # 初始化模块 perceiver WebPerception(page) brain AgentBrain(openai_api_key, modelgpt-3.5-turbo) # 可用gpt-4但成本高 actuator WebActuator(page) task_history [] max_steps 20 # 防止无限循环 current_step 0 print(f开始任务: {task_description}) print(f起始页面: {start_url}) while current_step max_steps: current_step 1 print(f\n--- 步骤 {current_step} ---) # 1. 感知 page_state_str perceiver.get_page_state() page_state_dict json.loads(page_state_str) # 2. 决策 decision brain.decide_next_action(task_description, page_state_str, task_history) if decision.get(action) FINISH: print(智能体判断任务完成。) break # 3. 执行 result actuator.execute(decision, page_state_dict) # 4. 记录历史 task_history.append(f步骤{current_step}: {decision.get(action)} - {result}) # 执行后短暂等待让页面加载 page.wait_for_timeout(2000) print(f\n任务结束。共执行 {current_step} 步。) print(操作历史:, task_history) browser.close() if __name__ __main__: # 示例任务在百度搜索“OS Agent Survey” run_web_agent( task_description在百度搜索框中输入‘OS Agent Survey’并点击搜索按钮, start_urlhttps://www.baidu.com )注意事项与避坑指南元素定位的脆弱性上述示例中通过索引定位元素非常不可靠页面微小变动就会导致失败。生产系统需要更稳定的定位策略如结合XPath、CSS选择器、元素唯一属性等并实现重试和回退机制。LLM提示工程给LLM的提示词质量直接决定智能体表现。需要精心设计提示词明确动作空间、输出格式并提供足够的上下文示例。迭代优化提示词是开发中的主要工作。成本与延迟每一步都调用LLM API成本高且速度慢。可以通过“宏观规划”来优化即让LLM一次性规划多个步骤或者只在关键决策点如页面状态发生重大变化时调用LLM。错误处理与鲁棒性真实网页充满不确定性弹窗、加载慢、元素未找到等。智能体必须有完善的错误检测和恢复机制例如超时重试、识别错误页面、重新评估目标等。状态表示的效率将整个DOM树或所有元素信息塞给LLM会很快耗尽上下文窗口。需要设计高效的状态表示方法比如只提取关键元素、对相似元素进行分组、使用向量数据库存储历史状态等。4. 评估OS Agent我们如何知道它“好不好”构建出智能体只是第一步如何科学地评估其能力更为关键。这也是当前研究的热点和难点。综述论文中列举了大量的评测基准我们可以将其归纳为几个维度。4.1 主流评测基准分类基准类型代表数据集核心特点评估重点静态任务Mind2Web, WebShop, AITW提供网页或App的静态快照截图DOM智能体预测下一步动作或完整轨迹。规划与推理能力。在已知全部环境信息的情况下能否做出正确决策。脱离真实交互无法评估执行和状态追踪。交互式仿真环境WebArena, AndroidWorld, OSWorld提供一个可控的、可交互的模拟环境如docker容器中的完整OS。智能体通过API与环境交互。端到端任务完成率。在接近真实但隔离的环境中完成如“在购物网站买书”、“在日历中添加事件”等具体任务。能评估交互和状态追踪。真实世界在线评测VisualWebArena, WindowsAgentArena智能体在真实的网站或操作系统上执行任务。在开放、动态环境中的鲁棒性。需要处理网络延迟、弹窗广告、验证码、网站改版等真实挑战。评估成本高风险大。技能专项评测UGIF (GUI Grounding), OmniACT专注于评估某一项特定能力如GUI元素定位、指令跟随等。基础能力的精度。例如给定一个截图和指令“点击登录按钮”模型能否输出正确的坐标。4.2 构建你自己的简易评测集在研究或项目初期你可能需要一个小型、快速的评测集来迭代你的智能体。这里分享一个我常用的方法定义任务场景选择3-5个有代表性的任务覆盖不同难度。例如简单在搜索引擎首页输入关键词并搜索。中等在电商网站搜索商品按价格排序点击第一个商品进入详情页。复杂在协作文档中找到特定章节添加评论并一位同事。制定成功标准明确每个任务怎样才算成功。是最终页面URL匹配是页面出现了特定文本还是完成了一系列特定的动作序列标准必须可自动化检测。搭建自动化测试框架# evaluator.py import pytest from your_agent import run_web_agent pytest.mark.parametrize(task, start_url, success_condition, [ (在百度搜索‘人工智能’, https://www.baidu.com, lambda page: 人工智能 in page.title()), (在豆瓣电影搜索‘肖申克的救赎’并进入其页面, https://movie.douban.com, lambda page: 肖申克的救赎 in page.content() and /subject/1292052/ in page.url), ]) def test_agent_task(task, start_url, success_condition): 运行智能体并检查是否满足成功条件 final_state run_web_agent(task, start_url) assert success_condition(final_state), f任务{task}失败记录关键指标任务成功率最核心的指标。平均步骤数衡量效率步骤越少通常说明规划能力越强。无效操作比例如点击无效元素、重复操作等。人类干预频率在测试过程中需要人工帮助的次数。实操心得评测中的常见陷阱过拟合基准智能体可能在某个特定基准上表现很好但换一个网站或任务就崩溃。这说明它可能学到了基准的“捷径”而非通用能力。要用多样化的任务进行测试。忽略非功能指标除了成功率还要关注可靠性多次运行结果是否一致、可解释性它的决策过程是否清晰、安全性是否会执行危险操作和效率耗时和资源消耗。仿真与现实的鸿沟在仿真环境中表现优异不代表在真实网站上行得通。真实环境的噪音、变化和不确定性是最大的挑战。最终评估一定要在真实场景中进行小规模测试。5. 前沿趋势与未来挑战通过对这篇综述和大量相关论文的梳理我能清晰地感受到OS Agent领域正在快速演进并呈现出几个明显的趋势。趋势一从“单一界面”走向“跨平台通用”早期的研究多集中于单一平台如Web Agent或Mobile Agent。现在的方向是构建能同时理解并操作桌面GUI、移动端UI和网页的通用OS Agent。这要求模型具备更强的跨模态、跨平台泛化能力。像OS-Copilot、Cradle这样的框架正在向这个方向努力。趋势二从“被动反应”走向“主动探索与学习”第一代智能体更像是一个“指令跟随者”。新一代智能体开始具备探索学习能力。例如通过试错来熟悉一个新应用的功能或者通过阅读应用的帮助文档、观察用户演示来学习新技能。这涉及到模仿学习、强化学习以及利用网络知识如教程、文档的技术。趋势三从“孤胆英雄”走向“多智能体协作”一个复杂的数字任务可能涉及多个软件。未来我们可能会看到专门化的智能体协同工作一个智能体负责信息检索一个负责数据处理另一个负责沟通协调。它们如何在操作系统层面安全、高效地共享信息、传递控制权是一个新的研究课题。趋势四对“基础模型”的依赖与反思目前几乎所有高性能OS Agent都严重依赖GPT-4V、Claude等闭源、庞大的多模态模型。这带来了成本、延迟、可控性和隐私问题。因此社区也在积极探索训练更轻量、更专精的开源基础模型如CogAgent、Ferret-UI等希望在特定任务上达到可比拟的效果。当然挑战依然巨大长程规划与复杂推理处理需要数十步、涉及多个应用切换的复杂任务如“规划一次出差包括订票、订酒店、申请报销”对模型的规划能力和世界知识是极大考验。对动态环境的适应真实世界充满变化。网页改版、软件更新、弹窗广告、网络错误……智能体必须能处理这些意外而不是轻易崩溃。安全与伦理让AI直接操作我们的电脑安全是头等大事。必须建立严格的权限沙箱和行为审查机制防止其执行删除文件、发送恶意邮件、进行未授权支付等危险操作。评估的可靠性如何设计真正能衡量智能体“实用性”和“通用性”的评测体系仍然是一个开放问题。6. 给开发者和研究者的实践建议基于我梳理这些资料和进行原型开发的经验对于想要进入这个领域的同行我有几点具体的建议对于研究者关注基础能力瓶颈当前最大的瓶颈可能不是框架设计而是基础模型的视觉定位精度和对GUI的语义理解深度。在这两个方向做出改进能直接提升所有上层智能体的性能。设计更好的状态表示如何将高维、冗余的屏幕像素信息压缩成对LLM友好、信息量丰富的状态表示是一个关键问题。可以探索结合视觉、文本和结构信息的混合表示方法。开源与可复现性这个领域发展极快但很多工作只发论文不开源代码或者代码质量不高。推动开源基准、开源框架和可复现的实验对领域健康发展至关重要。对于开发者从具体场景切入不要一开始就追求“通用人工智能助理”。选择一个垂直、封闭、高价值的场景如自动处理特定类型的工单、操作内部管理系统、进行数据录入等成功率会高很多。采用“LLM as Controller”的框架模式这是目前最成熟、迭代最快的路径。利用LangChain、AutoGPT等成熟框架的生态可以快速搭建原型。高度重视错误处理和日志智能体在初期会频繁出错。设计完善的错误捕获、日志记录和人工接管流程是项目能持续推进的保障。考虑实现“人类在环”的监督模式。成本控制是关键每一步都调用GPT-4V的账单是惊人的。可以通过缓存、将简单决策规则化、使用小模型处理常规任务等策略来优化成本。我个人在实际尝试将OS Agent技术应用于内部流程自动化时最深的一点体会是技术上的挑战固然大但更大的挑战在于如何定义清晰、边界明确的任务。很多我们人类觉得简单的操作背后依赖了大量的常识和模糊判断。在让AI接手之前我们必须先把自己执行任务的过程“机械化”、“明确化”。这个过程本身就是对现有工作流程的一次宝贵优化。OS Agent正在将AI从“内容生成者”转变为“数字世界操作者”。这条路还很长但每一步进展都让我们离那个“动动嘴皮子就能搞定电脑上所有杂事”的未来更近一步。这篇综述及其背后的开源项目集合就像一份详尽的“地图”和“工具包”为所有探险者指明了方向提供了装备。剩下的就是我们一起动手去解决那些真实而具体的问题了。

相关文章:

OS Agent:基于多模态大模型的智能体如何操作电脑与手机

1. 从“能看”到“能干”:OS Agent如何让AI真正学会使用电脑和手机如果你关注AI领域,最近一年肯定没少听到“智能体”这个词。从能聊天的ChatGPT,到能画图的Midjourney,AI似乎越来越“能干”了。但说实话,这些能力大多…...

自托管会议智能助理Vexa:开源架构、部署实战与AI集成指南

1. 项目概述:一个能自己部署的会议智能助理如果你和我一样,经常在各种线上会议里疲于奔命,既要参与讨论,又要手忙脚乱地记笔记,最后发现会议纪要一团糟,那你肯定想过:要是有个能自动参会、实时转…...

神经网络核心原理与工程实践:从基础到深度模型

1. 极简神经网络解析:40秒入门深度模型核心原理刚接触深度学习时,我被那些动辄上百层的神经网络结构图吓到过。直到后来发现,无论多复杂的模型,核心运作机制都能用简单的逻辑链条说清楚。今天我们就用咖啡萃取的类比,拆…...

Arm Total Compute 2022电源管理架构与寄存器配置详解

1. Arm Total Compute 2022电源管理架构概览 Arm Total Compute 2022作为新一代计算平台,其电源管理子系统采用了分层设计理念。CPU PIK(Power, Interrupt and Clock)寄存器组作为硬件与软件的交互界面,承担着核心管理、时钟控制和…...

DeepChat:开源AI智能体平台,统一管理多模型与工具调用

1. 项目概述:一个桌面端的全能AI智能体平台 如果你和我一样,每天需要在DeepSeek、Claude、GPT-4o、Gemini以及本地部署的Ollama模型之间来回切换,同时还要处理代码执行、网页搜索、文件操作等工具调用,那么你一定会对DeepChat这个…...

从零构建AI导师RAG系统:检索增强生成实战指南

1. 项目概述:一个面向AI导师的RAG系统 最近在AI应用开发圈子里,围绕“检索增强生成”的讨论热度一直没降下来。大家从最初惊叹于ChatGPT的对话能力,逐渐转向思考如何让它变得更“专业”、更“可靠”。一个典型的痛点就是:当你需要…...

LLM与智能体评估指南:从基准解读到实战体系构建

1. 项目概述:一份为LLM与智能体评估导航的“藏宝图”如果你正在研究或应用大语言模型,尤其是智能体方向,那么你肯定遇到过这样的困惑:市面上评测标准这么多,我该信哪个?我的模型在某个任务上表现不错&#…...

7个免费大语言模型学习资源全解析

1. 大语言模型(LLMs)学习资源概览大语言模型(Large Language Models)正在重塑我们与技术交互的方式。作为一名长期跟踪AI技术发展的从业者,我经常被问到如何系统性地学习LLMs相关知识。与付费课程相比,网络…...

LangChain OAP开源智能体平台架构解析与无代码实践指南

1. 项目概述与核心价值如果你对AI智能体(Agent)感兴趣,但又觉得从零开始写代码、处理复杂的部署和运维是件头疼事,那么你肯定不是一个人。这正是LangChain团队当初推出Open Agent Platform(OAP)的初衷。简单…...

Perseus开源补丁:3分钟解锁《碧蓝航线》全皮肤的终极指南

Perseus开源补丁:3分钟解锁《碧蓝航线》全皮肤的终极指南 【免费下载链接】Perseus Azur Lane scripts patcher. 项目地址: https://gitcode.com/gh_mirrors/pers/Perseus 还在为《碧蓝航线》中那些精美的限定皮肤无法解锁而烦恼吗?Perseus开源补…...

英语前缀发音总结

第一类:绝大多数普通前缀 对重音的影响:无影响,单词重音仍落在词根上 规律说明:这类前缀不改变词根原有的重音位置。重音通常落在紧接前缀之后的第一个音节(即词根的第一音节)上,前缀本身读作非重读音节,元音常弱化为 /ə/ 或 /ɪ/。 前缀 音标 含义 示例单词 a- /ə…...

后缀重读发音总结

总规律口诀(先记住) “后缀决定重音位,重读音节元音长;非重后缀弱成/ə/或/ɪ/,重读后缀自己扛。” 一、名词后缀 (Noun Suffixes) 后缀 音标 重音影响 音节划分规则 发音影响 示例单词(音标词性中文) -er /ər/ 不改变原词重音 加一个音节,原词重音不变 后缀永远弱读 …...

-ed发音总结

— 动词过去式 -ed 的 3 条读音规律,一次搞懂很多人背单词时发现:blocked 读 /blɒkt/,末尾的 ed 发 /t/,而 played 却发 /d/,wanted 又发 /ɪd/。 这其实有非常清晰的规则,掌握一个核心原则就行了。核心原…...

alt+tab和win+tab什么区别

这两个快捷键虽然都是用来切换窗口的,但它们的设计理念和适用场景完全不同。 简单来说:Alt + Tab 是为了“快”,而 Win + Tab 是为了“全”。 以下是详细的区别对比: 核心区别对比表 表格 特性 Alt + Tab Win + Tab 主要功能 快速切换 任务管理 操作方式 需按住 Alt 不…...

AI驱动的开发环境分析工具:aide如何自动化理解项目结构与依赖

1. 项目概述:一个为开发者而生的“智能副驾”如果你是一名开发者,无论是前端、后端还是全栈,大概率都经历过这样的场景:面对一个全新的、文档可能不那么清晰的开源库或框架,你需要花上半天甚至一天的时间去阅读源码、理…...

OpenAgents:构建AI智能体协同工作空间的平台级解决方案

1. 项目概述:当AI智能体开始“组队打怪”如果你和我一样,在过去一年里被各种AI智能体(Agent)工具搞得眼花缭乱,那你肯定也遇到了这个痛点:我的Claude Code在本地终端里写代码,另一个OpenClaw在服…...

Skybridge:用React+TypeScript构建AI交互应用的全栈框架

1. 从零到一:为什么我们需要 Skybridge?如果你最近在捣鼓 ChatGPT 的 Apps SDK 或者 Anthropic 的 MCP(Model Context Protocol),想给大模型对话里塞点能交互的 UI 组件,那你大概率已经体验过那种“原始”的…...

语言模型核心概念与文本生成参数详解

1. 语言模型入门指南:六项核心概念解析刚接触自然语言处理的新手常被各种术语搞得晕头转向——概率分布、上下文窗口、温度参数这些概念就像外语一样难以理解。我在2016年第一次调试文本生成模型时,就曾因为误用采样方法导致输出一堆乱码。本文将拆解语言…...

OpenAgents开源框架:让大语言模型成为能执行真实任务的多面手AI智能体

1. 项目概述:一个能“干活”的AI智能体框架最近在AI智能体这个圈子里,OpenAgents 这个名字出现的频率越来越高。它不是一个简单的聊天机器人,也不是一个只能生成文本的模型。简单来说,OpenAgents 是一个开源的、旨在让大型语言模型…...

golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结

应使用独立的 user_preferences 表存储动态偏好,以 JSON 字段支持灵活扩展、区分“未设置”与“显式关闭”,并通过乐观锁和事务封装避免并发覆盖。如何用 Go 实现可扩展的用户订阅偏好存储直接存数据库字段不是不行,但硬编码 email_newslette…...

自助服务疲态与混合服务模式探索

1. 自助服务时代的转折点最近在梳理客户服务数据时发现一个有趣现象:我们引以为傲的智能客服系统使用率同比下降了37%,而人工服务请求量却增长了28%。这个反差让我开始重新思考行业里喊了十年的"自助服务优先"策略。三周前参加客户体验峰会时&…...

GetQzonehistory:5分钟快速备份QQ空间历史说说的完整免费方案

GetQzonehistory:5分钟快速备份QQ空间历史说说的完整免费方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里的青春记忆会随着时间流逝而消失&#xf…...

WinUtil:终极Windows系统优化与批量软件安装工具

WinUtil:终极Windows系统优化与批量软件安装工具 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 还在为Windows系统越用越慢而烦恼…...

TEdit地图编辑器:从零开始打造你的泰拉瑞亚梦想世界

TEdit地图编辑器:从零开始打造你的泰拉瑞亚梦想世界 【免费下载链接】Terraria-Map-Editor TEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also lets you chan…...

Instagram 推独立应用 Instants,限时照片分享能否打击 Snapchat 等对手?

Instants:聚焦限时照片分享新体验Instagram 正在测试一款全新独立应用 “Instants”,于昨日在意大利和西班牙上线,支持 iOS 和安卓系统。它允许用户互相发送限时 24 小时可见且只能查看一次的照片,用户可使用应用内相机拍摄照片和…...

PyAutoGUI 第2章 键盘全功能操作教程

PyAutoGUI 键盘全功能操作教程(核心2) 说明:本教程为 PyAutoGUI 核心操作专项教程,聚焦键盘全功能操作,包含详细参数说明、实操代码、注意事项,适配新手入门,可直接复制代码调试运行。所有操作均…...

数据说话:网页应用优势凸显,开发者告别桌面应用!

我为何不再开发桌面应用程序对开发者来说,结束与桌面软件开发的关系并非易事。开发者曾深陷其中,即便这段感情早已没有未来,也不愿放手。开发者与桌面软件开发这一“初恋”的关系便是如此。开发者向桌面应用程序致歉,表示彼此再无…...

pyautogui 第一章:鼠标全功能操作(核心1)

PyAutoGUI 鼠标全功能操作教程(核心1) 说明:本教程为 PyAutoGUI 核心操作专项教程,聚焦鼠标全功能操作,包含详细参数说明、实操代码、注意事项,适配新手入门,可直接复制代码调试运行。所有操作均…...

如何高效使用Unity PSD导入器:开发者的完整实战指南

如何高效使用Unity PSD导入器:开发者的完整实战指南 【免费下载链接】UnityPsdImporter Advanced PSD importer for Unity3D 项目地址: https://gitcode.com/gh_mirrors/un/UnityPsdImporter Unity PSD导入器是一个专为Unity3D设计的强大插件,能够…...

“Token 第一股”迅策科技上市百日市值破千亿,A 轮投资人回报超 500 倍!

创投圈诞生超级回报这要从 4 个月前说起,“Token 第一股”迅策科技登陆港交所,当时股价起伏不定。没想到短短百余天后,公司市值一举突破 1000 亿港元,上市以来股价最新累计上涨高达 500%。迅策背后是一对父子,刘呈喜在…...