dsh-web-search-keenable:为 DSH 接入 Keenable 搜索与网页抓取

前言

在 DeepSeek Harness(dsh)里做需要联网的智能体时,模型侧往往只有「调用某个 web 能力」的抽象,真正落到哪条搜索 API、哪套抓取服务,要靠 ctx.web 上的提供方插件来接。官方仓库里已有类似 @deepseek-ai/dsh-web-search-exa 的 bundle 形态;若你希望后端换成 Keenable,又不想自己改 Harness 核心,可以单独装一个社区维护的联网插件,把搜索和抓取都注册进同一条 seam。

下面介绍维护者 lliangworld 发布的 dsh-web-search-keenable:它以 ctx.web 提供方形式注册,结构与官方 Exa 插件一致,同时提供 搜索(web_search)和 抓取(web_fetch)两个能力,后端走 Keenable 的 /v1/search 与 /v1/fetch。

这是什么

dsh-web-search-keenable(npm 包名 @lliangworld/dsh-web-search-keenable,当前版本 1.0.9)是一个 dsh 网页能力插件:纯 ESM、单文件入口 index.js,无构建步骤。它在 Cordis patch 里向 web seam 插入本 bundle,并在运行时注册 Keenable 后端的搜索与抓取提供方。

分类上属于 联网工具。与同一作者、TinyFish 后端的姊妹插件 dsh-web-search-tinyfish 互相独立、版本各自管理——可以只装 Keenable,也可以两个都装,再在 profile 里分别指定 searchProvider / fetchProvider。

核心功能

能力与后端

能力 后端端点 密钥
web_search Keenable /v1/search 可无密钥(公共端点限流);建议配置 apiKey、凭据服务或环境变量 $KEENABLE_API_KEY
web_fetch Keenable /v1/fetch 同上

插件在 ctx.web 上注册上述两个提供方,调用方无需关心 Keenable 的 HTTP 细节,只要 Harness 已选中对应 provider 即可。

版本与环境要求

  • dsh ≥ 0.2.1-rc.2:配置热更新(改配置不重启)以及插件管理页内的配置面板,依赖该版本的 loader 与客户端组件。
  • peer 依赖包括 @deepseek-ai/dsh-web、@deepseek-ai/dsh-credentials、@deepseek-ai/dsh-launch-environment 等,与官方 web 能力栈对齐。

配置热更新

插件配置字段均为易变(volatile):在 profile 配置里修改端点、检索模式、数量上限、过滤条件、密钥引用等,下一次调用即生效,无需重启 Harness。API 密钥解析顺序为:配置字面量 apiKey → 凭据服务(如 KEENABLE_API_KEY 引用)→ 启动环境变量。

插件管理页(1.0.5 起)

bundle 自带浏览器端设置卡(client.js):在插件管理页中,对应 bundle 行标题即配置入口。API 密钥经凭据服务管理、不写入设置文件;除 apiKeyEnv 外字段可在 UI 中编辑,保存后同样在下一次调用生效。入口仅在插件加载后出现。

安装与启用

--profile 决定装进 web(Web GUI)还是 desktop(桌面客户端)。两个 profile 各有 manifest 与 lockfile,互不影响;需要两边用时分别执行。

# web profile
dsh plugin --profile web add github:lliangworld/dsh-web-search-keenable

# desktop profile
dsh plugin --profile desktop add github:lliangworld/dsh-web-search-keenable

github:用户名/仓库名 也可写成完整地址 https://github.com/lliangworld/dsh-web-search-keenable。

升级

插件以分支 spec 安装,升级应使用 update,不要用重复 add(spec 未变时 pnpm 可能跳过重新解析):

dsh plugin --profile web update @lliangworld/dsh-web-search-keenable

dsh plugin --profile desktop update @lliangworld/dsh-web-search-keenable

更新后的代码在 下次启动 Harness 时生效;web 与 desktop 需各自升级。

固定使用 Keenable 提供方

在 profile 的 cordis.patch.yml 中可显式指定(搜索与抓取可混搭 tinyfish / keenable):

- id: web
  config:
    searchProvider: keenable   # 或 tinyfish
    fetchProvider: keenable    # 或 tinyfish

不指定时,ctx.web 会在已注册且可用的提供方中自动选用。

典型用法与配置查阅

  1. 按目标 profile 执行上面的 dsh plugin add 命令,确保 dsh 版本满足 ≥ 0.2.1-rc.2。
  2. 若使用公共端点,可直接调用;若遇限流或需稳定配额,在 profile 配置、凭据服务或环境中配置 Keenable API 密钥(见 README 中的解析顺序)。
  3. 需要固定后端时,编辑 cordis.patch.yml 的 searchProvider / fetchProvider。
  4. 需要调参时,优先使用插件管理页设置卡;字段含义与默认值见仓库内 docs/PACKAGE.zh.md(中文)或 docs/PACKAGE.md(英文)。

Harness 侧对 ctx.web 的调用方式与选用其他 web 搜索插件时相同;本仓库 README 未单独给出业务层代码示例,行为以注册进 seam 后的官方 web 能力调用链为准。

适用场景与注意

适合谁:已在用 dsh 做联网智能体、希望 Keenable 同时承担搜索与抓取,且希望安装形态与官方 Exa 插件接近的开发者。

权限与安全:插件以当前 dsh 进程权限运行,会向 Keenable 发起网络请求;安装前建议阅读仓库源码与 MIT 许可证,并自行评估密钥与端点配置。

生态说明:DeepSeek Harness 社区插件目录由独立站点维护(如 SkillHub 上的本插件页),与 DeepSeek / 幻方无官方从属关系;「一切皆插件」是 DSH 的设计取向,本 bundle 是其中一条 Keenable 联网路径。

结尾

经过上面的步骤,你可以在 web 或 desktop profile 里装上 dsh-web-search-keenable,通过 ctx.web 使用 Keenable 的搜索与抓取,并借助热更新与插件管理页减少改配置、重启的摩擦。

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

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

Xiaoye