mcpField
R
research

research

github.com/alirezarezvani生产力29.0k350 次安装1 天前更新
代码仓库

关于 research

面向研究任务的混合路由技能,可将问题交给专业技能,或执行通用的搜索、综合与引用流程。它通过公开路由决定并允许用户改选,适用于需要快速研究简报或文档的场景。

主要功能

  1. 01按领域信号确定路由
  2. 02委派给专业研究技能
  3. 03通用研究搜索与综合
  4. 04提供简报或 DOCX 输出
  5. 05记录引用与路由审计

适用场景

  1. 01将专利或文献问题转给相应技能
  2. 02对一般主题开展带引用的网络研究
  3. 03生成可分享的研究 DOCX
  4. 04在分类不明确时先澄清方向

安装

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

$npx skills add https://github.com/alirezarezvani/claude-skills --skill research

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
deterministic_classification_canon.md
fallback_workflow_canon.md
hybrid_router_architecture.md
scripts/
classifier.py
fallback_decomposer.py
routing_transparency_logger.py

详细介绍

研究 — 混合路由器 + 后备工作流

研究领域的运行时编排器。 架构 C:确定性分类 → 委派给专家,或自行执行规划-拆解-搜索-综合-引用工作流。

可移植性

后备工作流需要 WebSearch + WebFetch;要能正常委派,必须具备专家技能(pulse、grants、litreview、syllabus、patent、dossier、deepread)。如果 Q2 = 文档模式,则需要安装 Node.js 和 docx 包。在 Claude Code CLI 中可原生运行。在配备 Web 工具 + Code Execution 的 Claude.ai 中,也支持此工作流。

与 engineering/autoresearch-agent 的区别

这两项技能都包含“研究”一词,但适用场景完全不同:

  • research/research/(此技能)——研究查询路由器 + 后备工作流(“研究 X”)
  • engineering/autoresearch-agent/——Karpathy 的自主文件优化实验循环(“让这段代码运行得更快”)

两者没有重叠,可以共存。

混合架构(C)

每次调用都会产生以下三种结果之一:

  1. 委派——分类为专家领域。路由至相应专家。用户看到专家的输出。
  2. 执行后备工作流——分类为一般研究。运行自有的规划 → 搜索 → 综合工作流。
  3. 请求澄清——分类存在歧义,或仅匹配到一个孤立名词信号。提出一个引导式问题(并提供建议答案)以消除歧义,然后进行路由。

如果专家能做得更好,技能绝不会在不告知用户的情况下静默运行后备工作流。路由透明度是混合架构值得信赖的关键。

专家注册表

专家路由信号领域
pulsereddit / hn / x / buzz / sentiment / trending / “大家在说什么” / “关注一下” / “了解一下风向” / “当前讨论”多源时效性研究
grantsNIH / grant / R01 / K-award / RePORTER / NOSI / “资助项目” / FDA / “研究评审组” / “首席研究员”NIH 资助情报
litreview文献综述 / PICO / SPIDER / 系统综述 / “关于……的综述论文” / 元分析学术文献梳理
syllabus教学大纲 / 课程提纲 / 课程体系 / “阅读清单” / “给我的课程” / “给我的学生”课程补充阅读
patent现有技术 / FTO / 实施自由 / 专利 / “专利布局” / 发明 / 新颖性检索 / “知识产权布局”专利现有技术 + 布局
dossier“关于……的背景资料” / “尽职调查” / “背景调查” / “为……做准备” / “竞争对手研究” / “投资者尽调” / “面试准备” / “关于……的背景信息”用于决策的实体研究
deepread“深入阅读” / “精读” / “读这本书” / “读这份 PDF” / “读这份文档” / “提取论点” / “知识图谱” / “费曼”对所提供文档进行证据优先的阅读

**升级至 deep-research:**当错误答案代价高昂(例如战略决策、比较 N 个选项、验证假设、绘制领域图谱),且严谨性比速度更重要时,应升级至 deep-research 技能,而不是使用快速后备工作流——它会执行多轮三角验证式对抗调查,并保存一份可审计、可复用的研究文件夹。此路由器是快速路径;deep-research 则是重量级方案。

Agent 完整性规则

