git:20260805.16a3b0e to git:20260808.91b52c9

5 added, 0 removed. Audit A to A.

---
name: fin-full-pipeline
description: 经济金融研究端到端完整流程。从研究想法到可投稿论文,覆盖文献综述、想法生成、新颖性验证、实证方法设计、论文大纲、正文写作、图表生成、LaTeX编译和投稿前检查。
trigger: "研究...|完整流程...|从想法到论文...|端到端..."
argument-hint: "[research-direction]"
---
# fin-full-pipeline:经济金融研究端到端完整流程
端到端的经济金融学术研究流程,从用户描述研究方向开始,到生成可投稿论文 PDF 结束。
+ > **Agent-host / 隔离槽位(重要)**
+ > 若任务要求「不要询问、不要 Mock、缺失配置则跳过并写报告」:
+ > **先运行** `python scripts/agent_host_entry.py`。若非 0 退出,**停止本 Skill**,
+ > 不要自建平行复现流水线或编造结果。见 `AGENTS.md` → Agent-host protocol。
+
```
研究方向输入
阶段1: FIN_BRIEF.md 生成 [FIN_BRIEF.md]
↓ checkpoint
阶段2: 文献综述 [LIT_REVIEW.md]
↓ checkpoint
阶段3: 想法生成 + 数据验证 [IDEA_REPORT.md]
↓【想法-数据交叉验证】← P1 强制检查点,不跳过
↓ checkpoint
阶段4: 新颖性验证 [NOVELTY_REPORT.md]
↓ checkpoint
阶段5: 实证方法设计 [REFINED_DESIGN.md]
↓ checkpoint
阶段6: 数据获取 [DATA_MANIFEST.md + data/*.csv]
↓ checkpoint
阶段7: 论文大纲 [PAPER_OUTLINE.md + FIGURE_PLAN.md]
↓ checkpoint
阶段8: 正文写作 [draft_v1/main.tex]
↓ checkpoint
阶段9: 图表生成 [draft_v1/figures/*.pdf]
↓ checkpoint
阶段10: 对抗性Review [REVIEW_REPORT.md]
↓ checkpoint
阶段11: LaTeX编译 [draft_v1/main.pdf]
↓ checkpoint
阶段12: 投稿前检查 [SUBMIT_CHECK_REPORT.md]
最终输出: 可投稿论文 PDF + 完整研究包
```
---
## 核心原则:数据优先
**数据验证必须在阶段3(想法生成)完成,不等到阶段6(数据获取)才发现无数据。**
```
传统流程(有问题):
想法生成 → 新颖性验证 → 实证设计 → 数据获取 ← 到这里才发现无数据!
↓ ↓
浪费大量时间 不得不返回更换主题
改进流程(当前):
想法生成 → 【想法-数据交叉验证】→ 新颖性验证 → 实证设计 → 数据获取
↓ ↓
在此处检查数据可行性 数据已知可行,只需执行
无数据→立即告知用户 预先设计的获取方案
```
---
## 执行前的准备
### 系统准备(每次启动必须执行)
```bash
# 检查环境并初始化输出目录(PROJECT_DIR 自动取当前目录)
PROJECT_DIR="$(pwd)"
cd "$PROJECT_DIR" || exit 1
# 创建所有输出目录
mkdir -p \
output/fin-literature \
output/fin-ideas \
output/fin-novelty \
output/fin-refinement \
output/fin-experiments/data/finance \
output/fin-review/round_1 \
output/fin-manuscript/draft_v1/figures \
output/fin-manuscript/draft_v1/tables \
output/fin-manuscript/draft_v1/scripts
# 检查 Python 关键依赖
python3 -c "import json, yaml, pandas, numpy, matplotlib, seaborn, statsmodels; print('[✓] All Python deps OK')" 2>/dev/null \
|| echo '[!] Python deps missing — run: pip install pandas numpy matplotlib seaborn statsmodels pyyaml'
# 检查 LaTeX 编译器
for cmd in pdflatex xelatex bibtex; do
if command -v $cmd &>/dev/null; then
echo "[✓] $cmd"
else
echo "[!] $cmd not found"
fi
done
# 检查 Docker MCP 服务是否运行
for svc in mcp_eastmoney_reports mcp_financial mcp_enhanced_finance; do
if docker ps --format '{{.Names}}' | grep -q "^${svc}$"; then
echo "[✓] $svc running"
else
echo "[!] $svc not running"
fi
done
```
### 读取上下文(步骤1)
按优先级读取已有研究上下文:
1. `FIN_RESEARCH_PLAN.md` — 详细研究计划(最优先)
2. `FIN_BRIEF.md` — 12段式研究简报(次优先)
3. 用户直接输入的研究方向(兜底)
如果两者都不存在,则需要用户描述研究方向。
---
## 阶段详解
### 阶段1:生成 FIN_BRIEF.md
**目标:** 将用户的研究方向转化为结构化的12段式研究简报。
**触发条件:** `FIN_BRIEF.md` 不存在或内容为空。
**执行方式:**
```python
# 检查是否存在
import os
if os.path.exists("FIN_BRIEF.md"):
with open("FIN_BRIEF.md") as f:
content = f.read().strip()
if content:
print("FIN_BRIEF.md 已存在,内容如下:")
print(content[:500])
# 展示确认菜单
print("是否使用现有 FIN_BRIEF.md?(y/n)")
# 等待用户输入
# 如果用户选择 n,删除并重新生成
```
**FIN_BRIEF.md 格式(12段式):**
```markdown
# 研究简报
## 1. 研究标题
[一句话标题,≤30字]
## 2. 研究领域
[宏观金融 / 公司金融 / 资产定价 / 金融计量 / 行为金融]
## 3. 研究问题
[一句话描述核心研究问题]
## 4. 研究类型
[实证 / 理论 / 综述 / 方法创新]
## 5. 目标期刊
[JF / JFE / RFS / 经济研究 / 金融研究 / 管理世界]
## 6. 核心假设
[H1: ... H2: ... H3: ...]
## 7. 数据来源
[A股 / 美股 / 宏观 / 跨境]
## 8. 识别策略
[DID / IV / RDD / PSM / 面板GMM]
## 9. 样本期
[YYYY-YYYY]
## 10. 核心变量
- 被解释变量(Y):
- 解释变量(X):
- 控制变量:
## 11. 预期结论
[预期的实证发现]
## 12. 潜在贡献
[理论贡献 / 识别策略创新 / 数据集贡献]
```
**checkpoint 交互:**
```
════════════════════════════════════════════════════════════
阶段1:研究简报生成完成
════════════════════════════════════════════════════════════
研究标题: [标题]
研究领域: [领域]
目标期刊: [期刊]
识别策略: [策略]
样本期: [年份范围]
请选择:
(1) 确认并继续
(2) 修改某个字段
(3) 补充更多细节
(4) 重新描述研究方向
```
**必须等待用户选择**,不能自动继续。
---
### 阶段2:文献综述
**目标:** 构建研究领域的完整文献地图,识别核心文献和研究缺口。
**调用技能:**
```
Skill: fin-lit-review
"[研究方向简述,从 FIN_BRIEF.md 读取]"
```
**MCP 检索组合(优先使用):**
```
# 1. NBER 工作论文(近3年)
server: user-nber-wp
tool: get_nber_paper
params: { "query": "[研究关键词]", "year_from": 2023 }
# 2. OpenAlex 学术论文
server: user-openalex
tool: get_openalex_works
params: { "query": "[研究主题]", "per_page": 25 }
# 3. ArXiv 预印本
server: user-arxiv
tool: semantic_search
params: { "query": "[研究主题]" }
# 4. 东方财富研报(业界视角)
server: user-eastmoney-reports
tool: get_research_report
params: { "ts_code": "[相关股票代码]", "max_results": 10 }
# 5. 网络搜索(补充)
server: user-brave-search
tool: brave_web_search
params: { "query": "[研究主题 + 顶刊名]" }
```
**输出文件:**
- `output/fin-literature/LIT_REVIEW.md` — 完整文献综述(≥3000字)
- `output/fin-literature/LIT_SUMMARY.md` — 精简版(≤1000字)
**checkpoint 交互:**
```
════════════════════════════════════════════════════════════
阶段2:文献综述完成
════════════════════════════════════════════════════════════
核心文献:
• [文献1]: [主要发现]
• [文献2]: [主要发现]
研究缺口:
• [缺口1]: [描述]
• [缺口2]: [描述]
覆盖期刊: JF / JFE / RFS / 经济研究
请选择:
(1) 继续下一阶段
(2) 补充检索 [具体方向] 的文献
(3) 调整研究方向(缺口与我的想法不完全匹配)
```
---
### 阶段3:想法生成 + 想法-数据交叉验证(P1 强制检查点)
**目标:** 生成8-12个研究想法,过滤后保留数据可行的想法。
**调用技能:**
```
Skill: fin-generate-idea
"[研究方向,从 FIN_BRIEF.md 读取]"
```
#### 子步骤 3A:想法生成
**核心逻辑:**
```python
from scripts.agent_pipeline import AgentPipeline, AgentPipelineConfig
config = AgentPipelineConfig(
topic="[研究方向]",
venue="[目标期刊]",
research_field="[研究领域]",
use_hitl=True, # outline/literature/draft gates; set False only for batch CI
visualize=True,
)
pipeline = AgentPipeline(config=config)
# 生成候选想法(8-12个)
ideas = pipeline._orchestrator.generate_ideas(topic="[研究方向]")
```
**想法格式:**
```python
ideas = [
{
"id": "idea_001",
"title": "关税冲击与资本结构调整速度",
"description": "利用DID分析2018年中美关税战对企业资本结构调整速度的影响",
"keywords": ["tariff", "capital structure", "DID", "A-share"],
"hypothesis": "H1: 关税暴露程度越高,企业资本结构调整速度下降越显著",
"novelty_score": 8.5, # 1-10
"data_feasibility": "high", # high/medium/low
},
# ... 8-12个想法
]
```
**想法排序标准:**
1. 数据可行性(必须先满足)
2. 新颖性评分(目标期刊查重)
3. 理论贡献潜力
4. 实证可操作性
#### 子步骤 3B:【P1 强制】想法-数据交叉验证 ← 绝对不能跳过
**必须执行的数据验证:**
```python
from scripts.idea_data_checker import IdeaDataValidator
validator = IdeaDataValidator(ideas=ideas)
report = validator.validate_all()
validator.print_report(report)
# report.idea_results[0] 包含:
# - idea: 原始想法
# - feasibility: Feasibility.AVAILABLE / PARTIALLY_AVAILABLE / DATA_GAP / REQUIRES_AUTH
# - feasibility_score: 0.0-1.0
# - gaps: 数据缺口列表
# - actions: 修复建议
```
**验证结果处理:**
| 可行性 | 含义 | 处理方式 |
|--------|------|---------|
| `AVAILABLE` | 真实数据可用 | ✅ 直接进入推荐名单 |
| `PARTIALLY_AVAILABLE` | 部分数据缺失 | ⚠️ 进入推荐名单,但需补充缺失数据 |
| `DATA_GAP` | 数据缺口严重 | ❌ 不进入推荐名单,需用户决策 |
| `REQUIRES_AUTH` | 需授权模拟数据 | 🔐 必须显式授权 |
**用户交互(强制):**
```
════════════════════════════════════════════════════════════
⚠️ 阶段3.5:想法-数据交叉验证(P1 强制检查点)
════════════════════════════════════════════════════════════
验证结果统计:
✅ 数据可行: X 个想法
⚠️ 部分可行: X 个想法
❌ 数据缺口: X 个想法
🔐 需授权模拟: X 个想法
──────────────────────────────────────────────────────
✅ 数据可行的想法(直接推进):
1. [想法标题]
数据: tushare, akshare
2. [想法标题]
数据: tushare, esg_rating
⚠️ 部分可行的想法(需补充数据):
3. [想法标题]
缺失: ESG评级数据
获取途径: Wind ESG数据库 / 商道融绿
❌ 数据缺口的想法(无法推进):
4. [想法标题]
缺失: 上市公司海关进出口明细(HS编码)
获取途径: CSMAR海关数据库(需机构账号)
网址: https://www.gtadata.com
──────────────────────────────────────────────────────
请选择:
(1) 选择想法1(数据可行)
(2) 选择想法2(数据可行)
(3) 补充缺失数据后再继续(优先获取 [数据名称])
(4) 授权使用模拟数据(仅演示用,论文不能发表)
(5) 更换研究方向
```
**禁止事项:**
- ❌ 禁止跳过此检查点
- ❌ 禁止静默 fallback 到模拟数据
- ❌ 禁止将 `DATA_GAP` 状态的想法推荐给用户
- ❌ 禁止在用户未授权的情况下使用模拟数据
**硬中断条件:** 如果所有想法都是 `DATA_GAP` 且没有替代方案,流程必须停止。
```python
validated = [r for r in report.idea_results if r.feasibility in (
Feasibility.AVAILABLE, Feasibility.PARTIALLY_AVAILABLE
)]
if not validated:
print("⚠️ 所有候选想法均无数据支持,流程硬中断")
print("请选择:")
print(" (1) 补充数据(将数据文件放入 data/ 目录)")
print(" (2) 更换研究方向")
# 等待用户输入
# 如果用户选择继续处理,确保只有有数据的想法进入后续阶段
```
**输出文件:**
- `output/fin-ideas/IDEA_REPORT.md` — 完整想法报告(含数据验证结果)
- `output/fin-ideas/IDEA_CANDIDATES.md` — 精简版 TOP 3-5
---
### 阶段4:新颖性验证
**目标:** 在 JF/JFE/RFS/arXiv/中文顶刊中检索,确认研究想法的新颖性。
**调用技能:**
```
Skill: fin-novelty-check
"[选定想法的描述]"
```
**检索覆盖矩阵:**
| 来源 | 时间范围 | 重要性 | 检索词示例 |
|------|---------|--------|-----------|
| JF/JFE/RFS/JME | 近5年 | 最高 | `carbon trading + innovation` |
| 经济研究/金融研究/管理世界 | 近5年 | 很高(A股必查) | `碳排放权交易 + 绿色创新` |
| arXiv q-fin | 近2年 | 高 | `tariff + innovation + DID` |
| NBER Working Papers | 近3年 | 高 | `trade war + capital structure` |
| SSRN | 近2年 | 中高 | 补充检索 |
| 东方财富研报 | 无限制 | 中 | 业界视角补充 |
**输出文件:**
- `output/fin-novelty/NOVELTY_REPORT.md` — 新颖性报告
**checkpoint 交互:**
```
════════════════════════════════════════════════════════════
阶段4:新颖性验证完成
════════════════════════════════════════════════════════════
综合评分: X/10
评估等级: 高度新颖 / 中度新颖 / 缺乏新颖性
最接近的先例:
• [文献]: [主要方法,与本研究的区别]
主要风险:
• [reviewer最可能引用的先例]
差异化策略:
• [本研究如何区分]
请选择:
(1) 继续细化该方向(新颖性可接受)
(2) 调整研究角度以更好区分
(3) 更换研究方向
(4) 查看详细报告后再决定
```
---
### 阶段5:实证方法设计
**目标:** 将研究想法细化为完整可执行的实证方案。
**调用技能:**
```
Skill: fin-experiment-design
"[选定想法的描述 + REFINED_DESIGN.md]"
```
**识别策略选择决策树:**
```
用户描述研究方向
是否存在明确的外生冲击事件?
↓ yes ↓ no
是否存在对照组? 是否存在工具变量?
↓ yes ↓ no ↓ yes ↓ no
DID 是否有 IV/2SLS 面板回归
清晰断点? + 安慰剂检验
↓ yes
RDD
```
**输出文件:**
- `output/fin-refinement/REFINED_DESIGN.md` — 细化后的研究设计
- `output/fin-refinement/EXPERIMENT_PLAN.md` — 详细实验执行计划
- `output/fin-refinement/VARIABLE_DEFINITIONS.md` — 变量定义表
- `output/fin-refinement/ROBUSTNESS_PLAN.md` — 稳健性检验方案(≥6种)
- `output/fin-refinement/ENDOGENEITY_PLAN.md` — 内生性处理方案
- `output/fin-refinement/EXECUTION_CHECKLIST.md` — 实验执行检查清单
**checkpoint 交互:**
```
════════════════════════════════════════════════════════════
阶段5:实证方法设计完成
════════════════════════════════════════════════════════════
识别策略: [DID / IV / RDD / 面板GMM]
被解释变量Y: [变量名]
核心解释变量X: [变量名]
控制变量: [列表]
固定效应: [类型]
稳健性检验: [N]项
内生性处理: [方案]
请选择:
(1) 确认设计方案,继续数据获取
(2) 调整变量定义(说明要改什么)
(3) 更换识别策略(说明原因)
(4) 查看完整设计报告
```
---
### 阶段6:数据获取
**目标:** 根据 REFINED_DESIGN.md 获取所有所需数据。
**调用技能:**
```
Skill: fin-data-acquisition
"[REFINED_DESIGN.md]"
```
#### 【关键】数据源预检查(必须首先执行)
```python
from scripts.data_source_checker import DataSourceChecker, DataRequirement
requirements = [
DataRequirement(
name="financial_data",
user_facing_name="A股财务数据",
description="资产负债率、ROA、规模等公司财务指标",
sources=["tushare", "wind", "csmar", "akshare"],
required=True,
),
DataRequirement(
name="customs_data",
user_facing_name="上市公司海关进出口明细(HS编码)",
description="用于计算企业关税暴露强度",
sources=["csmar_customs"],
required=True,
),
# ... 根据 REFINED_DESIGN.md 添加其他需求
]
checker = DataSourceChecker(requirements)
result = checker.run()
checker.print_report()
# 【硬中断】如果需要模拟数据
if result.requires_synthetic_data:
from scripts.pipeline_checkpoint import InteractivePipelineCheckpoint
cp = InteractivePipelineCheckpoint()
authorized = cp.authorize_synthetic_or_stop(
purpose="本研究所需的A股财务数据和海关进出口数据"
)
if not authorized:
# 流程停止,用户必须:
# - 补充真实数据,或
# - 更换研究方向
STOP_HERE
```
**MCP 数据获取示例:**
```yaml
# A股行情数据
server: user-tushare
tool: get_daily_quote
params:
ts_code: "000001.SZ"
start_date: "20200101"
end_date: "20241231"
# 财务数据
server: user-tushare
tool: get_financial_report
params:
ts_code: "000001.SZ"
report_type: "income"
# 宏观数据(无需 Key)
server: user-financial
tool: get_macro_china
params:
indicator: "gdp"
# 美股数据(无需 Key)
server: user-yfinance
tool: get_yf_historical
params:
ticker: "AAPL"
start_date: "2020-01-01"
end_date: "2024-12-31"
```
**输出文件:**
- `output/fin-experiments/DATA_MANIFEST.md` — 数据清单与来源
- `output/fin-experiments/DATA_VALIDATION.md` — 数据验证报告
- `data/finance/*.csv` — 原始数据文件(**真实数据**)
**checkpoint 交互:**
```
════════════════════════════════════════════════════════════
阶段6:数据获取完成
════════════════════════════════════════════════════════════
数据状态:
✅ 已获取: [列表]
❌ 未获取: [列表]
⚠️ 模拟: [列表]
请选择:
(1) 确认数据,继续实证分析
(2) 补充数据后再继续
(3) 查看详细数据状态报告
(4) 暂停,评估数据质量后再决定
```
---
### 阶段7:论文大纲
**目标:** 基于目标期刊生成完整的论文大纲及配套文件。
**调用技能:**
```
Skill: fin-paper-plan
"[选定想法的完整描述]"
```
**输出文件:**
- `output/fin-manuscript/PAPER_OUTLINE.md` — 完整论文大纲
- `output/fin-manuscript/FIGURE_PLAN.md` — 图表计划
- `output/fin-manuscript/TABLE_PLAN.md` — 表格计划
- `output/fin-manuscript/ABSTRACT_DRAFT.md` — 摘要草稿
**checkpoint 交互:**
```
════════════════════════════════════════════════════════════
阶段7:论文大纲生成完成
════════════════════════════════════════════════════════════
目标期刊: [期刊名]
预估字数: [X]字
结构: [N]章
大纲预览:
1. Introduction — [约X字]
2. Literature Review — [约X字]
3. Hypothesis Development — [约X字]
4. Data & Methodology — [约X字]
5. Empirical Results — [约X字]
6. Robustness Checks — [约X字]
7. Conclusion — [约X字]
图表计划: [N]张图 + [M]张表
请选择:
(1) 确认大纲,开始正文写作
(2) 修改某章节内容或长度
(3) 调整图表计划
(4) 先保存,稍后再写
```
---
### 阶段8:正文写作
**目标:** 根据 PAPER_OUTLINE.md 和 REFINED_DESIGN.md 生成完整的论文正文草稿。
**调用技能:**
```
Skill: fin-paper-draft
"[PAPER_OUTLINE.md]"
```
**执行前准备:**
```bash
# 创建 LaTeX 目录结构(PROJECT_DIR 自动取当前目录)
PROJECT_DIR="$(pwd)"
DRAFT_DIR="$PROJECT_DIR/output/fin-manuscript/draft_v1"
mkdir -p "$DRAFT_DIR/figures" "$DRAFT_DIR/tables" "$DRAFT_DIR/scripts"
```
**输出文件:**
- `output/fin-manuscript/draft_v1/main.tex` — 主文件
- `output/fin-manuscript/draft_v1/introduction.tex`
- `output/fin-manuscript/draft_v1/literature.tex`
- `output/fin-manuscript/draft_v1/methodology.tex`
- `output/fin-manuscript/draft_v1/results.tex`
- `output/fin-manuscript/draft_v1/conclusion.tex`
- `output/fin-manuscript/draft_v1/references.bib`
---
### 阶段9:图表生成
**目标:** 生成期刊级别的图表(≥300 DPI,PDF矢量格式)。
**调用技能:**
```
Skill: fin-paper-figure
"[FIGURE_PLAN.md]"
```
**DID 研究必须生成的图表:**
1. **平行趋势图** — 政策前后实验组与对照组的趋势对比
2. **安慰剂检验图** — 随机化处理时间的系数分布
3. **动态效应图** — 事件研究框架下的各期系数
**输出文件:**
- `output/fin-manuscript/draft_v1/figures/*.pdf` — 所有图表
- `output/fin-manuscript/draft_v1/scripts/generate_figures.py` — 可复现脚本
---
### 阶段10:对抗性 Review
**目标:** 对论文正文草稿进行多轮严格评审。
**调用技能:**
```
Skill: fin-review-loop
"[draft_v1/main.tex]"
```
**Review 维度:**
| 维度 | 检查项 |
|------|--------|
| 理论贡献 | 研究缺口是否真正填补? |
| 识别策略 | DID/IV/RDD 是否正确使用? |
| 数据质量 | 样本选择是否存在偏误? |
| 稳健性 | 是否有足够的稳健性检验? |
| 写作质量 | 逻辑是否清晰?表述是否准确? |
**输出文件:**
- `output/fin-review/REVIEW_REPORT.md` — 完整 review 报告
- `output/fin-review/REVIEW_STATE.json` — 每轮评分和状态
- `output/fin-review/round_*/` — 各轮详细 review
**checkpoint 交互:**
```
════════════════════════════════════════════════════════════
阶段10:Review 完成
════════════════════════════════════════════════════════════
当前轮次: X/4
综合评分: X/10
接受建议: [接受 / 大修 / 小修]
主要问题:
• [问题1]
• [问题2]
是否需要修改后重新提交?
```
---
### 阶段11:LaTeX 编译
**目标:** 编译生成可投稿的 PDF 文件。
**编译脚本:**
```bash
PROJECT_DIR="$(pwd)"
DRAFT_DIR="$PROJECT_DIR/output/fin-manuscript/draft_v1"
cd "$DRAFT_DIR"
# 检测期刊类型
if grep -qi "经济研究\|金融研究\|管理世界\|中国工业经济" main.tex; then
COMPILER=xelatex
else
COMPILER=pdflatex
fi
# 完整编译流程
$COMPILER -interaction=nonstopmode main.tex
bibtex main
$COMPILER -interaction=nonstopmode main.tex
$COMPILER -interaction=nonstopmode main.tex
# 检查结果
if [ -f "main.pdf" ]; then
echo "✅ 编译成功: main.pdf"
else
echo "❌ 编译失败,查看 compile_log.txt"
fi
```
**输出文件:**
- `output/fin-manuscript/draft_v1/main.pdf`
- `output/fin-manuscript/draft_v1/compile_log.txt`
---
### 阶段12:投稿前检查
**目标:** 全面检查匿名性、格式、图表、引用、参考文献等所有投稿必需项。
**调用技能:**
```
Skill: fin-submit-check
"[draft_v1/]"
```
**输出文件:**
- `output/fin-review/SUBMIT_CHECK_REPORT.md` — 检查报告
- `output/fin-review/SUBMIT_CHECK_ISSUES.md` — 待修复问题清单
---
## 完整输出文件结构
```
output/
├── FIN_BRIEF.md ← 研究简报
├── fin-literature/
│ ├── LIT_REVIEW.md ← 完整文献综述
│ └── LIT_SUMMARY.md ← 精简版
├── fin-ideas/
│ ├── IDEA_REPORT.md ← 完整想法报告
│ └── IDEA_CANDIDATES.md ← TOP 3-5 候选
├── fin-novelty/
│ └── NOVELTY_REPORT.md ← 新颖性验证
├── fin-refinement/
│ ├── REFINED_DESIGN.md ← 研究设计
│ ├── EXPERIMENT_PLAN.md ← 实验计划
│ ├── VARIABLE_DEFINITIONS.md ← 变量定义
│ ├── ROBUSTNESS_PLAN.md ← 稳健性方案
│ ├── ENDOGENEITY_PLAN.md ← 内生性方案
│ └── EXECUTION_CHECKLIST.md ← 执行清单
├── fin-experiments/
│ ├── DATA_MANIFEST.md ← 数据清单
│ ├── DATA_VALIDATION.md ← 数据验证
│ └── data/finance/*.csv ← 原始数据
├── fin-review/
│ ├── REVIEW_REPORT.md ← Review 报告
│ ├── REVIEW_STATE.json ← 评分状态
│ ├── SUBMIT_CHECK_REPORT.md ← 投稿检查
│ └── round_*/ ← 各轮详情
└── fin-manuscript/
├── PAPER_OUTLINE.md ← 论文大纲
├── FIGURE_PLAN.md ← 图表计划
├── TABLE_PLAN.md ← 表格计划
├── ABSTRACT_DRAFT.md ← 摘要草稿
└── draft_v1/
├── main.tex ← 主文件
├── introduction.tex
├── literature.tex
├── methodology.tex
├── results.tex
├── conclusion.tex
├── references.bib
├── figures/*.pdf ← 图表
├── tables/
├── scripts/generate_figures.py
├── main.pdf ← 编译后 PDF
└── compile_log.txt
```
---
## 禁止模式(Forbidden Patterns)
以下行为绝对禁止:
| 禁止行为 | 说明 |
|---------|------|
| 静默 fallback 到模拟数据 | 必须显式告知用户并获取授权 |
| 跳过想法-数据交叉验证 | 阶段 3.5 是 P1 强制检查点 |
| 跳过 checkpoint | 每个阶段完成后必须等待用户确认 |
| 在正文中写入模拟数据的回归系数 | 实证实数必须来自真实数据 |
| 跳过新颖性验证 | 必须检索目标期刊确认新颖性 |
| 不标注数据来源 | 所有图表必须标注数据来源 |
| 自动选择研究方向 | 用户必须明确选择 |
---
## 关键模块引用
### AgentPipeline(主类)
```python
from scripts.agent_pipeline import AgentPipeline, AgentPipelineConfig
# 基本用法
config = AgentPipelineConfig(
topic="[研究方向]",
venue="[目标期刊]",
research_field="[研究领域]",
use_hitl=True, # outline/literature/draft gates; set False only for batch CI
visualize=True,
)
pipeline = AgentPipeline(config=config)
result = pipeline.run(topic="[研究方向]")
```
### IdeaDataValidator(想法-数据验证)
```python
from scripts.idea_data_checker import IdeaDataValidator, Feasibility
validator = IdeaDataValidator(ideas=ideas)
report = validator.validate_all()
# 检查结果
for idea_result in report.idea_results:
if idea_result.feasibility == Feasibility.AVAILABLE:
# ✅ 数据可行
elif idea_result.feasibility == Feasibility.PARTIALLY_AVAILABLE:
# ⚠️ 部分可行,需补充
elif idea_result.feasibility == Feasibility.DATA_GAP:
# ❌ 数据缺口,不推荐
```
### DataSourceChecker(数据源预检查)
```python
from scripts.data_source_checker import DataSourceChecker, DataRequirement
requirements = [
DataRequirement(
name="financial_data",
user_facing_name="A股财务数据",
sources=["tushare", "akshare"],
required=True,
),
]
checker = DataSourceChecker(requirements)
result = checker.run()
if result.requires_synthetic_data:
# 硬中断,必须用户授权
pass
```
### InteractivePipelineCheckpoint(强制交互)
```python
from scripts.pipeline_checkpoint import InteractivePipelineCheckpoint, Stage, DecisionOption
cp = InteractivePipelineCheckpoint()
cp.wait_at_checkpoint(
stage=Stage.DATA_ACQUISITION,
summary="数据获取完成",
next_options=[
DecisionOption("proceed", "运行实证回归", "使用当前数据直接跑回归"),
DecisionOption("supplement", "补充数据后继续", "获取更多数据后再跑"),
],
)
```
---
## 快速命令参考
```bash
# 启动完整流水线
python scripts/agent_pipeline.py --topic "碳排放权交易对企业绿色创新的影响" --venue "经济研究"
# 快速想法验证
python scripts/idea_data_checker.py --ideas "关税+DID" --validate
# 数据源预检查
python scripts/data_source_checker.py --requirements tariff_research
# 编译论文
python scripts/research_framework/pipeline.py --topic "..." --compile
# 检查系统状态
python scripts/health_check.py
```