Files
AIclinicalresearch/docs/03-业务模块/IIT Manager Agent/07-技术债务/IIT Manager Agent 技术债务清单.md
HaHafeng 1b53ab9d52 feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
2026-01-14 19:15:01 +08:00

15 KiB
Raw Blame History

IIT Manager Agent 鎶€鏈<E282AC>€哄姟娓呭崟

鏂囨。鐗堟湰: v1.0
**鏈€鍚庢洿鏂?*: 2026-01-04
褰撳墠闃舵<EFBFBD>: Phase 1.5 瀹屾垚


馃搵 鏂囨。璇存槑

<EFBFBD>枃妗<EFBFBD>褰旾IT Manager Agent妯″潡鐨勬妧鏈<E5A6A7>€哄姟锛屽寘鎷<E5AF98>綋鍓嶇殑涓存椂鏂规<E98F82>銆佸凡鐭ラ檺鍒躲€佸緟浼樺寲椤癸紝浠ュ強鏈<E5BCB7>潵鏀硅繘璁″垝銆?


馃幆 鎶€鏈<E282AC>€哄姟浼樺厛绾у畾涔?

浼樺厛绾? 璇存槑 澶勭悊鏃舵満
*P0 - 闃诲<E99783>鎬? 褰卞搷鏍稿績鍔熻兘锛屽繀椤荤珛鍗冲<EFBFBD>鐞? 绔嬪嵆
P1 - 楂樹紭鍏堢骇 褰卞搷鐢ㄦ埛浣撻獙鎴栨€ц兘锛屽缓璁甈hase 2澶勭悊 1涓<EFBFBD>湀鍐?
P2 - 涓<>紭鍏堢骇 鍔熻兘澧炲己锛屽彲鍦≒hase 3澶勭悊 3涓<EFBFBD>湀鍐?
P3 - 浣庝紭鍏堢骇 浼樺寲椤癸紝闀挎湡瑙勫垝 6涓<EFBFBD>湀鍐?

馃敶 P0 - 闃诲<E99783>у€哄姟

**褰撳墠鐘舵€?*: 鉁?鏃燩0绾у€哄姟


馃煚 P1 - 楂樹紭鍏堢骇鍊哄姟

1. 鎰忓浘璇嗗埆鍗囩骇

褰撳墠鏂规<EFBFBD>: 鍏抽敭璇嶅尮閰嶏紙姝e垯琛ㄨ揪寮忥級

<EFBFBD><EFBFBD>:

  • 鈿狅笍 鏃犳硶鐞嗚В澶嶆潅鐨勮嚜鐒惰<E99092>瑷€
  • 鈿狅笍 瀹规槗璇<E6A797>垽杈圭紭case
  • 鈿狅笍 闇€瑕佷汉宸ョ淮鎶ゅ叧閿<E58FA7>瘝鍒楄〃

褰卞搷:

  • 褰撶敤鎴蜂娇鐢ㄩ潪鏍囧噯琛ㄨ揪鏃讹紝鍙<EFBFBD>兘鏃犳硶姝璇嗗埆鎰忓浘
  • 渚嬪<EFBFBD>锛?甯<>垜鐪嬩竴涓嬮偅涓?鍙风殑鏁版嵁" 鍙<>兘鏃犳硶璇嗗埆涓篳query_record`

鏀硅繘鏂规<EFBFBD>:

鏂规<EFBFBD>A: LLM鎰忓浘鍒ゆ柇锛堟帹鑽愶級

// 浣跨敤LLM杩涜<E69DA9>鎰忓浘鍒嗙被
const intentPrompt = `浣犳槸鎰忓浘璇嗗埆涓撳<E6B693>銆傜敤鎴锋秷鎭<E7A7B7>${userMessage}

璇峰垽鏂<EFBFBD>敤鎴锋剰鍥撅紝浠庝互涓嬮€夐」涓<EFBFBD>€夋嫨锛?
1. query_record - 鏌ヨ<E98F8C>鐗瑰畾鎮€呰<E282AC>褰?
2. count_records - 缁熻<E7BC81>€呮暟閲?
3. query_protocol - 鏌ヨ<E98F8C>鐮旂┒鏂规<E98F82>鏂囨。
4. project_info - 鏌ヨ<E98F8C>椤圭洰淇℃伅
5. general_chat - 鏅<>€氬<E282AC>璇?

<EFBFBD>繑鍥濲SON: {"intent": "xxx", "params": {...}}
`;

