ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

BrowserSkill DeepSeek Harness 插件:在 dsh 中通过原生 browser_* 工具驱动真实浏览器

BrowserSkill DeepSeek Harness 插件:在 dsh 中通过原生 browser_* 工具驱动真实浏览器 【免费下载链接】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点击查看免费下载本篇技术指南围绕packages/dsh-plugin-browserskillnpm 包名wxg-prc-cpg/browser-skill-dsh-plugin展开讲解如何将 BrowserSkill 的浏览器自动化能力以六个原生browser_*工具的形式注入 DeepSeek Harnessdsh让 Agent 在 Agent Window 中浏览网页、填写表单、捕获截图并在 dsh Web UI 中实时观察运行过程。读完本文你将掌握插件的安装、配置、会话模型、工具用法、源码级工作原理以及开发与发布流程。插件定位dsh 与 BrowserSkill 之间的桥梁BrowserSkill 本身提供了一套 CLIbsk与浏览器扩展允许任何具备 shell 能力的 AI Agent 操作已登录的真实浏览器。而 DeepSeek Harness 通过插件机制将外部能力暴露为模型可见的工具。这个 DSH 插件正是二者的胶水层它把 BrowserSkill 的 CLI 命令封装为 dsh 原生的browser_*工具浏览器任务运行在 Agent Window 中并可在 dsh Web UI 中实时查看。从源码注释可以清晰看到其核心设计入口文件每个工具都会派生bsk cmd --json子进程、解析结构化输出并返回规范的 JSON 值。插件跟踪自己启动的会话因此一个 Agent 对话可以同时驱动多个浏览器卸载插件会停止所有被跟踪的会话并杀死所有在途的 bsk 子进程。也就是说整个插件的运行模型是一个工具调用 一次bsk cmd --json子进程调用不引入独立后台服务职责边界清晰。安装前置条件与两条命令在安装插件之前需要先准备好三样东西DeepSeek Harnessdsh与pnpmdsh使用 pnpm 管理插件二者缺一不可。bskCLI 与浏览器扩展安装 BrowserSkill 本体并在 Chrome 或 Edge 中连接扩展。bsk在 PATH 中可用bsk必须位于启动dsh时使用的PATH中或者稍后在插件配置中通过bskPath指定完整路径。满足前置条件后将插件安装到webprofile 并启动dsh plugin --profile web add wxg-prc-cpg/browser-skill-dsh-plugin dsh --profile web如果使用其他 profile把web替换为对应名称即可。插件自带browser-skill技能因此无需再单独执行bsk install-skill。装好后在对话中即可尝试/browser-skill open example.com and summarize the page.默认情况下lazyTools: true浏览器工具会在技能被调用时才对模型可见这一点会在下文配置详解与工具渐进披露两节展开。六大工具总览插件面向模型暴露六个领域工具每个工具通过action参数分发到具体操作而不是每个操作一个 schema浏览器工具规格定义。官方文档给出的工具与操作映射如下工具Actions用途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调整窗口或模拟设备、暂停等待人工步骤几个需要特别说明的领域细节原生滚轮输入action: wheel涉及有符号的deltaX/deltaY、可选目标、结果语义与中断行为详见 wheel 参考。scroll-to操作涉及参数、可见边界与错误处理详见 scroll-to 参考。明确不支持任意页面脚本求值evaluate与交互录制recording。这两项能力被有意关闭模型不应编造不存在工具或绕过限制。从实现上看browser_interact的click还支持 Canvas 场景通过captureId 原始 PNG 像素坐标imageX/imageY点击截图捕获的内容技能正文要求使用真正在原始 PNG 像素中看到的点而非缩放后的显示坐标。工具到 bsk CLI 的映射进程级执行链路要理解插件行为关键是看它的执行链路。所有模型可见的工具最终都走同一条路径runner.ts插件以bskPath默认bsk为可执行文件通过spawn派生子进程并自动附加--json参数收集 stdout/stderr设置超时定时器默认defaultTimeoutMs: 120000与取消信号超时或 dsh 侧取消时先发SIGINTWindows 下改为关闭 stdin触发BSK_CANCEL_ON_STDIN_CLOSE环境变量走优雅取消 RPC预留 3 秒Windows 15 秒宽限期后才强制SIGKILL子进程退出后若 stdout 是 bsk 的 JSON 错误信封含code/message/hint则解析并抛出一个携带hint的BskError把可操作的提示直接带给模型错误解析。针对 daemon 侧同一会话同一时刻只能有一个命令的约束插件内置了session_busy重试当返回结果带有reason: session_busy时等待 100ms 重试一次runWithSessionBusyRetry其余错误保持原样暴露给调用方。工具调用还经过一个按会话串行化的 FIFO 队列daemon 拒绝在某个命令未完成时接收同一会话的第二个命令因此插件用KeyedExecutor以会话为键串行排队同时标记观测状态beginAction/endAction保证 UI 上显示的当前动作与实际执行一一对应tools.ts 中的 runBsk。另外插件启动时会执行一次非阻塞的bsk --version探针选择--version是因为它不会启动 daemonbsk status会 ensure-spawn daemon代价高昂。探针失败只输出警告浏览器工具在 bsk 可用前会返回安装引导信息index.ts 探针逻辑。多会话模型与所有权边界一个 Agent 对话可以同时驱动多个浏览器会话规则如下摘自官方文档browser_session的action: start返回会话 id并使该会话成为current session当前会话每个操作工具都接受可选的session参数。省略时作用于当前会话最近启动或使用的那个显式给出时该会话成为新的当前会话每个工具结果都会回显它实际作用的会话 id模型永远不需要猜测插件启动的并发会话数有上限maxSessions默认 5卸载插件会停止它启动的所有会话并杀死在途的 bsk 进程。所有权边界是这套模型的安全基石bsk daemon 可能与其他 Agent、终端或其他 dsh 实例共享因此插件只能看到并操作自己创建的会话。具体表现为显式传入外来或未知的session参数会被拒绝browser_session的list只显示插件创建的会话没有 daemon 全局视图stop与卸载清理永远不会触碰其他程序拥有的会话。对应源码在 sessions.tsSessionRegistry内部维护MapsessionId, TrackedSession与currentId指针resolve()对外来 id 直接抛出 does not belong to this plugin 错误resolve 实现。并发上限通过同步的 check-and-reserve 协议实现reserveStart()在 spawn 之前先占坑completeStart/abandonStart再结算从而保证并发 start 不可能同时越过容量检查导致会话泄漏容量协议。此外注册表还记录了每个 bsk 会话所属的 DSH 对话链启动它的 Agent 会话及其所有祖先当某一级对话被归档archive时其浏览器会话会被一并回收避免 Agent Window 无人可达地悬挂archive-cleanup。配置详解cordis.patch.yml 与全部选项插件安装后需要编辑 profile 的cordis.patch.yml。对于webprofile默认位置是~/.dsh/profiles/web/cordis.patch.yml若设置了DSH_HOME则为$DSH_HOME/profiles/web/cordis.patch.yml。若文件只含注释与[]保留注释并把[]替换为下面的 YAML若已有 patch 条目则把这条加到现有列表或编辑已有的id: browserskill条目。整个文件保持单一顶层 YAML 列表- id: browserskill config: bskPath: bsk defaultTimeoutMs: 120000 maxSessions: 5 observationEnabled: true thumbnailIntervalMs: 1500 idleIntervalMs: 8000 lazyTools: true若bsk不在 dsh 的PATH上把bskPath改为 CLI 二进制的完整路径patch 会整体替换该条目的config对象所以所有需要的覆盖项必须集中写在这个对象里。这些配置项在源码中由 Schemastery schema 定义并校验Config schema全部字段均可选缺省使用默认值OptionDefaultPurposebskPathbskCLI 二进制路径defaultTimeoutMs120000默认命令超时毫秒maxSessions5本插件可启动的最大并发会话数observationEnabledtrue启用实时浏览器观察thumbnailIntervalMs1500活跃会话的截图间隔毫秒idleIntervalMs8000空闲会话截图间隔同时也是最近活跃时间窗毫秒lazyToolstrue技能被调用时才暴露浏览器工具设为false则在启动时注册全部工具配置变更的生效方式遵循 profile 的package.json中dsh.profile.patchReload设置livewebprofile 的默认值在保存 patch 文件时即生效startup需要重启 profile。无论哪种方式升级插件后都建议重启 profile。工具渐进披露lazyTools 的工作原理lazyTools: true默认时插件初始只向模型广告技能目录条目技能名 描述六个browser_*工具的 schema在browser-skill技能成功调用后才追加进系统提示。调用方式可以是模型主动调用也可以是用户输入/browser-skill。设为false则工具立即可用。源码实现lazy-tools.ts揭示了几点关键设计一次成功的技能调用tool/result非错误会在进程剩余生命周期内揭示整套工具重复调用是幂等的 no-op会话恢复时插件会扫描持久的会话事件tool/calltool/result对或技能来源的消息判断历史上是否已成功调用过技能从而在恢复的会话中自动揭示工具dsh 没有全局工具可见性开关ctx.tools.restrict是 agent 作用域且会在普通 host 上下文抛错因此条件注册 事件钩子是官方认可的模式工具 schema 变更会在下一个 step的组装中生效。技能本身通过 dsh 官方ctx.skills缝隙注册目录条目常驻正文按需加载DSH 专用的 Markdown 在构建时嵌入为静态模块注册与预步快照都是纯内存读取不涉及磁盘、进程或 daemonskill.ts。值得注意的还有一层dsh 按agent - preset - global顺序合并技能层若~/.agents/skills/browser-skill下残留了旧版 CLI 技能会遮蔽插件级注册。因此插件会在每个精确的 Agent 上下文含新会话与既有会话中重新注册嵌入式技能使 DSH 协议契约对每个 Agent 具有权威性同时不动共享的 CLI 技能agent 作用域注册。实时浏览器视图原生侧栏与浮动面板dsh Web UI 优先使用 DSH 原生右侧边栏中的Browser Skill标签页原生标签页在当前对话首次出现浏览器会话时打开普通的截图与动作更新不会切换标签页也不会重新打开你已关闭的标签页可从侧栏引导中重新打开原生侧栏是可选能力。没有对应服务的 profile 使用浮动面板原生集成失败也会回退到浮动面板。无需安装dsh-better-sidebar——插件直接注册到 DSH而非第三方侧栏二者可以共存。功能清单查看每个会话的当前动作、已耗时间与最近截图选择一个会话聚焦查看侧栏视图跟随当前对话Use floating view把观察移入浮动面板Move to sidebar或标签页内的Show here移回该选择仅在页面重载前有效不会保存到 profile 或浏览器存储Interrupt取消当前浏览器命令Agent 之后可继续执行其他动作浮动面板可拖拽、调整大小或使用Pop out在支持的浏览器中打开画中画PiP窗口浏览器观察视图可见时插件会周期性请求截图活跃/空闲间隔即上文配置表中的thumbnailIntervalMs与idleIntervalMs。界面差异浮动面板显示本插件实例管理的所有浏览器会话原生标签页显示当前对话及其子 Agent的浏览器。观察接口要求回环地址如localhost、127.0.0.1通过局域网主机名或非回环反向代理访问不受支持。底层实现上ObservationService为每个自有会话维护实时观察状态——当前动作、页面 URL、以及由临时帧 id 标识的呼吸式缩略图SessionObservation 结构。缩略图帧存放在每会话 2 槽的内存环形缓冲中绝不进入持久的附件存储且截图流量直接走 runner、不经过工具级埋点不产生动作事件也不会移动注册表的当前会话指针。观察事件通过 SSE 推送给订阅者snapshot/upsert/remove/reset/availability供侧栏与浮动面板渲染。失败动作会记录lastError驱动侧栏中的红色状态点。技能正文Agent 的强制工作流插件内置的browser-skill技能正文SKILL.md为模型提供了详细的执行契约核心要点如下强制工作流先定义成功标准启动会话并记住sessionId新页面按start → navigate → observe三步走对已有用户标签页则走borrow借用流程。页面变化后必须重新 observe歧义结果只检查一次看到成功即停止行动成功或失败后调用browser_session(action: stop)除非用户要求保持会话打开停止会归还借用标签页并保持其在用户窗口中打开。读与交互文本/ref 优先用observe静态可访问性用snapshot精确标记用html视觉证据用screenshotconsole/network 是受限于游标cursor的只读诊断。ref 在导航后失效大范围 DOM 变更也可能使其过期需要重新 observe。选择框按 value 而非可见标签选择。借用与人工帮助操作前先browser_tabs列出 id借用只用于当下步骤并及时归还启用帮助时用browser_assist的request-help处理登录、CAPTCHA、OTP、支付确认、同意等场景只有在返回continued/completed时才继续禁用帮助时不得请求或重新启用帮助disabled表示无人工动作或新权限。恢复ref 过期 → 重新 observe 后重试一次未知会话 → 列出自有资源或启动新会话绝不猜测 id超时/未知效果 → 先检查再重试动作可能已发生未确认的 fill → 读取字段判断只纠正剩余差异。技能正文特别强调eN canvas [visual:screenshot]是文本而非图片需要时对 ref 截图Canvas 的 captureId 单次有效、有效期 2 分钟、在 ref 替换或更新截图时过期captureUnavailable表示只读需重新 observe 并截图后再点击。升级插件已安装的插件不会自动更新。升级到 npm 的latest版本包括超出 profile 保存依赖范围的版本dsh plugin --profile web update wxg-prc-cpg/browser-skill-dsh-plugin --latest升级后重启对应 profile。该命令只更新插件bskCLI 与浏览器扩展在发布要求时需单独更新。开发、测试与发布本插件的开发命令对应 package.jsonpnpm install pnpm --filter wxg-prc-cpg/browser-skill-dsh-plugin typecheck pnpm --filter wxg-prc-cpg/browser-skill-dsh-plugin test # 单元测试 mock 了 bsk无需真实浏览器 pnpm --filter wxg-prc-cpg/browser-skill-dsh-plugin build # tsdown - lib/单元测试通过runnerFactory注入假进程 runner因此测试期间不会派生真实的 bsk 子进程ApplyOptions 测试缝。更详细的技能注册、工具结果与观察 API 说明见开发笔记。发布流程通过仓库的 Release dsh plugin 工作流触发推送dsh-plugin-vX.Y.Z标签即发布普通main提交不会触发。流程为提交 README 及发布相关内容 → 从仓库根目录运行node scripts/release.mjs version该脚本会同步更新 CLI、扩展与 DSH 插件版本并创建发布标签→ 推送版本提交与dsh-plugin-vversion标签。工作流会检查版本、执行类型检查与测试、构建并发布到 npm手动触发同样可用两种触发都要求未发布的版本与npm-publishGitHub Environment 中的NPM_TOKEN密钥。注意 npm 只在发布新版本时更新包 README已发布的版本不可覆盖。适用前提与限制小结观察接口仅支持回环地址局域网主机名或非回环反向代理不可用任意页面脚本求值与交互录制不支持模型不得自行绕过插件只操作自己创建的会话共享 daemon 上的其他会话不可见、不可操作远程设置与配对remote setup/pairing需先参考远程扩展连接指南本插件的 MIT 许可与仓库一致LICENSE相关协议与隐私说明见扩展目录中的 PRIVACY.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点击查看免费下载相关推荐BrowserSkill for DeepSeek Harness六个注入式浏览器工具域驱动的 Agent 浏览器自动化实战指南BrowserSkill for DeepSeek Harness六个注入式浏览器工具域驱动的 Agent 浏览器自动化实战指南 本篇技术指南以 BrowseCursor Playwright 插件实战通过 Playwright MCP 让 Agent 驱动真实浏览器Cursor Playwright 插件实战通过 Playwright MCP 让 Agent 驱动真实浏览器 本篇指南围绕开源仓库中的 PlaywrightAI 技能/插件插件系统开发工具人工智能DeepSeek Harness 的 Windows 原生 Shell 执行体系dsh-pwsh-local 执行器与 dsh-tool-pwsh 工具实现解析DeepSeek Harness 的 Windows 原生 Shell 执行体系 dsh pwsh local 执行器与 dsh tool pwsh 工具实现人工智能AI AgentAgent 框架DeepSeek创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表