news 2026/10/28 14:57:39

浏览器Agent插件Jev实战:从Browser-Use原理到自动化落地

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
浏览器Agent插件Jev实战:从Browser-Use原理到自动化落地

1. 浏览器Agent插件为什么突然火了

最近技术圈里讨论度很高的一件事,就是一款叫 Jev 的浏览器 Agent 插件在短时间内冲到了 21k star。这个数字放在整个开源生态里都算得上炸裂,尤其是它解决的是一个大家每天都在面对、却一直没被很好解决的问题——让浏览器自己动起来,替你把重复操作干完。

先说清楚这个东西是什么。Jev 本质上是一个跑在浏览器里的智能代理层,它通过 Browser-Use 这套能力,把自然语言指令翻译成浏览器里的真实操作:点击、输入、滚动、提取数据、跨页面跳转。你不需要写 Selenium 脚本,不需要记 CSS 选择器,甚至不需要知道目标网站的 DOM 结构长什么样。你只需要告诉它"帮我把这个列表里的前 20 条商品价格抓下来",它就去干了。

它能解决的问题非常具体:表单批量填写、后台数据巡检、竞品价格监控、内容批量采集、重复性后台操作、跨系统数据搬运。适合谁来参考?三类人最受益。第一类是运营和数据分析岗,每天被重复的网页操作耗掉大量时间;第二类是前端和测试工程师,想快速验证页面交互又不想写一堆脚本;第三类是做自动化工具的产品和技术爱好者,想找一个能快速搭原型的底座。

我最初注意到它,是因为热搜里反复出现 jev-ultrafast、jev 模型、jev 模型 api 这几个词。这说明它不只是一个插件壳子,背后有一套模型调用和加速机制在支撑。21k star 不是靠营销堆出来的,是真实需求被击中了。下面我按自己的实操和理解,把这个东西从设计思路到落地细节完整拆一遍。

2. 整体设计思路与方案选型拆解

2.1 为什么是"浏览器插件"而不是独立客户端

很多人第一反应是:为什么不做成一个独立的桌面程序,非要塞进浏览器里?这个选择背后有非常实际的考量。

浏览器是绝大多数 Web 操作的唯一入口。你的登录态、Cookie、Session、已经打开的标签页、浏览器指纹环境,全都在浏览器里。如果做成独立客户端,第一件麻烦事就是登录态同步——你得重新登录一遍,遇到有验证码、有二次验证的站点,直接卡死。而插件天然共享当前浏览器的登录态,你登录过的站点它直接就能用,这是最大的优势。

第二个原因是 DOM 访问的实时性。插件通过 content script 直接注入页面,能拿到最真实的渲染后 DOM,而不是 HTTP 请求返回的原始 HTML。现在大量网站是前端渲染的,原始 HTML 里根本没有数据,必须等 JS 执行完。插件天然就在这个环境里,省掉了等待和解析的复杂度。

第三个原因是交互反馈的即时性。Agent 在页面上操作时,你能实时看到它点了哪里、输了什么,出错了能立刻人工接管。独立客户端往往是黑盒,出了问题只能看日志。这个"可见即可控"的特性,对调试和信任建立非常关键。

2.2 Browser-Use 这套能力到底在做什么

Browser-Use 是这类工具的核心抽象层。它的工作可以拆成四步:感知、决策、执行、校验。

感知阶段,它把当前页面的可交互元素提取出来,转成结构化的描述——每个按钮、输入框、链接的文本、位置、属性。这一步的关键是"压缩",一个复杂页面可能有几千个 DOM 节点,但真正可交互的可能就几十个,必须过滤掉噪音,否则模型上下文直接爆掉。

决策阶段,把用户指令和页面结构化描述一起喂给模型,让模型输出下一步动作。动作通常是有限集合:click、type、scroll、extract、navigate、wait。有限动作集是刻意设计的,因为开放式的动作空间会让模型输出不可控,有限集合能保证每一步都可执行、可回放。

执行阶段,把模型输出的动作映射成真实的浏览器事件。这里有个坑:很多网站监听的是真实用户事件,直接改 DOM 的 value 不触发框架的响应。所以必须模拟真实的输入事件序列,包括 focus、input、change、blur 一整套。