const intentResult = await llm.chat([{ role: 'user', content: intentPrompt }]);

浼樺娍:

  • 鉁?鐞嗚В鑳藉姏寮猴紝鏀<E7B49D>寔澶嶆潅琛ㄨ揪
  • 鉁?鏃犻渶缁存姢鍏抽敭璇?
  • 鉁?閫傚簲鎬уソ

鍔e娍:

  • 鉂?澧炲姞涓€娆<E282AC>LM璋冪敤锛垀1绉掞紝+楼0.0001鎴愭湰锛?
  • 鉂?鎬诲搷搴旀椂闂村<E99782>鍔犲埌~6绉?

鏂规<EFBFBD>B: BERT鍒嗙被妯″瀷

# 璁<>粌鎰忓浘鍒嗙被妯″瀷
from transformers import BertForSequenceClassification

model = BertForSequenceClassification.from_pretrained(
    'bert-base-chinese',
    num_labels=5
)

# 璁<>粌鏁版嵁锛?00-200涓<30>爣娉ㄦ牱鏈?
# 鎺ㄧ悊閫熷害锛?100ms

浼樺娍:

  • 鉁?閫熷害蹇<E5AEB3>紙<100ms锛?
  • 鉁?鐞嗚В鑳藉姏寮?
  • 鉁?鎴愭湰浣?

鍔e娍:

  • 鉂?闇€瑕佹爣娉ㄨ<E5A889>缁冩暟鎹?
  • 鉂?闇€瑕侀儴缃叉ā鍨嬫湇鍔?
  • 鉂?闇€瑕佹寔缁<E5AF94>凯浠?

寤鸿<EFBFBD>:

  • Phase 2: 鍏堜娇鐢ㄦ柟妗圓锛圠LM鍒ゆ柇锛夛紝蹇<E7B49D>€熼獙璇佹晥鏋?
  • Phase 3: 濡傛灉閲忓ぇ锛屽啀鍒囨崲鍒版柟妗圔锛圔ERT妯″瀷锛?

**棰勮<E6A3B0>宸ヤ綔閲?*: 2-3澶?


2. 涓婁笅鏂囧瓨鍌ㄨ縼绉诲埌Redis

褰撳墠鏂规<EFBFBD>: 鍐呭瓨缂撳瓨锛圢ode.js Map锛?

<EFBFBD><EFBFBD>:

  • 鈿狅笍 鍗曟満鍐呭瓨锛屼笉鏀<E7AC89>寔鍒嗗竷寮忛儴缃?
  • 鈿狅笍 鏈嶅姟閲嶅惎鍚庝笂涓嬫枃涓㈠け
  • 鈿狅笍 鍐呭瓨鍗犵敤鏃犻檺鍒讹紙铏芥湁鑷<E6B981>姩娓呯悊锛屼絾浠嶆湁椋庨櫓锛?

褰卞搷:

  • 褰撳悗绔<EFBFBD>湇鍔¢噸鍚<EFBFBD>椂锛屾墍鏈夌敤鎴风殑瀵硅瘽涓婁笅鏂囦細涓㈠け
  • 濡傛灉閮ㄧ讲澶氫釜瀹炰緥锛岀敤鎴疯<EFBFBD>姹傚彲鑳借矾鐢卞埌涓嶅悓瀹炰緥锛屽<EFBFBD>鑷翠笂涓嬫枃涓㈠け

鏀硅繘鏂规<EFBFBD>:

// backend/src/modules/iit-manager/agents/SessionMemory.ts

import Redis from 'ioredis';

export class SessionMemory {
  private redis: Redis;
  private readonly EXPIRE_TIME = 1800; // 30鍒嗛挓

  constructor() {
    this.redis = new Redis(config.redisUrl);
  }

