Back to home@Riianfar

dsh-zai-web-search-api

DeepSeek Harness (DSH) 的 Z.AI / 智谱独立 Web Search API provider

Stars
0
Language
JavaScript
Created
Aug 31, 2026
Updated
Sep 3, 2026
GitHub repo

Introduction

dsh-zai-web-search-api 1.2.8

1.2.8 将 API Key 从 Settings secret 迁移到 DSH Credentials。设置面板 保存 Key 时固定写入 $DSH_HOME/.credentials.yaml 中的 ZAI_SEARCH_API_KEYsettings.yaml 不再保存 API Key。升级时若检测到 旧版 settings.yaml.apiKey,会先写入凭据存储,成功后再删除旧字段。

1.2.7 将设置卡片边框从纯 inline style 改为与 DSH 0.1.1-rc.2 内置 PluginCard 同规则的主题 CSS class,补齐 hover、展开态和 focus-visible 状态,避免浏览器默认黑色 focus outline 被误认为卡片边框。

1.2.6 增加每次 Agent 问答的 web_search tool call 预算。默认 0(不限制); 达到配置上限后阻止额外调用,并从该问答后续模型步骤中隐藏 web_search,让模型使用已有结果继续作答。

1.2.5 在配置开头增加“启用搜索接管”开关。默认开启;关闭后恢复 DSH WebRuntime 在插件启动前选择的搜索 provider,开启后切回 zai-web-search。切换对下一次 web_search 立即生效。

1.2.41.2.3 的折叠卡片之上增加 API 连通性测试。它由 Host 使用当前 Base URL 和凭据发起一次真实 search_std 请求,验证 URL、API 路径、鉴权和响应结构是否一致。

1.2.31.2.2 的 DSH 0.1.1-rc.2 兼容修复之上,增加与内置 PluginCard 一致的展开/收起卡片外壳。浏览器设置卡片继续使用 settingsScope.set() / settingsScope.unset(),并显式声明 settings client 依赖。Host namespace 与 settings.plugin.item 的 key 均为 zai-web-search-api

DeepSeek Harness (DSH) 的 Z.AI / 智谱独立 Web Search API provider,带原生 设置 → 插件 → 插件配置 卡片。

API

默认请求:

POST https://open.bigmodel.cn/api/paas/v4/web_search
Authorization: Bearer <API_KEY>

用于独立 Web Search 资源包,不使用 GLM Coding Plan。

安装

推荐使用预打包 TGZ:

dsh plugin --profile web add D:\path\dsh-zai-web-search-api-1.2.8.tgz

然后彻底退出旧的 DSH Web 进程并重新启动:

dsh web

进入:

设置 → 插件 → 插件配置 → Z.AI Web Search API

设置

  • 启用搜索接管:默认开启;关闭时恢复插件启动前的 DSH 搜索 provider
  • 单次请求最多搜索次数:0–20;默认 0(不限制)。按每次 Agent 问答中的 web_search tool call 计数,达到上限后本轮不再向 Z.AI 发起新搜索
  • API Key:固定保存为 DSH Credential ZAI_SEARCH_API_KEY;不会进入 settings.yaml,浏览器只能读取“是否已配置”等脱敏状态
  • Base URL:默认官方独立 API https://open.bigmodel.cn/api/paas/v4
  • 测试连通性:通过 Host 向 <Base URL>/web_search 发起一次真实 search_std 请求;会消耗一次基础搜索 API 调用
  • 搜索引擎编码:下拉选择 search_std / search_pro / search_pro_sogou / search_pro_quark;默认 search_pro,保存后下一次搜索立即生效
  • Fallback:默认关闭,避免额外资源包消耗
  • 默认结果数:1–50
  • Timeout:1–120 秒
  • Search Intent
  • Recency:不限 / 1 天 / 1 周 / 1 月 / 1 年
  • Content Size:medium / high
  • Domain Filter

设置通过 installSettingsSection() 注册为 zai-web-search-api namespace。 Host 每次搜索读取一次当前设置快照,因此保存后下一次搜索立即生效,无需重新注册 provider。

搜索次数预算的计数口径

