AI代理Web交互工具

Spectrawl是一个自托管的一体化Web交互工具包,为AI代理提供搜索、浏览、爬取、提取和平台操作功能。

  • by Pyx-Corp
  • JavaScript
  • 本地部署
  • 28 星标
  • 更新于
在 GitHub 查看 FayAndXan/spectrawl

使用说明

Spectrawl

AI代理的统一web层。搜索、浏览、抓取、提取和操作平台——一个自托管的包。

每月5000次免费搜索 通过双子座地面搜索。全页面抓取、隐形浏览、多页面爬行、结构化提取、AI浏览器代理、24个平台适配器。

它的作用

人工智能代理需要与网络交互——搜索、浏览页面、抓取网站、登录平台、发布内容。今天,您将Playwright+搜索API+cookie管理器+特定于平台的脚本连接在一起。Spectrawl是一个能够完成所有这些的软件包。

npm install spectrawl

运作原理

Spectrawl通过Gemini Grounded Search(谷歌质量结果)进行搜索,抓取首页的完整内容,并将所有内容返回给您的代理。你的代理人的法学硕士阅读实际来源并形成自己的答案——没有预先咀嚼的总结。

快速开始

npm install spectrawl
export GEMINI_API_KEY=your-free-key  # Get one at aistudio.google.com
const { Spectrawl } = require('spectrawl')
const web = new Spectrawl()

// Deep search — returns sources for your agent/LLM to process
const result = await web.deepSearch('how to build an MCP server in Node.js')
console.log(result.sources)   // [{ title, url, content, score }]

// With AI summary (opt-in — uses extra Gemini call)
const withAnswer = await web.deepSearch('query', { summarize: true })
console.log(withAnswer.answer)  // AI-generated answer with [1] [2] citations

// Fast mode — snippets only, skip scraping
const fast = await web.deepSearch('query', { mode: 'fast' })

// Basic search — raw results
const basic = await web.search('query')

为什么默认情况下没有摘要? 您的代理人已经拥有法学硕士学位。如果我们进行总结,而您的代理人进行总结,您将为一个答案支付两个LLM。我们返回丰富的资源,剩下的由你的代理人完成。

Spectrawl vs其他

Tavily Crawl4AI Firecrawl 舞台剧 Spectrawl
速度 ~2s ~5s ~3s ~3s ~3s
免费等级 1000/Mo 无限制 500/Mo 没有 5000/Mo
返回 代码段+AI Markdown Markdown/JSON 结构化 整页+结构化
自托管 否 是 是 有 有
反检测 否 否 无 否 是(迷彩)
块检测 否 否 无 否 8服务
验证码解决 否 否 不 否 是(Gemini Vision)
结构化提取 否 否 不 是 是
NL浏览器代理 否 否 无 是 是
网络捕获 否 是 否 否 是
多页爬网 否 是 是 否 是(+网站地图)
平台发布 否 否 无 否 24个适配器
身份管理 否 否 无 否 Cookie存储+刷新

搜索

两种模式: 基本搜索 和 深度搜索.

基本搜索

const results = await web.search('query')

从引擎级联返回原始搜索结果。快速、轻便。

深度搜索

const results = await web.deepSearch('query', { summarize: true })

完整管道:查询扩展→ 并行搜索→ 合并/数据删除→ 重排序→ 刮顶N→ 可选的AI摘要和引用。

搜索引擎级联

默认级联: 双子座接地→ 塔维利→ Brave

Gemini地面搜索通过Gemini API为您提供谷歌质量的结果。免费等级:每月5000次固定查询。

引擎 免费层 需要密钥 默认值
双子座接地 5000元/月 GEMINI_API_KEY ✅ 主要的,重要的
塔维利 1000/月 TAVILY_API_KEY ✅ 第一次回退
勇敢 每月2000 BRAVE_API_KEY ✅ 第二次回退
DuckDuckGo 无限 无 可用
Bing 无限 无 可用
Serper 2500次试验 SERPER_API_KEY 可用
谷歌CSE 100/天 GOOGLE_CSE_KEY 可用
Jina阅读器 无限 无 可用
SearXNG 无限 自托管 可用

深度搜索管道

Query → Gemini Grounded + DDG (parallel)
  → Merge & deduplicate (12-19 results)
  → Source quality ranking (boost GitHub/SO/Reddit, penalize SEO spam)
  → Parallel scraping (Jina → readability → Playwright fallback)
  → Returns sources to your agent (AI summary opt-in with summarize: true)