校验阶段,执行完再感知一次页面,确认动作生效了。比如点了提交按钮,要确认是否出现了成功提示或者页面跳转。没有校验的 Agent 就是盲人摸象,一步错步步错。

2.3 jev-ultrafast 和 jev 模型在架构里的位置

热搜里 jev-ultrafast 出现频率很高,我理解这是它的一套加速机制。浏览器 Agent 最大的性能瓶颈不在浏览器操作本身,而在模型推理的往返延迟。每一步都要调一次模型,一个任务二三十步,如果每步延迟两秒,整个任务就拖到一分钟以上,体验很差。

jev-ultrafast 解决的应该是这个延迟问题。常见的做法有几种:一是把简单动作本地化,比如"滚动到页面底部"这种不需要模型判断的动作直接本地执行;二是做动作缓存,相同页面状态下相同指令直接复用上次结果;三是用更小的专用模型处理高频简单决策,只在复杂决策时才调大模型。

jev 模型和 jev 模型 api 这两个词说明它提供了模型调用接口。这意味着你可以接入自己的模型服务,而不是被绑定在某个特定供应商上。这一点对企业用户特别重要,因为数据合规和成本控制都需要自己掌控模型调用链路。jev 在 codex 中使用这个热搜词,说明它还能和代码生成工具链打通,让 Agent 直接生成可复用的脚本代码,而不只是执行一次性任务。

2.4 方案取舍:为什么不做成纯 API 调用

有人会问,既然都是调模型,为什么不直接写个脚本调 API,非要搞插件?区别在于"环境"。

纯 API 调用拿不到真实浏览器环境。你面对的是 HTTP 响应,不是渲染后的页面。遇到需要登录、需要 JS 执行、需要处理动态加载的场景,纯 API 方案要么做不了,要么要写大量逆向代码,维护成本极高。插件的价值就是把"真实浏览器环境"这个最难搞的部分免费给你了。

另一个取舍是"通用性 vs 稳定性"。通用 Agent 什么网站都能试,但稳定性不如针对特定网站写死的脚本。Jev 的定位是通用优先,通过模型能力覆盖长尾场景,同时允许你把成功的操作序列导出成固定脚本,兼顾了探索和固化两个阶段。这个设计思路我认为是对的,先用 Agent 探索出可行路径,再把路径固化成稳定脚本,这是自动化落地的正确节奏。

3. 核心细节解析与实操要点

3.1 环境准备与插件安装的关键细节

安装本身不复杂,但有几个细节决定了你后面顺不顺利。

第一,浏览器版本要够新。这类插件依赖较新的扩展 API,尤其是涉及跨标签页操作和网络请求拦截的部分。老版本浏览器可能装上了但功能残缺,排查起来很痛苦。建议用最近半年内的稳定版。

第二,权限授予要一次到位。插件通常需要读取和更改所有网站数据、管理标签页、访问剪贴板等权限。安装时会弹权限确认,很多人习惯性点拒绝或者只给部分权限,结果后面操作到一半失败。我的建议是首次安装时把请求的权限都给了,用一段时间确认可信后再考虑收紧。

第三,模型 API 配置。如果你用的是 jev 模型 api 这套接口,需要准备好 API Key 和端点地址。这里有个实操要点:把 Key 存在插件的配置里,不要硬编码在脚本里。插件配置通常是本地存储,比脚本明文安全。另外注意 API 的并发限制,Agent 任务可能短时间内发起多次调用,超过限流会报错,配置里如果有并发数选项,建议先设成 1 或 2,稳定后再往上调。

第四,先在一个简单页面上做冒烟测试。不要一上来就拿复杂的后台系统试。找一个结构简单的页面,比如一个搜索框加一个按钮,让 Agent 完成"在搜索框输入关键词并点击搜索"。这一步能验证模型连通性、权限、事件模拟是否正常。冒烟测试过了,再上真实任务。

3.2 指令怎么写才能让 Agent 少犯错

Agent 的能力上限很大程度取决于你怎么描述任务。我踩过的坑基本都集中在指令表述上。

指令要具体到"可验证的终点"。错误示范:"帮我处理一下这个表格"。正确示范:"把表格里状态为待审核的行,逐行点击编辑按钮,把备注字段填成已处理,然后点保存"。区别在于后者有明确的判断条件、明确的操作、明确的完成标志。Agent 每一步都需要知道"我现在做对了吗",模糊指令让它无法自我校验。