此技能遵循研究包规范:

  • 执行纪律(仅限后备工作流):按顺序搜索。速率限制为每秒 1 个查询。确认收到响应后再进行下一次调用。
  • 来源纪律:仅引用本次会话工具调用返回的来源。训练知识标记为 [Background — not from search],且不计入数量。
  • 三项计数跟踪(仅限后备工作流):已发送的查询数 / 已收到的来源数 / 已引用的来源数。
  • 重试策略:失败时 → 等待 3 秒 → 重试一次 → 记录。连续失败 3 次后:停止并提醒用户。
  • 路由纪律:绝不静默委派。始终说明决策,并允许用户改选。

阶段 1:Grill-Me 信息收集(2–4 个问题)

信息收集刻意保持精简——目标是快速路由,而不是盘问。每轮只问一个问题。

Q1(始终询问)——研究问题

你的研究问题是什么?请用 1–2 句话说明。问题越具体越好——“医疗领域的 AI”只能得到含糊的综述;“医疗系统如何整合基于 LLM 的临床决策支持?”才能得到有用的答案。

拒绝含糊表述。 如果用户说“研究 AI”,就追问一次:“具体研究 AI 的哪方面——应用、安全性、能力、资金、监管,还是比较?请选择一个角度。”

Q2(始终询问)——输出偏好

你希望得到什么形式的输出?请选择一项:

  1. 快速聊天简报(5 分钟可读,在聊天中以 Markdown 呈现)
  2. 独立文档(含引用的 .docx,可供分享)

必须让用户做出选择。文档模式会触发更深入的搜索预算和完整的审计日志。

Q3(仅当分类结果为 ask 或 fallback 且没有信号时询问)——领域消歧

请快速澄清——选择最接近的一项 (推荐:{N}——你的问题匹配了 {specialist} 信号):

  1. 学术文献(论文、同行评审)
  2. 行业/趋势(热点、新闻、舆情)
  3. 特定实体(公司、个人、组织)
  4. 技术/专利(现有技术、知识产权格局)
  5. 资助资金(NIH、基金会)
  6. 课程材料(教学大纲或课程体系)
  7. 以上都不是——开展一般研究

当分类器返回 ask(单个裸名词信号)时,预先标记推荐选项。如果分类产生了静默路由(≥2 个信号,或一个强多词短语),则跳过此问题。

Q4(仅当需要询问 Q3 且用户选择“以上都不是”时询问)——一般研究范围

对于一般研究,你希望采用哪种时间投入——快速扫描(5 次搜索)还是深入研究(15 次搜索)?

如果已转交给专业方向,则跳过。

停止条件: 完成 Q4 后(或在适用依赖跳过规则时更早),确认并开始阶段 2。大多数调用会在 Q1 + Q2 后结束信息收集。

阶段 2:确定性分类

此过程是确定性的,不由 LLM 推理——这样更快速、易于调试且一致。

SIGNALS = {
  pulse:    ["reddit", "hn", "hacker news", "x.com", "twitter", "buzz",
             "sentiment", "trending", "what are people saying",
             "what's happening", "the conversation around",
             "pulse on", "take the pulse", "current conversation"],
  grants:   ["nih", "grant", "grants for", "r01", "r21", "k-award", "reporter",
             "nosi", "funding", "fda", "study section", "principal investigator"],
  litreview:["literature review", "lit review", "litreview", "pico", "spider",
             "systematic review", "review papers on", "research papers on",
             "papers about", "meta-analysis"],
  syllabus: ["syllabus", "course outline", "curriculum", "reading list",
             "for my class", "for my students", "course material"],
  patent:   ["prior art", "fto", "freedom to operate", "patent",
             "patent landscape", "invention", "novelty search",
             "patent search", "ip landscape"],
  dossier:  ["dossier on", "due diligence", "background check",
             "prep me for", "competitor research", "investor diligence",
             "interview prep", "research my competitor", "background on"],
  deepread: ["deep read", "deeply read", "read this book", "read this pdf",
             "read this document", "extract the claims", "extract claims from",
             "knowledge map", "feynman", "argument map"]
}

# Signals are case-insensitive literal phrases (multi-word substring match).
# Bracketed placeholders (e.g., "research [company]") are intentionally NOT
# signals — they over-trigger on generic "research X" queries that should
# fall back to general research, not auto-route to dossier.
# STRONG signal = multi-word phrase (contains a space): pairs verb with noun
# ("dossier on", "prior art") and routes reliably.
# BARE-NOUN signal = single word ("funding", "fda", "patent", "grant"):
# too weak to silent-route on alone — it must trigger Q3 with a
# recommended answer instead.

