mcpField
E
Exa Agent

Exa Agent

github.com/exa-labs生产力5.2k173 次安装今天更新
代码仓库

关于 Exa Agent

Exa Agent Research 是通过 Exa Agent 进行多步骤网络研究、列表构建、数据补充和覆盖检查的技能,并指导定义结构化输出、续接运行及验证证据。

主要功能

  1. 01多步骤网络研究
  2. 02列表构建与发现
  3. 03数据补充
  4. 04结构化输出模式
  5. 05续接运行与验证

适用场景

  1. 01发现公司或人员
  2. 02补充已知数据行
  3. 03续接或细化先前研究

MCP 相关

该技能通过 MCP 使用 Exa Agent,并调用 `agent_run` 工具启动和续接研究任务。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/exa-labs/exa-mcp-server --skill exa-agent

安装后在 Claude Code 中输入/exa-agent确认已加载。

详细介绍

Exa Agent 研究

你正在通过 MCP 使用 Exa Agent。Exa Agent 是一款工具,可用于执行多步骤网络研究、名单构建、信息补全、结构化输出、运行续接和覆盖范围验证。

必需工具

  • agent_run

Exa Connect 提供商

如果运行需要在 Exa 网络搜索之外使用合作伙伴的高级数据,请将 dataSources 传递给 agent_run。

仅使用目前可自行开通的提供商:

  • fiber:B2B 公司、人员、职位和联系信息补全
  • financial_datasets:美国上市公司的基于股票代码的新闻
  • similarweb:网站流量估算、排名和竞争对手发现
  • baselayer:美国企业验证、高管、注册信息和 KYB
  • affiliate:产品目录搜索、定价、品牌和商家链接
  • particle:带有说话人归属和时间戳的播客转录文本搜索
  • jinko:按票价排名的旅行目的地发现

除非用户明确表示其 Exa 账户已启用仅限申请的提供商,否则不要推荐这些提供商。

决策树

采取行动前,先选择工作方式:

  1. 已知输入行,且需大规模执行相同格式的信息补全

    • 编写脚本,直接调用 Exa API。
    • 使用有界并发、指数退避、检查点和稳定的输出文件。
    • 读取输出文件,并据此综合整理结果。
    • 不要手动循环调用数百次相同的工具,浪费上下文。
  2. 开放式定义范围、构建名单、发现人员/公司、多跳研究、结构化研究,或跟进之前的工作

    • 使用 Exa Agent。
    • 创建运行前,先定义目标和 outputSchema。

创建运行前

务必写明:

  • 目标:此运行要回答什么问题。
  • 范围:哪些实体符合条件。
  • 分组:地理区域、行业、角色、日期、资产类别或其他划分。
  • 覆盖目标:期望数量、最大数量,以及何为“足够好”。
  • 输出字段:最终答案所需的列。
  • 证据要求:URL、来源标题、日期和置信度。
  • 排除项:之前的结果或不允许纳入的实体。

如果用户使用“近期”“过去 6 个月”或“IPO 后”之类的相对时间表述,先根据今天的日期计算确切日期。

Schema 规则

名单构建、信息补全、金融/公司研究和可重复工作流均使用 outputSchema。

规则:

  • 使用顶层对象。
  • 在命名数组字段中放置名单行。
  • 尽可能为数组添加 maxItems。
  • 包含来源/证据字段,而不只是结论。
  • 包含稳定标识符:公司名称、网站/域名、人员 LinkedIn URL、股票代码、CIK 等。
  • 对模糊判断添加置信度或理由字段。
  • 必填字段仅限必须存在的字段。
  • 需要时使用 format: "uri"、format: "email" 或 format: "phone"。

公司名单 Schema 示例:

{
  "type": "object",
  "properties": {
    "companies": {
      "type": "array",
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "company_name": { "type": "string" },
          "website": { "type": "string", "format": "uri" },
          "segment": { "type": "string" },
          "why_it_qualifies": { "type": "string" },
          "evidence_url": { "type": "string", "format": "uri" },
          "confidence": { "type": "string", "enum": ["low", "medium", "high"] }
        },
        "required": ["company_name", "website", "why_it_qualifies", "evidence_url"]
      }
    },
    "coverage_notes": { "type": "string" },
    "known_gaps": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["companies", "coverage_notes"]
}

Exa Connect 示例:

{
  "tool": "agent_run",
  "arguments": {
    "query": "Find 10 fast-growing B2B SaaS companies and return estimated monthly website visits from Similarweb.",
    "dataSources": [
      { "provider": "similarweb" }
    ],
    "outputSchema": {
      "type": "object",
      "properties": {
        "companies": {
          "type": "array",
          "maxItems": 10,
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "domain": { "type": "string" },
              "monthlyVisits": {
                "type": "number",
                "description": "Estimated monthly visits from Similarweb"
              }
            },
            "required": ["name", "domain", "monthlyVisits"]
          }
        }
      },
      "required": ["companies"]
    }
  }
}

