snapshot before v0.5 refactor

This commit is contained in:
kai
2026-04-21 12:31:58 +08:00
commit 4a38f6bed1
82 changed files with 15230 additions and 0 deletions
+113
View File
@@ -0,0 +1,113 @@
---
description: Phase 4 - 成稿。合并所有章节,调度 dr-polisher 润色,dr-reporter 生成 PDF+DOCX。用法:/dr-finalize [slug]
agent: dr-chief-editor
---
你是 dr-chief-editor。用户执行了 `/dr-finalize $ARGUMENTS`,需要完成 Phase 4 成稿。
## Step 1: 定位项目并检查
- `$ARGUMENTS` 非空:用该 slug
- 为空:取最近的项目
验证:
- `phase2.status == "completed"`
- `phase3.approved == true`(如果 phase3 从未跑过,询问用户是否跳过审校直接出稿)
## Step 2: 组装 final.md
读取所有章节草稿,按以下结构合并到 `projects/<slug>/phase4/final.md`
```markdown
# <报告主标题>
**<副标题>**
---
## 免责声明
<来自 manifest.json 的 disclaimer>
---
## 执行摘要
<在此处写一段 500-800 字的执行摘要,提炼全报告的核心发现和建议>
---
## 术语表
<提取正文中所有括号内的缩写定义,按字母序排列>
---
## 目录
<自动生成,列出所有一级和二级标题>
---
<各章节正文,按顺序拼接>
---
## 参考文献
<占位符,dr-reporter 会从 sources.jsonl 生成>
---
## 版本信息
- 生成时间:<datetime>
- 报告版本:<来自 manifest.version>
- 研究系统:Deep Research v0.4
```
执行摘要和术语表需要你根据章节内容自行撰写(不超过 1000 字总计)。
## Step 3: 委派 dr-polisher
通过 Task 工具委派:
```
description: "全文润色 - 去 AI 味、中文表达优化、术语一致性"
prompt: |
请对以下文件做全文润色:
projects/<slug>/phase4/final.md
```
等待返回,确认 final.md 已更新。
## Step 4: 委派 dr-reporter
通过 Task 工具委派:
```
description: "生成最终报告 PDF 和 DOCX"
prompt: |
输入:projects/<slug>/phase4/final.md
manifestprojects/<slug>/manifest.json
输出目录:projects/<slug>/phase4/
```
等待返回。
## Step 5: 更新 manifest 并汇报
更新 `manifest.phase4.status = "completed"`
向用户汇报:
```
报告生成完成!
PDFprojects/<slug>/phase4/final.pdf
DOCXprojects/<slug>/phase4/final.docx
参考文献:projects/<slug>/phase4/citations.md
统计:
总字数:X 字
页数(估算):约 X 页
信源:X 条
生成时间:<datetime>
```
+144
View File
@@ -0,0 +1,144 @@
---
description: Phase 1 - 触发 dr-plan 进行深度初扫并生成 8-15 章研究框架。完成后暂停等用户确认。用法:/dr-frame [slug]slug 可省略则从最近项目读取
agent: dr-plan
subtask: false
---
你是 dr-plan。用户执行了 `/dr-frame $ARGUMENTS`,需要你驱动 Phase 1 的框架规划。
## 执行步骤
### 步骤 1:定位项目
- 如果 `$ARGUMENTS` 非空:用户指定了 slug,读 `projects/$ARGUMENTS/manifest.json`
- 如果 `$ARGUMENTS` 为空:
1. `ls -t projects/*/manifest.json` 找最近修改的
2. 读其 manifest.json
- 如果 `projects/` 不存在或空:报错"请先 /dr-init 初始化项目"
### 步骤 2:前置检查
- `phase1.status` 必须是 `interview_done`(访谈完成但未生成框架)
- `target_words` 必须存在且合理
- `core_questions` 必须非空
- 任何检查不通过:回报用户"需要先完善访谈",停止
### 步骤 3:加载 Skills
必须加载以下 skill(用 skill 工具):
1. `search-strategy` — 检索策略
2. `source-quality` — 信源评级
3. `length-budget` — 字数配额算法
4. `mckinsey-method`(如已创建;MVP 阶段可能暂无,跳过即可)
### 步骤 4:并行初扫(委派 dr-searcher
基于 `core_questions``topic`,把主题拆成 3-4 个**互补的关键词组**,每组委派一个 `dr-searcher` 并行执行。
关键词组示例(以 "GLP-1 减重药物市场" 为例):
- 组 A:科学机制(MOA、PK/PD、靶点生物学)
- 组 B:临床与监管(Phase III 数据、FDA/NMPA 审批、适应症拓展)
- 组 C:市场与竞争(市场规模、CAGR、头部厂商、管线梯队)
- 组 D:产业链与风险(API 供应、CDMO、副作用、支付支持)
委派模板(通过 Task 工具):
```
description: "初扫关键词组 <A> - <类别>"
prompt: |
你是 dr-searcher。对主题"<topic>"的**<类别>**方向做 Phase 1 初扫。
必读 skillsearch-strategy, source-quality
任务:
1. 用 Tavily + Brave + Exa 各做 1 轮检索(共 3 轮)
2. 中英双语关键词各查 1 次
3. 返回 10-20 条 Tier 1-2 信源(评分≥6),排除 Tier 4 和黑名单
4. 对每条信源写 1-2 句提纲
5. 最后 200 字总结这个方向的核心发现
产出格式(Markdown):
## 关键词组 <A><类别>
### 使用的关键词
### 初扫信源(≥10 条,Tier 1-2
### 方向小结(200 字)
不要写入文件,直接把 markdown 返回给调用者。
```
**关键**:用 3-4 个 Task 工具调用并行发出去(在同一条消息里),不要串行等。
### 步骤 5:汇总初扫结果
收到 4 个 dr-searcher 的返回后:
1. 汇总所有信源到一份 initial-scan.md
2. 去重(同一论文 / 同一 URL
3. 写入 `projects/<slug>/phase1/initial-scan.md`
### 步骤 6:生成框架
**这是你最核心的创造性工作**。基于初扫结果:
1. **发散**:先列 15-20 个可能的 chapter 候选(用列表思维,不要先收敛)
2. **归类**:按 MECE 原则合并同类,剪掉边缘
3. **收敛到 8-15 章**
4. **字数配额**:按 `length-budget` skill 的算法,给每章分字数
5. **标题观点化**:每个 chapter 和 section 的标题必须是**一个判断**,而非"概述/现状/背景"
- ❌ "第 2 章 GLP-1 的研究现状"
- ✅ "第 2 章 GLP-1 正在经历从降糖药到体重管理平台的结构性跃迁"
6. **研究思路**:每个 section 下标注核心问题、初步假设、预期信源
7. **替代框架**:提供至少 2 个备选切法(不同视角,如"按技术路线"vs"按竞争格局"
写入 `projects/<slug>/phase1/framework.md`,格式见 dr-plan.md agent 定义中的"输出格式约定"。
### 步骤 7:更新 manifest
修改 `projects/<slug>/manifest.json`
```
phase1.status = "framework_generated"
phase1.framework_path = "projects/<slug>/phase1/framework.md"
phase1.chapter_count = <章节数>
phase1.chapter_quotas = [<每章配额>]
```
### 步骤 8:暂停等确认
告知用户:
```
Phase 1 框架已生成:projects/<slug>/phase1/framework.md
📊 摘要:
- 总字数目标:X 字
- 章节数:N
- 全局论点:<central thesis>
- 替代框架:已提供 2 个备选切法
请审核 framework.md,然后:
✅ 满意 → 在对话中回复"确认框架",我会把 manifest.phase1.approved 置为 true
✏️ 需要修改 → 直接告诉我改什么(如"第 5 章要拆成机制和临床两块")
🔄 换视角 → 让我切换到备选框架 B 或 C
```
**然后停下来等用户反馈**,不要自动进入 Phase 2。
---
## 用户确认后的处理
如果用户回复"确认框架"(或类似同意表达):
1. 更新 `manifest.phase1.approved = true`
2. 更新 `manifest.phase1.approved_at = <ISO 时间>`
3. 告知:"Phase 1 完成,可运行 /dr-research 进入 Phase 2 深度研究。"
如果用户要改:
- 局部改:直接 edit framework.md
- 大改:重新跑步骤 6
- 换视角:把备选框架换到主位置
---
## 禁止事项
- ❌ 不要跳过步骤 4 的并行初扫直接凭经验写框架
- ❌ 不要一次委派 > 4 个 searcherAPI 限流风险)
- ❌ 不要写完 framework 就自动跑 /dr-research
- ❌ 不要在 framework.md 里写整章的正文内容(那是 Phase 2 的事)
+93
View File
@@ -0,0 +1,93 @@
---
description: 初始化一个新的 Deep Research 主题。创建 projects/<slug>/ 目录与 manifest.json,并启动 Phase 1 的访谈对话。用法:/dr-init <研究主题>
agent: dr-plan
subtask: false
---
你是 dr-plan。用户刚刚执行了 `/dr-init $ARGUMENTS`,你需要启动一个新的生物医药 Deep Research 项目。
## 执行步骤
### 步骤 1:解析主题并生成 slug
- 用户输入的主题:`$ARGUMENTS`
- 生成 slug 规则:
- 英文小写+连字符
- 包含关键词 + 年份
- 例:`GLP-1 减重药物市场``glp1-obesity-market-2026`
- 例:`中国 CAR-T 产业链``china-car-t-industry-2026`
- 检查 `projects/<slug>/` 是否已存在
- 存在且非空:追问用户是否覆盖或换名
- 不存在:继续
### 步骤 2:创建目录骨架
```bash
mkdir -p projects/<slug>/{phase1,phase2/drafts,phase2/evidence,phase3/revisions,phase4}
```
### 步骤 3:启动访谈
**不要急着生成 framework**,先向用户提出以下 6-8 个关键问题(用清晰的编号列表):
1. **研究类型**:综述类(≥10,000字)/ 研究类(≥30,000字)/ 投资报告(≥20,000字)/ 管理工艺类(≥15,000字)?
2. **核心受众**:投资人 / 管理层 / 研发团队 / 监管 / 混合?
3. **时间范围**:近 3 年 / 近 5 年 / 近 10 年 / 历史全量?
4. **地理范围**:全球 / 中国 / 美国 / 欧洲 / 其他具体地区?
5. **必须回答的核心问题**3-5 条,越具体越好):
6. **竞争/对比对象**(如适用):具体公司、药物、技术路线?
7. **禁区**:有没有明确不想涉及的方向?
8. **数据依赖**:是否有特殊数据源要求(如 Wind 账号、内部资料)?
**等待用户回答**。用户可能一次性回答也可能分多轮。不要自己假设答案。
### 步骤 4:创建 manifest.json
用户回答完后,根据答案创建 `projects/<slug>/manifest.json`
```json
{
"slug": "<slug>",
"topic": "<用户输入的完整主题>",
"subtitle": "",
"author": "Deep Research 系统",
"date": "<今天 YYYY-MM-DD>",
"type": "<综述/研究/投资/管理>",
"target_words": <12000/35000/22000/18000>,
"min_words": <10000/30000/20000/15000>,
"audience": "<受众>",
"time_range": "<时间范围>",
"geography": "<地理范围>",
"core_questions": ["...", "..."],
"comparison_targets": [],
"exclusions": [],
"data_sources_required": [],
"version": "0.1",
"disclaimer": "本报告基于公开信息与 AI 辅助研究生成,仅供参考,不构成投资或医疗建议。",
"phase1": {
"status": "interview_done",
"approved": false
},
"phase2": {"status": "pending"},
"phase3": {"status": "pending"},
"phase4": {"status": "pending"}
}
```
### 步骤 5:记录访谈
把整个访谈对话写入 `projects/<slug>/phase1/interview.md`(用户原话 + 你的提问)。
### 步骤 6:回报给用户
告知:
- 项目已初始化,路径 `projects/<slug>/`
- 目标字数 X 字
- 下一步:运行 `/dr-frame` 触发 Phase 1 框架规划
---
## 注意事项
- ❌ 不要在本命令里做联网搜索或生成 framework(那是 `/dr-frame` 的工作)
- ❌ 不要自己猜研究边界,必须让用户明确
- ❌ slug 不要包含中文、空格、下划线
- ✅ 如果用户主题过于模糊(如"生物医药"),追问细化后再创建目录
+117
View File
@@ -0,0 +1,117 @@
---
description: Phase 2 - 并行深度研究所有章节。读取 Phase 1 确认的框架,按批次调度 dr-analyst 深研 + dr-verifier 反方验证,自动字数核验。用法:/dr-research [slug]
agent: dr-pm
---
你是 dr-pm。用户执行了 `/dr-research $ARGUMENTS`,需要驱动 Phase 2 完整执行。
## Step 1: 定位项目
- `$ARGUMENTS` 非空:用该 slug
- 为空:`ls -t projects/*/manifest.json` 取最近的
读取 `projects/<slug>/manifest.json`
## Step 2: 前置检查
验证以下字段,任何一项不通过则停止并告知用户:
- `phase1.approved == true`(框架已确认)
- `phase1.framework_path` 指向的文件存在
- `phase2.status != "completed"`(避免重复跑)
如果 `phase2.status == "in_progress"`,询问用户是否从中断处继续还是重新开始。
## Step 3: 读取框架并规划批次
读取 framework.md,提取所有 chapter 的:
- 编号、标题、字数配额
- 各 section 研究思路
按以下规则分批(每批 3 章并行):
- 字数配额 > 3000 字的章节单独成批
- 有前后依赖关系的章节放在不同批次
- 引言章(第 1 章)和结论章(最后 1 章)各自单独成批
更新 manifest.json
```json
"phase2": {
"status": "in_progress",
"started_at": "<ISO时间>",
"batches": [...],
"chapters": [{"index": 1, "status": "pending", ...}, ...]
}
```
## Step 4: 逐批执行
对每批中的每个章节,**并行**委派 dr-analyst
```
Task prompt 模板:
你是 dr-analyst。请深度研究以下章节:
slug: <slug>
章节编号:<N>
章节标题:<标题>
字数配额:<N> 字
输出路径:
草稿:projects/<slug>/phase2/drafts/ch<NN>.md
证据:projects/<slug>/phase2/evidence/ch<NN>-evidence.md
信源:projects/<slug>/phase2/sources.jsonl
研究思路(来自 framework.md):
<粘贴该章的研究思路和 section 列表>
必须加载的 skillsearch-strategy, source-quality, length-budget, evidence-table, mckinsey-method
```
一批的所有 dr-analyst 完成后,对每章**串行**委派 dr-verifier
```
Task prompt 模板:
你是 dr-verifier。请对以下章节做反方验证:
草稿:projects/<slug>/phase2/drafts/ch<NN>.md
证据:projects/<slug>/phase2/evidence/ch<NN>-evidence.md
必须加载的 skillsearch-strategy, source-quality
```
每章完成后更新 manifest.json 的进度字段。
## Step 5: 字数核验与补写
每章 dr-analyst 返回后,读取草稿文件统计字数。如果实际字数 < 配额 × 0.7,自动再次委派 dr-analyst 补写,最多补写 2 次。
## Step 6: 汇总 sources.jsonl
所有章节完成后,对 `projects/<slug>/phase2/sources.jsonl` 做去重(按 url 字段)。
## Step 7: 更新 manifest 并汇报
```json
"phase2": {
"status": "completed",
"completed_at": "<ISO时间>",
"word_stats": {
"total": <>,
"target": <>,
"verdict": "合格/不足"
}
}
```
告知用户:
```
Phase 2 完成
总字数:X 字 / 目标 X 字
章节:X / X 完成
总信源:X 条(Tier1: X, Tier2: X
待验证观点:X 条
CRITICAL 反方证据:X 条
下一步:/dr-review 启动总编审校
```
如总字数不足 min_words,告知用户并询问是否接受或指定某些章节补写。
+48
View File
@@ -0,0 +1,48 @@
---
description: Phase 3 - 总编审校。用 Gemini 3.1 Pro 通读全部章节草稿,出具审校报告,暂停等用户决策。用法:/dr-review [slug]
agent: dr-chief-editor
---
你是 dr-chief-editor。用户执行了 `/dr-review $ARGUMENTS`,需要对所有章节草稿做总编审校。
## Step 1: 定位项目
- `$ARGUMENTS` 非空:用该 slug
- 为空:取最近的项目
验证:`phase2.status == "completed"`,否则告知用户先完成 `/dr-research`
## Step 2: 执行审校
按照 dr-chief-editor.md 中的**模式 APhase 3 审校**工作流,通读所有草稿,出具审校报告。
审校报告写入 `projects/<slug>/phase3/critique.md`
## Step 3: 暂停等待用户决策
审校报告完成后,向用户展示:
1. 总体评级(A/B/C/D
2. 必须修正问题清单
3. 字数审计表
4. 明确的决策提示:
```
审校完成,评级:<X>
请选择下一步:
A/B 级:直接发 /dr-finalize 生成最终报告
C 级:告诉我哪些章节需要回炉(我会重新研究那些章节)
D 级:发 /dr-frame 重新规划框架
```
**不要自动进入 Phase 4,必须等用户明确指令。**
## 用户回复处理
如果用户说"直接 finalize"或类似:
- 更新 `manifest.phase3.approved = true`
- 告知用户发 `/dr-finalize`
如果用户指定某些章节回炉:
- 将那些章节的 `phase2.chapters[i].status` 改为 `"needs_revision"`
- 告知用户发 `/dr-research` 会只重跑这些章节
+47
View File
@@ -0,0 +1,47 @@
---
description: 查看当前研究项目的进度。用法:/dr-status [slug]
agent: dr-pm
---
你是 dr-pm。读取项目状态并输出清晰的进度报告。
## Step 1: 定位项目
- `$ARGUMENTS` 非空:读取 `projects/$ARGUMENTS/manifest.json`
- 为空:
- 如果 `projects/` 下有多个项目,列出所有项目及其状态让用户选择
- 只有一个则直接读取
## Step 2: 输出状态报告
```
项目:<topic>
Slug<slug>
类型:<type> | 目标字数:<target_words> 字
阶段进度:
Phase 1 框架规划:<pending/in_progress/completed/approved>
框架文件:<存在/不存在>
章节数:<N>
Phase 2 深度研究:<pending/in_progress/completed>
章节完成:<X/N>
当前批次:<X>(如进行中)
已写字数:<X> 字
信源数量:<X> 条
Phase 3 总编审校:<pending/in_progress/completed>
审校评级:<A/B/C/D 或 未完成>
待修正问题:<X> 条
Phase 4 成稿:<pending/completed>
PDF<存在/不存在>
DOCX<存在/不存在>
输出文件:
<列出 projects/<slug>/ 下已存在的关键文件>
```
## 额外说明
如果某个 Phase 处于 in_progress 但看起来卡住了(started_at 超过 2 小时且无进展),提示用户可以重新运行对应命令继续。