把长任务拆成阶段。一个任务如果需要二十步以上,建议拆成几个子任务分别执行。原因有两个:一是模型上下文长度有限,步骤太多后面会丢失前面的信息;二是中途出错时,拆分的任务只需要重跑出错的那一段,不用从头再来。

明确告诉它"不要做什么"。这听起来反直觉,但很有效。比如"不要点击任何删除按钮"、"不要修改金额字段"、"遇到弹窗先截图再处理"。Agent 在探索时可能会尝试一些危险操作,提前设边界能避免事故。我在测试一个后台系统时,就因为没设边界,Agent 差点批量改了生产数据,幸好当时用的是测试环境。

用页面上的真实文本来指代元素。不要说"点击那个蓝色的按钮",要说"点击文本为提交申请的按钮"。颜色、位置这些视觉特征模型判断不稳定,文本匹配可靠得多。如果按钮没有文本只有图标,就找它附近的标签文字或者 aria-label 属性来描述。

3.3 页面元素定位的稳定性技巧

元素定位是浏览器自动化最容易翻车的地方。同一个按钮,今天能定位到,明天网站改了个 class 名就失效了。几个提高稳定性的做法。

优先用语义化属性。aria-label、role、name、placeholder 这些属性是给辅助功能用的,网站改版时通常不会动它们,比 class 名稳定得多。class 名经常是构建工具生成的哈希值,一次发版就全变了。

用相对定位而不是绝对路径。不要说"第 3 个 div 下的第 2 个 span",要说"包含文本登录的按钮"。前者对结构变化零容忍,后者只要文本还在就能找到。

对动态加载的内容加等待条件。很多页面数据是异步加载的,Agent 执行太快会在数据还没出来时就去找元素,结果找不到。正确做法是设置等待条件,比如"等待出现文本为加载完成的提示"或者"等待表格行数大于 0"。硬等固定秒数是最笨的办法,既慢又不准。

准备降级方案。同一个元素准备两到三种定位方式,主方案失效时自动尝试备选。比如先找 aria-label,找不到再找文本,再找不到找相邻的稳定元素做相对定位。这个在 jev-ultrafast 这类加速机制里通常有内置支持,配置里可以指定多个选择器。

3.4 数据提取与结构化输出的处理

Agent 抓数据不是简单地把页面文本复制下来,而是要转成结构化格式。这里有几个要点。

先定义好输出结构。在指令里明确告诉它你要什么字段、什么格式。比如"提取商品名称、价格、销量三个字段,输出 JSON 数组,价格只保留数字"。定义清楚后,模型会按结构去页面上找对应信息,而不是把整段文本倒出来。

处理分页和滚动加载。列表数据往往不在第一屏。要明确告诉 Agent 怎么翻页——是点下一页按钮,还是滚动到底部触发加载。同时设置终止条件,比如"抓满 50 条就停"或者"下一页按钮消失就停",避免无限循环。

注意数据清洗。抓下来的价格可能带货币符号,销量可能带"人付款"这样的后缀,日期格式可能五花八门。这些清洗工作可以在指令里让模型顺手做了,也可以抓完原始数据后用脚本统一处理。我的经验是让模型做基础清洗,复杂转换留给脚本,因为模型做数值计算不稳定。

去重和校验。跨页抓取容易抓到重复数据,尤其是滚动加载的场景。抓完后按唯一标识去重。同时做基本校验,比如价格字段是不是数字、必填字段有没有空值,发现异常及时报警而不是默默存下来。

4. 实操过程与核心环节实现

4.1 从零跑通第一个任务的完整流程

我拿一个真实场景走一遍:从某个商品列表页抓取前 20 个商品的名称和价格。

第一步,打开目标页面,确认页面已经加载完成。手动滚动一下,看看是不是有懒加载,如果有,先滚到底部把所有内容触发出来,再回到顶部。这一步是人工预处理,能让后续 Agent 少踩坑。

第二步,打开 Jev 插件的面板,新建任务。在指令框里写:"当前页面是一个商品列表。请提取前 20 个商品的名称和价格,输出为 JSON 数组,每个元素包含 name 和 price 两个字段,price 只保留数字部分。提取完成后把结果展示在面板里。"

第三步,配置模型参数。如果用 jev 模型 api,这里填好端点和 Key。温度参数建议设低,比如 0.1 到 0.3,因为这类任务需要确定性输出,不需要创造性。最大步数设个上限,比如 30 步,防止跑飞。

第四步,点击执行,观察过程。正常情况下你会看到 Agent 逐步高亮页面元素,先定位列表容器,再逐行提取。如果它卡在某一步反复尝试,说明那一步的定位有问题,暂停下来手动看看页面结构,调整指令。

第五步,检查结果。抓完后核对数量是不是 20 条,价格字段是不是纯数字,有没有明显的错位。我一般会随机抽 3 条跟页面实际数据对比,确认准确率。

第六步,固化。如果这个任务要重复执行,把成功的操作序列导出成脚本。下次直接跑脚本,不再走模型推理,速度快很多也稳定很多。这就是前面说的"先探索后固化"的落地方式。

4.2 表单批量填写的参数化实现

表单填写是另一个高频场景。假设你要往一个后台系统批量录入 50 条数据,数据源是一个 Excel 或者 CSV。

先把数据准备好,转成 JSON 格式,每条记录一个对象。字段名要和表单里的字段对应上,比如表单里叫"客户名称",你的 JSON 里就用 customerName 或者直接用中文键名,看模型理解哪个更顺。

然后写指令模板:"读取我提供的 JSON 数据,对每一条记录执行以下操作:点击新增按钮,在客户名称输入框填入对应值,在联系电话输入框填入对应值,选择客户类型为普通客户,点击保存,等待出现保存成功的提示后再处理下一条。"

这里的关键是"等待出现保存成功的提示后再处理下一条"。如果不加这个等待,Agent 可能在保存还没完成时就点下一条的新增,导致数据错乱。这个等待条件必须明确。

参数化通过插件的变量功能实现。把 JSON 数据作为变量传入,指令里引用变量。这样同一套指令可以复用到不同数据集,不用每次改指令。

实操中要注意几个坑。一是输入框可能有格式校验,比如电话必须是 11 位,日期必须是特定格式,数据预处理阶段就要清洗好。二是有些表单有联动,选了客户类型后才会出现某些字段,指令里要考虑这个顺序。三是保存可能有二次确认弹窗,要加上处理弹窗的步骤。

4.3 跨页面任务的上下文保持

有些任务需要跨多个页面完成,比如从列表页进详情页拿数据,再返回列表页处理下一条。这类任务的难点是上下文保持。

核心思路是维护一个任务状态。用一个变量记录当前处理到第几条,每完成一条就更新。指令里明确"从第 N 条开始处理",这样即使中途中断,也能从断点续跑。

返回列表页时要注意状态恢复。很多列表页返回后会重置到第一页,或者丢失筛选条件。解决办法是记录当前页的 URL 和筛选参数,返回时直接导航到那个 URL,而不是点浏览器的后退按钮。后退按钮的行为不可控,直接导航更可靠。

跨标签页操作要小心。如果任务需要在新标签页打开详情,记得处理完要关掉标签页,否则开几十个标签页浏览器会卡死。指令里加上"处理完成后关闭当前标签页"。

超时和重试机制。跨页面任务耗时长,中间可能遇到网络慢、页面加载失败。给每一步设置超时,超时后重试一到两次,还失败就跳过并记录,不要让整个任务卡死在一个页面上。

4.4 用 jev 在 codex 中生成可复用脚本

这是我觉得最有价值的一个能力。Agent 跑通一个任务后,可以让它把操作序列转成代码,这样你就有了一份可版本管理、可复用、可集成的脚本。

流程是这样的:先在插件里跑通任务,确认操作序列正确。然后触发"生成代码"功能,它会输出一段脚本,通常是基于 Playwright 或 Puppeteer 的。这段代码里包含了元素定位、操作步骤、等待条件。

生成的代码不要直接用,要过一遍。重点检查三处:元素定位是不是用了稳定的选择器,等待条件是不是合理,错误处理有没有。模型生成的代码往往缺少健壮的错误处理,需要手动补上 try-catch 和重试逻辑。

补完后把脚本纳入版本管理。下次网站改版导致脚本失效时,你能通过 diff 快速定位是哪个选择器变了。这比重新让 Agent 跑一遍再生成要高效得多。

如果团队里有多人用,可以把脚本封装成命令行工具或者内部服务,其他人不用装插件也能用。这一步就把个人效率工具升级成了团队基础设施。

5. 常见问题与排查技巧实录

5.1 元素定位失败的五种典型情况

现象可能原因排查方法解决方式
找不到按钮元素在 iframe 里检查页面是否有 iframe先切换到对应 iframe 再操作
找到但点不动元素被遮挡看是否有弹窗或浮层先关闭遮挡物再点击
时好时坏动态加载未完成观察加载时机加显式等待条件
定位到错误元素选择器太宽泛打印匹配到的元素用更具体的文本或属性
改版后失效class 名变化对比改版前后 DOM改用语义化属性定位

这五种情况我基本都遇到过。最常见的是第一种和第三种。iframe 的问题特别隐蔽,因为从外层看页面结构完全正常,但元素就是找不到,必须切进去才行。动态加载的问题在于它不稳定,有时候快有时候慢,测试时通过不代表生产环境通过,一定要加等待条件。

5.2 模型调用报错与限流处理

jev 模型 api 调用报错通常分几类。认证失败是 Key 或端点配错了,检查配置里的地址有没有多余空格,Key 有没有过期。限流是并发太高,降低并发数或者加请求间隔。超时是网络或者模型负载高,加重试机制,重试时用指数退避,不要立即重试。

上下文超长是另一个常见问题。页面元素太多时,喂给模型的描述会超出上下文限制。解决办法是压缩页面描述,只保留可交互元素,去掉纯展示的文本和装饰性元素。如果还是超长,就分区域处理,先处理页面上半部分,再处理下半部分。

我个人的经验是给模型调用加一层日志。每次调用的输入、输出、耗时都记下来。出问题时翻日志,能快速定位是模型理解错了还是执行环节错了。没有日志的排查就是盲猜。

5.3 任务跑飞的紧急止损

Agent 跑飞是指它开始执行你没预期的操作,比如疯狂点击、无限翻页、误删数据。这种情况必须能紧急停止。

第一道防线是最大步数限制。任何任务都设一个步数上限,到了就强制停。这是最可靠的保险,因为不管 Agent 怎么跑飞,步数到了都会停。

第二道防线是危险操作白名单。在配置里明确禁止某些操作,比如包含"删除"、"清空"、"提交订单"文本的按钮一律不点。这个在测试环境尤其重要。

第三道防线是人工监控。重要任务执行时人在旁边看着,发现不对立刻点停止。插件的停止按钮要能立即中断当前操作,而不是等当前步骤跑完。

跑飞之后要复盘。看日志确认是哪一步开始偏离的,是指令表述有歧义,还是页面状态和预期不符。把这次的经验补进指令里,下次就不会再犯。

5.4 性能优化的几个实用手段

任务跑得慢是普遍抱怨。优化手段按性价比排序。

第一,减少模型调用次数。能本地判断的动作不要调模型,比如滚动、等待、简单的文本匹配。jev-ultrafast 这类机制的核心价值就在这里。

第二,缓存页面状态。同一个页面反复操作时,页面结构描述可以缓存,不用每次都重新提取。只有页面发生实质变化时才重新提取。

第三,并行处理独立任务。如果多个任务之间没有依赖,可以并行跑。但要注意浏览器资源限制,标签页开太多反而更慢,一般并行 3 到 5 个比较合适。

第四,用固定脚本替代模型推理。任务稳定后导出脚本,执行速度能提升一个数量级。这是终极优化手段。

5.5 数据安全与合规注意事项

用浏览器 Agent 处理数据时,有几个安全底线要守住。

不要在指令里明文写敏感信息。密码、密钥、个人身份信息这些,用变量传入,不要写在指令文本里。指令文本可能会被记录和传输。

注意数据出境和存储位置。如果用云端模型 API,页面内容会发送到模型服务商。涉及敏感数据的场景,要么用本地模型,要么在发送前做脱敏。

控制 Agent 的操作权限范围。不要给它生产环境的写权限,除非你完全信任并且有回滚方案。测试环境先跑通,再考虑上生产。