没有钥匙你会得到什么

DDG只搜索,原始结果,没有人工智能答案。从家庭IP工作。数据中心IP的速率受到DDG的限制——建议至少提供一个免费的Gemini密钥。

浏览

具有反检测功能的隐形浏览。三个层次(自动升级):

  1. 剧作家+隐形插件 --默认,立即工作
  2. 迷彩二元 --发动机级防指纹(npx spectrawl install-stealth)
  3. 远程伪装 --对于现有部署

如果第1层被阻止,Spectrawl会自动升级到第2层(如果已安装)或第3层(如果配置)。无需人工干预。

浏览选项

const page = await web.browse('https://example.com', {
  screenshot: true,    // Take a PNG screenshot
  fullPage: true,      // Full page screenshot (not just viewport)
  html: true,          // Return raw HTML alongside markdown
  stealth: true,       // Force stealth mode
  camoufox: true,      // Force Camoufox engine
  noCache: true,       // Bypass cache
  auth: 'reddit'       // Use stored auth cookies for this platform
})

浏览响应

{
  content: "# Page Title\n\nExtracted markdown content...",
  url: "https://example.com",
  title: "Page Title",
  statusCode: 200,
  cached: false,
  engine: "camoufox",            // which engine was used
  screenshot: Buffer<png>,        // PNG buffer (JS) or base64 (HTTP)
  html: "<html>...</html>",       // raw HTML (if html: true)
  blocked: false,                 // true if block page detected
  blockInfo: null                 // { type: 'cloudflare', detail: '...' }
}

阻止页面检测

Spectrawl检测来自以下位置的阻止/挑战页面 8反机器人服务 并在响应中报告它们,而不是返回垃圾HTML:

  • 云耀 (包括RFC 9457结构化错误)
  • 阿卡迈
  • AWS WAF
  • Imperva/Incapsula
  • Datadome
  • 周界X/人
  • Hcaptcha 挑战
  • 验证码 挑战
  • 通用机器人检测(403,“拒绝访问”等)

当检测到块时,响应包括 blocked: true 和 blockInfo: { type, detail }.

特定站点的回退

一些站点会阻止所有数据中心IP,而不管是否隐藏。Spectrawl会自动通过其他API路由这些:

站点 问题 回退 成本
红迪 阻止所有数据中心IP PullPush API --Reddit存档 免费
亚马逊 产品页面上的验证码墙 阅读器名称 --服务器端渲染 免费
X/推特 帖子上的登录墙 xAI响应API 随着 x_search 约0.06美元/篇
领英 HTTP 999,IP指纹识别 需要住宅代理(见下文) ~7美元/GB

这些回退会自动激活——只是 browse() URL和Spectrawl会选择正确的路径。Reddit和亚马逊不需要配置。X要求 XAI_API_KEY env var.LinkedIn需要一个住宅代理。

LinkedIn:为什么不同

LinkedIn对创建Cookie的IP进行指纹识别。即使是有效的Cookie也会被其他IP拒绝。每种免费方法在数据中心服务器上都失败了:

  • 直接浏览:HTTP 999
  • 带有cookie的Voyager API:401(IP不匹配)
  • Jina读者:无回应
  • Facebook/Googlebot UA:317K CSS,零内容

唯一可行的解决方案是住宅代理。 我们建议 明亮的数据 为了获得最佳效果(72M+住宅IP,~99.7%的成功率,专用社交媒体解锁器)。为了预算使用, 智能 代理 (7美元/GB,5500万IP,3天免费试用)以较低的成本运行良好。

设置:

# Bright Data (recommended)
npx spectrawl config set proxy '{"host":"brd.superproxy.io","port":22225,"username":"YOUR_ZONE_USER","password":"YOUR_PASS"}'

# Smartproxy (budget alternative)
npx spectrawl config set proxy '{"host":"gate.smartproxy.com","port":10001,"username":"YOUR_USER","password":"YOUR_PASS"}'

# Store your LinkedIn cookies (export from browser)
npx spectrawl login linkedin --account yourname --cookies ./linkedin-cookies.json

# Now browse LinkedIn normally
curl localhost:3900/browse -d '{"url":"https://www.linkedin.com/in/someone"}'

其他有效的住宅代理提供商:

⚠️ 避免使用WebShare --回收的数据中心IP作为住宅销售,不支持HTTPS。

