SuperAPI AI 工具集

past-research-search

写作与研究

查看项目

更新于 10-16 05:29

技能介绍

用途

past-research-search 用于为过去的 tavily-research 运行保留一份本地、可搜索的记录,使其之后可以按主题查找,而不必记住 request_id。

tavily-research 本身已支持按 ID 查询某次运行(tvly research status <request_id>、tvly research poll <request_id>),即“我有 ID,状态如何”。本技能覆盖的是另一个缺口:“我已经没有 ID 了,只记得大概问过什么”。Tavily 的 API 没有可查询的跨会话历史端点,因此这是一个本地日志约定,而不是 Tavily 的新能力。

主要能力

  • 在每次 tavily-research 运行后,向本地日志追加一条记录:时间戳、查询内容、所用模型、request_id,以及输出保存位置。
  • 之后通过关键词搜索该本地日志来查找历史运行,而不是尝试回忆 ID。
  • 对匹配到的记录,若仍在 Tavily 的保留窗口内,可重新获取完整结果。

使用方式

运行完成后立即记录一次运行:

python3 << 'PYEOF'
import json, os
from datetime import datetime, timezone

log_path = ".tavily/runs.jsonl"
os.makedirs(os.path.dirname(log_path), exist_ok=True)

record = {
    "timestamp": datetime.now(timezone.utc).isoformat(),
    "query": "Competitive landscape for AI code assistants",
    "model": "pro",
    "request_id": "req_abc123",     # from the research() response
    "output_file": "reports/ai_code_assistants.md",
}

with open(log_path, "a") as f:
    f.write(json.dumps(record) + "\n")

print("Logged.")
PYEOF

按关键词查找过去的运行:

python3 << 'PYEOF'
import json

with open(".tavily/runs.jsonl") as f:
    records = [json.loads(line) for line in f if line.strip()]

keyword = "code assistants"
matches = [r for r in records if keyword.lower() in r["query"].lower()]

for m in matches:
    print(f"[{m['timestamp']}] [{m['request_id']}] {m['query']}")
    print(f"  model={m['model']}  output={m.get('output_file', 'n/a')}")
PYEOF

对匹配项重新获取完整结果(若仍在 Tavily 的保留窗口内):

tvly research poll req_abc123 --json

选项与注意事项

  • 日志位置:项目根目录下的 .tavily/runs.jsonl 可使其与项目放在一起;若需跨项目记录,可改用主目录路径。
  • 记录内容:查询文本、模型、request_id、输出文件路径,以及用户给出的简短自由文本标签(如“Q1 competitor scan”)。
  • 保留期:Tavily 自身的运行检索(research poll)可能在一段时间后过期——如果用户需要永久保留实际报告,应始终在原始运行时加上 -o <file>,并在此处记录该文件路径。

提示

  • 在运行当下记录,而不是事后补记。研究调用完成后追加一行成本很低;事后重建则困难得多。
  • 始终在原始 tvly research 调用中搭配 -o <file>——日志应指向报告的持久本地副本,而不是仅依赖 Tavily 的托管保留。
  • 这可以成为 tavily-research 内部的一个习惯,而不是单独的一步——如果某个工作流更简单,只需在每次研究调用后始终记录,而不必把它当作一次独立调用。

已知问题

研究状态/轮询目前需要 API-key 认证,而不是 OAuth。

截至 2026-08,当 CLI 通过 tvly login(OAuth)认证时,按 request_id 重新获取运行(上述最后一步)会失败——该路径经由 Tavily 的 MCP 服务器(mcp.tavily.com),而该服务器目前完全没有暴露 tavily_get_research 工具。research status 会返回 Unknown tool: 'tavily_get_research';research poll 会静默重试直到超时,而不是暴露该错误。本技能中的本地记录/查找步骤不受影响——只有“重新获取完整结果”这一步需要它。

修复方法:在使用重新获取步骤之前,改用原始 API key 认证:

tvly login --api-key tvly-YOUR_KEY
# or: export TAVILY_API_KEY=tvly-YOUR_KEY

TODO:一旦 Tavily 的 MCP 服务器暴露 tavily_get_research 工具,就移除本节——已作为缺口报告于 2026-08-28 提交跟踪。

相关

tavily-research —— 本技能为其记录运行。