feat(rvw): Implement RVW V2.0 Data Forensics Module - Day 6 StatValidator
Summary: - Implement L2 Statistical Validator (CI-P consistency, T-test reverse) - Implement L2.5 Consistency Forensics (SE Triangle, SD>Mean check) - Add error/warning severity classification with tolerance thresholds - Support 5+ CI formats parsing (parentheses, brackets, 95% CI prefix) - Complete Python forensics service (types, config, validator, extractor) V2.0 Development Progress (Week 2 Day 6): - Day 1-5: Python service setup, Word table extraction, L1 arithmetic validator - Day 6: L2 StatValidator + L2.5 consistency forensics (promoted from V2.1) Test Results: - Unit tests: 4/4 passed (CI-P, SE Triangle, SD>Mean, T-test) - Real document tests: 5/5 successful, 2 reasonable WARNINGs Status: Day 6 completed, ready for Day 7 (Skills Framework) Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
# **RVW V2.0 架构升级方案:基于 Skills 的柔性审稿引擎**
|
||||
|
||||
**文档版本:** v2.0 (Strategic Release)
|
||||
|
||||
**最后更新:** 2026-02-16
|
||||
|
||||
**核心理念:** **认知依赖注入 (Cognitive Dependency Injection)** —— 将审稿能力封装为原子化的 Skills,通过配置引擎(Profile)动态注入给 SOP 引擎(报告)和 ReAct 引擎(对话)。
|
||||
|
||||
**架构依据:** 基于《AI Skills 落地应用探讨》与中英文期刊差异化需求。
|
||||
|
||||
## **1\. 核心定义:什么是 RVW Skills?**
|
||||
|
||||
在 V2.0 架构中,Skill 不再是一个简单的函数,它是连接\*\*非确定性大模型(LLM)**与**确定性业务系统(Code)\*\*的桥梁。
|
||||
|
||||
一个标准的 **RVW Skill** 包含三个不可分割的部分(Schema First 原则):
|
||||
|
||||
1. **语义接口 (Semantic Interface)**:告诉 LLM "什么时候用"(例如:"当需要验证药物剂量时调用")。
|
||||
2. **数据契约 (Schema)**:严格定义的输入输出结构(例如:drug\_name: string, dosage: number),确保代码执行的安全性。
|
||||
3. **原生函数 (Native Function)**:实际执行任务的代码(Python/SQL),**“推理在模型,执行在代码”**。
|
||||
|
||||
## **2\. 总体架构:双脑协同与护栏防御体系**
|
||||
|
||||
我们摒弃了 V1.0 的线性流程,采用了 **“双脑协同 \+ 中间件护栏”** 的立体架构。
|
||||
|
||||
### **系统架构图**
|
||||
|
||||
graph TD
|
||||
subgraph "输入层"
|
||||
Doc\[稿件 PDF/Word\]
|
||||
Profile\[期刊配置 Profile\]
|
||||
end
|
||||
|
||||
subgraph "Layer 1: 护栏中间件 (Middleware Guardrails)"
|
||||
direction TB
|
||||
SafeGuard\[🛡️ 政治与合规护栏\]
|
||||
note1\[Pre-Hook: OCR地图/敏感词拦截\<br\>Post-Hook: 幻觉检测\]
|
||||
end
|
||||
|
||||
subgraph "Layer 2: 审稿编排引擎 (The Core)"
|
||||
Registry\[🧩 Skills Registry 技能注册表\]
|
||||
Router\[🚦 Skill Router 动态路由\]
|
||||
Context\[Shared Context 共享上下文\]
|
||||
end
|
||||
|
||||
subgraph "Layer 3: 原子能力库 (Skills)"
|
||||
direction BT
|
||||
S\_Native\[🐍 Python计算 Skill\<br\>(数据造假/统计验证)\]
|
||||
S\_RAG\[🧠 知识检索 Skill\<br\>(医学常识/pgvector)\]
|
||||
S\_Search\[🌍 外部搜索 Skill\<br\>(竞品对标/ASL联动)\]
|
||||
S\_Logic\[⚖️ 逻辑校验 Skill\<br\>(入排标准/pg\_bigm)\]
|
||||
end
|
||||
|
||||
subgraph "输出层 (双脑应用)"
|
||||
SOP\[🧠 左脑: SOP 流程引擎\<br\>(生成静态审稿报告)\]
|
||||
ReAct\[🧠 右脑: ReAct 对话引擎\<br\>(交互式学术 Copilot)\]
|
||||
end
|
||||
|
||||
Doc \--\> SafeGuard
|
||||
SafeGuard \--阻断/通过--\> Router
|
||||
Profile \--\> Router
|
||||
|
||||
Router \--动态加载--\> Registry
|
||||
Registry \<--\> S\_Native & S\_RAG & S\_Search & S\_Logic
|
||||
|
||||
Registry \--\> SOP
|
||||
Registry \--\> ReAct
|
||||
|
||||
SOP \--\> Context
|
||||
Context \<--\> ReAct
|
||||
|
||||
## **3\. 三层防御与赋能体系 (The 3-Layer Capability)**
|
||||
|
||||
### **Layer 1: 政治与合规护栏 (Middleware Guardrail)**
|
||||
|
||||
*针对痛点:中文期刊的政治红线(地图、涉敏言论)。*
|
||||
|
||||
* **性质**:这不是一个可选的 Skill,而是系统级的 **Interceptor (拦截器)**。
|
||||
* **机制**:
|
||||
* **Pre-Hook (输入前)**:
|
||||
* 调用 OCR 识别图片 \-\> 匹配“中国地图特征库” \-\> 缺失藏南/南海 \-\> **熔断拒稿**。
|
||||
* 扫描全文 \-\> 匹配“高危敏感词库” \-\> 命中 \-\> **熔断拒稿**。
|
||||
* **Post-Hook (输出后)**:
|
||||
* 扫描 LLM 生成的审稿意见,防止 AI 产生不当言论。
|
||||
* **配置策略**:中文核心期刊强制开启 (Blocker 级别),英文期刊可降级为 Warning 或关闭。
|
||||
|
||||
### **Layer 2: 原生计算能力 (Native Execution Skills)**
|
||||
|
||||
*针对痛点:数据造假、统计学错误。*
|
||||
|
||||
* **核心原则**:LLM **只写参数,不负责计算**。
|
||||
* **典型 Skill:DataForensicsSkill (数据侦探)**
|
||||
* **Step 1 (LLM)**:从 Markdown 表格中提取数据,生成 JSON:{"group\_a\_n": 50, "group\_a\_mean": 12.5, "group\_a\_sd": 2.1}。
|
||||
* **Step 2 (Python)**:调用 scipy 库复核 P 值,使用 Benford's Law (本福特定律) 检查首位数字分布。
|
||||
* **Step 3 (LLM)**:根据 Python 返回的 {"p\_value\_consistent": false, "benford\_score": 0.04} 生成自然语言警告。
|
||||
|
||||
### **Layer 3: 学术智慧能力 (RAG & Agent Skills)**
|
||||
|
||||
*针对痛点:医学常识错误、竞品对标。*
|
||||
|
||||
* **典型 Skill:MedicalLogicSkill (常识校验)**
|
||||
* **底层支持**:利用 **Postgres (pgvector)** 挂载《临床用药指南》和《诊断学参考值》。
|
||||
* **流程**:提取“卡托普利 500mg” \-\> 向量检索知识库 \-\> 发现正常范围是 12.5-50mg \-\> 触发警告。
|
||||
* **典型 Skill:BenchmarkSkill (竞品对标)**
|
||||
* **联动**:调用 ASL (智能文献) 模块 API。
|
||||
* **流程**:搜索相似文献 \-\> 对比样本量与方法学 \-\> 生成“竞争力分析报告”。
|
||||
|
||||
## **4\. 固定的 vs. 可配置的 (Architecture Boundary)**
|
||||
|
||||
基于“工厂模式”理念,我们将系统划分为“流水线(固定)”和“模具(可配置)”。
|
||||
|
||||
### **✅ 固定的 (Infrastructure \- 平台底座)**
|
||||
|
||||
所有期刊共用,不随业务变化:
|
||||
|
||||
1. **Middleware Pipeline**:支持 Pre/Post Hook 的拦截器架构。
|
||||
2. **Skill Registry**:技能注册与发现机制。
|
||||
3. **Postgres-Only Stack**:
|
||||
* pgvector:承载医学知识库、稿件内容记忆。
|
||||
* pg\_bigm:承载精确的术语匹配(如药物名)。
|
||||
* pg-boss:承载长耗时任务(如全网文献对标)。
|
||||
4. **Python Microservice**:提供 OCR、PDF 解析、统计计算等“硬核”算力。
|
||||
|
||||
### **🎛️ 可配置的 (Journal Profile \- 业务逻辑)**
|
||||
|
||||
通过 JSON 配置定义,适应不同期刊:
|
||||
|
||||
1. **Guardrail Strictness (护栏严格度)**:
|
||||
* "political\_check": "BLOCKER" (中文核心) vs "WARNING" (普通期刊)。
|
||||
2. **Skill Selection (技能组合)**:
|
||||
* **中文组合**:DataForensics \+ MedicalLogic \+ Editorial\_CN。
|
||||
* **英文组合**:Methodology\_CONSORT \+ Benchmark\_PubMed \+ Editorial\_EN。
|
||||
3. **Chat Persona (对话人格)**:
|
||||
* "persona": "严厉的政治审查员" vs "persona": "建设性的学术导师"。
|
||||
|
||||
## **5\. 场景演练:从上传到对话**
|
||||
|
||||
### **场景 A:中文核心期刊(政治与数据为王)**
|
||||
|
||||
1. **上传**:文件经过 **Layer 1 护栏**。OCR 发现地图缺失,直接抛出 FatalError: MapIntegrityViolation,流程终止。用户收到拒稿通知。
|
||||
2. **修正后上传**:通过护栏。
|
||||
3. **SOP 引擎**:自动调用 DataForensicsSkill。Python 后端发现“表1数据标准差异常”,写入报告。
|
||||
4. **ReAct 引擎 (Chat)**:用户问:“为什么说我数据有问题?”
|
||||
* Chat Agent 读取 Shared Context。
|
||||
* 回答:“根据 Benford 定律检测,您数据的首位数字分布偏离自然规律 30%,建议复核原始记录。”
|
||||
|
||||
### **场景 B:英文顶刊(创新与对标为王)**
|
||||
|
||||
1. **上传**:跳过政治护栏(配置为通过)。
|
||||
2. **SOP 引擎**:调用 BenchmarkSkill。ASL 模块检索到 3 篇上个月发表的类似文章,样本量均大于本稿件。
|
||||
3. **报告生成**:在“创新性评估”一栏标注:“样本量竞争力不足 (Low Competitiveness)”。
|
||||
4. **ReAct 引擎 (Chat)**:用户问:“我该怎么修改才能达到发表标准?”
|
||||
* Chat Agent 调用 MethodologySkill。
|
||||
* 回答:“建议参考 *Smith et al. (2025)* 的多中心设计,将样本量扩充至 200 例,并补充亚组分析。”
|
||||
|
||||
## **6\. 开发实施路线图 (Implementation Roadmap)**
|
||||
|
||||
### **Phase 1: 基础设施与定义 (Infrastructure)**
|
||||
|
||||
* \[ \] **定义 Schema**:在 backend/src/modules/rvw/skills/definitions/ 下定义 SkillInterface 和各类 Skill 的 JSON Schema。
|
||||
* \[ \] **建立 Registry**:实现简单的内存级 Skill 注册表。
|
||||
|
||||
### **Phase 2: 护栏与原生技能 (The Hard Stuff)**
|
||||
|
||||
* \[ \] **实现 Middleware**:在 Document Service 中插入 Pre-Hook 逻辑。
|
||||
* \[ \] **开发 Python Skills**:在 python-extraction 服务中新增 /analyze-table 和 /ocr-check 接口。
|
||||
* \[ \] **实现 PoliticalGuardrail**:基础的敏感词匹配 \+ 地图 OCR 占位符。
|
||||
|
||||
### **Phase 3: 学术技能与双脑打通 (The Smart Stuff)**
|
||||
|
||||
* \[ \] **实现 MedicalLogicSkill**:利用现有的 pgvector 基础设施。
|
||||
* \[ \] **集成 ASL**:开发 BenchmarkSkill 调用 ASL 模块 API。
|
||||
* \[ \] **升级 Chat**:让 AIA 组件能读取审稿报告的 Context,并具备 Function Calling 能力。
|
||||
|
||||
## **7\. 总结**
|
||||
|
||||
V2.0 架构不仅仅是功能的堆砌,而是**系统哲学的转变**:
|
||||
|
||||
* 从 **"LLM 尽力而为"** 转向 **"Guardrail 绝对防御"**。
|
||||
* 从 **"单一审稿报告"** 转向 **"交互式学术伙伴"**。
|
||||
* 从 **"文本生成"** 转向 **"工具调用 (Tool Use)"**。
|
||||
|
||||
这套架构将确保 RVW 既能满足中文期刊的“生死红线”,又能满足英文期刊的“学术高度”。
|
||||
Reference in New Issue
Block a user