验证码解决

内置验证码求解器,使用 双子座愿景 (免费套餐:每天1500次):

  • ✅ 图像验证码
  • ✅ 文本/数学验证码
  • ✅ 简单的视觉挑战
  • ❌ reCAPTCHA v2/v3(需要令牌解析服务)
  • ❌ hCaptcha(需要令牌解析服务)
  • ❌ Cloudflare旋转栅门(需要令牌解决服务)

解算器会自动检测验证码类型,并在返回页面之前尝试解决。

Extract--结构化数据提取

使用LLM+可选CSS/XPath选择器从任何页面中提取结构化数据。就像Stagehand的 extract() 但它是自托管的,并与Spectrawl的反检测浏览功能集成在一起。

基本提取

const result = await web.extract('https://news.ycombinator.com', {
  instruction: 'Extract the top 3 story titles and their point counts',
  schema: {
    type: 'object',
    properties: {
      stories: {
        type: 'array',
        items: {
          type: 'object',
          properties: {
            title: { type: 'string' },
            points: { type: 'number' }
          }
        }
      }
    }
  }
})
// result.data = { stories: [{ title: "...", points: 210 }, ...] }

HTTP API

curl -X POST http://localhost:3900/extract \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com",
    "instruction": "Extract the page title and main heading",
    "schema": {"type": "object", "properties": {"title": {"type": "string"}, "heading": {"type": "string"}}}
  }'

答复:

{
  "data": { "title": "Example Domain", "heading": "Example Domain" },
  "url": "https://example.com",
  "title": "Example Domain",
  "contentLength": 129,
  "duration": 679
}

使用选择器进行靶向提取

使用CSS或XPath选择器缩小提取范围——减少标记并提高准确性:

const result = await web.extract('https://news.ycombinator.com', {
  instruction: 'Extract all story titles',
  selector: '.titleline',  // CSS selector
  // or: selector: 'xpath=//table[@class="itemlist"]'
  schema: { type: 'object', properties: { titles: { type: 'array', items: { type: 'string' } } } }
})

相关性过滤(BM25)

对于大页面,在发送到LLM之前按相关性过滤内容——保存标记:

const result = await web.extract('https://en.wikipedia.org/wiki/Node.js', {
  instruction: 'Extract the creator and release date',
  relevanceFilter: true   // BM25 scoring keeps only relevant sections
})
// Content reduced from 50K+ chars to ~2K relevant chars

内容摘录(无浏览)

已经有内容了吗?跳过浏览步骤:

const result = await web.extractFromContent(markdownContent, {
  instruction: 'Extract all email addresses',
  schema: { type: 'object', properties: { emails: { type: 'array', items: { type: 'string' } } } }
})

默认情况下使用Gemini Flash(免费)。如果已配置,则返回OpenAI。

Agent--自然语言浏览器操作

使用自然语言控制浏览器。导航、单击、键入、滚动——LLM解释页面并决定要做什么。

const result = await web.agent('https://example.com', 'click the More Information link', {
  maxSteps: 5,       // max actions to take
  screenshot: true   // screenshot after completion
})
// result.success = true
// result.url = "https://www.iana.org/domains/reserved" (navigated!)
// result.steps = [{ step: 1, action: "click", elementIdx: 0, result: "clicked" }, ...]

HTTP API

curl -X POST http://localhost:3900/agent \
  -H 'Content-Type: application/json' \
  -d '{"url": "https://example.com", "instruction": "click the More Information link", "maxSteps": 3}'

答复:

{
  "success": true,
  "url": "https://www.iana.org/domains/reserved",
  "title": "IANA — Reserved Domains",
  "steps": [
    { "step": 1, "action": "click", "elementIdx": 0, "reason": "clicking the More Information link", "result": "clicked" }
  ],
  "content": "...",
  "duration": 5200
}

支持的操作

代理人可以: 点击, 类型 (填写输入), 选择 (下降), 按 (键盘按键), 滚动 (向上/向下)。

网络请求捕获

在浏览过程中捕获页面发出的XHR/fetch请求,这对于发现隐藏的API非常有用:

const result = await web.browse('https://example.com', {
  captureNetwork: true,
  captureNetworkHeaders: true,  // include request headers
  captureNetworkBody: true      // include response bodies (<50KB)
})
// result.networkRequests = [
//   { url: "https://api.example.com/data", method: "GET", status: 200, contentType: "application/json", body: "..." }
// ]

