sci-employee-deep-research
调用或模拟 Deep Research 流程,把论文检索、关键词拆解、候选证据和最终 answer 组织成可核验研究报告。适用于赛题讲解、开题调研、方案依据整理。
How do I install this agent skill?
npx skills add https://modelscope.cn --skill sci-employee-deep-researchIs this agent skill safe to install?
No partner audit is available yet. Read the source before installing.
What does this agent skill do?
深度研究员工
Use When
用户已经有研究问题,需要形成一份有结构、有引用、有证据边界的研究报告时使用。
不要直接替代论文检索。先用 paper-search 找候选或确认检索口径,再进入 Deep Research。
输入
- 研究问题。
- 已有候选论文或允许调用的检索接口。
- 页码、每页数量、是否返回原始检索结果。
- 需要的输出形态:报告、PPT 依据、赛题讲法、实操路线。
接口
Deep Research 接口:
POST http://123.56.218.60:18000/api/research/ask
请求体核心字段:
{
"prompt": "研究主题或问题",
"model": "qwen-deep-research",
"keyword_model": "qwen-plus",
"page_num": 1,
"page_size": 5,
"endpoint_names": [
"searchArticlesByQuery1",
"searchArxivByTitle",
"searchArxivByAbstract",
"searchArxivByArxivNo1",
"searchArxiv"
],
"include_raw": false
}
响应是 text/event-stream。必须持续消费事件并拼接最终报告,不能在后端等完整 done 后一次性返回。
实时进度转发
Deep Research 接口本身会中途返回 SSE。调用层必须把这些事件实时透出给用户,至少展示阶段、关键词、检索汇总、references 和 answer 生成片段。
推荐使用 scripts/stream_deep_research.py 消费 SSE 并输出 JSONL:
python scripts/stream_deep_research.py `
--prompt "large language models for scientific discovery survey"
每一行都是一个进度事件,可由服务端转成 SSE 或 WebSocket 消息:
| JSONL 事件 | 来源 SSE | 用户侧含义 |
|---|---|---|
stream_started | 本地包装器 | 请求已开始 |
phase | phase | 进入关键词规划、私有检索、写作等阶段 |
keywords_ready | keywords | 关键词已生成 |
private_search_hit | private_search_hit | 某个检索接口有命中或失败 |
private_search_summary | private_search_summary | 检索总命中、失败接口已汇总 |
references_ready | references | 候选 references 已可提前展示 |
answer_delta | delta | answer 正在生成,可逐步展示 |
done | done | 服务端完成 |
usage | usage | token/用量信息 |
stream_final | 本地包装器 | 本次流结束,给出 answer_status |
如果 30-45 秒内已收到 references_ready 但没收到 done,不要丢弃结果。UI 应展示 references,并把状态标为 incomplete 或“answer 生成中/未完成”。
做可用性探针或首屏体验测试时,可加 --max-events 8,让脚本在已有阶段/检索命中后优雅输出 stream_interrupted 和 stream_final,而不是等最终长答案。
如果通过 Nginx 或其他网关转发 SSE,必须关闭响应缓冲:
proxy_buffering off;
后端响应头建议包含:
Content-Type: text/event-stream
Cache-Control: no-cache
X-Accel-Buffering: no
已实测状态
2026-06-10 测试结果:
GET /health返回 HTTP 200,ok: true。- 服务端模型列表包含
qwen-deep-research和qwen-deep-research-2025-12-15。 POST /api/research/ask能返回 SSE。- 已观察到阶段:
KeywordPlanning、PrivateSearch、references、answer、done。 - 测试主题“中文学术文本人味化生成与改写的评测方法”没有检索到 references,最终 answer 是澄清问题。
- 第二次测试主题“large language models for scientific discovery survey”返回
totalResults=82,解析到 50 条 references,并开始生成 answer;但 45 秒限制内未等到done,标为references 已返回,answer 未完成。 - 第三次测试主题“agentic scientific discovery deterministic data access benchmark”返回
totalResults=31,解析到 31 条 references,并开始生成 answer;35 秒限制内未等到done,标为incomplete。更聚焦的问题减少了混杂,但摘要检索仍会引入弱相关论文。 - 已新增
scripts/parse_deep_research_sse.py,可从 SSE 文本日志提取关键词、检索命中、references 数、answer 状态和前 10 条 references。 - 已新增
scripts/stream_deep_research.py,可实时转发 SSE 事件为 JSONL,避免调用层等最终 answer。
硬规则:
如果
references为空或private_search_summary.totalResults=0,不能把结果标为“研究报告”。只能标为“问题澄清”“检索失败记录”或“无证据初稿”。
如果 references 已返回但没有
done,不能丢弃结果。标为“answer 未完成”,保留 references、已生成片段和下一步继续等待/缩短问题/收窄候选。
工作流
- 先写研究 brief:问题、边界、需要回答的 3-5 个子问题。
- 优先读取
paper-search给出的候选论文交接合同;没有候选时,先收窄关键词再调用接口。 - 调用接口或构造 dry-run 请求体。
- 记录 SSE 阶段:
KeywordPlanningPrivateSearchResearchPlanningWebResearchanswerKeepAlive
- 从事件中整理:
- 关键词
- 检索来源
- 候选论文
- 报告正文
- 引用或证据片段
- 输出研究报告,不只输出模型正文。
- 给复核清单:哪些引用已核验,哪些仍需人工看全文。
与论文检索员工的串联
Deep Research 接收的理想输入不是一句宽泛问题,而是 paper-search 交来的候选包:
{
"research_question": "需要回答的问题",
"candidate_papers": [],
"exclude": [],
"questions_to_answer": []
}
输出时必须补回:
{
"references_count": 0,
"answer_status": "complete/incomplete/clarification/no-evidence",
"evidence_used": [],
"claims_need_fulltext_check": [],
"retrieval_limits": []
}
报告结构
研究问题:
边界:
关键词:
证据来源:
主要结论:
分论点:
引用与证据:
争议或不足:
可实操路线:
还需要核验:
失败处理
- 健康检查失败:记录服务不可用,不伪造报告。
- SSE 断流:保留已收到阶段、事件数和最后事件。
- 没有引用:报告只能标为初稿,不能当可提交证据。
- 候选论文不足:退回
paper-search换词或扩源。 searchArticlesByQuery1返回 400:记录 endpoint、关键词和错误;不要重试刷接口,改用更短关键词或 arXiv/OpenAlex 回退。- answer 只返回澄清问题:把它作为需求澄清,不要包装成调研结论。
- references 很多但混杂:退回
paper-search做候选过滤,不要让 answer 引用不贴题论文。 - answer 超时或没有
done:保留 references 和已生成片段,标为incomplete,不要当最终报告。 - 前端或托管层收到
answer_status=incomplete时,先展示已返回 references 和 answer 片段,并把用户动作设为继续等待、收窄问题或回到候选论文过滤;不要让用户长时间只看到加载中。
最小实测记录格式
健康检查:
请求主题:
请求字段:
观察到的 SSE 阶段:
关键词:
检索命中数:
失败 endpoint:
references 数量:
answer 类型:研究报告 / 澄清问题 / 无证据初稿
下一步:
SSE 解析脚本
保存 SSE 日志后运行:
python outputs\ai_scientist_open_source_research\deep_dive\scientific-digital-employee-skill-pack\deep-research\scripts\parse_deep_research_sse.py `
outputs\ai_scientist_open_source_research\deep_dive\api_tests\round4_deep_research_sse.txt `
--out outputs\ai_scientist_open_source_research\deep_dive\api_tests\round4_deep_research_summary.json
实时转发或回放 SSE 日志:
python scripts/stream_deep_research.py --from-log outputs\api_tests\round4_deep_research_sse.txt
输出字段:
phaseskeywordsprivate_search.totalResultsprivate_search.failuresreferences_countfirst_referencesanswer_statusanswer_charsanswer_preview
进度事件脚本测试:
python -m pytest tests/test_stream_deep_research.py
answer_status 判定:
| 状态 | 含义 |
|---|---|
complete | 有 references 且收到 done |
incomplete | 有 references 和 answer 片段,但未收到 done |
references_only | 有 references,但 answer 未开始 |
clarification_or_no_evidence | 有 answer 但无 references |
no_evidence | totalResults=0 |
讲解抓手
现场讲时强调:
- Deep Research 的价值不是长文本,而是把“检索、证据、报告、待核验问题”串起来。
- 可以把 SSE 阶段作为透明过程展示,让听众看到系统不是黑箱直接写答案。
- 最终答辩要讲清楚:哪些结论来自论文元数据,哪些需要全文复核。
- Deep Research 也会失败;失败时最重要的是留下关键词、检索来源、空结果和下一步换词策略。
- 宽泛问题会带来混杂 references。明天实操时先由论文检索员工筛候选,再让 Deep Research 组织证据。
- 聚焦问题能减少混杂,但不能完全替代候选过滤;标题强相关和摘要弱相关要分开看。
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/modelscope.cn/sci-employee-deep-research">View sci-employee-deep-research on skillZs</a>