它是什么
给自建的两套 AI 对话都接上「实时联网」:DSH agent 侧多了一个 mcp__bocha__search 工具,可以按需调用博查搜索 API;Open WebUI 网页侧把搜索接成博查并开 forced-RAG,提问时先检索再回答。管理员和家人的两条账号都能用。
为什么做
DSH 原本的 web_search 走免费 SearXNG,日常够用,但中文长查询召回一般、摘要也短。博查给的是中文长摘要,单次 0.3–0.5s,更准一些,代价是按次收费(约 ¥0.036/次)。所以两边是互补关系,不是替换:免费的打底,收费的按需上。
顺带解决了两个坑:一是 DSH 的原生 provider 插件在运行中装不上(模块解析表启动时就固定),改成 MCP 配置型 bundle 后无需重启即可热生效;二是「收费服务不看余额心里没底」,于是把余额和消耗一起接进了 .164 监控台。
现在怎么样
运行中。DSH 日常搜索仍走 SearXNG,不产生费用;博查只在需要时手动调用。余额卡片每 15 分钟采样,低于 ¥5 变黄、低于 ¥2 变红并推手机提醒。2026-10-17 16:00 余额 18.48 元,Open WebUI 一次联网提问约 2 次调用、约 ¥0.07。
功能
- DSH agent 通过 MCP 获得
mcp__bocha__search联网搜索工具,安装即热生效、不用重启进程 - Open WebUI 网页侧搜索接博查并开 forced-RAG,管理员与家人两条账号共用
- 默认策略省钱优先:DSH 日常 web_search 仍走免费 SearXNG,博查按需手动调用
- 在 .164 监控台加了「博查搜索余额」卡片:余额、今日消耗、7 天日均、14 天柱状图
- 余额低于 ¥5 / ¥2 走 ntfy 手机推送,6 小时去重,恢复后补一条「已恢复」
技术栈
使用 / 部署教程
1. 准备 Key
博查控制台申请 API Key,落到只有 root 能读的位置:
install -m 600 /dev/null /root/.dsh/secrets/bocha.key
# 写入 Key 后核对权限
ls -l /root/.dsh/secrets/bocha.key # 应为 -rw-------
配置文件里只写路径,不写 Key 本身。
2. 写 MCP server
/root/plugins-src/bocha-mcp/server.mjs:零依赖 Node 脚本,走 stdio JSON-RPC,对外暴露一个工具,参数三个——query、count(1–10,默认 8)、freshness(noLimit / oneDay / oneWeek / oneMonth / oneYear)。同目录放 bundle 定义(package.json、cordis.patch.yml、locale、icon)。
3. 安装 bundle
往 DSH 配置里 insert 一条 @deepseek-ai/dsh-mcp-client(DSH 自带包,可原生解析),再挂上本地 bundle @local/bocha-mcp。用 plugin_manager 安装,正常结果是 application: applied、无 warning。
为什么不用原生 provider 插件:DSH 的模块解析表在启动时固定,运行中新装的 host 插件 import 不到 @deepseek-ai/*,必须重启整进程才生效(会中断对话、旧 GUI token 失效)。MCP 这条路不用重启。
4. 验证
- 协议单测(initialize + tools/list + tools/call)一次跑完约 505ms;
Tool.listTools能看到mcp__bocha__search,系统提示里出现 “MCP server: bocha”;- 直接问「上海今天天气」,看是否返回当日天气加未来一周逐日预报。
5. 接到网页对话
Open WebUI 侧把搜索源切到博查、开启 forced-RAG(强制先检索再回答)。注意 v0.12.0 起接口路径有变,写配置用 POST /openai/config/update。
6. 余额监控
采集脚本 /opt/dashboard/bocha_balance.py,由 systemd 定时器每 15 分钟跑一次,调 GET https://api.bochaai.com/v1/fund/remaining(头 Authorization: Bearer <key>)。消耗按余额差值算:当天第一个点减最后一个点,除以 ¥0.036/次可反推调用次数。阈值 ¥5 / ¥2 触发 ntfy 推送。
维护提醒
改了 server.mjs 之后,要在 plugin_manager 里禁用再启用 @local/bocha-mcp(或重启 DSH),否则跑的还是老进程。
注意
- 博查 Key 只存本机 secrets(600 权限),不进 homelab-git 备份;文档与配置里都只写路径不写 Key。
- 博查按次计费,Open WebUI 一次联网提问约 2 次调用(约 ¥0.07);如果哪天用超了,先把 forced-RAG 关掉。
- 改完
server.mjs必须让 MCP server 重启(禁/启 bundle 或重启 DSH),否则修改不生效。