  async addMessage(userId: string, role: 'user' | 'assistant', content: string): Promise<void> {
    const key = `session:${userId}`;
    const message = { role, content, timestamp: Date.now() };
    
    // 1. 鑾峰彇褰撳墠浼氳瘽
    const sessionData = await this.redis.get(key);
    const session = sessionData ? JSON.parse(sessionData) : { messages: [] };
    
    // 2. 娣诲姞娑堟伅
    session.messages.push(message);
    
    // 3. 淇濇寔鏈€杩?杞?
    if (session.messages.length > 6) {
      session.messages = session.messages.slice(-6);
    }
    
    // 4. 瀛樺洖Redis锛?0鍒嗛挓杩囨湡锛?
    await this.redis.setex(key, this.EXPIRE_TIME, JSON.stringify(session));
  }

  async getContext(userId: string): Promise<string> {
    const key = `session:${userId}`;
    const sessionData = await this.redis.get(key);
    
    if (!sessionData) return '';
    
    const session = JSON.parse(sessionData);
    return session.messages
      .map(m => `${m.role === 'user' ? '鐢ㄦ埛' : 'AI'}: ${m.content}`)
      .join('\n\n');
  }
}

浼樺娍:

  • 鉁?鏀<>寔鍒嗗竷寮忛儴缃?
  • 鉁?鏈嶅姟閲嶅惎涓嶄涪澶变笂涓嬫枃
  • 鉁?鍐呭瓨鍗犵敤鍙<E695A4>

鍔e娍:

  • 鉂?澧炲姞Redis渚濊禆
  • 鉂?姣忔<E5A7A3>璇诲啓闇€瑕佺綉缁淚O锛垀1-2ms锛?

寤鸿<EFBFBD>: Phase 2瀹炴柦锛屼紭鍏堢骇涓<E9AA87>

**棰勮<E6A3B0>宸ヤ綔閲?*: 1澶?


3. Dify妫€绱㈢粨鏋滅紦瀛?

褰撳墠鏂规<EFBFBD>: 姣忔<E5A7A3>閮借皟鐢―ify API妫€绱?

<EFBFBD><EFBFBD>:

  • 鈿狅笍 鐩稿悓闂<E68293><E99782>閲嶅<E996B2>妫€绱<E282AC>紝娴<E7B49D>垂鏃堕棿
  • 鈿狅笍 Dify API鍝嶅簲鏃堕棿鍗?0%锛?.5-1.7绉掞級

褰卞搷:

  • 鍝嶅簲閫熷害鏈夋彁鍗囩┖闂?
  • 鐩稿悓闂<EFBFBD><EFBFBD><EFBFBD>簩娆¤<EFBFBD><EFBFBD>粛闇€1.5绉?

鏀硅繘鏂规<EFBFBD>:

// 浣跨敤Redis缂撳瓨Dify妫€绱㈢粨鏋?
private async queryDifyKnowledge(query: string): Promise<string> {
  // 1. 鐢熸垚缂撳瓨key锛坬uery鐨刪ash锛?
  const cacheKey = `dify:${md5(query)}`;
  
  // 2. 灏濊瘯浠庣紦瀛樿幏鍙?
  const cached = await redis.get(cacheKey);
  if (cached) {
    logger.info('Dify妫€绱㈠懡涓<EFBFBD>紦瀛?, { query });
    return cached;
  }
  
  // 3. 璋冪敤Dify API
  const result = await difyClient.retrieveKnowledge(...);
  
  // 4. 鏍煎紡鍖栫粨鏋?
  const formattedKnowledge = this.formatDifyResult(result);
  
  // 5. 缂撳瓨缁撴灉锛?灏忔椂锛?
  await redis.setex(cacheKey, 3600, formattedKnowledge);
  
  return formattedKnowledge;
}

浼樺娍:

  • 鉁?鐩稿悓闂<E68293><E99782>鍝嶅簲閫熷害鎻愬崌1.5绉掞紙浠?.8绉掗檷鍒?.3绉掞級
  • 鉁?鍑忓皯Dify API璋冪敤娆℃暟
  • 鉁?闄嶄綆Dify鏈嶅姟鍣ㄨ礋杞?

鍔e娍:

  • 鉂?鏂囨。鏇存柊鍚庨渶瑕佹竻闄ょ紦瀛?
  • 鉂?缂撳瓨鍗犵敤Redis鍐呭瓨

缂撳瓨澶辨晥绛栫暐:

  • 鏂囨。涓婁紶/鏇存柊/鍒犻櫎鏃讹紝娓呴櫎瀵瑰簲Dataset鐨勬墍鏈夌紦瀛?
  • 缂撳瓨杩囨湡鏃堕棿锛?灏忔椂

寤鸿<EFBFBD>: Phase 2瀹炴柦锛屼紭鍏堢骇涓?

**棰勮<E6A3B0>宸ヤ綔閲?*: 1澶?


4. REDCap鏁版嵁缂撳瓨

褰撳墠鏂规<EFBFBD>: 姣忔<E5A7A3>閮借皟鐢≧EDCap API鏌ヨ<E98F8C>

<EFBFBD><EFBFBD>:

  • 鈿狅笍 REDCap API鍝嶅簲鏃堕棿鍗?5%锛?.2-1.3绉掞級
  • 鈿狅笍 鎮€呭熀鏈<E78680>俊鎭<E4BF8A>彉鍖栭<E98D96>鐜囦綆锛屼笉闇€瑕佹瘡娆″疄鏃舵煡璇?

褰卞搷:

  • 鍝嶅簲閫熷害鏈夋彁鍗囩┖闂?
  • 澧炲姞REDCap鏈嶅姟鍣ㄨ礋杞?

鏀硅繘鏂规<EFBFBD>:

// 鍒嗗眰缂撳瓨绛栫暐
private async queryRedcapRecord(recordId: string): Promise<any> {
  const cacheKey = `redcap:record:${recordId}`;
  
  // 1. 灏濊瘯浠庣紦瀛樿幏鍙?
  const cached = await redis.get(cacheKey);
  if (cached) {
    return JSON.parse(cached);
  }
  
  // 2. 璋冪敤REDCap API
  const records = await redcap.exportRecords({ records: [recordId] });
  
  // 3. 缂撳瓨缁撴灉锛?鍒嗛挓锛?
  await redis.setex(cacheKey, 300, JSON.stringify(records[0]));
  
  return records[0];
}

缂撳瓨绛栫暐:

鏁版嵁绫诲瀷 缂撳瓨鏃堕棿 鍘熷洜
€呭熀鏈<EFBFBD>俊鎭? 5鍒嗛挓 鍙樺寲棰戠巼浣?
缁熻<EFBFBD>鏁版嵁 1鍒嗛挓 闇€瑕佽緝瀹炴椂
椤圭洰閰嶇疆 1灏忔椂 鍑犱箮涓嶅彉

浼樺娍:

  • 鉁?鍝嶅簲閫熷害鎻愬崌1.2绉?
  • 鉁?鍑忓皯REDCap鏈嶅姟鍣ㄨ礋杞?

鍔e娍:

  • 鉂?鏁版嵁鍙<E5B581>兘鏈?鍒嗛挓寤惰繜

寤鸿<EFBFBD>: Phase 2瀹炴柦锛岄渶涓庣敤鎴风璁ゆ槸鍚︽帴鍙?鍒嗛挓寤惰繜

**棰勮<E6A3B0>宸ヤ綔閲?*: 1澶?


馃煛 P2 - 涓<>紭鍏堢骇鍊哄姟

5. 鏂囨。涓婁紶API寮€鍙?

褰撳墠鏂规<EFBFBD>: 鎵嬪姩閫氳繃Dify鐣岄潰涓婁紶鏂囨。

<EFBFBD><EFBFBD>:

  • 鈿狅笍 涓嶆敮鎸佹壒閲忎笂浼?
  • 鈿狅笍 闇€瑕佺櫥褰旸ify绯荤粺
  • 鈿狅笍 鏃犳硶鑷<E7A1B6>姩鍖?

褰卞搷:

  • PI鏃犳硶鑷<EFBFBD>姪涓婁紶鐮旂┒鏂囨。
  • 闇€瑕佹妧鏈<EFBFBD>汉鍛樺崗鍔?

鏀硅繘鏂规<EFBFBD>:

// backend/src/modules/iit-manager/routes/index.ts

// 涓婁紶鏂囨。鍒伴」鐩<E3808D>煡璇嗗簱
router.post('/projects/:projectId/documents', async (request, reply) => {
  const { projectId } = request.params;
  const file = await request.file();
  
  // 1. 鑾峰彇椤圭洰閰嶇疆
  const project = await prisma.iitProject.findUnique({
    where: { id: projectId },
    select: { difyDatasetId: true }
  });
  
  // 2. 涓婁紶鍒癉ify
  const buffer = await file.toBuffer();
  const result = await difyClient.uploadDocumentDirectly(
    project.difyDatasetId,
    buffer,
    file.filename
  );
  
  // 3. 绛夊緟绱㈠紩瀹屾垚
  await difyClient.waitForDocumentProcessing(
    project.difyDatasetId,
    result.document.id
  );
  
  return reply.send({ success: true, documentId: result.document.id });
});

// 鍒犻櫎鏂囨。
router.delete('/projects/:projectId/documents/:documentId', async (request, reply) => {
  // 瀹炵幇鏂囨。鍒犻櫎
});

// 鑾峰彇鏂囨。鍒楄〃
router.get('/projects/:projectId/documents', async (request, reply) => {
  // 瀹炵幇鏂囨。鍒楄〃鏌ヨ<E98F8C>
});

鍓嶇<EFBFBD>鐣岄潰锛堝彲閫夛級:

  • 鏂囨。涓婁紶琛ㄥ崟
  • 鏂囨。鍒楄〃灞曠ず
  • 鏂囨。鐘舵€佽拷韪<EFBFBD>紙uploading 鈫?indexing 鈫?completed锛?

寤鸿<EFBFBD>: Phase 3瀹炴柦锛屼紭鍏堢骇涓?

**棰勮<E6A3B0>宸ヤ綔閲?*: 2-3澶?


6. 鐢ㄦ埛缁戝畾榛樿<E6A69B>椤圭洰

褰撳墠鏂规<EFBFBD>: 鎵€鏈夌敤鎴峰叡浜<E58FA1>悓涓€涓<E282AC>椿璺冮」鐩<E3808D>status='active'锛?

<EFBFBD><EFBFBD>:

  • 鈿狅笍 鏃犳硶鏀<E7A1B6>寔澶氶」鐩?
  • 鈿狅笍 涓嶅悓鐢ㄦ埛鍙<E59F9B>兘鍏虫敞涓嶅悓椤圭洰

褰卞搷:

  • 濡傛灉鏈夊<EFBFBD>涓狪IT椤圭洰锛屾棤娉曞尯鍒嗙敤鎴峰睘浜庡摢涓<EFBFBD>」鐩?

鏀硅繘鏂规<EFBFBD>:

鏁版嵁妯″瀷鏇存柊:

// backend/prisma/schema.prisma

model IitUserMapping {
  // ... 鐜版湁瀛楁<E7809B> ...
  
  // 鏂板<E98F82>锛氱敤鎴风殑榛樿<E6A69B>椤圭洰
  defaultProjectId  String?  @map("default_project_id")
}

ChatService鏇存柊:

async handleMessage(userId: string, userMessage: string): Promise<string> {
  // 1. 鑾峰彇鐢ㄦ埛鐨勯粯璁ら」鐩?
  const userMapping = await prisma.iitUserMapping.findFirst({
    where: { wecomUserId: userId }
  });
  
  const projectId = userMapping?.defaultProjectId;
  
  // 2. 鍩轰簬椤圭洰鏌ヨ<E98F8C>鏁版嵁
  const project = await prisma.iitProject.findUnique({
    where: { id: projectId }
  });
  
  // 鍚庣画閫昏緫...
}

寤鸿<EFBFBD>: Phase 2鍚庢湡瀹炴柦锛屽綋鏈夊<E98F88><EFBFBD>」鐩<E3808D>

**棰勮<E6A3B0>宸ヤ綔閲?*: 1-2澶?


7. Function Calling鍗囩骇

褰撳墠鏂规<EFBFBD>: 鍏抽敭璇嶆剰鍥捐瘑鍒?鈫?鎵嬪姩璋冪敤宸ュ叿

<EFBFBD><EFBFBD>:

  • 鈿狅笍 鏃犳硶鑷<E7A1B6>姩鍐冲畾鏄<E795BE>惁璋冪敤宸ュ叿
  • 鈿狅笍 鏃犳硶鏍规嵁涓婁笅鏂囪嚜鍔ㄦ彁鍙栧弬鏁?

褰卞搷:

  • 濡傛灉鐢ㄦ埛闂?7鍙锋偅鑰呭拰8鍙锋偅鑰呭摢涓<E691A2>洿涓ラ噸锛?锛屽綋鍓嶆棤娉曡嚜鍔ㄦ煡璇<E785A1>袱涓<E8A2B1>偅鑰?

鏀硅繘鏂规<EFBFBD>:

浣跨敤DeepSeek-V3鐨?Native Function Calling*:

// 瀹氫箟宸ュ叿
const tools = [
  {
    type: 'function',
    function: {
      name: 'query_redcap_record',
      description: '鏌ヨ<E98F8C>REDCap涓<70>壒瀹氭偅鑰呯殑璁板綍',
      parameters: {
        type: 'object',
        properties: {
          recordId: {
            type: 'string',
            description: '鎮€呰<E282AC>褰旾D'
          }
        },
        required: ['recordId']
      }
    }
  },
  {
    type: 'function',
    function: {
      name: 'query_dify_knowledge',
      description: '妫€绱㈢爺绌舵柟妗堛€丆RF琛ㄦ牸绛夋枃妗?,
      parameters: {
        type: 'object',
        properties: {
          query: {
            type: 'string',
            description: '鏌ヨ<EFBFBD><EFBFBD><EFBFBD>'
          }
        },
        required: ['query']
      }
    }
  }
];

// LLM鑷<4D>姩鍐冲畾璋冪敤鍝<E695A4>簺宸ュ叿
const response = await llm.chat(messages, { tools });

// 澶勭悊宸ュ叿璋冪敤
if (response.tool_calls) {
  for (const toolCall of response.tool_calls) {
    if (toolCall.function.name === 'query_redcap_record') {
      const args = JSON.parse(toolCall.function.arguments);
      const result = await this.queryRedcapRecord(args.recordId);
      // 缁х画瀵硅瘽...
    }
  }
}

浼樺娍:

  • 鉁?LLM鑷<4D>姩鍐冲畾鏄<E795BE>惁璋冪敤宸ュ叿
  • 鉁?鑷<>姩鎻愬彇鍙傛暟锛堝<E9949B>recordId锛?
  • 鉁?鏀<>寔澶氬伐鍏峰苟琛岃皟鐢?
  • 鉁?鏇存櫤鑳姐€佹洿鐏垫椿

鍔e娍:

  • 鉂?澧炲姞涓€娆<E282AC>LM璋冪敤
  • 鉂?鎬诲搷搴旀椂闂村彲鑳藉<E991B3>鍔犲埌7-8绉?

寤鸿<EFBFBD>: Phase 3瀹炴柦锛屼綔涓洪珮绾у姛鑳?

**棰勮<E6A3B0>宸ヤ綔閲?*: 3-5澶?


8. 鏅鸿兘寮曠敤绯荤粺

褰撳墠鏂规<EFBFBD>: Dify杩斿洖鐨勬枃妗墖娈电洿鎺ユ樉绀?

<EFBFBD><EFBFBD>:

  • 鈿狅笍 鏃犳硶婧<E7A1B6>簮鍒板叿浣撴枃妗拰浣嶇疆
  • 鈿狅笍 鐢ㄦ埛鏃犳硶楠岃瘉淇℃伅鏉ユ簮

褰卞搷:

  • 鐢ㄦ埛浣撻獙涓嶅<EFBFBD>閫忔槑

鏀硅繘鏂规<EFBFBD>:

鍙傝€傾SL妯″潡鐨勬櫤鑳藉紩鐢ㄧ郴缁燂細

// 1. 鏀堕泦寮曠敤淇℃伅
interface Citation {
  id: number;
  documentName: string;
  segmentIndex: number;
  score: number;
  content: string;
}

// 2. AI鍥炵瓟涓<E7939F>彃鍏ュ紩鐢ㄦ爣璁?
const answer = `鏍规嵁鐮旂┒鏂规<E98F82>[1]鍜孋RF琛ㄦ牸[2]锛岀撼鍏ユ爣鍑嗗寘鎷<E5AF98>1. 骞撮緞18-75宀乕1]
2. 绗﹀悎璇婃柇鏍囧噯[1][2]
3. 绛剧讲鐭ユ儏鍚屾剰涔<E589B0>3]

---
馃摎 **鍙傝€冩枃鐚?*
[1] 馃搫 **鐮旂┒鏂规<E98F82>.pdf** - 绗?娈?(鐩稿叧搴?5%)
    "绾冲叆鏍囧噯锛氬勾榫?8-75宀侊紝绗﹀悎璇婃柇鏍囧噯..."
[2] 馃搫 **CRF琛ㄦ牸.docx** - 绗?娈?(鐩稿叧搴?2%)
    "鍩虹嚎璇勪及鍖呮嫭锛氳瘖鏂<E79896>爣鍑嗐€佸叆缁勬椂闂?.."
`;

// 3. 鍓嶇<E98D93>楂樹寒鏄剧ず寮曠敤
// 鐐瑰嚮[1]璺宠浆鍒板紩鐢ㄨ<E990A2>鎯?

寤鸿<EFBFBD>: Phase 3瀹炴柦锛屼綔涓轰綋楠屼紭鍖?

**棰勮<E6A3B0>宸ヤ綔閲?*: 3-4澶?


馃煝 P3 - 浣庝紭鍏堢骇鍊哄姟

9. 鎵归噺鏁版嵁鏌ヨ<E98F8C>浼樺寲

褰撳墠鏂规<EFBFBD>: 鍗曟潯璁板綍鏌ヨ<E98F8C>

<EFBFBD><EFBFBD>:

  • 鈿狅笍 濡傛灉鐢ㄦ埛闂?鎵€鏈夋偅鑰呯殑鍏ョ粍鎯呭喌"锛岄渶瑕佸<E79195>娆℃煡璇?

鏀硅繘鏂规<EFBFBD>:

  • <EFBFBD>寔鎵归噺鏌ヨ<EFBFBD>
  • 鐢熸垚鏁版嵁鎽樿<EFBFBD>

寤鸿<EFBFBD>: Phase 4瀹炴柦

**棰勮<E6A3B0>宸ヤ綔閲?*: 2-3澶?


10. 澶氳疆瀵硅瘽浼樺寲

褰撳墠鏂规<EFBFBD>: 淇濈暀鏈€杩?杞<><E69D9E>璇?

<EFBFBD><EFBFBD>:

  • 鈿狅笍 闀垮<E99780>璇濆彲鑳戒涪澶遍噸瑕佷笂涓嬫枃

鏀硅繘鏂规<EFBFBD>:

  • 鏅鸿兘涓婁笅鏂囧帇缂╋紙鎻愬彇鍏抽敭淇℃伅锛?
  • 闀挎湡璁板繂锛堝瓨鍌ㄩ噸瑕佷俊鎭<EFBFBD>埌鏁版嵁搴擄級

寤鸿<EFBFBD>: Phase 4瀹炴柦

**棰勮<E6A3B0>宸ヤ綔閲?*: 5-7澶?


馃搳 鍊哄姟浼樺厛绾ф€昏<E282AC>

鍊哄姟椤? 浼樺厛绾? 褰卞搷 宸ヤ綔閲? 寤鸿<EFBFBD>鏃堕棿
鎰忓浘璇嗗埆鍗囩骇 P1 鍑嗙‘鐜? 2-3澶? Phase 2
涓婁笅鏂囪縼绉籖edis P1 <EFBFBD>敤鎬? 1澶? Phase 2
Dify缁撴灉缂撳瓨 P1 鎬ц兘 1澶? Phase 2
REDCap鏁版嵁缂撳瓨 P1 鎬ц兘 1澶? Phase 2
鏂囨。涓婁紶API P2 鍔熻兘 2-3澶? Phase 3
鐢ㄦ埛缁戝畾椤圭洰 P2 鍔熻兘 1-2澶? Phase 2鍚庢湡
Function Calling P2 鏅鸿兘鍖? 3-5澶? Phase 3
鏅鸿兘寮曠敤绯荤粺 P2 浣撻獙 3-4澶? Phase 3
鎵归噺鏌ヨ<EFBFBD>浼樺寲 P3 鍔熻兘 2-3澶? Phase 4
澶氳疆瀵硅瘽浼樺寲 P3 浣撻獙 5-7澶? Phase 4

馃幆 Phase 2 鍊哄姟娓呭伩璁″垝

Week 1-2: 鎬ц兘浼樺寲

  • 涓婁笅鏂囪縼绉诲埌Redis锛?澶╋級
  • Dify缁撴灉缂撳瓨锛?澶╋級
  • REDCap鏁版嵁缂撳瓨锛?澶╋級
  • 鎬ц兘娴嬭瘯涓庤皟浼橈紙1澶╋級

棰勬湡鏁堟灉:

  • 鍝嶅簲鏃堕棿浠?.8绉掗檷鍒?-3绉?
  • <EFBFBD>寔鍒嗗竷寮忛儴缃?
  • 鏈嶅姟閲嶅惎涓嶄涪澶变笂涓嬫枃

Week 3-4: 鎰忓浘璇嗗埆鍗囩骇

  • 瀹炵幇LLM鎰忓浘鍒ゆ柇锛?澶╋級
  • A/B娴嬭瘯瀵规瘮锛?澶╋級
  • 涓婄嚎鐏板害鍙戝竷锛?澶╋級

棰勬湡鏁堟灉:

  • 鎰忓浘璇嗗埆鍑嗙‘鐜囦繚鎸?00%
  • <EFBFBD>寔澶嶆潅鑷<EFBFBD>劧璇<EFBFBD>█琛ㄨ揪

Week 5: 澶氶」鐩<E3808D>敮鎸?

  • 鐢ㄦ埛缁戝畾榛樿<EFBFBD>椤圭洰锛?澶╋級

棰勬湡鏁堟灉:

  • <EFBFBD>寔澶氫釜IIT椤圭洰骞惰<EFBFBD>

馃摑 鍊哄姟璺熻釜

宸叉竻鍋垮€哄姟

鍊哄姟椤? 娓呭伩鏃堕棿 鏂规<EFBFBD>
AI骞昏<EFBFBD><EFBFBD><EFBFBD> 2026-01-03 RAG鏁版嵁娉ㄥ叆 + 涓ユ牸System Prompt
涓婁笅鏂囦涪澶? 2026-01-03 SessionMemory锛堟渶杩?杞<>
鍝嶅簲閫熷害鎱? 2026-01-04 浼樺寲鎰忓浘璇嗗埆 + 寮傛<E5AFAE>澶勭悊

杩涜<EFBFBD><EFBFBD>€哄姟

鍊哄姟椤? 璐熻矗浜? 棰勮<EFBFBD>瀹屾垚
鏃? - -

寰呭<EFBFBD>鐞嗗€哄姟

瑙佷笂鏂囦紭鍏堢骇鍒楄〃


馃敆 鐩稿叧鏂囨。

  • [IIT Manager Agent 鎶€鏈<E282AC>矾寰勪笌鏋舵瀯璁捐<E79281>](../02-鎶€鏈<E282AC><E98F88>璁?IIT Manager Agent 鎶€鏈<E282AC>矾寰勪笌鏋舵瀯璁捐<E79281>.md)
  • [Phase1.5-AI瀵硅瘽鑳藉姏寮€鍙戣<E98D99>鍒抅(../04-寮€鍙戣<E98D99>鍒?Phase1.5-AI瀵硅瘽鑳藉姏寮€鍙戣<E98D99>鍒?md)
  • [MVP寮€鍙戜换鍔℃竻鍗昡(../04-寮€鍙戣<E98D99>鍒?MVP寮€鍙戜换鍔℃竻鍗?md)

鏂囨。缁存姢: 鎶€鏈<E282AC>洟闃? **鏈€鍚庢洿鏂?*: 2026-01-04
鐗堟湰鍘嗗彶:

  • v1.0 (2026-01-04): 鍒濆<E98D92>鐗堟湰锛孭hase 1.5瀹屾垚鍚庢暣鐞?