定期审查 Agent 的操作日志。看看它实际做了什么,有没有越界操作。自动化工具最大的风险是"它做了你不知道的事",日志是唯一的监督手段。

6. 我对这类工具落地节奏的看法

用了一段时间下来,我最大的体会是:浏览器 Agent 的价值不在于"完全替代人",而在于"把人从重复劳动里解放出来,去做判断和决策"。

落地节奏上,我建议分三步走。第一步是单点验证,挑一个最痛、最重复、最规则的任务,用 Agent 跑通,建立信心。第二步是固化沉淀,把跑通的任务导出成脚本,纳入版本管理,形成可复用的资产。第三步是组合编排,把多个脚本串起来,形成完整的业务流程自动化。

不要一上来就追求全流程自动化。全流程涉及太多异常分支,Agent 处理不了那么复杂的情况,强行上只会到处出问题。先把单点做扎实,再逐步扩展,这个节奏最稳。

另外提醒一句,网站是会变的。今天跑通的脚本,下个月可能就失效了。所以要么建立定期巡检机制,要么在脚本里做好错误报警,失效了能第一时间知道。自动化工具不是一劳永逸的,它需要维护,这一点在投入之前就要想清楚。

最后分享一个我常用的小技巧:给每个 Agent 任务起一个清晰的名字,并且在指令开头写一句任务目的。比如"任务目的:每日抓取竞品价格用于定价参考"。这句话看起来多余,但当你有几十个任务时,它能帮你快速回忆每个任务是干什么的,也方便交接给同事。这个习惯我坚持了很久,省下的沟通成本远超写这句话的几秒钟。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 14:55:39

Flutter鸿蒙应用轮播图API实现与优化指南

1. 项目背景与需求分析在移动应用开发领域,轮播图(Banner)是最常见且重要的UI组件之一。无论是电商App的商品展示、新闻客户端的头条推送,还是社交平台的活动推广,轮播图都扮演着关键角色。而Flutter作为Google推出的跨平台开发框架&#xff…

作者头像 李华
网站建设 2026/10/28 14:55:34

浏览器端侧视觉AI工程实践:从模型到稳定60fps

1. 这不是“跑个 demo”,而是把一整套视觉 AI 拆成乐高积木塞进浏览器标签页你有没有试过在 Chrome 地址栏里输入about:blank,然后往这个空页面里扔进去一个能实时识别人脸、检测货架商品、甚至分割图像中每一片叶子的神经网络?不是调用后端 …

作者头像 李华
网站建设 2026/10/28 14:54:44

业务语义层:破解AI Agent跨系统决策的语义鸿沟

1. 业务系统全打通≠业务智能自动就绪:一个被严重低估的“语义鸿沟”问题ERP、MES、WMS、QMS——这四个缩写在制造业、物流业和大型零售企业的IT会议室里,几乎天天被念叨。它们代表的是企业最核心的四条业务主干:财务与资源计划(E…

作者头像 李华
网站建设 2026/10/28 14:54:43

冯诺依曼架构与Linux系统实践解析

1. 从计算机的心脏开始:冯诺依曼架构的本质1973年,图灵奖得主查尔斯巴赫曼在颁奖典礼上说过:"计算机科学的核心问题,始终是如何在抽象的机器模型与现实的计算需求之间架起桥梁。"这句话完美诠释了理解冯诺依曼架构的价值…

作者头像 李华
网站建设 2026/10/28 14:54:07

Loop Engineering循环工程:从理论到实战

最近这半年,“Loop Engineering”这个词在技术社区里出现的频率越来越高。我去翻了翻,发现很多人在讨论AI Agent、自动化工作流的时候,都已经默认这个概念作为底层设计逻辑了。直接说结论:Loop Engineering,本质上是“…

作者头像 李华
网站建设 2026/10/28 14:50:37

2026年AI修图网站选型排行榜:五类平台能力拆解与避坑指南

做内容这行,图片处理是绕不开的日常。前几年大家还在争论AI修图是不是智商税,到了2026年,AI修图网站已经成了内容团队、电商运营和独立设计师的常规生产工具——打开浏览器,传一张图,几秒钟完成抠图、去路人、扩图、换…

作者头像 李华