关于 Exa Agent
Exa Agent Research 是通过 Exa Agent 进行多步骤网络研究、列表构建、数据补充和覆盖检查的技能,并指导定义结构化输出、续接运行及验证证据。
主要功能
- 01多步骤网络研究
- 02列表构建与发现
- 03数据补充
- 04结构化输出模式
- 05续接运行与验证
适用场景
- 01发现公司或人员
- 02补充已知数据行
- 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:美国企业验证、高管、注册信息和 KYBaffiliate:产品目录搜索、定价、品牌和商家链接particle:带有说话人归属和时间戳的播客转录文本搜索jinko:按票价排名的旅行目的地发现
除非用户明确表示其 Exa 账户已启用仅限申请的提供商,否则不要推荐这些提供商。
决策树
采取行动前,先选择工作方式:
-
已知输入行,且需大规模执行相同格式的信息补全
- 编写脚本,直接调用 Exa API。
- 使用有界并发、指数退避、检查点和稳定的输出文件。
- 读取输出文件,并据此综合整理结果。
- 不要手动循环调用数百次相同的工具,浪费上下文。
-
开放式定义范围、构建名单、发现人员/公司、多跳研究、结构化研究,或跟进之前的工作
- 使用 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 工作流
-
运行 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。
- 调用
-
阅读结果
- 等待
outputReady为 true(或状态变为 failed/cancelled)。 - 阅读
output.structured和output.grounding。 - 不要仅仅因为运行已完成,就假定结果是完整无遗漏的。
- 等待
-
验证覆盖范围
- 将行数与目标数量核对。
- 检查各细分部分的覆盖情况。
- 对实体去重。
- 检查证据质量。
- 找出缺口。
-
必要时继续
- 使用
previousRunId调用agent_run,进行后续查询或细化。 - 使用
input.exclusion避免再次出现先前结果。 - 如果一个运行要覆盖的范围太广,请将大型集合拆分为多个运行。
- 使用
-
最终答复
- 说明已完成的工作。
- 展示结构化结果。
- 说明覆盖范围和局限性。
- 除非已明确界定并验证穷尽性,否则请使用“尽力发现”。
续跑模式
以下情况使用 previousRunId:
- 缩小列表范围
- 补全缺失字段
- 查询另一细分部分
- 验证先前的一组结果
- 请求“更多类似结果”
以下情况不要使用 previousRunId:
- 先前的运行失败或仍在运行
- 新任务与先前任务无关
- 需要针对另一细分部分进行独立、完整的覆盖
对于相互独立的细分部分,请分别创建运行,并自行汇总结果。
穷尽性与覆盖范围的表述
只有满足以下所有条件时,才能声称覆盖全面:
- 集合有明确边界和定义。
- 搜索/发现策略覆盖了主要细分部分。
- 已核查输出数量和缺口。
- 已解决重复项。
- 已检查证据。
- 已披露所有尚未解决的问题。
未完全验证时,推荐使用以下表述:
- “尽力发现”
- “高置信度的初步集合”
- “并非穷尽”
- “X 部分的覆盖似乎最充分,Y 部分则相对较弱”
避免使用:
- “所有公司”
- “完整列表”
- “穷尽”
- “确定无疑”
除非验证结果足以支持这些说法。
批处理脚本模式
如果任务需要并行执行大量形式相同的 Exa 调用,尤其是对已知公司/人员进行批量信息补全:
- 编写脚本,而不是手动发起大量 MCP 调用。
- 脚本必须:
- 从文件读取确定性输入
- 使用有界并发
- 针对 429/5xx 使用指数退避
- 保存检查点,记录部分进度
- 输出确定性的 JSON/CSV/TSV 结果
- 按行保留原始 API 错误
- 运行脚本。
- 读取输出文件。
- 根据输出综合结果。
如果主要难点在于发现、推理、多跳研究或决定下一步搜索内容,请使用 Exa Agent,而不是批处理脚本模式。
失败处理
如果运行无法启动:
- 显示 HTTP 错误,并修正 schema、身份验证或输入内容。
- 对 Exa Agent 类的任务,不要悄悄改用通用网页搜索。
如果运行失败:
- 根据返回的终止状态说明失败原因。
- 只有在修正方案明确时,才创建修正后的后续运行或新运行。
如果运行目标或 schema 有误,请中止流式调用。服务器会尝试取消上游运行;随后你需要使用修正后的目标或 schema 创建新运行。
如果输出较少:
- 使用
previousRunId继续。 - 排除先前结果。
- 对范围进行分段。
- 收紧或明确 schema 字段。