前言¶
DeepSeek Harness (DSH) 的核心设计理念是本地优先。编码智能体需要的文件、Shell、Git、规划等能力都是本地的,且成本为零。联网搜索是唯一需要突破的“墙”:现有的 DSH 内置搜索或第三方提供商通常要求付费账户、API 密钥或消耗模型令牌。dsh-web-search-ddg 插件解决了这个问题,它通过抓取 DuckDuckGo 的 Lite 结果页面,为 Harness 提供无需任何凭证、无需消耗模型令牌的搜索能力。
插件简介¶
dsh-web-search-ddg 是 DeepSeek Harness 的联网工具类插件,由tatselkrik维护,采用 MIT 许可证。
它通过 Harness 的公开 ctx.web 提供者接口注册,直接将 DuckDuckGo 的搜索结果注入到智能体的工作流中。
核心功能¶
- 零凭证:无需存储任何 API 密钥或访问凭证 vault。
- 零模型令牌:搜索过程不触发辅助模型调用,不消耗 token。
- 严格模式:仅接受 DuckDuckGo 结果标记的锚点链接;解析失败时抛出错误而非静默返回空结果。
- 重定向感知解析:自动解析
/l/?uddg=等重定向包装,丢弃内部链接,并去重 URL。 - 实体安全文本:正确处理 HTML 实体编码(如
&),避免双重解码。 - GET 和 POST:支持 GET(默认)和 POST 两种查询方式,POST 可规避部分反爬检查。
- 摘要配对正确:确保每个搜索摘要与其对应的锚点链接正确关联。
安装与启用¶
推荐将插件安装到指定的 Profile 中。
- 安装插件:
dsh plugin --profile my-profile add github:tatselkrik/dsh-web-search-ddg
- 配置 Provider。在 Profile 目录下的
cordis.patch.yml中添加:
- id: web
name: '@deepseek-ai/dsh-web'
config:
searchProvider: duckduckgo
- 启动 Harness 并使用 Web 工具:
dsh --profile my-profile web
配置项¶
插件提供以下可配置参数,可通过 cordis.patch.yml 覆盖:
| Key | 默认值 | 含义 |
|---|---|---|
baseURL |
https://lite.duckduckgo.com/lite/ |
DuckDuckGo Lite 结果页地址 |
limit |
10 |
单次搜索的最大来源数量 |
method |
get |
请求方式(get 或 post) |
timeoutMs |
15000 |
单次请求的超时时间(毫秒) |
配置示例:
- id: web-search-ddg
name: dsh-web-search-ddg
config:
limit: 5
method: post
注意事项与限制¶
- 非官方端点:插件使用非官方抓取端点。高频请求可能触发 403 错误或 CAPTCHA 验证。
- 无发布日期:DuckDuckGo Lite 页面不返回发布日期信息。
- 索引深度:结果质量与 DuckDuckGo 的索引一致,对于小众技术查询,索引深度略低于 Google。
- 隐私:每次查询的查询词对 DuckDuckGo Inc. 是可见的。
- 安全性:无密钥、无凭证访问、无安装时代码执行。依赖项范围严格限定,不使用通配符。
适用场景¶
适合需要在 DSH 中进行免费、本地化联网搜索的开发者或用户。特别是那些希望避免 API 密钥管理、不想消耗模型 token 或希望完全审计搜索逻辑的场景。
总结¶
dsh-web-search-ddg 让 DeepSeek Harness 保持了“本地优先、无密钥”的纯净生态。它通过简单的 HTTP 抓取和正则解析,填补了免费软件在联网搜索能力上的空白。