For each specialist S:
  score[S] = count of SIGNALS[S] phrases matched in question (case-insensitive substring)

if max(score) >= 2:
  route_to = argmax(score)                  # high confidence — silent route
elif max(score) == 1 and only one specialist has score 1:
  if the matched phrase is multi-word (contains a space):
    route_to = that specialist              # strong phrase — silent route
  else:
    route_to = "ask"                        # bare noun — ask Q3, recommend that specialist
else:
  route_to = "fallback"                     # ambiguous or no match — ask Q3 / run fallback

实现: scripts/classifier.py --question "..." 会返回路由决策、匹配的信号、各专业方向的得分,以及(对于 ask)推荐的专业方向。请使用此脚本,不要重新实现。上方的 SIGNALS 映射和规则与脚本逐短语保持同步——出现偏差即为错误。

阶段 3a:委派给专业方向(≥2 个信号或一个强多词短语)

委派时:

  1. 原样传递用户的问题,以及输出偏好(Q2)
  2. 让专业方向自行进行 Grill-Me 信息收集——不要预先回答专业方向的问题
  3. 将专业方向的输出作为用户可见的结果返回
  4. 在聊天输出中为结果添加标记 [Delegated to: research → {specialist}],让用户知道是哪个技能生成了结果
  5. 通过 scripts/routing_transparency_logger.py --action record_delegation 为审计日志添加标记

阶段 3b:自有备用工作流

如果路由未找到匹配的专业领域技能(且 Q3 确认进行一般研究),则运行 8 步备用流程:

  1. 拆解 — 将问题拆分为 3–5 个子问题(是什么 / 为什么 / 如何 / 谁 / 接下来会怎样)。搜索前先展示拆解结果。scripts/fallback_decomposer.py --question "..." 可提供一个确定性的起点。
  2. 选择来源 — 针对每个子问题:时效性 → WebSearch+WebFetch(有相关信号时加上 Reddit/HN);技术 / 文档 → WebSearch+WebFetch;学术 → 如果已连接,则使用 Consensus MCP,否则使用带有 scholar.google.com 站点筛选条件的 WebSearch;数据 / 数字 → WebFetch 获取一手文档;实体层面 → 提供改用 dossier 路由的选项。
  3. 搜索 — 按子问题依次搜索,每秒 1 个查询,每个来源 2–4 个查询,从宽泛到具体。
  4. 阅读 + 提取 — 使用 WebFetch 获取高信号结果;记录每个来源 URL。
  5. 综合 — 每个子问题撰写 2–4 段并添加行内引用;如果来源之间存在分歧,则明确指出。
  6. 跨领域模式 — 围绕各子问题撰写 1–2 段:共识、争议、空白。
  7. 输出 — 默认提供 Markdown 简报;如果用户选择文档模式,则提供 DOCX。
  8. 审计日志 — 记录三个计数(已发送 / 已接收 / 已引用)+ 每个来源的可靠性级别(一手 / 二手 / 三手)。

路由透明协议(强制)

分类后,该技能始终:

  1. 说明决定,用一句话表达:“路由至 litreview,因为你提到了 PICO 和荟萃分析(2 个信号)。”
  2. 提供覆盖选项:“如果你想进行一般研究,或改用其他专业领域技能,请现在告知。”
  3. 如果用户没有反对,则按推荐路线继续 — 不设计时器,不倒计时。
  4. 如果用户选择覆盖 → 接受,重新路由,并通过 routing_transparency_logger.py --action record_override 记录覆盖操作。

绝不静默委托。 这是建立信任的关键,也是混合模式奏效的原因。

输出格式

Markdown 简报(Q2 = 快速聊天简报):标题 + *生成时间:[DATE] | 路由至:[专业领域技能 | 备用流程]*,然后依次为 TL;DR(2-3 句)→ 研究结果(每个子问题一个 H3,附行内引用)→ 跨领域模式 → 来源(编号、带超链接,并标注每个来源的可靠性级别)→ 审计(三个计数 + 失败情况)。

DOCX(Q2 = 独立文档):采用标准研究资料包 DOCX 格式 — Arial 12pt,海军蓝标题,蓝色表格标题,带超链接的来源,必须包含审计日志章节。请参考 docx 技能了解设置方法。