Exa Agent 工作流

  1. 运行 Agent

    • 调用 agent_run。
    • 省略 effort,以使用工具默认的 low。只有在用户要求更深入的内容,或任务显然需要更高深度时,才选择 auto 或更高的 effort。
    • 对结构化任务,添加 outputSchema。
    • 对已知行使用 input.data。
    • 对已返回或不允许的实体使用 input.exclusion。
    • 只有在某个自助式 Exa Connect 提供商明显有用时,才添加 dataSources。
    • 在查询和 schema 中都注明你需要的提供商专属数据,以便 Agent 使用该提供商,而不是退回到网页搜索。
    • 如果后续可能会使用 previousRunId 继续运行,请保存返回的 id。
    • 如果响应包含 status: "running",请使用该 runId 再次调用 agent_run,直到 outputReady 为 true。对于在一次 MCP 调用结束后仍保留的运行,可以使用此续跑方式。
    • 零数据保留(ZDR)团队:新运行始终以流式方式传输,输出仅在该实时流中可用(不能通过 runId 恢复)。MCP 调用窗口约为 750 秒;如果 ZDR 运行无法在一次调用中完成,请使用较低的 effort 重试,或拆分任务。ZDR 不支持 previousRunId。
  2. 阅读结果

    • 等待 outputReady 为 true(或状态变为 failed/cancelled)。
    • 阅读 output.structured 和 output.grounding。
    • 不要仅仅因为运行已完成,就假定结果是完整无遗漏的。
  3. 验证覆盖范围

    • 将行数与目标数量核对。
    • 检查各细分部分的覆盖情况。
    • 对实体去重。
    • 检查证据质量。
    • 找出缺口。
  4. 必要时继续

    • 使用 previousRunId 调用 agent_run,进行后续查询或细化。
    • 使用 input.exclusion 避免再次出现先前结果。
    • 如果一个运行要覆盖的范围太广,请将大型集合拆分为多个运行。
  5. 最终答复

    • 说明已完成的工作。
    • 展示结构化结果。
    • 说明覆盖范围和局限性。
    • 除非已明确界定并验证穷尽性,否则请使用“尽力发现”。

续跑模式

以下情况使用 previousRunId:

  • 缩小列表范围
  • 补全缺失字段
  • 查询另一细分部分
  • 验证先前的一组结果
  • 请求“更多类似结果”

以下情况不要使用 previousRunId:

  • 先前的运行失败或仍在运行
  • 新任务与先前任务无关
  • 需要针对另一细分部分进行独立、完整的覆盖

对于相互独立的细分部分,请分别创建运行,并自行汇总结果。

穷尽性与覆盖范围的表述

只有满足以下所有条件时,才能声称覆盖全面:

  • 集合有明确边界和定义。
  • 搜索/发现策略覆盖了主要细分部分。
  • 已核查输出数量和缺口。
  • 已解决重复项。
  • 已检查证据。
  • 已披露所有尚未解决的问题。

未完全验证时,推荐使用以下表述:

  • “尽力发现”
  • “高置信度的初步集合”
  • “并非穷尽”
  • “X 部分的覆盖似乎最充分,Y 部分则相对较弱”

避免使用:

  • “所有公司”
  • “完整列表”
  • “穷尽”
  • “确定无疑”

除非验证结果足以支持这些说法。

批处理脚本模式

如果任务需要并行执行大量形式相同的 Exa 调用,尤其是对已知公司/人员进行批量信息补全:

  1. 编写脚本,而不是手动发起大量 MCP 调用。
  2. 脚本必须:
    • 从文件读取确定性输入
    • 使用有界并发
    • 针对 429/5xx 使用指数退避
    • 保存检查点,记录部分进度
    • 输出确定性的 JSON/CSV/TSV 结果
    • 按行保留原始 API 错误
  3. 运行脚本。
  4. 读取输出文件。
  5. 根据输出综合结果。

如果主要难点在于发现、推理、多跳研究或决定下一步搜索内容,请使用 Exa Agent,而不是批处理脚本模式。

失败处理

如果运行无法启动:

  • 显示 HTTP 错误,并修正 schema、身份验证或输入内容。
  • 对 Exa Agent 类的任务,不要悄悄改用通用网页搜索。

如果运行失败:

  • 根据返回的终止状态说明失败原因。
  • 只有在修正方案明确时,才创建修正后的后续运行或新运行。

如果运行目标或 schema 有误,请中止流式调用。服务器会尝试取消上游运行;随后你需要使用修正后的目标或 schema 创建新运行。

如果输出较少:

  • 使用 previousRunId 继续。
  • 排除先前结果。
  • 对范围进行分段。
  • 收紧或明确 schema 字段。

评论

支持 Markdown