first commit

This commit is contained in:
Hermes Agent
2026-05-10 13:52:46 +08:00
commit ccc63d1e70
4583 changed files with 584341 additions and 0 deletions

View File

@@ -0,0 +1,174 @@
---
name: sn-research-planning
description: "[sn-deep-research 子阶段] 基于 request.md 生成研究计划 plan.json定界、维度拆解、搜索策略、执行顺序。通常由 sn-deep-research 自动调用,不需手动触发。单独使用:用户已有研究主题,只需要规划不需要执行。"
---
# Research Planning
产出 `plan.json`。它同时承担定界、报告形态约束和执行地图,用来指导 `sub_reports/*.md` 和最终 `report.md` 的生成;不是研究结论预设。
## 行为边界
做:
-`request.md` 识别研究目标、边界、受众、用途、时间/地域和假设。
- 在需要时先做报告格式发现,再设计有依据的报告形态。
- 设计轻量报告形态:终稿章节、结构依据、必须产出的表格/图/比较项、写作约束。
- 把关键问题拆成可执行研究维度。
- 让每个维度都能独立落盘为一个子报告。
- 明确每个维度要回答什么、用什么方法、产出什么材料。
- 为每个维度指定搜索策略和充分性标准。
- 排出合理执行顺序和真实依赖。
不做:
- 不写研究结论。
- 不把终稿章节直接复制成研究维度。
- 不做单独的 `briefing.md``blueprint.json``synthesis.md`
- 不做资料综述或事实展开。
- 不制造不必要的并行/依赖复杂度。
## 输入
- `{report_dir}/request.md`
## 规划流程
1. **锁定目标**:从 `request.md` 提取最终报告要服务的判断。
2. **界定范围**:写清对象、时间、地域、受众/用途、排除项和执行假设。
3. **判断是否需要格式发现**:如果用户已明确给出报告结构,或报告类型非常标准且约束明显,可直接进入下一步;否则先做一次轻量格式发现。
4. **发现报告格式**:必要时读取 `sn-report-format-discovery`,识别报告类型、可信结构来源、必备章节、强制元素和风格约束,再压缩进 `plan.json.report_shape`
5. **设定报告形态**:给出终稿章节建议、结构依据、必备元素、适合的表格/图和写作约束。
6. **抽取问题**:把关键问题分成基础事实、机制/原因、比较、影响、风险、趋势或建议类问题。
7. **设计维度**:按“可独立研究、可回答问题、可贡献终稿”的标准合并或拆分维度。
8. **定义任务**:为每个维度写清 `key_questions``method``search_strategy``expected_output``depends_on`
9. **定义搜索充分性**:说明需要覆盖哪些来源类型、至少几轮检索、哪些关键问题必须交叉确认。
10. **排序执行**:先做定义、事实、背景和口径类维度,再做比较、解释、影响、判断类维度。
11. **写完成标准**:明确什么条件下可以从分维度研究进入终稿写作。
## 报告格式发现
规划阶段不要求每次都单独研究格式,但在下列情况应主动做一次格式发现:
- 用户只说“做个研究报告”,没有给章节结构。
- 报告类型强依赖领域规范,如政策、法律、监管、学术/医学综述、尽调、技术选型。
- 目标读者或使用场景会显著影响结构,如对外汇报、投决支持、内部选型、监管沟通。
- 你不确定终稿应该优先呈现结论、时间线、比较矩阵、风险清单还是方法说明。
可以直接从 `request.md` 推断 `genre``domain``audience``region`;若这些信息不足以稳健决定结构,再读取 `sn-report-format-discovery`
发现格式时只需要回答 4 件事:
1. 这份报告最接近哪一类报告。
2. 这类报告通常必须有哪些章节。
3. 哪些非章节元素必须在终稿中出现,如对比表、时间线、风险矩阵、方法说明。
4. 这些结构判断的依据是什么;如果没有找到高可信依据,回退逻辑是什么。
格式发现的结果要压缩进 `plan.json.report_shape`,用于约束后续维度设计;不要另写独立格式文件,除非调用方明确要求。
## 维度设计准则
一个好维度应同时满足:
- 能独立产出 `sub_reports/{id}.md`
- 有 2-5 个具体 `key_questions`
- 与其他维度边界清楚,重叠可解释。
-`report.md` 有明确贡献。
- 有明确搜索入口和停止条件。
- 不预设结论,只定义要查明什么。
普通研究控制在 3-5 个维度;复杂研究最多 8 个维度。维度过多时优先合并同类问题。
## 输出
写入 `{report_dir}/plan.json`
```json
{
"research_goal": "一句话目标",
"scope": {
"objects": ["研究对象"],
"time_range": "时间范围",
"region": "地域范围",
"audience_or_use": "目标读者或用途",
"exclusions": ["明确不做什么"],
"assumptions": ["执行假设"]
},
"report_shape": {
"format_basis": [
{
"type": "standard_guideline | official_template | real_exemplar | domain_convention | fallback",
"name": "结构依据名称",
"credibility_reason": "为什么可信",
"what_extracted": "从中抽取了哪些结构约束"
}
],
"sections": ["终稿建议章节"],
"mandatory_elements": ["必须产出的表格、图、清单或比较项"],
"style": "写作口径和语气约束"
},
"completion_criteria": ["完成标准"],
"change_notes": [],
"dimensions": [
{
"id": "d1",
"name": "维度名称",
"description": "研究范围和边界",
"key_questions": ["必须回答的问题"],
"method": "检索、比较、案例分析、数据梳理、时序还原等",
"search_strategy": {
"source_types": ["应覆盖的来源类型"],
"seed_queries": ["起始检索词或检索方向"],
"freshness_requirement": "是否需要最新信息及时间范围",
"sufficiency": ["判断搜索足够的条件"]
},
"expected_output": "该维度子报告应提供给终稿写作的材料",
"depends_on": [],
"status": "pending"
}
],
"execution_order": ["d1", "d2"]
}
```
## 字段要求
- `research_goal`:一句话说明整个研究要服务什么判断。
- `scope`:必须覆盖对象、时间、地域、受众/用途、排除项和当前假设;未知项显式写明。
- `report_shape.format_basis`:说明报告结构依据来自哪里。若调用过 `sn-report-format-discovery`,至少保留 1 个依据;若未调用,也要写明是“用户指定结构”或“通用领域惯例”。
- `report_shape.sections`:是终稿结构建议,不是研究维度。
- `report_shape.mandatory_elements`:列出终稿必须支撑的比较表、时间线、风险清单、指标矩阵、流程图等。
- `report_shape.style`:说明报告语气、确定性表达和不确定性处理方式。
- `completion_criteria`:列出进入终稿写作前必须满足的条件。
- `change_notes`:初始为空数组;研究过程中如调整维度或执行顺序,把原因追加到这里,不单独写日志文件。
- `id`:使用稳定短 ID`d1``d2`
- `description`:说明研究范围和不包含什么。
- `key_questions`:写成可回答的问题,不写成标题。
- `method`:说明该维度适合怎么研究。
- `search_strategy.source_types`:列出要覆盖的来源类型,如官方文件、监管公告、学术论文、行业报告、公司披露、产品文档、新闻报道、社区讨论等。
- `search_strategy.seed_queries`:给出 3-6 个起始检索方向,而不是只写一个关键词。
- `search_strategy.freshness_requirement`:说明是否必须查最新资料;涉及市场、政策、产品、公司、价格、法律、人物时必须要求最新核查。
- `search_strategy.sufficiency`:写清停止条件,如“每个关键问题至少有材料支撑”“核心事实来自两个独立来源”“没有新信息增量后停止”等。
- `expected_output`:说明子报告要贡献事实、比较、框架、判断依据、风险清单或场景分析中的哪一种。
- `depends_on`:只写真实依赖;没有依赖则为空数组。
- `execution_order`:必须覆盖所有维度 ID且依赖项出现在被依赖项之前。
## 完成标准示例
- 所有 `key_questions` 至少被一个维度覆盖。
- `report_shape` 有明确结构依据,而不是拍脑袋列章节。
- `report_shape.mandatory_elements` 都有对应维度提供材料。
- 每个维度都能形成独立子报告。
- 每个维度都定义了搜索策略和停止条件。
- 关键不确定性有专门维度处理,或在相关维度中明确标注。
## 常见失败
- 把报告章节当研究维度。
- 每个维度只有标题,没有可回答问题。
- 维度之间大量重叠。
- 没有为维度定义搜索入口,导致执行时浅搜。
- 执行顺序忽略依赖关系。
- 报告结构没有依据,只凭经验硬写章节。
- 忽略终稿必备元素。
- 在计划里提前写结论。