Corsair You.com 插件解析:把 LLM 就绪的网页搜索接入你的 AI 应用
2026/9/16 17:28:36 网站建设 项目流程

Corsair You.com 插件解析:把 LLM 就绪的网页搜索接入你的 AI 应用

【免费下载链接】corsairConnect your users to their apps项目地址: https://gitcode.com/GitHub_Trending/corsa/corsair

Corsair 是一个帮助用户接入其第三方应用的 TypeScript 授权/插件框架,@corsair-dev/youcom是官方插件之一:它把 You.com 的 Web Search API 封装成单一的yousearch.youSearch操作,让 AI Agent 可以以 API Key 鉴权方式执行搜索,并拿到结构化、LLM 就绪的网页结果与新闻文章。读完本篇,你将掌握该插件的安装方式、完整搜索参数(freshnesslivecrawlinclude_domains等)的取值与默认值、GET/POST 请求路由策略、API Key 解析链路、搜索结果落库行为以及内置的限流/鉴权错误重试策略。

安装与包结构

安装命令:

pnpm add @corsair-dev/youcom

该插件位于 packages/youcom,当前版本为0.1.1(见 package.json),以 Apache-2.0 协议发布。它的运行时 peer 依赖是corsair >= 0.1.0zod ^4.1.13,说明插件的输入/输出类型校验完全建立在你项目中的 Zod 之上。

插件入口是 index.ts,它导出了youcom()工厂函数以及YouSearchRequestYouSearchResponseYoucomWebResultYoucomNewsResultYoucomSearchMetadata等类型,供宿主项目做类型推断。插件元数据在 plugin-docs.yaml 中声明为 “AI search engine API for web answers, citations, and research-oriented query results”,即定位是面向回答、引用和研究型查询的搜索后端。

插件注册选项

youcom()接受如下选项(见 index.ts):

选项类型说明
authTypePickAuth<'api_key'>可选,缺省为api_key
keystring静态 API Key,作为 endpoint 调用时的兜底
hooks插件 hooks生命周期钩子
errorHandlersCorsairErrorHandler覆盖默认错误处理器
permissionsPluginPermissionsConfig按 endpoint 配置租户权限

唯一操作:yousearch.youSearch

README 与插件元数据一致地声明,插件只有一个操作:

OperationOperation IDRiskDescription
yousearch.youSearchyoucom.api.yousearch.youSearchread使用 You.com 搜索 API 搜索网页,返回 LLM 就绪的网页结果与新闻文章

风险等级read在 index.ts 的youcomEndpointMeta中硬编码。调用方式:

await corsair.youcom.api.yousearch.youSearch({ query: 'latest AI research developments' });

请求参数全表

请求体由 endpoints/types.ts 中的YouSearchRequestSchema定义,官方 API 参考文档 docs/plugins/youcom/api.mdx 给出了完整参数表。结合源码中的校验规则,各参数的取值范围与默认值如下:

NameType必填取值范围 / 默认值说明
querystring至少 1 个字符搜索关键词
countnumber整数,1–100,默认10返回结果数量
freshnessday \| week \| month \| year \| string枚举值或YYYY-MM-DDtoYYYY-MM-DD格式日期区间(正则/^\d{4}-\d{2}-\d{2}to\d{4}-\d{2}-\d{2}$/结果新鲜度过滤
offsetnumber整数,0–9,默认0分页偏移
country枚举AR AU AT BE BR CA CL DK FI FR DE HK IN ID IT JP KR MY MX NL NZ NO CN PL PT PH RU SA ZA ES SE CH TW TR GB US按国家/地区限定结果
language枚举AR EU BN BG CA ZH-HANS ZH-HANT HR CS DA NL EN EN-GB ET FI FR GL DE EL GU HE HI HU IS IT JA KN KO LV LT MS ML MR NB PL PT-BR PT-PT PA RO RU SR SK SL ES SV TA TE TH TR UK VI,默认EN结果语言
safesearchoff \| moderate \| strict默认moderate安全搜索等级
livecrawlweb \| news \| all开启实时爬取网页/新闻正文
livecrawl_formatshtml \| markdown数组默认['html']正文内容格式
include_domainsstring[]最多 500 个域名仅搜索指定域名
exclude_domainsstring[]最多 500 个域名排除指定域名
boost_domainsstring[]最多 500 个域名提升指定域名权重
crawl_timeoutnumber整数,1–60,默认10(秒)实时爬取超时

所有字段都经过 Zod 校验,非法枚举值(如country: 'XX')会在到达上游 API 之前就被拒绝。

请求实现:GET/POST 自动路由与限流策略

真正发请求的逻辑在 client.ts。几个值得注意的实现细节:

1. GET 与 POST 的选择是自动的。makeYoucomSearchRequest先调用shouldUsePost(client.ts#L43-L49):只要include_domainsexclude_domainsboost_domains三者中任意一个非空,就改用POST /v1/search并带 JSON body;否则走GET /v1/search,把参数拼进 query string(buildGetQuery不携带域名类参数)。上游 API 基地址为https://ydc-index.io,鉴权头为X-API-Key(client.ts#L28)。

2. 传输层不重试。插件配置了YOUCOM_NO_TRANSPORT_RETRIES速率限制策略(maxRetries: 0),并通过retry-afterx-ratelimit-resetx-ratelimit-remainingx-ratelimit-limit头解析上游限流状态。也就是说:429 的重试完全交给 Corsair 的应用层错误处理器(下一节),而不是 HTTP 客户端层盲目重发,避免在上游限流期间加剧压力。

3. 错误统一包装。底层ApiError会被包装为YoucomAPIError,携带statusretryAftercode字段,供错误处理器匹配(见 client.ts#L9-L26)。

错误与重试策略

error-handlers.ts 定义了四类处理器:

处理器匹配条件行为
RATE_LIMIT_ERRORHTTP 429,或错误信息含rate_limited/429最多重试 5 次,并遵循retryAfterMs
AUTH_ERRORHTTP 401,或含unauthorized/invalid_auth不重试(maxRetries: 0)
PERMISSION_ERRORHTTP 403,或含forbidden/access_denied不重试
DEFAULT其他一切不重试

这种“限流可重试、鉴权/权限错误快速失败”的策略是搜索类插件的合理默认:限流是暂时性故障,而 401/403 重试没有意义。宿主也可以在youcom({ errorHandlers })中覆盖这些行为。

认证:API Key 解析链路

README 声明:Auth 方式为 API key,Corsair 会在首次使用时向租户(tenant)提示提供凭证。插件没有 Webhook(webhooks: {},且pluginWebhookMatcher恒返回false,见 index.ts#L114-L118)。

密钥解析逻辑在keyBuilder(index.ts#L124-L135)中,endpoint 调用时的优先级是:

  1. 若显式配置了key选项,直接返回它;
  2. 否则走api_key认证类型,从租户存储的凭证中读取(ctx.keys.get_api_key());
  3. 两者都没有则抛出AuthMissingError('youcom', 'api_key')

youcomAuthConfig声明 API key 以tenant_external_id为粒度存储(index.ts#L80-L84),即同一租户下多用户共享一个 You.com 密钥。

返回结构与搜索结果落库

响应由YouSearchResponseSchema校验(endpoints/types.ts#L187-L192),结构为{ results, metadata }

{ web?: { url: string, title: string, description?: string, snippets?: string[], thumbnail_url?: string, page_age?: string, contents?: { html?: string, markdown?: string }, // livecrawl 时返回正文 favicon_url?: string }[], news?: { title: string, description?: string, page_age?: string, thumbnail_url?: string, url: string, contents?: { html?: string, markdown?: string } }[] } // metadata { search_uuid: string, query: string, latency: number }

yousearch.youSearch端点(endpoints/yousearch.ts)在返回结果前还做两件事:

  1. 结果落库:逐条把webnews结果 upsert 到插件 schema 的searchResults实体中,entity ID 由query:resultType:url拼接(searchResultEntityId),并附加resultTypequerysearchedAt字段。落库 schema 定义在 schema/database.ts,注册于 schema/index.ts(version: '1.0.0')。每条落库失败仅console.warn,不会中断搜索调用——存储是尽力而为的旁路行为。这意味着你可以通过 Corsair 的数据库访问能力查询“某租户搜索过哪些结果”,用于审计或缓存。
  2. 事件打点:调用logEventFromContext记录youcom.yousearch.youSearch事件,payload 含querywebResultCountnewsResultCount,状态completed

测试用例中的典型用法

api.test.ts 提供了可直接参照的调用示例(需要环境变量YOUCOM_API_KEYYDC_API_KEY,否则整组跳过):

// 基础搜索 await makeYoucomSearchRequest<YouSearchResponse>(KEY, { query: 'latest AI research developments', count: 5, }); // 新鲜度过滤 await makeYoucomSearchRequest<YouSearchResponse>(KEY, { query: 'technology news', count: 3, freshness: 'week', }); // 国家 + 语言 await makeYoucomSearchRequest<YouSearchResponse>(KEY, { query: 'local news headlines', count: 3, country: 'US', language: 'EN', }); // 安全搜索 + 分页 await makeYoucomSearchRequest<YouSearchResponse>(KEY, { query: 'open source software releases', count: 2, offset: 0, safesearch: 'moderate', });

测试还验证了exclude_domains触发 POST 路径、以及每次响应都能通过YoucomEndpointOutputSchemas.youSearch.parse的类型校验——即插件保证“进与出”都经过 Zod,宿主代码拿到的永远是类型安全的数据。

小结与适用边界

  • @corsair-dev/youcom是一个单操作(yousearch.youSearchread风险)插件,专为给 AI Agent 提供搜索工具而建;无 Webhook、无 OAuth,只支持 API Key。
  • 所有参数在 endpoints/types.ts 有严格 Zod 约束(count上限 100、offset上限 9、域名数组上限 500、crawl_timeout上限 60 秒等),使用时以当前仓库版本(0.1.1)的实际 schema 为准。
  • 完整 API 参考、类型与示例可参考仓库内 docs/plugins/youcom/overview.mdx、docs/plugins/youcom/api.mdx 与 docs/plugins/youcom/database.mdx,以及插件自身文档 packages/youcom/README.md。

【免费下载链接】corsairConnect your users to their apps项目地址: https://gitcode.com/GitHub_Trending/corsa/corsair

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询