DeepSeek Harness 插件:dsh-web-search-opencli

前言

DeepSeek Harness (DSH) 的 web_search 能力通常依赖于 HTTP 请求或网页抓取。这种方式在面对反爬虫机制或动态渲染的页面时往往不够稳定。dsh-web-search-opencli 插件提供了一个更直接的解决方案:它通过 OpenCLI 直接控制浏览器,调用 Google 的 AI Mode 进行搜索,并将结果规范地返回给 DSH。

这是什么

dsh-web-search-opencli 是一个 DeepSeek Harness 插件,由用户 sincerity711 维护。它注册了一个 DSH ctx.web 搜索提供者。当智能体调用 web_search 时,该插件会通过 OpenCLI 驱动你的 Chrome 或 Edge 浏览器,打开 Google Search AI Mode (udm=50),等待 AI 回答,提取答案和引用来源,最后返回 DSH 标准的 WebSearchResult。

核心功能

  • AI Mode 集成:将 Google AI Mode 的回答直接暴露给 DSH 的 web_search 接口。
  • 浏览器自动化:使用 OpenCLI 进行浏览器控制,而非不稳定的 HTTP 端点抓取。
  • 来源提取:从 AI Mode 的引用和链接中提取来源 URL。
  • Markdown 转换:将 AI 回答的正文转换为 Markdown 格式。
  • 会话复用:默认复用 OpenCLI 配置的浏览器会话标签页。
  • 高度可配置:支持配置提供者 ID、OpenCLI 命令/会话/窗口模式、超时时间以及标签页清理策略。

安装与启用

使用官方推荐的安装命令:

dsh plugin --profile web add dsh-web-search-opencli

在安装前,建议先验证 OpenCLI 的连接状态:

opencli doctor

安装后,DSH 会自动应用 cordis.patch.yml 中的配置,将 web 上下文的 searchProvider 设置为 google-ai-mode。你可以通过以下命令检查配置是否生效:

dsh --profile web --dump-config

配置说明

插件支持以下配置项(默认值在 cordis.patch.yml 中定义):

字段 默认值 说明
providerId google-ai-mode 注册到 ctx.web 的提供者 ID。
opencliCommand opencli OpenCLI 可执行文件的名称或路径。
opencliSession dsh-google-ai-mode 用于 Google 标签页的 OpenCLI 浏览器会话名称。
opencliWindow background 传递给 OPENCLI_WINDOW 和 OpenCLI --window 参数的值。
timeoutMs 45000 单次搜索的超时时间(毫秒)。
closeTabAfterSearch false 搜索后尝试关闭标签页(由于 Chrome 自动化窗口的特性,默认关闭可能不稳定)。

典型用法与行为

智能体调用 web_search 后,插件会执行以下流程:
1. 通过 OpenCLI 命令驱动 Chrome 或 Edge。
2. 打开 Google 搜索页面并附带 udm=50 参数。
3. 等待 AI Mode 回答加载。
4. 提取 content(Markdown 格式的 AI 回答)和 sources[](引用的 URL)。
5. 返回 DSH 标准的 WebSearchResult。

行为细节:
- content 包含转换为 Markdown 的 AI Mode 回答。
- sources[] 包含 AI Mode 回答中引用或链接的 URL。
- 重复的来源 URL 会在首次出现时合并。
- 普通搜索结果不作为 AI Mode 回答的回退方案。
- 默认使用 background 窗口模式以避免抢占焦点。

环境要求与注意事项

使用前需满足以下条件:
- Node.js:版本需在 ^22.19.0 || >=24.0.0 范围内。
- DeepSeek Harness:需安装并包含 @deepseek-ai/dsh-web 依赖。
- OpenCLI:已安装并连接到浏览器扩展。
- 浏览器环境:Chrome 或 Edge 已登录 Google 账户,且该账户支持 AI Mode。

重要说明:
- 插件不读取或存储 Google 的 Cookie。
- 如果同时运行多个搜索且使用了相同的 opencliSession,可能会导致会话冲突。建议使用不同的会话名称或串行化搜索请求。
- 如果 Google 提示 CAPTCHA,需手动解决后重试。

错误处理

插件会抛出 DSH 的 WebError 类型错误,包括:
- WEB_SEARCH_OPENCLI_CAPTCHA:Google 显示验证码或异常流量页面。
- WEB_SEARCH_OPENCLI_AI_MODE_UNAVAILABLE:AI Mode 对当前账户/地区不可用。
- WEB_SEARCH_OPENCLI_TIMEOUT:OpenCLI 操作超过 timeoutMs。
- WEB_PROVIDER_ERROR:OpenCLI 失败或提取结果异常。
- WEB_ABORTED:DSH 调用被取消。

生态与链接

该插件遵循 MIT 许可证,可在 GitHub 查看。更多信息可参考 SkillHub 插件目录。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