该设置限制的是一次 Agent 问答(turn)中的 web_search tool call 数量, 不是来源条数,也不是精确的 Z.AI 计费次数:

  • 一次 web_search 可以携带多条 query;DSH rc.2 默认最多 4 条。
  • 每条 query 会调用一次 ctx.web.search(),通常对应一次 Z.AI API 请求。
  • 如果启用了 Fallback,某条 query 还可能产生第二次 Z.AI API 请求。

预算由 DSH tools.guard() 在分发前强制执行;最后一次允许调用结算后, 插件使用该 Agent 的 tools.restrict({ deny: ['web_search'] }) 隐藏搜索工具。 关闭“启用搜索接管”或进入下一轮问答时,限制会自动解除。

搜索接管开关

DSH 0.1.1-rc.2 的 WebRuntime 没有公开运行时 provider setter。插件会在 启动时保存当前 searchProviderId,随后按设置切换:

启用:原 provider → zai-web-search
禁用:zai-web-search → 启动时保存的原 provider

标准 DSH Web profile 的原 provider 是 deepseek-official。关闭开关后, ctx.web.search() 会直接选择这个官方 provider,不经过 Z.AI provider,因而 不会发送 Z.AI Web Search API 请求。插件卸载时也会恢复原 provider。

凭据存储

设置面板输入的 Key 会通过 Host 写入 DSH credentials service,固定引用为:

ZAI_SEARCH_API_KEY

默认 dsh-credentials-local 将它持久化到:

$DSH_HOME/.credentials.yaml

settings.yaml 中不保存 Key,只保存非敏感的插件行为设置。继承的同名 ZAI_SEARCH_API_KEY 环境变量仍按 DSH 规则优先于本地凭据;环境变量来源为 只读状态时,设置面板不会假装覆盖它。

Z.AI 参数兼容处理

  • query 最大 70 字符
  • count 最大 50
  • search_pro_sogou 的 count 自动向上规范到 10/20/30/40/50
  • search_pro_quark 按官方参数支持表省略 count
  • search_pro_quark 不发送 search_domain_filter
  • content_size 仅允许官方当前的 medium / high
  • 只发送 Authorization: Bearer,不额外发送 x-api-key
  • 默认 fallback 关闭

DSH 设计

Host:

  • inject = ['web', 'webServer', 'tools', 'credentials']
  • installSettingsSection(...)
  • ctx.web.registerSearchProvider(...)
  • 使用 WebError
  • available() 只做本地、低成本检查
  • 每次 search 对 settings 做一次快照
  • 支持 DSH AbortSignal

Browser:

  • dsh.client.platform = web
  • lazy-CJS ./client bundle
  • settings.plugin.item
  • keyed slot key = zai-web-search-api(官方 slot contract 的配对键)
  • 内置同款折叠 Card:默认收起,标题栏控制展开/收起,cardOpen 控制展开外观
  • 收起时保留未保存草稿,并在标题栏显示“未保存”状态
  • Base URL 下一行提供连通性按钮与状态文字:未测试/测试中/成功/失败
  • 连通性测试仅允许本机同源 DSH 页面调用;API Key 不会回显给浏览器
  • ctx.settingsScope.bind(...)
  • 表单先在浏览器本地暂存;点击保存后逐字段调用 rc.2 的 scope.set(...)
  • 恢复默认值使用 rc.2 的 scope.unset(...)
  • API Key 写入 Host credentials seam,浏览器只读取脱敏状态
  • 支持覆盖或单独清除 ZAI_SEARCH_API_KEY

安全

插件不执行 shell、不读取本地文件、不动态下载代码、不发送遥测。

API Key 不进入 settings.yaml,但 DSH rc.2 默认的 credentials-local 仍以 仅当前用户可访问的 YAML 文件保存凭据,并非加密存储。API Key 只会作为 Bearer token 发送到你配置的 baseURL。修改 Base URL 等价于信任新的 API 目标,请勿填写不可信地址。

与 DSH 内置 Web seam 的组合

插件 patch 不再覆盖 DSH base 的 web 行,只插入插件本身:

- insert:
    - id: zai-web-search-api
      name: dsh-zai-web-search-api
      config: {}

因此插件能够记录启动前的搜索 provider,禁用时精确恢复;fetch provider 从未被修改。rc.2 没有公开 setter,相关兼容访问被隔离在 lib/takeover.js, 并在 WebRuntime 形状不匹配时明确报错,避免静默路由到错误后端。