HTTP API

curl -X POST http://localhost:3900/browse \
  -d '{"url": "https://example.com", "captureNetwork": true, "captureNetworkBody": true}'

截图

通过浏览对任何页面进行截图:

JavaScript

const result = await web.browse('https://example.com', {
  screenshot: true,
  fullPage: true       // optional: capture entire page, not just viewport
})
// result.screenshot is a PNG Buffer
fs.writeFileSync('screenshot.png', result.screenshot)

HTTP API

curl -X POST http://localhost:3900/browse \
  -H 'Content-Type: application/json' \
  -d '{"url": "https://example.com", "screenshot": true, "fullPage": true}'

答复:

{
  "content": "# Page Title\n\nExtracted markdown...",
  "url": "https://example.com",
  "title": "Page Title",
  "screenshot": "iVBORw0KGgo...base64-encoded-png...",
  "cached": false
}

注: 截图绕过缓存——每个请求都会呈现一个新的页面。

爬行

具有基于RAM的自动并行化的多页面网站爬虫。

const result = await web.crawl('https://docs.example.com', {
  depth: 2,              // how many link levels to follow
  maxPages: 50,          // stop after N pages
  format: 'markdown',    // 'markdown' or 'html'
  scope: 'domain',       // 'domain' | 'subdomain' | 'path'
  concurrency: 'auto',   // auto-detect from available RAM, or set a number
  merge: true,           // merge all pages into one document
  includePatterns: [],   // regex patterns to include
  excludePatterns: [],   // regex patterns to skip
  delay: 300,            // ms between batch launches (politeness)
  stealth: true          // use anti-detect browsing
})

爬行响应

{
  pages: [
    { url: 'https://docs.example.com/', content: '...', title: '...', statusCode: 200 },
    { url: 'https://docs.example.com/guide', content: '...', title: '...', statusCode: 200 },
    // ...
  ],
  stats: {
    pagesScraped: 23,
    duration: 45000,
    concurrency: 4
  }
}

基于网站地图的抓取

Spectrawl自动发现 sitemap.xml 并为爬网队列预播种子——比文档站点的链接跟踪快得多:

const result = await web.crawl('https://docs.example.com', {
  useSitemap: true,  // enabled by default
  maxPages: 20
})
// [crawl] Found sitemap at https://docs.example.com/sitemap.xml with 82 URLs
// [crawl] Pre-seeded 20 URLs from sitemap

集 useSitemap: false 禁用并仅依赖链接发现。

Webhook通知

爬网完成时收到通知:

curl -X POST http://localhost:3900/crawl \
  -d '{"url": "https://docs.example.com", "maxPages": 50, "webhook": "https://your-server.com/webhook"}'

完成后,Spectrawl会将完整的爬网结果发布到您的webhook URL。

异步爬网作业

对于大型站点,使用异步模式以避免HTTP超时:

# Start a crawl job (returns immediately)
curl -X POST http://localhost:3900/crawl \
  -d '{"url": "https://docs.example.com", "depth": 3, "maxPages": 100, "async": true}'
# Response: { "jobId": "abc123", "status": "running" }

# Check job status
curl http://localhost:3900/crawl/abc123

# List all jobs
curl http://localhost:3900/crawl/jobs

# Check system capacity
curl http://localhost:3900/crawl/capacity

基于RAM的自动并行化

Spectrawl估计每个浏览器选项卡约250MB,并根据可用系统RAM计算安全并发性:

  • 8GB服务器: ~4个并发选项卡
  • 16GB服务器: ~ 8个并发选项卡
  • 32GB服务器: 10个并发选项卡(有上限)

认证

持久cookie存储(SQLite)、多帐户管理、自动过期检测。

// Add account
await web.auth.add('x', { account: '@myhandle', method: 'cookie', cookies })

// Check health
const accounts = await web.auth.getStatus()
// [{ platform: 'x', account: '@myhandle', status: 'valid', expiresAt: '...' }]

Cookie刷新cron在帐户过期之前触发事件(请参阅 事件).

事件

Spectrawl会发出身份验证状态更改、速率限制和操作结果的事件。订阅以获取最新动态:

const { EVENTS } = require('spectrawl')

web.on(EVENTS.COOKIE_EXPIRING, (data) => {
  console.log(`Cookie expiring for ${data.platform}:${data.account}`)
})

