Install
openclaw skills install @fdenny11gg/openclaw-smart-search统一智能搜索技能,整合多个搜索引擎(百炼 MCP、Tavily、Serper、Exa、Firecrawl),自动选择最佳引擎并融合结果
openclaw skills install @fdenny11gg/openclaw-smart-search重要说明: 本技能仅支持 CLI 方式调用,不提供 HTTP API。
点击技能卡片上的 Install 按钮,或手动运行:
cd ~/.agents/skills/smart-search
npm install
方式一:使用配置向导(推荐)
npm run setup
交互式输入 API Key,会自动加密存储到 ~/.openclaw/secrets/smart-search.json.enc。
方式二:逐个配置
npm run key:set bailian
npm run key:set tavily
npm run key:set serper
npm run key:set exa
npm run key:set firecrawl
方式三:从文件导入
创建 api-keys.json:
{
"bailian": "sk-xxx",
"tavily": "tvly-xxx",
"serper": "xxx",
"exa": "xxx",
"firecrawl": "fc-xxx"
}
然后运行:
npm run key:import ./api-keys.json
npm run search "OpenClaw 新功能"
# 在技能目录下执行
cd ~/.agents/skills/smart-search
npm run search "搜索内容"
# 指定结果数量
npm run search "OpenClaw 新功能" -- --count=10
# 学术搜索(优先使用 Exa)
npm run search "LLM Agent planning" -- --intent=academic
# 技术搜索
npm run search "TypeScript 最佳实践" -- --intent=technical
# 新闻搜索
npm run search "最新 AI 动态" -- --intent=news
# 指定语言
npm run search "OpenClaw" -- --language=zh
| 参数 | 说明 | 默认值 |
|---|---|---|
--count=<n> | 返回结果数量 | 10 |
--language=<zh|en> | 语言偏好 | auto |
--intent=<type> | 搜索意图 | general |
--timeout=<ms> | 超时时间 | 5000 |
intent 可选值:
general - 通用搜索academic - 学术搜索(优先 Exa)technical - 技术搜索(优先 Exa)news - 新闻搜索(优先 Tavily)npm run setup
交互式配置所有引擎。
npm run key:status
显示所有引擎的配置状态和配额使用情况。
npm run key:set exa
npm run key:rotate bailian
所有 5 个搜索引擎均已完整实现:
| 引擎 | 状态 | 免费额度 | 用途 | 配置命令 |
|---|---|---|---|---|
| 百炼 MCP | ✅ 已实现 | 2000 次/月 | 中文搜索 | npm run key:set bailian |
| Tavily | ✅ 已实现 | 1000 次/月 | 高级搜索 | npm run key:set tavily |
| Serper | ✅ 已实现 | 2500 次/月 | Google 结果 | npm run key:set serper |
| Exa | ✅ 已实现 | 1000 次/月 | 学术/技术搜索 | npm run key:set exa |
| Firecrawl | ✅ 已实现 | 500 页/月 | 网页抓取 | npm run key:set firecrawl |
总计: 约 7500 次/月搜索额度 🔍
~/.openclaw/secrets/smart-search.json.encnpm run key:status
npm run key:get bailian
npm run search "test"
# 删除旧配置
rm ~/.openclaw/secrets/smart-search.json.enc
# 重新配置
npm run setup
Smart Search 使用 AES-256-GCM 加密存储 API Keys,需要配置主密钥。
# 生成强随机密钥
openssl rand -base64 32
# 设置环境变量
export OPENCLAW_MASTER_KEY="your-generated-key-at-least-32-characters"
或在 .env 文件中配置:
OPENCLAW_MASTER_KEY=your-generated-key-at-least-32-characters
# 复制示例文件
cp .env.example .env
# 编辑配置
nano .env
⚠️ 安全要求:
.env 文件提交到版本控制定期轮换 API Key 以增强安全性:
# 查看当前状态
npm run key:status
# 轮换指定引擎
npm run key:rotate bailian
# 完全重新配置
rm ~/.openclaw/secrets/smart-search.json.enc
npm run setup
| 项目 | 说明 |
|---|---|
| 加密算法 | AES-256-GCM |
| 密钥派生 | PBKDF2-SHA256 |
| 迭代次数 | 100,000 轮 |
| 盐值 | 随机生成 16 字节盐,与加密配置一起存储 |
| 存储位置 | ~/.openclaw/secrets/smart-search.json.enc |
| 文件权限 | 0o600(仅所有者可读写) |
;, &, |, `, $, 等)要求:
设置方法:
# Linux/macOS
export OPENCLAW_MASTER_KEY="your-32-char-secure-random-string-here"
# 或添加到 ~/.bashrc 或 ~/.zshrc(推荐)
echo 'export OPENCLAW_MASTER_KEY="your-key"' >> ~/.bashrc
source ~/.bashrc
# Windows PowerShell
$env:OPENCLAW_MASTER_KEY="your-32-char-secure-random-string-here"
# 或添加到 $PROFILE
echo '$env:OPENCLAW_MASTER_KEY="your-key"' >> $PROFILE
生成安全的主密钥:
# Linux/macOS
openssl rand -base64 32
# 或使用 Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
安全警告:
加密算法:
密钥生命周期:
~/.openclaw/secrets/smart-search.json.enc代码位置:
src/key-manager.tssrc/utils/sanitize.tssrc/engines/bailian.ts(使用 spawn,shell: false)npm auditnpm test已完成的修复:
ClawHub 安全扫描:
静态分析警告说明:
ClawHub 静态分析工具检测到代码中使用 child_process,但这不是安全问题:
安全实践:
// ✅ 安全:使用 spawn,参数作为数组传递
spawn('mcporter', ['call', 'WebSearch.bailian_web_search', `query=${query}`], {
shell: false, // 不通过 shell 执行
stdio: ['pipe', 'pipe', 'pipe']
});
// ❌ 不安全:使用 exec,参数经过 shell 解析
exec(`mcporter call ... query="${query}"`); // 有注入风险
代码位置:
src/engines/bailian.ts - 使用 spawn() + shell: falsescripts/doctor.ts - 使用 spawnSync() 检查依赖scripts/setup-bailian.ts - 使用 spawnSync() 检查配置为什么安全:
spawn() 而非exec()shell: false 明确禁用 shellvalidateSearchQuery() 验证参考:
问题: "Salt not found in config file"
原因: v1.0.3 的安全修复使用随机盐,旧配置文件不兼容
解决方案:
# 删除旧配置文件
rm ~/.openclaw/secrets/smart-search.json.enc
# 重新配置
npm run setup
问题: "OPENCLAW_MASTER_KEY environment variable is required"
原因: 未设置主密钥环境变量
解决方案:
# 设置环境变量
export OPENCLAW_MASTER_KEY="your-32-char-secure-random-string"
# 或添加到 ~/.bashrc
echo 'export OPENCLAW_MASTER_KEY="your-key"' >> ~/.bashrc
source ~/.bashrc