审计日志块(备用模式)
Queries sent: N | Sources received: M | Sources cited: K
Failures: F (3-consecutive-failures triggered: yes/no)
Per-source tier: [URL — primary | secondary | tertiary]
Routing decision: fallback (no specialist matched)
Sub-questions: [list]

所有路由决定和覆盖操作也会通过 routing_transparency_logger.py 记录到 ~/.research_sessions/<session>.json。

失败模式

失败情况行为
仅有一个没有上下文的名词信号(例如“funding”“fda”)针对匹配的专业领域技能提出 Q3,并将其预先标记为推荐答案。绝不静默路由。
分类不明确(匹配多个仅有 1 个信号的技能,或没有匹配项)提出 Q3(领域消歧)。
专业领域技能委托失败在聊天中说明。提供重试或改用一般研究的选项。
用户覆盖路由接受。重新路由。记录覆盖操作。
备用搜索返回的结果有限明确指出。建议问题可能过于小众或过新。不得捏造信息。
备用流程中连续 3 次工具调用失败停止,提醒用户,并分享已收集的内容。
问题不属于研究范畴(例如“帮我写代码”)礼貌拒绝。建议使用适当的技能。
无法回答子问题注明“公开信息有限”;不要默默省略。
输出格式不匹配遵从 Q2;如果无法提供,则改用 Markdown 并说明。
环境中缺少专业领域技能在分类评分中跳过该技能;路由至备用流程或次优专业领域技能。

被拒绝的反模式

  • 由大模型推理分类(必须使用确定性的关键词 + 意图匹配)
  • 静默委派(始终展示路由决策)
  • 当 ≥2 个信号匹配时,拒绝路由至专业工具
  • 对单个裸名词信号进行静默路由(“research FDA approval trends” 应询问,而不是自动路由至 grants)
  • 基于墙上时钟的交互提示(“Ns 后自动继续”)——模型无法等待;如果用户没有异议,就按推荐路线继续
  • 预先回答专业工具的盘问式信息收集问题(让它自行执行)
  • 搜索结果不足时,在回退流程中编造来源
  • 在回退模式下跳过审计日志
  • 将 “dossier on [company]” 视为回退请求,而不是交给 dossier 专业工具(动词与名词成对的短语会触发路由;泛化的 “research X” 形式不会)
  • 将泛化的 “research [topic]” 查询自动路由至专业工具(单独的 “research Microsoft” 含义模糊——可能是 dossier,也可能是一般研究;应询问 Q3,而不是猜测)

工具

  • scripts/classifier.py — 确定性 SIGNALS 匹配 → 路由决策(specialist / ask + 推荐项 / fallback)+ 各专业工具评分 + 匹配短语。--question "..." --output json。
  • scripts/routing_transparency_logger.py — 以 JSON 为后端的审计日志,路径为 ~/.research_sessions/<session>.json。记录每项路由决策、覆盖操作和委派交接。
  • scripts/fallback_decomposer.py — 将启发式问题 → 拆分为 3–5 个子问题(是什么 / 为什么 / 如何 / 谁 / 下一步是什么)。
参考文档(每份均引用 7 个以上权威来源)
  • references/hybrid_router_architecture.md — 路由器与运行模式的权衡 + 路由透明度原则
  • references/deterministic_classification_canon.md — 为什么基于关键词的路由优于大模型推理
  • references/fallback_workflow_canon.md — 规划-拆解-搜索-综合方法论

依赖项

  • WebSearch + WebFetch — 回退工作流必需
  • 专业技能 — 委派必需:pulse、grants、litreview、syllabus、patent、dossier。如果缺少某项专业技能,路由器会跳过它,改为路由至回退流程。
  • Node.js docx 库 — 用户选择文档输出时必需(Q2 = standalone)
  • Consensus MCP — 可选;回退流程中出现学术子问题时使用

版本: 1.1.0 源规范: megaprompts/13-research-megaprompt.md(维护者本地的草案规范——已被 git 忽略,不存在于公开仓库中) 构建模式: Path B(直接转换)。v1.1.0:裸名词信号现在会触发询问,而不是静默路由;移除了 5s 自动继续提示;根据 2026-06 newgen 审计精简上下文。

评论

支持 Markdown