前言¶
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 插件目录。