web.on(EVENTS.RATE_LIMITED, (data) => {
  console.log(`Rate limited on ${data.platform}`)
})

// Wildcard — catch everything
web.on('*', ({ event, ...data }) => {
  console.log(`Event: ${event}`, data)
})

可用事件

事件 时间
cookie_expiring Cookie即将到期
cookie_expired Cookie已过期
auth_failed 身份验证尝试失败
auth_refreshed Cookie已成功刷新
rate_limited 平台速率限制命中
action_failed 平台操作失败
action_success 平台操作成功
health_check 定期健康检查结果

Act-24平台适配器

通过一个API发布到24+平台:

await web.act('github', 'create-issue', { repo: 'user/repo', title: 'Bug report', body: '...' })
await web.act('reddit', 'post', { subreddit: 'node', title: '...', text: '...' })
await web.act('devto', 'post', { title: '...', body: '...', tags: ['ai'] })
await web.act('huggingface', 'create-repo', { name: 'my-model', type: 'model' })

现场测试: GitHub✅, 红迪✅, Dev.to✅, 抱脸✅, X(读)✅

平台 身份验证方法 操作
X/推特 Cookie+OAuth 1.0a 帖子
Reddit Cookie API 发布、评论、删除
Dev.to REST API密钥 发布,更新
Hashnode GraphQL API 文章
LinkedIn Cookie API(Voyager) 帖子
IndieHackers 浏览器自动化 发布、评论
媒体 REST API 文章
GitHub REST v3 仓库、文件、问题、发布
Discord Bot API 发送,线程
产品搜索 GraphQL v2 发布,评论
黑客新闻 Cookie API 提交,评论
YouTube 数据API v3 评论
Quora 浏览器自动化 答案
HuggingFace Hub API 回购、模型卡、上传
BetaList REST API 提交
14目录 通用适配器 提交

内置速率限制、内容去重(MD5,24小时窗口)和重试死信队列。

源质量排名

Spectrawl根据域信任度对结果进行排名——这是大多数搜索工具所不具备的:

  • 增强: GitHub、StackOverflow、HN、Reddit、MDN、arxiv、维基百科
  • 处罚: SEO农场、精简内容网站、标签/类别页面
  • 可定制的: 带上自己的域权重
const web = new Spectrawl({
  sourceRanker: {
    boost: ['github.com', 'news.ycombinator.com'],
    block: ['spamsite.com']
  }
})

HTTP服务器

npx spectrawl serve --port 3900

端点

方法 路径 描述
POST /search 搜索网页
POST /browse 隐藏浏览URL
POST /crawl 抓取网站(同步或异步)
POST /extract LLM结构化数据提取
POST /agent 自然语言浏览器操作
POST /act 平台行动
GET /status 验证帐户健康状况
GET /health 服务器运行状况
GET /crawl/jobs 列出异步爬网作业
GET /crawl/:jobId 获取爬网作业状态/结果
GET /crawl/capacity 系统爬行能力

请求/响应示例

POST/搜索

curl -X POST http://localhost:3900/search \
  -H 'Content-Type: application/json' \
  -d '{"query": "best headless browsers 2026", "summarize": true}'

答复:

{
  "sources": [
    {
      "title": "Top Headless Browsers in 2026",
      "url": "https://example.com/article",
      "snippet": "Short snippet from search...",
      "content": "Full page markdown content (if scraped)...",
      "source": "gemini-grounded",
      "confidence": 0.95
    }
  ],
  "answer": "AI-generated summary with [1] citations... (only if summarize: true)",
  "cached": false
}

POST/浏览

curl -X POST http://localhost:3900/browse \
  -H 'Content-Type: application/json' \
  -d '{"url": "https://example.com", "screenshot": true, "fullPage": true}'

答复:

{
  "content": "# Example Domain\n\nThis domain is for use in illustrative examples...",
  "url": "https://example.com",
  "title": "Example Domain",
  "statusCode": 200,
  "screenshot": "iVBORw0KGgoAAAANSUhEUg...base64...",
  "cached": false,
  "engine": "playwright"
}

POST/爬行

curl -X POST http://localhost:3900/crawl \
  -H 'Content-Type: application/json' \
  -d '{"url": "https://docs.example.com", "depth": 2, "maxPages": 10}'

答复:

{
  "pages": [
    {
      "url": "https://docs.example.com/",
      "content": "# Docs Home\n\n...",
      "title": "Documentation",
      "statusCode": 200
    }
  ],
  "stats": {
    "pagesScraped": 8,
    "duration": 12000,
    "concurrency": 4
  }
}

POST/行动

curl -X POST http://localhost:3900/act \
  -H 'Content-Type: application/json' \
  -d '{"platform": "github", "action": "create-issue", "repo": "user/repo", "title": "Bug", "body": "Details..."}'

错误响应

所有错误如下 RFC 9457 问题详细信息格式:

{
  "type": "https://spectrawl.dev/errors/rate-limited",
  "status": 429,
  "title": "rate limited",
  "detail": "Reddit rate limit: max 3 posts per hour",
  "retryable": true
}

错误类型: bad-request (400), unauthorized (401), forbidden (403), not-found (404), rate-limited (429), internal-error (500), upstream-error (502), service-unavailable (503).

代理配置

通过住宅或数据中心代理进行路由浏览。 LinkedIn需要 --看 特定站点的回退 为什么。

{
  "browse": {
    "proxy": {
      "host": "gate.smartproxy.com",
      "port": 10001,
      "username": "YOUR_USER",
      "password": "YOUR_PASS"
    }
  }
}

代理用于所有Playwright和迷彩浏览会话。您还可以启动一个本地旋转代理服务器,该服务器通过多个上游代理进行旋转:

npx spectrawl proxy --port 8080

推荐供应商:

提供商 价格 IP 最适合
明亮的数据 1200万美元/GB 7200万美元 ⭐ 最佳质量,约99.7%的成功率,社交解锁器
智能 代理 7美元/GB 5500万 最佳预算选项,3天免费试用
IPRoyal 7美元/GB 3200万 不错的替代品
Oxylabs 10美元/GB 1亿+ 企业级

MCP服务器

适用于任何MCP兼容代理(Claude、Cursor、OpenClaw、LangChain):

npx spectrawl mcp

MCP工具

工具 说明 关键参数
web_search 搜索网页 query, summarize, scrapeTop, minResults
web_browse 隐藏浏览URL url, auth, screenshot, html
web_act 平台行动 platform, action, account, text, title
web_auth 管理身份验证 action (列出/添加/删除), platform, account
web_status 检查身份验证运行状况 --

命令行界面

npx spectrawl init              # create spectrawl.json
npx spectrawl search "query"    # search from terminal
npx spectrawl status            # check auth health
npx spectrawl serve             # start HTTP server
npx spectrawl mcp               # start MCP server
npx spectrawl proxy             # start rotating proxy server
npx spectrawl install-stealth   # download Camoufox browser
npx spectrawl version           # show version

配置

spectrawl.json --完全默认值:

{
  "port": 3900,
  "concurrency": 3,
  "search": {
    "cascade": ["gemini-grounded", "tavily", "brave"],
    "scrapeTop": 5
  },
  "browse": {
    "defaultEngine": "playwright",
    "proxy": null,
    "humanlike": {
      "minDelay": 500,
      "maxDelay": 2000,
      "scrollBehavior": true
    }
  },
  "auth": {
    "refreshInterval": "4h",
    "cookieStore": "./data/cookies.db"
  },
  "cache": {
    "path": "./data/cache.db",
    "searchTtl": 3600,
    "scrapeTtl": 86400,
    "screenshotTtl": 3600
  },
  "rateLimit": {
    "x": { "postsPerHour": 5, "minDelayMs": 30000 },
    "reddit": { "postsPerHour": 3, "minDelayMs": 600000 }
  }
}

人性化浏览

默认情况下,Spectrawl模拟人类浏览模式:

  • 随机延迟 页面加载之间(500-2000ms)
  • 滚动行为 模拟
  • 随机视口大小 根据共同决议
  • 可通过以下方式配置 browse.humanlike

环境变量

GEMINI_API_KEY      Free — primary search + summarization (aistudio.google.com)
BRAVE_API_KEY       Brave Search (2,000 free/month)
TAVILY_API_KEY      Tavily Search (1,000 free/month)
SERPER_API_KEY      Serper.dev (2,500 trial queries)
GITHUB_TOKEN        For GitHub adapter
DEVTO_API_KEY       For Dev.to adapter
HF_TOKEN            For HuggingFace adapter
OPENAI_API_KEY      Alternative LLM for summarization
ANTHROPIC_API_KEY   Alternative LLM for summarization

许可证

麻省理工学院