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
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_KEY;settings.yaml不再保存 API Key。升级时若检测到 旧版settings.yaml.apiKey,会先写入凭据存储,成功后再删除旧字段。
1.2.7将设置卡片边框从纯 inline style 改为与 DSH0.1.1-rc.2内置 PluginCard 同规则的主题 CSS class,补齐 hover、展开态和 focus-visible 状态,避免浏览器默认黑色 focus outline 被误认为卡片边框。
1.2.6增加每次 Agent 问答的web_searchtool call 预算。默认 0(不限制); 达到配置上限后阻止额外调用,并从该问答后续模型步骤中隐藏web_search,让模型使用已有结果继续作答。
1.2.5在配置开头增加“启用搜索接管”开关。默认开启;关闭后恢复 DSH WebRuntime 在插件启动前选择的搜索 provider,开启后切回zai-web-search。切换对下一次web_search立即生效。
1.2.4在1.2.3的折叠卡片之上增加 API 连通性测试。它由 Host 使用当前 Base URL 和凭据发起一次真实search_std请求,验证 URL、API 路径、鉴权和响应结构是否一致。
1.2.3在1.2.2的 DSH0.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_searchtool 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;DSHrc.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/50search_pro_quark按官方参数支持表省略countsearch_pro_quark不发送search_domain_filtercontent_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
./clientbundle 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 形状不匹配时明确报错,避免静默路由到错误后端。