十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

BrowserSkill for DeepSeek Harness:六个注入式浏览器工具域驱动的 Agent 浏览器自动化实战指南

BrowserSkill for DeepSeek Harness:六个注入式浏览器工具域驱动的 Agent 浏览器自动化实战指南 BrowserSkill for DeepSeek Harness六个注入式浏览器工具域驱动的 Agent 浏览器自动化实战指南【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill本篇技术指南以 BrowserSkill 为 DeepSeek Harnessdsh发布的browser-skillAgent 技能skill为绝对核心系统讲解 Agent 如何在拥有既有登录态的 Agent Window 中通过browser_session、browser_page、browser_inspect、browser_interact、browser_tabs、browser_assist六个注入式浏览器工具完成“定义成功 → 建会话 → 导航 → 观察 → 交互 → 收尾”的闭环任务。读完本文你将掌握会话/标签页的归属边界、eNref 的失效与恢复策略、人工协助request-help的启用与降级规则、Canvas 截图点击协议以及基于maxTokens/nextCursor的长页面续读方案并能在源码层面理解这些规则背后的实现。一、定位dsh 插件中的浏览器技能与六个工具域browser-skill是 dsh 插件wxg-prc-cpg/browser-skill-dsh-plugin发布的 Agent 技能其全部行为约束定义在 skill/SKILL.md 中。它有三条根本性前提所有浏览器操作必须直接使用注入的browser_*工具运行在拥有既有登录态的 Agent Window 内绝不通过另一个进程间接控制浏览器参数一律以已加载的动作 schema 为准模型不能凭空发明参数或工具远程接入或配对场景需先按 远程扩展连接指南 完成配置后再使用这些工具。插件只向模型暴露六个“域工具”每个工具内部按action字段分发到私有的操作处理器。从 browser-tools.ts 的BROWSER_TOOL_SPECS可以看到六个工具及其动作清单工具动作用途browser_sessionstart、stop、list管理插件拥有的 Agent Window 会话browser_pagenavigate、back、forward、reload、wait导航活动标签页并等待页面生命周期事件browser_inspectobserve、snapshot、html、screenshot、console、network读取语义化/诊断页面状态并截图browser_interactclick、hover、wheel、scroll-to、focus、blur、fill、select、press使用新鲜 ref 或选择器与控件交互browser_tabslist、create、select、close、borrow、return管理 Agent Window 标签页并临时借用用户标签页browser_assistresize、emulate、request-help调整窗口/模拟设备并暂停等待人工步骤值得注意的实现细节六个 schema 之下tools.ts 通过createBrowserOperationDefinitions构建私有操作定义集合defineBrowserTool在运行时按action查表分发browser-tools.ts因此校验、取消、归属、观察上报、UI 呈现等横切逻辑可以复用在每个动作上模型却只会看到六个精简的工具 schema。二、环境准备与插件配置前置条件技能本身不负责安装运行环境。使用前需要满足详见 插件 README安装 DeepSeek Harness 与 pnpm安装bskCLI 并连接 Chrome/Edge 中的 BrowserSkill 扩展确保bsk位于启动 dsh 的PATH上将插件安装进webprofile 并启动dsh plugin --profile web add wxg-prc-cpg/browser-skill-dsh-plugin dsh --profile web插件自带browser-skill技能无需单独的bsk install-skill步骤。在会话中输入/browser-skill open example.com and summarize the page.即可触发。安装后可在 profile 的cordis.patch.yml默认~/.dsh/profiles/web/cordis.patch.yml设置了DSH_HOME则用$DSH_HOME/profiles/web/cordis.patch.yml中覆盖插件配置。参考配置与默认值如下全部字段可选来源 index.ts 的 Schemastery schema- id: browserskill config: bskPath: bsk defaultTimeoutMs: 120000 maxSessions: 5 observationEnabled: true thumbnailIntervalMs: 1500 idleIntervalMs: 8000 lazyTools: true选项默认值作用bskPathbskCLI 二进制路径不在 PATH 时改为全路径defaultTimeoutMs120000默认命令超时毫秒maxSessions5本插件可启动的最大并发会话数observationEnabledtrue是否开启实时浏览器观察thumbnailIntervalMs1500活动会话截图间隔毫秒idleIntervalMs8000空闲会话截图间隔与近期活动窗口毫秒lazyToolstrue是否在技能被调用后才注册browser_*工具lazyTools: true时模型起初只在available_skills里看到技能目录条目六个工具 schema 在技能成功调用模型自行调用或/browser-skill后才加入系统提示词注册一次、持续到插件卸载设为false则在启动时立即注册实现见 skill.ts 与 lazy-tools.ts。补丁会整体替换该条目的config对象因此需要保留的覆盖项要写在一起配置热加载与否由 profile 的dsh.profile.patchReload决定web默认live保存即生效。三、强制工作流会话、导航、观察与收尾技能规定了一套不可跳过的执行顺序核心是“先定义成功再动手”场景 A新页面。启动会话并保存返回的sessionId随后在 Agent Window 中导航并观察browser_session({ action: start }) browser_page({ action: navigate, session: id, url: https://example.com }) browser_inspect({ action: observe, session: id })场景 B已有用户标签页。改用borrow借用而不是新建页面把示例 ID/ref 替换为实际返回结果。存在多个会话时显式传session绝不使用外部foreignID。页面每次变化后都要重新observe对歧义结果只检查一次。成功可见即停止动作。成功或失败后都应调用browser_session({ action: stop, session: id })除非“保持会话开启”本身就是用户的请求。stop会归还借用的标签页——它们仍以打开状态留在用户的窗口里。从实现看start会先同步预留会话槽位tools.ts 的registry.reserveStart()避免并发启动突破maxSessions上限若随后的navigate/emulate初始化失败会走同一套幂等清理路径停掉半初始化会话防止泄漏tools.ts。stop只允许停掉本插件创建的会话list也只列出插件自有会话——这是多程序共享同一个 bsk daemon 时的归属边界tools.ts 明确注释registry-only不触碰 daemon外部会话连“被看到”都不可能。四、读取与交互observe 优先与 ref 使用规则技能给出了一套清晰的读取工具选择策略observe首选输出语义化的 VOM 观察角色、状态、感知探针并附带eNref只读、绝不提交输入snapshot需要静态无障碍树aria-tree时使用html需要精确标记时使用screenshot需要视觉证据时使用console/network有界的只读诊断跟随序列游标读取仅等待预期的导航。ref 生命周期是交互正确性的关键eNref 在导航后失效大范围 DOM 变更也可能使其过期——必须重新observe。对 iframe/shadow root 内的元素ref 是首选寻址方式CSS 选择器只搜索主文档。对普通控件一律用 observe 定位包括在基于 HTML 或截图结论行动之前。select下拉框按 value 选值而不是可见标签。填充一个观察到的字段e3的示例源码侧动作定义见 tools.tsnoClear可追加而非清空browser_interact({ action: fill, session: id, target: e3, value: text })三个动作的特殊语义需要牢记对应 docs/scroll-to.md 与 docs/wheel.mdHover 标记形如[hover first: Shoes | Bags]的标记列出的是标签而非 ref。流程是hover 触发器 → observe → 拿到具体条目 ref → 再用该 ref 行动。只有当触发器本身的动作正是你想要的才直接点击它。scroll-to返回的是祖先裁剪后的边界框单位是顶层视口 CSS 像素。部分可见即可成功隐藏或完全被裁剪的目标会失败它不做遮挡occlusion测试。wheel使用带符号的deltaX/deltaY至少一个非零。可选target会先滚动进入视野否则以视口中心为准。它报告的是输入本身而非滚动结果——之后必须 observe 验证。focus/blur会改变焦点状态。五、借用标签页与人工协助request-help借用原则行动前先用browser_tabslist确认 ID仅为当前步骤借用用完立即return。浏览器自动化设置Browser Automation 设置管辖确认与帮助行为绝不可为绕过某个提示或重复 pending/denied/expired 的借用而修改这些设置。未知结果必须 inspect 后再行动并遵循版本错误提示。远程场景下读取/操作只允许作用于任务创建或借用的标签页弹出窗口popup无法获得控制权。Agent Window 内未被拥有的标签页需用户先移到用户窗口才能被借用。帮助开启时request-help用于登录、CAPTCHA、OTP、支付确认、同意授权等场景或在连续两次尝试无进展后使用。用法要点提供精确的 prompt 和新鲜的 targets完成标准需要一个稳定的成功信号completion criteria仅在收到continued/completed后恢复行动然后 observe取消/超时会阻塞当前步骤不要重复请求单纯的导航不算成功。browser_assist除了request-help还支持resize调整窗口、emulate对单个标签页做移动设备模拟内置预设见 browser-tools.tsiphone-14、iphone-14-pro-max、iphone-se、pixel-7、galaxy-s23、ipad-mini、galaxy-tab-s8mobile标志必须与widthheight同时给出daemon 会拒绝单独使用--mobile见 tools.ts。帮助关闭时不请求帮助、不重新启用。disabled确认没有人工操作或新权限可用。此时应重新 observe在任务/宿主规则内使用既有登录态、已授权输入和可行替代方案。视觉模型在授权范围内可尝试图形验证。以下情形可能保持受阻仅限手机的扫码、人脸验证、缺失短信验证码、纯文本模型面对纯图片任务。应报告缺失的输入/能力或已穷尽的替代方案继续独立工作绝不重复未知副作用也不切换后端来绕过限制。借用确认borrow confirmation在这些场景下依然适用。六、恢复与容错错误分类与处理动作技能把常见故障归纳为五类每类有明确的处理动作错误处理过期 refstale ref重新 observe然后重试预期动作一次未知 tab/session列出自有资源或启动会话绝不猜测 ID超时/未知效果先 inspect 再重试——动作可能已经发生未确认的 fill读字段值核对若格式已满足目标只修正剩余差异不要盲目重填或请求帮助其他错误跟随提示不可恢复时报告并停止自有会话同时技能明确了两条能力红线任意页面脚本求值arbitrary page-script evaluation与交互录制interaction recording是有意不支持的不要发明工具或试图绕过这些限制。这一点在插件 README 与 docs/development.md 中被多次重申是 dsh 集成界面的刻意边界而非缺陷。七、Canvas 与长页面续读Canvas 特例eN canvas [visual:screenshot]在观察结果中是文本而非图片。需要时对 ref 截图绝不从邻近标签推断 Canvas 的名称/控件若图像无法被理解应请求具备图像能力的模型并继续使用可用语义继续。Canvas 上的点击协议对应 tools.ts 中interact.click的 capture 参数browser_inspect({ action: screenshot, session: id, ref: e3 }) browser_interact({ action: click, session: id, target: e3, captureId: capture-id, imageX: 100, imageY: 50 })关键约束imageX/imageY必须是原始 PNG 像素中的真实坐标不是缩放后的展示/视口坐标capture单次使用、有效期 2 分钟ref 被替换或该 ref 出现新截图时立即过期captureUnavailable表示只读先 observe 再截图之后才能点击Canvas 点击支持次数 1/2、按钮与修饰键Canvas 的 fill/IME/drag/hover/HTML 均不支持重绘是允许的但要验证结果并用 DOM ref 操作随后出现的控件若返回effect_stateunknown在获取新 capture 重试前先 inspect。长页面续读无默认 token 上限设了maxTokens时用 observe 返回的cursor跟随nextCursor读取剩余内容。每个页面都会替换 refs必须在续读前使用当前 refs绝不复用旧 ref。续读读取的是同一 capture前提是没有刷新/深度变化新的 observe/snapshot 或页面身份变化都会使其失效对应 tools.ts 中 observe 的cursor/nextCursor/truncated输出契约。八、源码级支撑多会话模型、执行与观察机制技能文档描述的行为在插件源码中都有对应实现多会话模型一次对话可同时驱动多个浏览器会话。每个操作工具接受可选session参数省略时作用于当前会话最近启动或使用的那个显式传入则将其设为当前每个工具结果都会回显实际作用的会话模型无需猜测。所有会话的启动上限受maxSessions控制index.ts 中SessionRegistry构造。插件卸载时会终止所有它启动的会话并杀掉在途的 bsk 子进程index.ts。命令执行每个动作经runBsk调用bsk cmd --json并解析结构化输出命令按会话进入 per-session FIFO 队列tools.ts因为 daemon 同一时刻只接受每会话一条未完成命令取消abort会杀掉对应 bsk 子进程与 BrowserSkill 的协作式取消模型一致。bsk非零退出时透传 CLI 的 JSON 错误信封code/message/hint让模型拿到 daemon 的可执行建议docs/development.md。技能注册技能正文经构建期脚本内嵌为静态模块skill-content.generated注册与目录快照均为纯内存读取同名的~/.agentsCLI 技能会在预设层被发现并遮蔽全局注册因此插件还会通过agent/session-start在每个精确 agent 作用域重新注册使 dsh 协议文本对每个 agent 权威生效skill.ts。实时观察视图dsh Web UI 通过GET /bsk-observation/eventsSSE同步会话快照与upsert/remove/reset事件观察端点要求 loopback 地址localhost、127.0.0.0/8、[::1]并复刻 dsh 自身的浏览器信任栅栏——LAN 地址或非 loopback 反向代理会刻意失败docs/development.md 的“Trust model”一节。九、常用排查速查把技能文档中的规则收敛为一张可执行检查表供模型在每步动作前自检行动前这个会话/tab 是我拥有的吗ref 是否来自最近一次 observe导航后是否重新 observe 过了还在复用旧 ref 吗借用后用完是否立即 return 了有没有为了绕过确认而改设置失败后是先 inspect 再重试还是盲目重试超时/未知效果可能意味着动作已发生。收尾时成功可见了吗该 stop 的会话 stop 了吗是否在保持会话开启是用户需求时才不 stop红线检查我是否在试图做任意脚本求值、交互录制、或发明不存在的工具参考资源技能完整规则原文packages/dsh-plugin-browserskill/skill/SKILL.md插件安装、更新、配置与实时视图packages/dsh-plugin-browserskill/README.md插件开发与内部机制packages/dsh-plugin-browserskill/docs/development.md工具 schema 与动作分发packages/dsh-plugin-browserskill/src/browser-tools.ts操作实现与配置 schemapackages/dsh-plugin-browserskill/src/tools.ts、packages/dsh-plugin-browserskill/src/index.ts共享参数定义packages/dsh-plugin-browserskill/src/tool-params.tswheel与scroll-to的完整语义docs/wheel.md、docs/scroll-to.md远程扩展连接docs/remote-extension-connection.md【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表