BrowserSkill 实战:用 CLI 为 AI Agent 装上浏览器操作能力
1. 从一堆零散热词里我看到了 BrowserSkill 的真实轮廓第一次看到 BrowserSkill 这个词是在一批 CLI 工具的热搜词里。它夹在 codex cli、claude cli、trae cli、deveco cli 这些命令行工具中间旁边还跟着 agent browser、playwright mcp、browserskill 下载这些词。把这些词摆在一起看轮廓其实已经出来了BrowserSkill 是一个把浏览器自动化能力封装成命令行工具、并且专门为 AI agent 场景做适配的东西。它要解决的问题很具体——让 AI agent 或者开发者能用一条命令驱动浏览器完成打开页面、点击、填表、抓取、截图这些动作而不需要每次都写一大坨 Playwright 或 Puppeteer 脚本。我之所以对这个方向感兴趣是因为过去一年里AI agent 落地最大的瓶颈之一就是手的问题。模型能思考、能规划但真正要操作网页的时候要么靠一堆脆弱的 DOM 选择器要么靠截图加坐标点击稳定性都很差。BrowserSkill 这类工具的价值就在于把浏览器操作抽象成一套稳定的、可被 agent 调用的技能接口同时用 CLI 的形式降低接入门槛。你可以把它理解成给 AI agent 装了一双能操作浏览器的手而这双手是通过命令行来指挥的。这篇文章适合几类人看。第一类是正在做 AI agent 产品、需要给 agent 加浏览器操作能力的开发者第二类是日常要做网页数据采集、表单自动化、页面巡检的工程师第三类是对 CLI 工具有偏好、想把浏览器自动化塞进脚本流水线的运维或测试同学。哪怕你之前只用过 Playwright 或者 Selenium没接触过 agent 场景这篇里的思路和踩坑经验也能直接用上。下面我会从它到底解决什么问题讲起一路讲到实际怎么跑通、怎么和 agent 配合、以及我在实测中遇到的那些文档里不会写的坑。2. BrowserSkill 到底解决了什么问题和 Playwright 脚本有什么本质区别2.1 传统浏览器自动化的三个老大难先说清楚背景不然没法理解 BrowserSkill 存在的意义。用 Playwright 或者 Selenium 写自动化大家应该都不陌生核心流程就是启动浏览器、定位元素、执行动作、断言结果。这套东西在测试场景里跑得很好但一旦放到 AI agent 场景里问题就暴露了。第一个问题是选择器脆弱。网页结构一改div div:nth-child(3) button这种选择器立刻失效。agent 每次操作都要重新分析 DOMtoken 消耗大不说还经常点错。第二个问题是状态管理复杂。浏览器有多个标签页、iframe、弹窗、登录态agent 要在这些状态之间来回切换很容易迷失。第三个问题是调用方式重。agent 想执行一个点击登录按钮的动作得先加载 Playwright、连上浏览器、找到元素、执行点击、处理异常这一整套逻辑如果每次都写代码量惊人。BrowserSkill 的思路是把这些重复逻辑收敛成一个 CLI 命令。agent 只需要知道有个命令能点击某个描述的元素具体怎么找、怎么点、失败了怎么重试都由 BrowserSkill 内部处理。这就把 agent 的认知负担从如何操作浏览器降到了要操作什么。2.2 CLI 形态对 agent 友好在哪里很多人会问为什么是 CLI而不是 SDK 或者 HTTP 接口这个问题我琢磨过很久结论是 CLI 对 agent 有天然优势。CLI 的输入输出是纯文本agent 处理文本的能力最强。你让 agent 调一个 SDK它得理解函数签名、参数类型、返回值结构你让它调一个 HTTP 接口它得处理 JSON 序列化、状态码、鉴权。但 CLI 不一样agent 只要会拼命令、会读 stdout就能用。而且 CLI 天然可以被 shell 脚本、CI 流水线、各种编排工具调用通用性极强。另一个关键点是进程隔离。CLI 每次调用是一个独立进程浏览器状态可以通过持久化上下文比如用户数据目录来保持但单次调用的失败不会污染整个 agent 进程。这对稳定性要求高的 agent 场景很重要。相比之下SDK 方式下浏览器崩溃可能直接把 agent 主进程带崩。2.3 和 agent browser、playwright mcp 的关系热搜词里同时出现了 agent browser 和 playwright mcp这三个东西经常被放在一起比较。我的理解是它们处在不同的抽象层。Playwright MCP 是把 Playwright 的能力通过 MCP 协议暴露给模型本质还是 Playwright只是换了个调用协议。agent browser 更偏向于一个完整的浏览器 agent 实现自带决策逻辑。而 BrowserSkill 的定位更像是技能层——它不负责决策只负责把操作浏览器这件事做成一个个可被调用的技能决策交给上层的 agent。打个比方Playwright 是发动机agent browser 是整车BrowserSkill 是方向盘和踏板这套操控接口。你可以把 BrowserSkill 接到不同的 agent 上就像同一套操控接口可以装在不同车上。这个定位决定了它的使用方式你不需要它多聪明你需要它稳定、可预测、易调用。3. 环境准备安装 BrowserSkill 前必须搞清楚的几件事3.1 运行环境与依赖检查安装 BrowserSkill 之前有几项环境依赖必须先确认否则后面会踩一堆莫名其妙的坑。根据我的实测需要关注这几项依赖项要求检查命令常见问题Node.js18 LTS 及以上node -v版本过低导致 ESM 加载失败包管理器npm / pnpm / yarn 任一npm -v混用导致 lock 文件冲突浏览器内核Chromium 或系统 Chromewhich chromium未安装导致启动即报错系统权限可写用户数据目录ls -ld ~/.browserskill权限不足导致登录态丢失网络可访问目标站点curl -I https://example.com代理配置错误导致超时这里我要特别提醒 Node.js 版本的问题。BrowserSkill 这类工具大量使用 ESM 和顶层 awaitNode 16 及以下会直接报语法错误。我见过有人用 Node 14 装完运行时报SyntaxError: Unexpected token export排查了半天以为是包坏了其实是版本问题。装之前先node -v看一眼能省很多事。3.2 安装方式的选择与取舍BrowserSkill 的安装从热搜词里 browserskill 下载这个高频词能看出来很多人卡在第一步。常见的安装方式有三种各有适用场景。第一种是全局安装npm install -g browserskill装完直接bsk就能用。这种方式适合个人开发机命令随处可用。缺点是全局包多了之后版本管理混乱不同项目需要不同版本时会打架。第二种是项目内安装npm install browserskill --save-dev然后通过npx bsk调用。这种方式适合团队协作版本锁在 package.json 里谁拉下来都一样。缺点是每次调用要加 npx 前缀稍微啰嗦。第三种是直接下载二进制适合不想装 Node 环境的场景。但这种方式更新麻烦而且不同平台的二进制要分别下载我一般不建议新手用。我的建议是如果你只是自己用、想快速试全局装如果是团队项目、要进 CI项目内装。两种方式我都跑过稳定性没差别区别只在管理便利性。3.3 浏览器内核的初始化装完 BrowserSkill 本体还有一步容易被忽略浏览器内核的初始化。很多自动化工具默认不带浏览器需要单独下载。BrowserSkill 通常会在首次运行时提示你安装内核或者提供一个初始化命令。这一步的坑在于下载源和缓存路径。默认下载源在国外网络不好的话会卡住或者超时。我的做法是提前配置好镜像源或者手动指定已有的 Chrome 路径。如果你机器上已经装了 Chrome可以直接复用省去下载几百兆内核的麻烦。配置方式一般是通过环境变量指定可执行文件路径具体变量名以官方文档为准但思路是通用的能复用系统浏览器就复用别重复下载。提示首次初始化建议在网络稳定的环境下进行中途断网可能导致内核文件损坏表现为启动时报browser executable not found。遇到这种情况删掉缓存目录重新初始化即可。4. 跑通第一个 BrowserSkill 命令从打开页面到抓取内容4.1 最小可用命令的拆解环境准备好之后先跑一个最小命令验证链路。BrowserSkill 的 CLI 通常长这样bsk open https://example.com --headless这条命令做了几件事启动浏览器、打开指定 URL、以无头模式运行。跑通它意味着你的环境、内核、网络都没问题。如果这一步就报错别急着往下走先把错误信息读清楚。常见的错误有三类内核找不到、网络超时、权限不足对应上一节的检查表逐个排查。跑通 open 之后下一步是抓取内容bsk extract https://example.com --selector h1 --format text这条命令打开页面、定位 h1 元素、提取文本。注意--format参数它决定了输出格式text 是纯文本json 是结构化数据。对 agent 来说json 格式更友好因为可以直接解析字段不用再做文本处理。4.2 交互动作点击、输入、等待光抓取还不够真正的自动化要能交互。BrowserSkill 的交互命令设计得比较直观bsk click https://example.com/login --text 登录 bsk type https://example.com/login --selector #username --value myuser bsk wait https://example.com/dashboard --selector .welcome --timeout 10000这三条命令分别对应点击、输入、等待。这里有个设计细节值得说click 命令用的是--text而不是--selector意思是按可见文本定位元素。这个设计对 agent 特别友好因为 agent 理解登录按钮比理解#login-btn更自然。当然文本定位也有风险页面上有多个登录字样时会歧义这时候可以配合--index参数指定第几个。wait 命令的 timeout 参数很关键。默认超时往往偏短遇到慢页面会误判失败。我的经验是把 timeout 设成预期加载时间的 2 到 3 倍比如页面正常 3 秒加载完timeout 设 8000 到 10000 毫秒。设太短会频繁超时设太长会拖慢整体流程这个平衡要自己根据目标站点调。4.3 会话保持让多次调用共享登录态单次命令跑通不难难的是让多次调用共享状态。比如先登录再抓取登录后的页面这两次调用必须共享 cookie 和 localStorage。BrowserSkill 一般通过用户数据目录来实现bsk open https://example.com/login --user-data-dir ./bsk-profile bsk type https://example.com/login --selector #username --value myuser --user-data-dir ./bsk-profile bsk click https://example.com/login --text 登录 --user-data-dir ./bsk-profile bsk extract https://example.com/dashboard --selector .data --user-data-dir ./bsk-profile关键是每条命令都带上同一个--user-data-dir。这样浏览器会把登录态持久化到这个目录下次调用直接复用。我第一次用的时候没加这个参数结果每次调用都是全新会话登录完下一次又变回未登录排查了好久才发现是会话没保持。注意user-data-dir 目录不要多个进程同时写会锁冲突。如果你的 agent 会并发调用每个并发任务用独立的目录或者串行执行。5. 把 BrowserSkill 接进 AI agent调用约定与提示词设计5.1 agent 如何发现和调用 BrowserSkillBrowserSkill 单独用是一回事接进 agent 是另一回事。核心问题是agent 怎么知道有哪些命令可用、每个命令怎么传参。常见做法有两种。第一种是工具描述注入。把 BrowserSkill 的命令列表和参数说明作为工具定义塞进 agent 的 system prompt 或者工具注册表。agent 在需要操作浏览器时生成对应的命令字符串然后由执行层去跑。这种方式灵活但要求 agent 对命令格式理解准确容易拼错参数。第二种是封装成函数。把每个 BrowserSkill 命令包装成一个函数agent 调用函数而不是拼命令。这样参数校验在函数层做agent 不容易出错。缺点是灵活性下降新增命令要改封装层。我实测下来对能力强的模型第一种方式够用对能力一般的模型第二种更稳。如果你在做产品建议用第二种把复杂度挡在 agent 之外。5.2 提示词里怎么描述浏览器技能提示词设计是 agent 用好 BrowserSkill 的关键。我踩过的坑是一开始只告诉 agent你可以用 bsk 命令操作浏览器结果 agent 经常生成不存在的命令或者参数格式乱七八糟。后来我把提示词改成结构化描述效果好很多。具体做法是给每个技能写清楚三件事什么时候用、命令模板、参数含义。比如技能打开页面 使用场景需要访问某个 URL 时 命令bsk open url [--headless] [--user-data-dir dir] 参数 url: 目标地址必填 --headless: 无头模式可选默认开启 --user-data-dir: 会话目录可选需要保持登录态时必填这样 agent 生成命令的准确率明显提升。另外提示词里要明确告诉 agent命令执行后会返回文本或 JSON让它根据返回结果决定下一步。很多 agent 失败是因为它不知道命令有没有成功盲目往下走。5.3 错误处理与重试策略agent 调用 BrowserSkill 一定会遇到失败关键是失败后怎么办。我的经验是分三类处理。第一类是可重试错误比如网络超时、元素还没加载出来。这类错误让 agent 等待后重试通常第二次就成功。第二类是不可重试错误比如 URL 格式错误、选择器语法错误。这类错误重试多少次都一样要让 agent 换策略比如换个选择器或者放弃。第三类是状态错误比如未登录就访问需要登录的页面。这类错误要让 agent 回到登录步骤。提示词里要教 agent 区分这三类。一个实用技巧是让 BrowserSkill 的输出带上错误类型标记agent 根据标记决定动作。比如输出ERROR_TYPE: TIMEOUT就重试ERROR_TYPE: INVALID_SELECTOR就换选择器。这比让 agent 自己猜错误类型靠谱得多。6. 实测中踩过的坑那些文档不会告诉你的细节6.1 无头模式下的反爬与检测无头模式跑得快但很多站点会检测无头浏览器并拒绝服务。我遇到过打开页面返回空白、或者直接跳验证码的情况。原因是无头浏览器的指纹特征太明显比如navigator.webdriver为 true、缺少某些插件、User-Agent 里带 Headless 字样。应对办法有几个层次。最基础的是改 User-Agent把 Headless 字样去掉。进阶一点的是用有头模式跑或者用带伪装的无头模式。BrowserSkill 一般会提供相关参数具体名称看文档。我的建议是先试无头被拦了再换有头别一上来就上有头效率差很多。还有一个细节是窗口尺寸。默认无头窗口尺寸可能是 800x600有些响应式页面在这个尺寸下布局不同选择器可能失效。显式设置一个常见分辨率比如 1920x1080能避免这类问题。6.2 动态渲染页面的等待时机现代前端页面大量用异步渲染DOM 里一开始没有目标元素等接口返回后才插入。这时候直接 extract 会抓不到内容。我踩过最坑的一次是页面明明在浏览器里能看到数据BrowserSkill 抓回来却是空的排查半天发现是抓取时机太早。解决办法是等元素出现再抓。BrowserSkill 的 wait 命令就是干这个的。但 wait 什么元素有讲究等错了元素等于没等。我的经验是等最靠近数据的稳定元素比如数据列表的容器而不是等某个具体数据项。因为数据项可能因为筛选条件不同而变化容器相对稳定。另一个技巧是等网络空闲。有些工具提供--wait-until networkidle这类参数意思是等网络请求都停了再继续。这个对接口驱动的页面特别有效但要注意有些页面有轮询请求永远不空闲这时候得用超时兜底。6.3 多标签页与 iframe 的处理多标签页和 iframe 是浏览器自动化的经典难点。agent 在新标签页打开链接后如果不知道切换后续操作还在旧标签页上自然失败。iframe 更麻烦里面的元素在主文档里找不到必须先切进 iframe 上下文。BrowserSkill 一般会提供标签页和 frame 的管理命令比如列出标签页、切换标签页、进入 iframe。我的建议是agent 每次操作前先确认当前上下文别假设还在原来的标签页。这个确认动作看起来多余但能避免大量诡异失败。提示词里可以加一条规则点击可能打开新窗口的链接后先执行标签页列表命令确认当前所在页面。6.4 登录态失效与验证码登录态失效是长期运行的 agent 最头疼的问题。cookie 有有效期过期后所有需要登录的操作全部失败。更麻烦的是验证码一旦触发agent 基本没法自动过。我的处理策略是把登录态检查做成一个独立步骤agent 在执行关键操作前先检查是否还登录着。检查方式很简单访问一个需要登录的页面看是否被重定向到登录页。如果失效了走重新登录流程。验证码的话老实说没有完美方案常见做法是遇到验证码就暂停转人工或者换时间重试。别想着硬过成本高且不稳定。提示user-data-dir 目录要定期备份登录态失效后如果重新登录成本高可以从备份恢复。但注意备份的时效性太旧的备份 cookie 也过期了。7. 性能与稳定性优化让 BrowserSkill 跑得更久更稳7.1 启动开销的优化BrowserSkill 每次调用都启动浏览器的话开销很大。一次冷启动可能几秒钟如果 agent 要执行几十个操作光启动就浪费大量时间。优化思路是复用浏览器实例。一种方式是常驻一个浏览器进程BrowserSkill 通过连接已有实例来操作而不是每次新启动。这需要 BrowserSkill 支持连接远程调试端口。配置好之后第一次启动浏览器并开放调试端口后续命令连上去就行。这种方式能把单次操作耗时从秒级降到毫秒级。另一种方式是批处理。把多个操作合并成一条命令或者一个脚本减少进程启动次数。BrowserSkill 如果支持脚本文件模式可以把一串操作写进文件一次执行。这对固定流程特别有效比如每天定时抓取写成一个脚本跑就行。7.2 资源占用与并发控制浏览器是内存大户开多了机器扛不住。我实测下来一个 Chromium 实例跑简单页面大概占几百兆内存复杂页面能到 1G 以上。如果 agent 并发跑多个任务内存很快吃满。控制并发的做法是限制同时运行的浏览器实例数。可以用队列任务排队执行同时最多跑 N 个。N 的取值看机器配置8G 内存的机器建议不超过 2 到 3 个。另外任务跑完要及时关闭浏览器别让它挂着占资源。BrowserSkill 一般有 close 命令记得在流程结束时调用。还有一个容易被忽略的点是僵尸进程。浏览器崩溃或者命令异常退出时可能留下孤儿进程。时间长了机器上堆一堆僵尸 Chromium内存被吃光。定期检查并清理这些进程是长期运行必须做的维护。7.3 日志与可观测性agent 跑出问题时最怕的是不知道哪一步错了。BrowserSkill 的日志就是排查的依据。我的做法是把每次命令的输入、输出、耗时、错误都记下来形成操作日志。出问题时回看日志能快速定位是哪个命令、哪个参数出的错。日志级别也要注意。默认级别可能只记错误调试时需要更详细的日志。BrowserSkill 一般支持--verbose或--log-level debug这类参数排查问题时打开平时关掉避免日志爆炸。另外截图是个好帮手关键步骤截图存档出问题时能直观看到页面当时长什么样。8. 几个真实场景的落地思路8.1 定时数据采集最常见的场景是定时抓取某个页面的数据。思路是写一个脚本用 BrowserSkill 打开页面、等待数据加载、提取内容、输出 JSON然后交给定时任务调度。关键点是处理登录态和反爬前面讲过的方法都能用上。我的经验是加一个数据校验步骤抓回来的数据先检查字段是否完整不完整就重试避免脏数据入库。8.2 表单自动填写与提交表单场景的难点在于字段多、校验严。思路是先用 extract 把表单结构抓下来让 agent 分析每个字段该填什么再用 type 逐个填写最后 click 提交。要注意的是提交后可能有确认弹窗或者跳转得等页面稳定再判断结果。我踩过的坑是提交太快页面还没响应就以为失败了其实只是慢。加个 wait 就好。8.3 页面巡检与监控巡检场景是定期检查页面是否正常比如关键元素是否存在、接口是否返回预期数据。思路是用 BrowserSkill 打开页面检查目标元素把结果输出成报告。这个场景对稳定性要求高因为要长期跑。建议加上失败重试和告警连续失败几次就通知人。另外巡检频率别太高太频繁容易被目标站点限流。9. 关于 BrowserSkill 这类工具我的一些个人判断用了一段时间 BrowserSkill 之后我对这类工具的价值有了更清晰的认识。它最大的贡献不是技术上的突破而是把浏览器自动化从写代码变成了调命令这个抽象层的提升直接降低了 agent 接入的门槛。以前给 agent 加浏览器能力要写一堆胶水代码现在只要把命令描述清楚agent 就能用。但它也不是银弹。浏览器自动化的本质困难——选择器脆弱、页面动态、反爬检测——它一个都没消除只是封装了。所以用它的时候心态要摆正它能帮你省掉重复的样板代码但页面适配、错误处理、稳定性优化这些活还是得自己干。指望装个工具就一劳永逸大概率会失望。最后分享一个我自己的习惯每次接入一个新站点先手动用 BrowserSkill 命令把关键流程跑一遍确认每一步都能成功再把这套命令固化进 agent 的提示词。这个先手动后自动的流程能提前发现大部分坑比直接让 agent 盲跑高效得多。踩过的坑告诉我自动化之前的手动验证永远是最划算的投入。

