Sprint 1-3 Completed (Backend + Frontend): Backend (Sprint 1-2): - Implement 5-layer Agent framework (Query->Planner->Executor->Tools->Reflection) - Create agent_schema with 6 tables (agent_definitions, stages, prompts, sessions, traces, reflexion_rules) - Create protocol_schema with 2 tables (protocol_contexts, protocol_generations) - Implement Protocol Agent core services (Orchestrator, ContextService, PromptBuilder) - Integrate LLM service adapter (DeepSeek/Qwen/GPT-5/Claude) - 6 API endpoints with full authentication - 10/10 API tests passed Frontend (Sprint 3): - Add Protocol Agent entry in AgentHub (indigo theme card) - Implement ProtocolAgentPage with 3-column layout - Collapsible sidebar (Gemini style, 48px <-> 280px) - StatePanel with 5 stage cards (scientific_question, pico, study_design, sample_size, endpoints) - ChatArea with sync button and action cards integration - 100% prototype design restoration (608 lines CSS) - Detailed endpoints structure: baseline, exposure, outcomes, confounders Features: - 5-stage dialogue flow for research protocol design - Conversation-driven interaction with sync-to-protocol button - Real-time context state management - One-click protocol generation button (UI ready, backend pending) Database: - agent_schema: 6 tables for reusable Agent framework - protocol_schema: 2 tables for Protocol Agent - Seed data: 1 agent + 5 stages + 9 prompts + 4 reflexion rules Code Stats: - Backend: 13 files, 4338 lines - Frontend: 14 files, 2071 lines - Total: 27 files, 6409 lines Status: MVP core functionality completed, pending frontend-backend integration testing Next: Sprint 4 - One-click protocol generation + Word export
25 KiB
25 KiB
Protocol Agent 分阶段实施计划
版本:v1.0
创建日期:2026-01-24
一、总体规划
1.1 阶段划分
┌─────────────────────────────────────────────────────────────────────────────┐
│ Protocol Agent 开发路线图 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Phase 1: MVP完整功能 (4周) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Sprint 1 (W1) Sprint 2 (W2) Sprint 3 (W3) Sprint 4 (W4) │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 框架搭建 │ → │ 核心对话 │ → │ 前端UI │ → │ 一键生成 │ │ │
│ │ │ 数据库 │ │ 5阶段流程│ │ State │ │ Word导出 │ │ │
│ │ │ 类型定义 │ │ Prompt │ │ Panel │ │ Prompt │ │ │
│ │ │ │ │ Context │ │ 同步按钮│ │ 调优测试 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ │ │
│ │ 交付物:完整MVP,用户可通过对话完成5阶段,一键生成研究方案并下载Word │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ───────────────────────────────────────────────────────────────────────── │
│ │
│ Phase 2: 知识增强 (3周) Phase 3: 平台化 (2周) │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ □ EKB知识库建设 │ │ □ 后台配置管理 │ │
│ │ □ RAG检索集成 │ → │ □ Prompt在线调试 │ │
│ │ □ Function Calling │ │ □ 完整Trace分析 │ │
│ │ □ 高级Reflexion │ │ □ 多Agent支持 │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
1.2 里程碑定义
| 里程碑 | 时间 | 交付物 | 验收标准 |
|---|---|---|---|
| M1 | Week 2 | Agent框架 + 基础对话 | 能完成单阶段对话,Context正确存储 |
| M2 | Week 4 | MVP完整功能 | 5阶段对话 + 一键生成 + Word下载 |
| M3 | Week 7 | 知识增强版本 | RAG检索集成可用 |
| M4 | Week 9 | 平台化版本 | 后台配置管理可用 |
二、Phase 1 详细计划(4周)
Sprint 1: 基础框架搭建(Week 1)
目标:建立可复用的Agent框架骨架
任务列表
| ID | 任务 | 优先级 | 预估 | 负责人 | 状态 |
|---|---|---|---|---|---|
| 1.1 | 创建agent_schema数据库迁移 | P0 | 4h | - | ⬜ |
| 1.2 | 创建protocol_schema数据库迁移 | P0 | 2h | - | ⬜ |
| 1.3 | 定义核心类型(types/*.ts) | P0 | 3h | - | ⬜ |
| 1.4 | 实现ConfigLoader | P0 | 2h | - | ⬜ |
| 1.5 | 实现BaseAgentOrchestrator抽象类 | P0 | 4h | - | ⬜ |
| 1.6 | 实现QueryAnalyzer | P0 | 3h | - | ⬜ |
| 1.7 | 实现Planner + StageManager | P0 | 3h | - | ⬜ |
| 1.8 | 实现TraceLogger | P1 | 2h | - | ⬜ |
| 1.9 | 创建Protocol Agent初始配置数据 | P0 | 2h | - | ⬜ |
Sprint 1 产出:
- 数据库Schema创建完成
- 核心框架代码结构建立
- Agent配置可从数据库加载
详细任务说明
1.1 创建agent_schema数据库迁移
# 执行步骤
1. 更新 schema.prisma,添加 agent_schema 到 schemas 列表
2. 添加所有 agent_schema 表定义
3. 运行 npx prisma migrate dev --name add_agent_framework
4. 验证表创建成功
1.5 实现BaseAgentOrchestrator抽象类
// 核心方法清单
- constructor(dependencies)
- abstract getAgentId(): string
- abstract getContextSchema(): TContext
- async handleMessage(conversationId, userMessage, messageId): Promise<AgentResponse>
- async handleStageComplete(conversationId): Promise<StageTransitionResult>
- protected getSession(conversationId): Promise<AgentSessionState>
- protected buildResponse(...): AgentResponse
Sprint 2: Protocol Agent核心实现(Week 2)
目标:实现Protocol Agent的完整对话流程
任务列表
| ID | 任务 | 优先级 | 预估 | 负责人 | 状态 |
|---|---|---|---|---|---|
| 2.1 | 实现ProtocolOrchestrator | P0 | 4h | - | ⬜ |
| 2.2 | 实现ProtocolContextService | P0 | 3h | - | ⬜ |
| 2.3 | 实现PromptBuilder | P0 | 3h | - | ⬜ |
| 2.4 | 实现Executor(LLM调用) | P0 | 4h | - | ⬜ |
| 2.5 | 实现ProtocolExtractor(数据提取) | P0 | 4h | - | ⬜ |
| 2.6 | 实现MemoryManager | P1 | 2h | - | ⬜ |
| 2.7 | 编写5个阶段的Prompt配置 | P0 | 4h | - | ⬜ |
| 2.8 | 实现API路由 | P0 | 2h | - | ⬜ |
| 2.9 | 单元测试 | P1 | 3h | - | ⬜ |
Sprint 2 产出:
- Protocol Agent后端完整实现
- 能通过API完成对话
- Context正确保存和更新
核心交互模式:对话驱动 + 同步确认
【不需要显式的"确认完成"按钮】
用户通过两种方式推进阶段:
1. 同步按钮:AI在对话中显示"同步到方案"按钮,用户点击后数据同步
2. 口头确认:用户说"继续"/"下一步",AI识别意图后自动进入下一阶段
示例流程:
┌─────────────────────────────────────────────────────┐
│ AI: 我已整理出您的科学问题: │
│ "阿司匹林预防老年高血压患者中风的疗效研究" │
│ │
│ ┌──────────────────┐ │
│ │ ✅ 同步到方案 │ ← 内嵌在AI回复中 │
│ └──────────────────┘ │
│ │
│ 确认后,我们可以继续进行PICO梳理。 │
├─────────────────────────────────────────────────────┤
│ User: 好的,继续吧 │
├─────────────────────────────────────────────────────┤
│ AI: 好的,让我们进入PICO梳理阶段... │
└─────────────────────────────────────────────────────┘
详细Prompt配置
科学问题阶段 Prompt:
你正在帮助研究者明确研究的核心科学问题。
引导要点:
1. 询问想解决什么临床问题
2. 了解目标人群是谁
3. 明确期望达成的目标
4. 探讨研究的临床意义
当前已知信息:
{{contextSummary}}
对话策略:
- 用温和专业的语气引导用户
- 当收集到足够信息后,整理出科学问题,并提供"同步到方案"选项
- 同步后,询问用户是否继续进行PICO梳理
如果用户提供了信息,在回复末尾提取:
<extracted_data>
{
"content": "科学问题表述",
"clinicalBackground": "临床背景",
"researchGap": "研究空白",
"readyToSync": true // 是否可以同步
}
</extracted_data>
PICO阶段 Prompt:
基于已确定的科学问题,现在需要明确PICO四要素。
科学问题:{{scientificQuestion.content}}
请引导用户确定:
- P (Population): 研究人群的特征和入选标准
- I (Intervention): 干预措施的具体内容
- C (Comparison): 对照组的设置
- O (Outcome): 主要和次要结局指标
对话策略:
- 可以分多轮逐步收集各要素
- 当四要素都明确后,提供"同步到方案"选项
- 同步后,询问用户是否继续进行研究设计
提取格式:
<extracted_data>
{
"P": {"value": "", "details": ""},
"I": {"value": "", "details": ""},
"C": {"value": "", "details": ""},
"O": {"value": "", "details": ""},
"readyToSync": true
}
</extracted_data>
观察指标阶段 Prompt(新增):
基于PICO中的结局指标(O),现在需要详细设计观察指标。
已确定的PICO:{{pico}}
研究设计:{{studyDesign}}
请引导用户明确:
1. 主要结局指标(Primary Endpoint)
- 指标名称、定义、测量方法、评价时点
2. 次要结局指标(Secondary Endpoints)
3. 安全性指标(Safety Endpoints)
4. 探索性指标(Exploratory Endpoints,可选)
对话策略:
- 首先确认主要结局指标,这是最重要的
- 然后引导设置次要和安全性指标
- 当指标体系完整后,提供"同步到方案"选项
提取格式:
<extracted_data>
{
"primary": [{"name": "", "definition": "", "method": "", "timePoint": ""}],
"secondary": [...],
"safety": [...],
"readyToSync": true
}
</extracted_data>
Sprint 3: 前端实现(Week 3)
目标:完成State Panel、同步按钮和Action Card UI
任务列表
| ID | 任务 | 优先级 | 预估 | 负责人 | 状态 |
|---|---|---|---|---|---|
| 3.1 | Protocol Agent入口页面 | P0 | 2h | - | ⬜ |
| 3.2 | 实现useProtocolAgent Hook | P0 | 3h | - | ⬜ |
| 3.3 | 实现protocolAgentStore | P1 | 2h | - | ⬜ |
| 3.4 | 实现StatePanel组件 | P0 | 4h | - | ⬜ |
| 3.5 | 实现StageProgress组件(5阶段) | P0 | 2h | - | ⬜ |
| 3.6 | 实现ContextDisplay组件 | P0 | 3h | - | ⬜ |
| 3.7 | 实现SyncButton组件(内嵌AI回复) | P0 | 3h | - | ⬜ |
| 3.8 | 实现ActionCard组件 | P0 | 2h | - | ⬜ |
| 3.9 | 与现有AIStreamChat集成 | P0 | 3h | - | ⬜ |
| 3.10 | 样式调整和响应式 | P1 | 2h | - | ⬜ |
Sprint 3 产出:
- 完整的Protocol Agent界面
- State Panel实时显示5阶段Context
- "同步到方案"按钮内嵌在AI回复中
- Action Card交互
核心组件:SyncButton(同步按钮)
// SyncButton - 内嵌在AI回复中的同步按钮
interface SyncButtonProps {
stageId: string; // 当前阶段
extractedData: any; // 要同步的数据
onSync: () => void; // 同步回调
synced: boolean; // 是否已同步
}
// 在AI回复中的展示效果:
// ┌─────────────────────────────────────────────┐
// │ AI: 我已整理出您的科学问题: │
// │ "阿司匹林预防老年高血压患者中风研究" │
// │ │
// │ ┌──────────────────┐ │
// │ │ ✅ 同步到方案 │ ← SyncButton │
// │ └──────────────────┘ │
// │ │
// │ 同步后我们可以继续下一阶段。 │
// └─────────────────────────────────────────────┘
页面布局设计
┌─────────────────────────────────────────────────────────────────┐
│ Header: 研究方案制定 Agent 当前阶段: Step 3: 研究设计 │
├───────────────────────────────────┬─────────────────────────────┤
│ │ │
│ Chat Area │ State Panel │
│ ┌─────────────────────────────┐ │ ┌───────────────────────┐│
│ │ │ │ │ 📋 方案状态 (Context) ││
│ │ AI: 您好!我是研究方案... │ │ │ ││
│ │ │ │ │ 01 科学问题 ✓ ││
│ │ User: 我想做一个糖尿病... │ │ │ 阿司匹林预防老年... ││
│ │ │ │ │ ││
│ │ AI: 好的,我已整理出... │ │ │ 02 PICO ✓ ││
│ │ ┌────────────────┐ │ │ │ P: ≥65岁高血压患者 ││
│ │ │ ✅ 同步到方案 │ │ │ │ I: 阿司匹林100mg/d ││
│ │ └────────────────┘ │ │ │ C: 安慰剂 ││
│ │ │ │ │ O: 脑卒中发生率 ││
│ │ User: 继续吧 │ │ │ ││
│ │ │ │ │ 03 研究设计 (当前) ││
│ │ AI: 好的,进入研究设计... │ │ │ RCT | 双盲 | 多中心 ││
│ │ │ │ │ ││
│ │ │ │ │ 04 样本量 ○ ││
│ │ │ │ │ 待计算... ││
│ │ │ │ │ ││
│ │ │ │ │ 05 观察指标 ○ ││
│ │ │ │ │ 待定义... ││
│ └─────────────────────────────┘ │ ├───────────────────────┤│
│ ┌─────────────────────────────┐ │ │ 进度: ████░░░░ 40% ││
│ │ [输入您的指令...] [发送]│ │ │ ││
│ └─────────────────────────────┘ │ │ [🚀 一键生成研究方案] ││
│ │ │ (5阶段完成后可用) ││
│ │ └───────────────────────┘│
│ │ │
└───────────────────────────────────┴─────────────────────────────┘
Sprint 4: 一键生成 + 集成测试(Week 4)
目标:实现一键生成研究方案、Prompt调优、端到端测试
任务列表
| ID | 任务 | 优先级 | 预估 | 负责人 | 状态 |
|---|---|---|---|---|---|
| 4.1 | 设计研究方案生成Prompt | P0 | 4h | - | ⬜ |
| 4.2 | 实现ProtocolGenerationService | P0 | 3h | - | ⬜ |
| 4.3 | 实现生成API端点 | P0 | 2h | - | ⬜ |
| 4.4 | 实现Word文档导出(docx库) | P0 | 4h | - | ⬜ |
| 4.5 | 前端:一键生成按钮与预览页 | P0 | 4h | - | ⬜ |
| 4.6 | 实现样本量计算器Action Card | P1 | 2h | - | ⬜ |
| 4.7 | Prompt调优(5个阶段) | P0 | 6h | - | ⬜ |
| 4.8 | 端到端测试 | P0 | 4h | - | ⬜ |
| 4.9 | Bug修复和优化 | P0 | 4h | - | ⬜ |
| 4.10 | 文档更新 | P1 | 2h | - | ⬜ |
Sprint 4 产出:
- 一键生成研究方案功能
- Word文档下载
- 所有Prompt调优完成
- 端到端测试通过
- MVP可交付
一键生成研究方案
触发条件:5个阶段(科学问题、PICO、研究设计、样本量、观察指标)全部完成
生成Prompt:
你是一位资深的临床研究方法学专家,请基于以下核心要素生成一份完整、规范的临床研究方案。
## 核心要素
### 科学问题
{{scientificQuestion.content}}
### PICO要素
- **研究人群(P)**: {{pico.P.value}} - {{pico.P.details}}
- **干预措施(I)**: {{pico.I.value}} - {{pico.I.details}}
- **对照措施(C)**: {{pico.C.value}} - {{pico.C.details}}
- **结局指标(O)**: {{pico.O.value}} - {{pico.O.details}}
### 研究设计
- 研究类型: {{studyDesign.type}}
- 盲法: {{studyDesign.blinding}}
- 随机化: {{studyDesign.randomization}}
- 研究周期: {{studyDesign.duration}}
### 样本量
- 总样本量: {{sampleSize.total}}
- 每组: {{sampleSize.perGroup}}
- 计算依据: {{sampleSize.justification}}
### 观察指标
**主要结局指标**: {{endpoints.primary}}
**次要结局指标**: {{endpoints.secondary}}
**安全性指标**: {{endpoints.safety}}
---
请生成包含以下章节的完整研究方案:
1. 研究背景与立题依据
2. 研究目的
3. 研究方法(研究类型、设计、干预、对照)
4. 受试者选择(入选标准、排除标准)
5. 观察指标与评价标准
6. 统计分析计划
7. 质量控制
8. 伦理考虑
9. 研究进度安排
请使用专业规范的学术语言,确保内容完整、逻辑清晰。
Word导出:
// 使用 docx 库生成Word文档
import { Document, Paragraph, TextRun, HeadingLevel, Packer } from 'docx';
async function generateProtocolWord(content: string, metadata: any): Promise<Buffer> {
const doc = new Document({
sections: [{
children: [
// 封面
new Paragraph({
children: [new TextRun({ text: '临床研究方案', bold: true, size: 48 })],
heading: HeadingLevel.TITLE,
}),
// ... 正文(Markdown转docx)
]
}]
});
return await Packer.toBuffer(doc);
}
Reflexion(P2优先级,可延后)
MVP阶段简化处理:
- 在同步前由AI在对话中进行基础检查
- 完整的ReflexionEngine放到Phase 2实现
AI回复示例:
"我已整理出您的PICO要素。在同步前,让我确认一下:
✓ P: 研究人群已明确
✓ I: 干预措施已定义
✓ C: 对照组已设置
✓ O: 结局指标已确定
[✅ 同步到方案]"
三、Phase 2 计划概要(3周)
Sprint 5-6: 知识库建设(Week 5-6)
| ID | 任务 | 优先级 | 预估 |
|---|---|---|---|
| 6.1 | 创建knowledge_schema数据库迁移 | P0 | 2h |
| 6.2 | 实现KnowledgeDocService | P0 | 4h |
| 6.3 | 实现KnowledgeChunkService | P0 | 3h |
| 6.4 | 集成现有RAG引擎 | P0 | 4h |
| 6.5 | 实现RAGTool | P0 | 3h |
| 6.6 | 准备临床研究方法学知识文档 | P0 | 8h |
| 6.7 | 知识文档分块和向量化 | P0 | 4h |
| 6.8 | RAG检索测试和调优 | P0 | 4h |
Sprint 7: 高级功能(Week 7)
| ID | 任务 | 优先级 | 预估 |
|---|---|---|---|
| 7.1 | 实现Function Calling支持 | P1 | 4h |
| 7.2 | 实现ToolRegistry完整功能 | P1 | 3h |
| 7.3 | 添加文献检索工具 | P2 | 4h |
| 7.4 | 实现高级Reflexion(一致性校验) | P1 | 4h |
| 7.5 | 更多Action Card场景 | P1 | 4h |
| 7.6 | Phase 2集成测试 | P0 | 4h |
四、Phase 3 计划概要(2周)
Sprint 8-9: 平台化(Week 8-9)
| ID | 任务 | 优先级 | 预估 |
|---|---|---|---|
| 8.1 | Agent配置管理后台 | P1 | 8h |
| 8.2 | Prompt在线编辑和调试 | P1 | 6h |
| 8.3 | Trace分析可视化 | P2 | 6h |
| 8.4 | 配置热更新支持 | P2 | 4h |
| 8.5 | 多Agent路由支持 | P1 | 4h |
| 8.6 | 统计分析Agent接入准备 | P1 | 4h |
| 8.7 | 最终测试和文档 | P0 | 4h |
五、风险管理
5.1 已识别风险
| 风险 | 可能性 | 影响 | 缓解措施 | 负责人 |
|---|---|---|---|---|
| LLM输出不稳定 | 高 | 中 | 多次测试,调优Prompt | - |
| 数据提取准确率低 | 中 | 高 | 增加验证逻辑,用户确认 | - |
| 前端集成复杂度 | 中 | 中 | 复用现有组件 | - |
| Prompt调优耗时 | 高 | 中 | 预留充足时间 | - |
| 知识库内容准备 | 中 | 高 | 提前准备,分批导入 | - |
5.2 应急预案
如果Phase 1延期:
- 优先保证核心流程(对话+提取)
- Reflexion可简化为基础规则检查
- Action Card可延后到Phase 2
如果数据提取准确率不达标:
- 增加用户确认环节
- 使用更强的模型(GPT-4)
- 简化提取Schema
六、质量保证
6.1 测试策略
| 测试类型 | 覆盖范围 | 执行时机 |
|---|---|---|
| 单元测试 | 核心Service、工具函数 | 每次提交 |
| 集成测试 | API端点、数据库操作 | 每个Sprint |
| E2E测试 | 完整用户流程 | 里程碑交付 |
| Prompt测试 | 各阶段Prompt效果 | 持续调优 |
6.2 验收标准
Phase 1 验收标准:
- 用户可完成5阶段研究方案要素制定
- Context数据正确保存和展示
- 阶段流转逻辑正确
- Reflexion能阻止不完整的阶段提交
- Action Card正确触发和展示
- API响应时间 < 3s(不含LLM)
- 无P0级Bug
6.3 Code Review检查点
- 类型定义完整
- 错误处理完善
- 日志记录规范
- 代码风格一致
- 无硬编码配置
- 有必要的注释
七、资源需求
7.1 人力资源
| 角色 | 人数 | Phase 1 | Phase 2 | Phase 3 |
|---|---|---|---|---|
| 后端开发 | 1 | 100% | 80% | 60% |
| 前端开发 | 1 | 60% | 40% | 40% |
| 产品/测试 | 1 | 30% | 30% | 40% |
7.2 技术资源
| 资源 | 用途 | 预估费用 |
|---|---|---|
| DeepSeek API | LLM调用 | ¥500/月 |
| 开发服务器 | 测试环境 | 现有 |
| 数据库 | PostgreSQL | 现有 |
八、沟通计划
8.1 会议安排
| 会议 | 频率 | 参与者 | 目的 |
|---|---|---|---|
| 每日站会 | 每日 | 开发团队 | 同步进度,解决阻塞 |
| Sprint评审 | 每周 | 全员 | 演示成果,收集反馈 |
| 技术讨论 | 按需 | 相关开发 | 解决技术难题 |
8.2 文档更新
| 文档 | 更新频率 | 负责人 |
|---|---|---|
| 开发计划 | 每Sprint | PM |
| 技术文档 | 实时 | 开发者 |
| API文档 | 代码变更时 | 后端 |
| 用户手册 | Phase完成时 | 产品 |
九、检查清单
Phase 1 启动前检查
- 需求文档已确认
- 技术方案已评审
- 数据库设计已确认
- 开发环境已就绪
- 相关人员已到位
每Sprint完成检查
- 所有任务已完成或明确延期原因
- 代码已Code Review
- 测试已通过
- 文档已更新
- 下Sprint计划已明确
Phase 1 交付检查
- 所有功能已实现
- 验收标准全部达成
- 无遗留P0/P1 Bug
- 文档完整
- 演示准备就绪