前言¶
在 DeepSeek Harness(DSH)环境中,智能体在浏览器中的操作通常基于一次性配置文件。每次运行都是一个全新的浏览器实例,没有 Cookies、没有已登录状态,也无法使用个人安装的扩展程序。这导致智能体无法访问需要身份验证的页面,也无法复用已配置的环境。
本插件通过提供持久化的 Yandex Browser 配置文件以及基于 Chrome DevTools Protocol(CDP)的页面控制能力,解决了这一问题。它允许智能体在同一个浏览器实例中工作,且配置文件中的登录状态和扩展可以长期保留。
这是什么¶
这是一个 DeepSeek Harness 插件,由用户 DmitPerson42 维护。其核心功能是启动一个带有持久化配置文件的 Yandex Browser,并在端口 9222 上开启 CDP 通信,从而让智能体能够直接读取和操作页面内容。
插件不依赖 MCP(Model Context Protocol),而是直接通过 CDP 与浏览器交互。它主要包含三个模块:yandex_browser(管理生命周期)、yandex_page(读取内容)和 yandex_act(执行动作)。
核心功能¶
插件通过 CDP 协议(默认端口 9222)与浏览器通信,配置文件存储在 %USERPROFILE%\.dsh\browsers\yandex。
-
yandex_browser:生命周期管理
status:检查浏览器运行状态、版本、端点地址、配置文件路径及当前打开的标签页。start:启动浏览器。如果浏览器已运行,此命令会跳过启动过程。open:在浏览器中打开指定 URL。如果浏览器未启动,会自动先启动。login:打开登录页面(默认为 Yandex Passport),供用户手动输入凭据。tabs:列出当前所有打开的标签页。close:关闭浏览器。注意:这会关闭所有标签页,但会保留配置文件中的登录状态。
-
yandex_page:页面读取
text:获取页面文本,并附带交互元素(基于aria-label、title、placeholder)的描述,便于识别复杂的 Web 组件。eval:在页面上下文中执行 JavaScript 表达式并返回结果。screenshot:保存页面截图。支持fullPage参数以截取完整页面。tabs:返回标签页 ID 列表,并标记出由插件创建的标签页。
-
yandex_act:页面操作
navigate:跳转 URL。click:通过 CSS 选择器或可见文本点击元素。type:在输入框中输入文本(支持 React 表单),可配置是否发送回车。key:模拟按键(Enter, Tab, Escape, 方向键等)。activate:激活并显示特定标签页。close/close_created:关闭指定标签页或关闭所有由插件自动创建的标签页。wait:等待指定元素出现。
安装与启用¶
通过 CLI 安装插件:
dsh plugin --profile web add github:DmitPerson42/dsh-yandex-browser
安装完成后,需要修改配置文件以启用插件。插件通过 dsh.bundle.patch 宣告自身,并依赖 cordis.patch.yml 来注入配置。
在 ~/.dsh/profiles/web/cordis.patch.yml 中添加以下内容(需根据实际环境调整路径):
- insert:
- id: yandex-browser
name: "file:///<你的用户目录>/.dsh/plugins/dsh-yandex-browser/lib/index.js"
config:
autoStart: true
配置项说明:
* autoStart:设置为 true 可在插件加载时自动启动浏览器,确保后续命令可用。
* cdpEndpoint:默认为 http://localhost:9222(必须使用 localhost 而非 127.0.0.1)。
* profileDir:默认为 %USERPROFILE%\.dsh\browsers\yandex。
* tabStateFile:记录插件创建的标签页 ID,用于后续清理。
典型用法¶
一次典型的操作流程如下:
- 检查浏览器状态:
yandex_browser action: "status"。 - 打开目标页面:
yandex_browser action: "open" url: "https://..."。 - 读取页面内容以理解当前状态:
yandex_page action: "text"。 - 执行点击或输入操作:
yandex_act action: "click" selector: "..."或yandex_act action: "type" selector: "..." value: "..."。
关于登录:
插件本身不会自动输入密码。智能体需要调用 yandex_browser action: "login",在弹出的浏览器窗口中由用户手动输入账号密码。为了保持会话,建议勾选“记住我”。
关于标签页清理:
插件创建的标签页是临时的“垃圾数据”。在任务结束后,必须调用 yandex_act action: "close_created" 来关闭所有由智能体打开的标签页,以保持环境整洁。
适用场景与注意¶
该插件适合需要在浏览器环境中进行长期会话操作、需要复用已登录状态或使用特定扩展的 DSH 场景。
使用前请注意以下事实:
* 权限要求:插件以当前 DSH 进程的权限运行,请确保配置文件目录有写入权限。
* 本地回环:CDP 连接必须使用 localhost(支持 IPv4/IPv6 双栈),直接使用 127.0.0.1 可能因浏览器绑定地址不同而失败。
* JS 语法限制:在 cordis.patch.yml 的 args 中,!!js 语法不会被解析。MCP 服务器配置(如 CDP 端点)需使用字符串字面量,不能使用环境变量拼接。
* 源码审查:插件使用 MIT 许可证,但在生产环境使用前,建议审查源码以确保符合安全要求。
结语¶
通过使用该插件,DSH 智能体获得了在真实浏览器环境中工作的能力,结合持久化配置文件,能够更自然地处理需要登录、扩展或复杂交互的任务。