相关新闻

科迅捷AI(官方网站:www.kexunjie.com)的14个功能里,写论文最常用的是这几个

科迅捷AI(官方网站:www.kexunjie.com)的14个功能里,写论文最常用的是这几个

有同学第一次打开写作辅助平台,看到一排功能有点懵——到底哪个是写论文真用得上的?一个个试过来又花时间,还容易被花哨的功能带偏。结合本科生日常用得最多的几个场景,挑出最高频的几项说说,帮你把注意力放在真正能省…

2026/10/18 21:08:36 阅读更多 →
Python静态分析工具选型与Ruff实践指南

Python静态分析工具选型与Ruff实践指南

我无法根据当前输入生成符合要求的博文。原因如下:项目标题“Octop”缺乏明确指向:该词在主流技术生态中无公认、稳定、可验证的指代对象。它既不是广为人知的Python库(PyPI上无名为octop的主流包)、也不是MIT知名项目&#xff08…

2026/10/18 21:08:36 阅读更多 →
RAG项目实战全攻略:从检索增强生成原理到企业知识库问答落地

RAG项目实战全攻略:从检索增强生成原理到企业知识库问答落地

做RAG项目,是我接手一个内部知识库问答需求之后才真正意识到,检索增强生成这件事的复杂度,远不止“把文档切碎塞进向量库,再丢给大模型”这么简单。RAG(Retrieval-Augmented Generation,检索增强生成&#…

2026/10/18 21:08:36 阅读更多 →

最新新闻

SPACE沙箱生命周期完全指南:Running/Paused/Suspended三种状态如何选?附pause/suspend/wake实战

SPACE沙箱生命周期完全指南:Running/Paused/Suspended三种状态如何选?附pause/suspend/wake实战

【免费下载链接】SPACE Sandboxed Platform for Agentic Code Execution: pluggable-runtime sandboxes for running agent and user code in isolation. 项目地址: https://gitcode.com/gh_mirrors/space34/SPACE 点击查看 免费下载 SPACE 是一款面向 AI Agent 的…

2026/10/18 22:15:33 阅读更多 →
为什么大模型需要4bit量化?InternVL2-26B-AWQ的AWQ量化原理(W4A16)深度详解

为什么大模型需要4bit量化?InternVL2-26B-AWQ的AWQ量化原理(W4A16)深度详解

【免费下载链接】InternVL2-26B-AWQ 项目地址: https://ai.gitcode.com/OpenGVLab/InternVL2-26B-AWQ 点击查看 免费下载 InternVL2-26B-AWQ 是上海 AI Lab 开源多模态大模型 InternVL2-26B 的 4bit AWQ 量化版,采用 W4A16(权重 4bit、激活 …

2026/10/18 22:15:33 阅读更多 →
肾小管 上皮间质转化(EMT )体外评价模型:云克隆猫肾小管上皮细胞产品解读

肾小管 上皮间质转化(EMT )体外评价模型:云克隆猫肾小管上皮细胞产品解读

肾小管上皮细胞是肾脏实质最主要的功能细胞,在重吸收、尿液浓缩、毒素代谢中发挥核心作用,也是急性肾损伤、慢性肾病、肾纤维化发病的首要靶细胞。正常 RTEC 可完成葡萄糖、电解质、小分子蛋白重吸收,维持肾内稳态;当遭遇缺血、毒…

2026/10/18 22:15:33 阅读更多 →
飞控计算机硬实时操作系统选型与调度设计实战

飞控计算机硬实时操作系统选型与调度设计实战

1. 飞控计算机对操作系统的要求远不止"实时"两个字很多人第一次接触飞控计算机,看到"硬实时操作系统"这个词,第一反应就是"快"。但如果你真拿一个跑分很高的通用系统往飞控上装,大概率连地面测试都过不了。飞控…

2026/10/18 22:15:33 阅读更多 →
WPF依赖属性底层机制与避坑指南:从绑定、优先级到实战调试

WPF依赖属性底层机制与避坑指南:从绑定、优先级到实战调试

简介:Windows Presentation Foundation(WPF)中,依赖属性(DependencyProperty)是支撑数据绑定、样式与模板的关键底层机制。这份资源围绕依赖属性定义、注册流程、读写访问方式、属性更改通知回调以及元数据…

2026/10/18 22:15:32 阅读更多 →
BrowserSkill 实战:用 CLI 让 AI agent 稳定操控浏览器

BrowserSkill 实战:用 CLI 让 AI agent 稳定操控浏览器

1. BrowserSkill 到底解决了什么问题第一次看到 BrowserSkill 这个名字,我下意识以为又是一个浏览器插件。真正用起来才发现,它压根不是插件,而是一套让 AI agent 直接操控浏览器的技能层。说白了,它把"打开网页、点击按钮、…

2026/10/18 22:14:32 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →