1. OpenClaw 博查搜索 Skill 上线后,本地部署到底解决了什么问题
OpenClaw 博查搜索 Skill 正式上线,简单说就是给本地跑的 Agent 装了一个中文联网搜索底座。它是什么?是一个能让你在 OpenClaw 里直接调用博查搜索能力、拿到中文实时结果的 Skill 模块。能做什么?让本地部署的智能体在回答问题时不再只依赖训练数据,而是能实时检索中文网页、抓取摘要、返回结构化结果。适合谁?适合需要中文联网搜索能力、又不想把请求发到不可控通道的开发者,尤其是做本地知识库、行业问答、Agent 工具链的同学。
我试过在纯本地环境里让 Agent 查一个当天发生的行业新闻,没有搜索 Skill 时它只能编,接上博查搜索 Skill 之后返回的是带来源链接的真实结果。这个差别在中文场景里特别明显,因为很多中文内容的时效性很强,模型内置知识根本覆盖不到。
本地部署的核心价值有三个:第一是链路可控,搜索请求从你自己的机器发出,经过统一 Key 通道,不依赖第三方黑盒;第二是延迟更稳,本地进程直接调 API,少了中间转发层;第三是配置透明,config.toml 和 settings.json 都在你手里,出问题能定位到具体哪一层。
这篇就按本地部署接入的完整路径走一遍:先拿 TaoToken 统一 Key,再写 config.toml 和 settings.json,然后启动 OpenClaw 验证搜索连通性,最后把常见的报错逐个排掉。全程可复制,你跟着敲就行。
2. TaoToken 统一 Key 与 API 通道准备
OpenClaw 的博查搜索 Skill 需要一个能稳定调用的 API 通道。TaoToken 在这里的角色是统一 Key 管理加 API 转发,你不需要为每个模型或每个 Skill 单独维护一套密钥,一个 Key 走通所有通道。
先到官网注册并进入控制台。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册后进控制台创建 API Key。
控制台入口:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite
创建 Key 的页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite
拿到 Key 之后,API 基础地址用 https://taotoken.net/api ,注意这个地址不带 UTM 参数,直接写进配置里就行。
注意:API Key 只显示一次,创建后立刻复制到本地安全位置。不要提交到 Git 仓库,建议用环境变量或本地配置文件管理。
如果你后续要做长期编码或 Agent 任务,可以了解 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
接入文档在这里,配置字段有疑问可以对照:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
Key 准备好之后,先做一次最简连通性测试,确认通道没问题再往下配 OpenClaw。用 curl 发一个最小请求:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 8 }'返回里有 choices 字段就说明 Key 和通道都正常。这一步别跳过,后面 OpenClaw 报错时你能快速判断是通道问题还是配置问题。
3. config.toml 与 settings.json 可复制配置骨架
OpenClaw 的配置分两层:config.toml 管全局运行时和 Skill 注册,settings.json 管具体 Skill 的参数。博查搜索 Skill 上线后,这两处都要加对应字段。
先看 config.toml。放在 OpenClaw 项目根目录,核心是声明 API 通道和启用搜索 Skill:
# config.toml [api] base_url = "https://taotoken.net/api" api_key_env = "TAOTOKEN_API_KEY" timeout_seconds = 60 max_retries = 3 [agent] name = "openclaw-local" workspace = "./workspace" log_level = "info" [skills] enabled = ["bocha_search"] [skills.bocha_search] provider = "bocha" endpoint = "https://taotoken.net/api/v1/search" result_count = 8 timeout_seconds = 20几个关键点说明。base_url 用 TaoToken 的 API 地址,api_key_env 指向环境变量名而不是把 Key 写死。skills.enabled 里加上 bocha_search 才会加载这个 Skill。result_count 控制每次搜索返回的结果条数,中文场景建议 8 到 10 条,太少覆盖不够,太多会拖慢响应。
再看 settings.json,放在 workspace 目录下,管搜索行为细节:
{ "bocha_search": { "enabled": true, "language": "zh-CN", "region": "cn", "safe_search": true, "freshness": "oneWeek", "summary": true, "max_snippets": 3, "cache_ttl_seconds": 300, "fallback_on_empty": true }, "logging": { "search_debug": false, "log_path": "./logs/search.log" } }language 设 zh-CN 保证中文结果优先,freshness 设 oneWeek 让时效性内容排前面,summary 开启后返回结果会带摘要而不是只有标题链接。cache_ttl_seconds 是本地缓存时间,同一查询 5 分钟内不重复请求,省额度也提速。
提示:两个文件的字段名要和 OpenClaw 版本对应。如果你用的是较新版本,skills 段可能要求写成数组形式,具体以接入文档为准。
环境变量这样设置,Linux 或 macOS:
export TAOTOKEN_API_KEY="你的Key"Windows PowerShell:
$env:TAOTOKEN_API_KEY="你的Key"想持久化就写进 ~/.bashrc 或系统环境变量。配置写完先别急着启动,用下面命令检查 TOML 语法:
python3 -c "import tomllib; tomllib.load(open('config.toml','rb')); print('config.toml OK')"JSON 检查:
python3 -m json.tool settings.json > /dev/null && echo "settings.json OK"两个都输出 OK 再进下一步,能省掉一半启动报错。
4. 本地启动与搜索连通性验证
配置就绪后启动 OpenClaw。启动命令取决于你的安装方式,常见的是:
openclaw start --config ./config.toml --workspace ./workspace或者用 Python 模块方式:
python3 -m openclaw --config ./config.toml启动日志里要看到两行关键信息:一行是 API channel initialized,说明 TaoToken 通道加载成功;一行是 skill loaded: bocha_search,说明搜索 Skill 注册成功。如果只看到第一行没有第二行,回去检查 config.toml 的 skills.enabled 字段。
启动成功后做搜索连通性验证。OpenClaw 一般提供 CLI 交互模式,进入后直接发一个需要联网的查询:
openclaw query "今天有哪些 AI 行业新闻"预期返回结构里应该包含搜索结果数组,每条有 title、url、snippet 字段。如果返回的是模型直接编的内容而没有 url 字段,说明搜索 Skill 没真正生效,请求没走到博查通道。
更直接的验证方式是单独测搜索接口,绕过 Agent 层:
curl -X POST https://taotoken.net/api/v1/search \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "OpenClaw 博查搜索 Skill", "count": 5, "language": "zh-CN" }'返回里有 results 数组且每条带 url,就说明搜索通道本身没问题。这一步和上一步的区别是:curl 测的是通道,OpenClaw query 测的是 Skill 集成。两个都通才算完整接入。
验证通过后,你可以把搜索 Skill 接到实际工作流里。比如让 Agent 先搜索再总结:
openclaw query "搜索最近的国产大模型发布动态,整理成三条要点"观察日志里是否有 search request 和 search response 两条记录,有就说明调用链完整。响应时间方面,本地部署加 TaoToken 通道,中文搜索一般在 1 到 3 秒返回,比走多层转发的方案稳定不少。
5. 本篇常见报错排查
接入过程中最容易卡在几个固定位置,逐个说清楚。
第一个报错:启动时提示 skill not found: bocha_search。原因是 config.toml 里写了 enabled 但 Skill 包没装。解决方式是确认 OpenClaw 版本包含博查搜索 Skill,用包管理器更新到最新版,或者手动把 Skill 目录放到 skills/ 下。
第二个报错:搜索返回 401 Unauthorized。这是 Key 问题,三种可能:环境变量没生效、Key 复制时带了空格、Key 已过期。先用 echo $TAOTOKEN_API_KEY 确认变量有值,再用第 2 节的 curl 命令单独测通道。通道通但 OpenClaw 报 401,就是 OpenClaw 进程没读到环境变量,重启终端或改用配置文件直接指定。
第三个报错:搜索返回空结果但状态码 200。检查 settings.json 里的 language 和 region 字段,中文查询设成 en 或 us 会导致结果为空。另外 freshness 设得太窄也会过滤掉大部分内容,先改成 noLimit 测试。
第四个报错:请求超时。config.toml 里 timeout_seconds 默认可能偏小,搜索类请求建议设 20 秒以上。如果持续超时,检查本地网络到 TaoToken API 地址的连通性,用 curl -I https://taotoken.net/api 看响应头。
第五个报错:返回结果里 url 字段缺失。这是 summary 或 max_snippets 配置导致的裁剪,把 summary 设 true、max_snippets 设 3 以上,url 就会保留。如果还是没有,说明请求没走搜索通道而是走了模型通道,回去检查 skills.enabled。
第六个报错:缓存导致结果不更新。cache_ttl_seconds 设太长时,同一查询会返回旧结果。调试阶段设成 0 关闭缓存,生产环境再按需调大。
注意:排错时先把 log_level 调到 debug,日志里会打印每次搜索的请求参数和响应状态,比猜快得多。
如果上面都试过还有问题,直接对照接入文档的字段说明逐项核对:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
6. 接入路径与后续动作
整条链路走下来,核心就三件事:TaoToken 统一 Key 打通 API 通道,config.toml 注册博查搜索 Skill,settings.json 调搜索行为参数。本地部署的好处是每一层都可见可改,出问题能定位到具体文件的具体字段。
如果你还在配 Key 阶段,先去 API Keys 页面创建:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite
想先验证模型对话是否正常,用模型对话页面测一轮:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite
长期跑编码或 Agent 任务的话,Coding Plan 更适合:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
配置字段拿不准就翻文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
最后给一个实用建议:把 config.toml 和 settings.json 纳入版本管理时,用 .env 文件存 Key 并加进 .gitignore,配置文件里只留环境变量名。这样团队协作时每个人用自己的 Key,配置骨架保持一致,换人接手不用重新摸一遍。搜索 Skill 的 result_count 和 cache_ttl_seconds 这两个值,建议按实际查询频率调,高频场景缓存调大,时效敏感场景缓存调小,比一刀切默认值好用得多。