DreamRift/dsh-web-search-pool
DeepSeek Harness 网页搜索插件:多个 Tavily/Exa key 按限流负载均衡,429 自动切换 key,附带设置页 UI 与 Tavily 额度总览。
项目介绍Project Overview
DSH 搜索 Key 池插件将多个 Tavily 与 Exa 密钥整合为一个池,按 RPM 配额加权轮询,自动在 429、配额耗尽或网络错误时切换备用密钥,并在设置页提供已用额度与限额的实时面板。适用于同时持有多个搜索供应商密钥并希望统一调度、避免触发单账号限流的场景。需在 DeepSeek Harness 0.1.0-rc.7 及以上版本中安装运行。
The DSH Web Search Pool plugin consolidates multiple Tavily and Exa API keys into a single pool with weighted round-robin scheduling based on per-key RPM quotas. It automatically rotates to backup keys on 429 responses, quota exhaustion, or network errors, and exposes a settings dashboard for tracking usage and limits. Use it when juggling several search provider keys to avoid rate-limit bottlenecks. Requires DeepSeek Harness 0.1.0-rc.7 or newer, and at least one valid Tavily or Exa credential to function.
请帮我了解并安装插件:【dsh-web-search-pool】【https://github.com/DreamRift/dsh-web-search-pool】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:DreamRift/dsh-web-search-pool
把 DreamRift/dsh-web-search-pool 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-web-search-pool
DeepSeek Harness 的 多供应商搜索负载均衡插件。将多个 Tavily 和 Exa API keys 组织成智能池,自动按限流调度并故障切换。
✨ Features
- 🔑 Multi-key Pool: 支持多个 Tavily + Exa keys,统一管理
- ⚖️ Smart Load Balancing: 基于 RPM(每分钟的请求数)加权轮询调度
- 🔄 Automatic Fallback: 429 rate limit、额度耗尽、网络错误时自动切换到下一个 key
- 📊 Usage Dashboard: Settings 页卡片实时查看已用额度、总限额、刷新按钮
- 🔒 Secure: API keys 通过 DSH credentials service 保存,不写入配置文件
- 🎯 Exa Anonymous Free Tier: 内置免费匿名层(1 req/sec),有 key 走 REST 提配额
- 🏗️ Native Bundle (rc.7): DeepSeek Harness 官方式原生 Bundle 集成
📦 Installation
# Build distribution package
npm pack
# Install to your profile
dsh plugin --profile web add ./dsh-web-search-pool-0.1.0-rc.7.tgz
Prerequisites
- ✅ DeepSeek Harness 0.1.0-rc.7 or higher
- 🔐 At least one search provider API key (Tavily / Exa)
⚙️ Configuration
After installation, configure via DSH Settings UI:
- Open DeepSeek Harness → Settings → Plugins
- Find "搜索 Key 池" card and expand it
- Add your Tavily/Exa keys with:
- Environment Variable Name (e.g.,
TAVILY_API_KEY_1) - Rate Limit (RPM): requests per minute
- Remark: friendly name (optional)
- Environment Variable Name (e.g.,
- Click Save - secrets are stored securely via credentials
🔐 All API keys are stored in DS H's credential system, never in plain-text configs.
🛠️ Usage
Once configured, the plugin automatically becomes your default web_search tool. No manual selection needed!
The provider will:
- Select optimal key based on current quota and load
- Switch providers (Tavily ↔ Exa) on failure
- Respect rate limits and quotas across all keys
- Return structured errors without exposing sensitive data
🧪 Testing
# Run test suite
npm run test
# Syntax check
node --check src/**/*.js scripts/*.mjs
# Pack integrity check
npm pack --dry-run
📄 Documentation
- Installation Guide - Quick setup for rc.7
- Upgrade & Rollback Guide - Migrate from v0.2.x, troubleshooting
- Development History & Specs - Design decisions and specifications
- [Architecture Overview](AI搜索Key池负载均衡 - 开发计划.md) - Technical architecture and trade-offs
🔧 Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| No settings card | Legacy rc.6 slot registration | Update to use key: web-search-pool, restart DSH |
| Still using official search | Bundle patch not loaded | Reinstall tarball, verify searchProvider: search-pool |
| Usage refresh fails | Invalid credentials or quota exhausted | Check credentials config, wait for quota recovery |
See Upgrade Guide for complete table.
🏗️ Architecture
See technical design docs:
🔐 Security
This plugin follows Zero Trust for credentials:
- No hardcoded secrets or API keys
- Keys only stored via DSH credentials service
- Never logged or exposed in responses
- Public anonymous mode available (Exa free tier)
📜 License
MIT License - see LICENSE file
🤝 Contributing
Issues and PRs welcome! Please follow existing patterns:
- Core logic in
src/core/(DSH-independent) - Provider implementation in
src/dsh/(Host half) - Client UI in
src/dsh/client.js(Web half) - Tests parallel production coverage (TDD)
See Development Guidelines for best practices.
Built for DeepSeek Harness community · Part of native ecosystem
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill