Files
AIclinicalresearch/docs/03-业务模块/IIT Manager Agent/02-技术设计/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

696 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# IIT Manager Agent 鎶€鏈<E282AC>矾寰勪笌鏋舵瀯璁捐<E79281>
**鏂囨。鐗堟湰**: v1.0
**鏈€鍚庢洿鏂?*: 2026-01-04
**鐘舵€?*: 鉁?Phase 1.5 瀹屾垚骞堕獙璇?
---
## 馃搵 鏂囨。姒傝堪
<EFBFBD>枃妗<EFBFBD>缁嗘弿杩颁簡IIT Manager Agent鐨勬妧鏈<E5A6A7>矾寰勩€佹牳蹇冩灦鏋勫拰瀹炵幇鏂规<E98F82>銆傜郴缁熼噰鐢?*"鎰忓浘璇嗗埆 鈫?宸ュ叿璋冪敤 鈫?娣峰悎妫€绱?鈫?LLM鐢熸垚"**鐨勬妧鏈<E5A6A7>矾寰勶紝瀹炵幇浜嗛浂骞昏<E9AA9E>銆侀珮鍑嗙鐜囩殑AI瀵硅瘽鑳藉姏銆?
---
## 馃幆 鎶€鏈<E282AC>矾寰勬€荤粨
### 鏍稿績鎶€鏈<E282AC>矾寰?
```
鐢ㄦ埛鎻愰棶
鈫?鎰忓浘璇嗗埆锛圛ntent Detection锛?
鈫?宸ュ叿璋冪敤锛圱ool Calling锛?
鈫?娣峰悎妫€绱<E282AC>紙Hybrid Retrieval锛?
鈫?LLM鐢熸垚锛圠LM Generation锛?
鈫?鍥炵瓟鐢ㄦ埛
```
杩欐槸涓€涓?*绠€鍖栫増ReAct鏋舵瀯**锛圧eason + Act锛夛紝涔熷彲浠ョО涓?*"鎰忓浘椹卞姩鐨勬贩鍚圧AG绯荤粺"**銆?
### 鎶€鏈<E282AC>灦鏋勭被鍨?
- **鏋舵瀯妯″紡**: 绠€鍖栫増ReAct锛圧eason + Act锛?
- **妫€绱㈡ā寮?*: 娣峰悎RAG锛堢粨鏋勫寲鏁版嵁 + 闈炵粨鏋勫寲鏂囨。锛?
- **鎰忓浘璇嗗埆**: 鍏抽敭璇嶅尮閰嶏紙MVP闃舵<E99783>锛?
- **涓婁笅鏂囩<E98F82>鐞?*: SessionMemory锛堝唴瀛樼紦瀛橈級
- **闃插够瑙夋満鍒?*: RAG鏁版嵁娉ㄥ叆 + 涓ユ牸System Prompt
---
## 馃搻 瀹屾暣鎶€鏈<E282AC>灦鏋勫浘
```
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? 鐢ㄦ埛灞傦紙User Layer锛? 鈹?
鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? 浼佷笟寰<E7AC9F>俊锛圵eChat锛? 鈹?
鈹? - PI閫氳繃浼佷笟寰<E7AC9F>俊鍙戦€佹秷鎭? 鈹?
鈹? - 鎺ユ敹AI鍥炲<E98DA5>锛堝惈"姝湪鏌ヨ<E98F8C>..."鍗虫椂鍙嶉<E98D99>锛? 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹<EFBFBD>攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?
鈻?
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? 鎺ュ叆灞傦紙Gateway Layer锛? 鈹?
鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? WechatCallbackController 鈹?
鈹? - URL楠岃瘉锛堢<E9949B>鍚嶆牎楠岋級 鈹?
鈹? - 娑堟伅鍔犲瘑/瑙瘑锛圓ES锛? 鈹?
鈹? - 寮傛<E5AFAE>娑堟伅澶勭悊锛?绉掑唴杩斿洖200锛? 鈹?
鈹? - 鍗虫椂鍙嶉<E98D99>锛?馃<>湪鏌ヨ<E98F8C>锛岃<E9949B>绋嶅€?.." 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹<EFBFBD>攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?
鈻?
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? 瀵硅瘽鏈嶅姟灞傦紙Chat Service锛? 鈹?
鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? ChatService锛堟牳蹇冨ぇ鑴戯級 鈹?
鈹? 鈹?
鈹? 姝ラ<E5A79D>1: 鎰忓浘璇嗗埆锛圛ntent Detection锛? 鈹?
鈹? 鈹溾攢 鍏抽敭璇嶅尮閰嶏紙MVP绠€鍖栨柟妗堬級 鈹?
鈹? 鈹溾攢 query_record: "鎮h€?銆?ID"銆?璁板綍" 鈹?
鈹? 鈹溾攢 count_records: "澶氬皯"銆?鍑犱釜"銆?缁熻<E7BC81>" 鈹?
鈹? 鈹溾攢 query_protocol: "绾冲叆鎺掗櫎"銆?CRF"銆?鐮旂┒鏂规<E98F82>" 鈹?
鈹? 鈹斺攢 general_chat: 鍏朵粬 鈹?
鈹? 鈹?
鈹? 姝ラ<E5A79D>2: 宸ュ叿璋冪敤锛圱ool Calling锛? 鈹?
鈹? 鈹溾攢 REDCap鏁版嵁鏌ヨ<E98F8C>锛堢粨鏋勫寲鏁版嵁锛? 鈹?
鈹? 鈹? 鈹溾攢 queryRedcapRecord(recordId) 鈹?
鈹? 鈹? 鈹溾攢 countRedcapRecords() 鈹?
鈹? 鈹? 鈹斺攢 getProjectInfo() 鈹?
鈹? 鈹? 鈹?
鈹? 鈹斺攢 Dify鐭ヨ瘑搴撴<E690B4><EFBFBD>紙闈炵粨鏋勫寲鏂囨。锛? 鈹?
鈹? 鈹斺攢 queryDifyKnowledge(query) 鈹?
鈹? 鈹斺攢 璇<>箟妫€绱<E282AC>op 5鐩稿叧鐗囨<E99097> 鈹?
鈹? 鈹?
鈹? 姝ラ<E5A79D>3: 涓婁笅鏂囩<E98F82>鐞嗭紙Context Management锛? 鈹?
鈹? 鈹斺攢 SessionMemory锛堝唴瀛樼紦瀛橈紝淇濈暀鏈€杩?杞<>級 鈹?
鈹? 鈹?
鈹? 姝ラ<E5A79D>4: LLM鐢熸垚锛圠LM Generation锛? 鈹?
鈹? 鈹斺攢 DeepSeek-V3锛堥€氳繃LLMFactory璋冪敤锛? 鈹?
鈹? 鈹溾攢 System Prompt锛堝己璋冨熀浜庣湡瀹炴暟鎹<E69A9F>級 鈹?
鈹? 鈹溾攢 REDCap鏌ヨ<E98F8C>缁撴灉锛堝<E9949B>鏋滄湁锛? 鈹?
鈹? 鈹溾攢 Dify妫€绱㈢粨鏋滐紙濡傛灉鏈夛級 鈹?
鈹? 鈹溾攢 瀵硅瘽涓婁笅鏂囷紙SessionMemory锛? 鈹?
鈹? 鈹斺攢 鐢ㄦ埛闂<E59F9B><E99782> 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹<EFBFBD>攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹粹攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈻? 鈻?
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? 鏁版嵁婧愬眰锛圖ata锛? 鈹? 鈹? 鐭ヨ瘑婧愬眰锛圞nowledge锛夆攤
鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? REDCap鏁版嵁搴? 鈹? 鈹? Dify鐭ヨ瘑搴? 鈹?
鈹? - 鎮€呰<E282AC>褰曪紙缁撴瀯鍖栵級 鈹? 鈹? - 鐮旂┒鏂规<E98F82>PDF 鈹?
鈹? - RedcapAdapter 鈹? 鈹? - CRF琛ㄦ牸Docx 鈹?
鈹? - REST API 鈹? 鈹? - 浼︾悊璧勬枡 鈹?
鈹? - 瀹炴椂鏌ヨ<E98F8C> 鈹? 鈹? - 鍚戦噺妫€绱<E282AC>紙Qdrant锛?鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹<E282AC>攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈻?
PostgreSQL鏁版嵁搴?
- 椤圭洰閰嶇疆锛坉ify_dataset_id锛?
- 瀹¤<E780B9>鏃ュ織
- 鐢ㄦ埛鏄犲皠
```
---
## 馃攽 鏍稿績鎶€鏈<E282AC>粍浠?
### 1. 鎰忓浘璇嗗埆锛圛ntent Detection锛?
#### 瀹炵幇鏂瑰紡
- **褰撳墠鏂规<E98F82>**: 鍏抽敭璇嶅尮閰嶏紙绠€鍗曢珮鏁堬級
- **璇嗗埆鍑嗙‘鐜?*: 100%锛?娆℃祴璇曞叏閮ㄦ<E996AE><EFBFBD>
- **鍝嶅簲閫熷害**: <10ms
#### 鎰忓浘绫诲瀷
| 鎰忓浘绫诲瀷 | 鍏抽敭璇?| 瑙﹀彂宸ュ叿 | 绀轰緥 |
|---------|--------|----------|------|
| `query_record` | "鎮h€?銆?ID"銆?璁板綍"銆?鍙楄瘯鑰? | REDCap鍗曟潯鏌ヨ<E98F8C> | "鏌ヨ<E98F8C>ID 7鐨勬偅鑰呮儏鍐? |
| `count_records` | "澶氬皯"銆?鍑犱釜"銆?缁熻<E7BC81>"銆?鎬诲叡" | REDCap缁熻<E7BC81>鏌ヨ<E98F8C> | "鐩<>墠鏈夊<E98F88>灏戜綅鎮€呭叆缁勶紵" |
| `query_protocol` | "绾冲叆鎺掗櫎"銆?CRF"銆?鐮旂┒鏂规<E98F82>"銆?浼︾悊" | Dify鐭ヨ瘑搴撴<E690B4>绱?| "杩欎釜鐮旂┒鐨勬帓闄ゆ爣鍑嗘槸浠€涔堬紵" |
| `project_info` | "椤圭洰"銆?鐮旂┒"銆?淇℃伅" | 鏁版嵁搴撴煡璇?| "杩欐槸浠€涔堥」鐩<E3808D>紵" |
| `general_chat` | 鍏朵粬 | 鏃犲伐鍏疯皟鐢?| "浣犲ソ" |
#### 浠g爜瀹炵幇
```typescript
// backend/src/modules/iit-manager/services/ChatService.ts
private detectIntent(message: string): {
intent: 'query_record' | 'count_records' | 'project_info' | 'query_protocol' | 'general_chat';
params?: any;
} {
// 1. 璇嗗埆鏂囨。鏌ヨ<E98F8C>锛堜紭鍏堢骇鏈€楂橈級
if (/(鐮旂┒鏂规<E98F82>|浼︾悊|鐭ユ儏鍚屾剰|CRF|绾冲叆|鎺掗櫎|鏍囧噯)/.test(message)) {
return { intent: 'query_protocol' };
}
// 2. 璇嗗埆璁板綍鏌ヨ<E98F8C>锛堝寘鍚獻D鍙风爜锛?
const recordIdMatch = message.match(/(?:ID|璁板綍|鎮h€厊鍙楄瘯鑰?.*?(\d+)|(\d+).*?(?:鍏ョ粍|鏁版嵁|淇℃伅)/i);
if (recordIdMatch) {
return {
intent: 'query_record',
params: { recordId: recordIdMatch[1] || recordIdMatch[2] }
};
}
// 3. 璇嗗埆缁熻<E7BC81>鏌ヨ<E98F8C>
if (/(澶氬皯|鍑犱釜|鍑犳潯|鎬诲叡|缁熻<E7BC81>).*?(璁板綍|鎮h€厊鍙楄瘯鑰厊浜?/.test(message)) {
return { intent: 'count_records' };
}
// 4. 璇嗗埆椤圭洰淇℃伅鏌ヨ<E98F8C>
if (/(椤圭洰|鐮旂┒).*?(鍚嶇О|淇℃伅|鎯呭喌)/.test(message)) {
return { intent: 'project_info' };
}
// 5. 榛樿<E6A69B>锛氭櫘閫氬<E996AB>璇?
return { intent: 'general_chat' };
}
```
---
### 2. 宸ュ叿璋冪敤锛圱ool Calling锛?
#### 2.1 REDCap宸ュ叿
**鍔熻兘**: 鏌ヨ<E98F8C>缁撴瀯鍖栫殑鎮€呮暟鎹?
**宸ュ叿鍒楄〃**:
| 宸ュ叿鍚嶇О | 鍔熻兘 | 杈撳叆 | 杈撳嚭 | 鍝嶅簲鏃堕棿 |
|---------|------|------|------|----------|
| `queryRedcapRecord` | 鏌ヨ<E98F8C>鍗曟潯鎮€呰<E282AC>褰?| recordId | 鎮€呰<E282AC>缁嗕俊鎭?| ~1.2绉?|
| `countRedcapRecords` | 缁熻<E7BC81>€呮€绘暟 | 鏃?| 鎬绘暟+璁板綍ID鍒楄〃 | ~1.3绉?|
| `getProjectInfo` | 鑾峰彇椤圭洰淇℃伅 | 鏃?| 椤圭洰鍩烘湰淇℃伅 | ~50ms |
**鎶€鏈<E282AC>疄鐜?*:
```typescript
// backend/src/modules/iit-manager/adapters/RedcapAdapter.ts
export class RedcapAdapter {
constructor(baseUrl: string, apiToken: string, timeout = 30000) {
this.client = axios.create({
baseURL: baseUrl,
timeout: timeout,
});
}
async exportRecords(options: RedcapExportOptions = {}): Promise<any[]> {
const formData = new URLSearchParams();
formData.append('token', this.apiToken);
formData.append('content', 'record');
formData.append('format', 'json');
if (options.records) {
formData.append('records', JSON.stringify(options.records));
}
const response = await this.client.post('/api/', formData);
return response.data;
}
}
```
#### 2.2 Dify宸ュ叿
**鍔熻兘**: 妫€绱㈤潪缁撴瀯鍖栫殑鐮旂┒鏂囨。
**妫€绱㈤厤缃?*:
| 鍙傛暟 | 鍊?| 璇存槑 |
|------|-----|------|
| `search_method` | semantic_search | 璇<>箟妫€绱<E282AC>紙鍚戦噺鐩镐技搴︼級 |
| `top_k` | 5 | 杩斿洖Top 5鐩稿叧鐗囨<E99097> |
| `chunk_size` | 1500 tokens | 姣忎釜鐗囨<E99097>у皬锛圖ify閰嶇疆锛?|
**鎶€鏈<E282AC>疄鐜?*:
```typescript
// backend/src/modules/iit-manager/services/ChatService.ts
private async queryDifyKnowledge(query: string): Promise<string> {
// 1. 鑾峰彇椤圭洰鐨凞ify Dataset ID
const project = await prisma.iitProject.findFirst({
where: { status: 'active' },
select: { difyDatasetId: true }
});
if (!project?.difyDatasetId) return '';
// 2. 璋冪敤Dify妫€绱<E282AC>PI
const result = await difyClient.retrieveKnowledge(
project.difyDatasetId,
query,
{
retrieval_model: {
search_method: 'semantic_search',
top_k: 5
}
}
);
// 3. 鏍煎紡鍖栨<E98D96>绱㈢粨鏋?
let formattedKnowledge = '';
result.records.forEach((record, index) => {
const score = (record.score * 100).toFixed(1);
formattedKnowledge += `\n[鏂囨。${index + 1}] ${record.document_name} (鐩稿叧搴? ${score}%)\n`;
formattedKnowledge += `${record.content}\n---\n`;
});
return formattedKnowledge;
}
```
---
### 3. 娣峰悎妫€绱<E282AC>紙Hybrid Retrieval锛?
**鏍稿績鍒涙柊鐐?*: 缁撳悎缁撴瀯鍖栨暟鎹<E69A9F>拰闈炵粨鏋勫寲鏂囨。
#### 妫€绱㈢瓥鐣ュ<E990A3>姣?
| 妫€绱㈢被鍨?| 鏁版嵁婧?| 閫傜敤鍦烘櫙 | 妫€绱㈡柟寮?| 绀轰緥鏌ヨ<E98F8C> |
|---------|--------|---------|---------|----------|
| **缁撴瀯鍖栨暟鎹<E69A9F><E98EB9>绱?* | REDCap | 鎮€呰<E282AC>褰曘€佺粺璁℃暟鎹<E69A9F>€佸叆缁勪俊鎭?| SQL鏌ヨ<E98F8C>锛堢簿纭<E7B0BF>尮閰嶏級 | "鏌ヨ<E98F8C>ID 7鐨勬偅鑰? |
| **闈炵粨鏋勫寲鏂囨。妫€绱?* | Dify鐭ヨ瘑搴?| 鐮旂┒鏂规<E98F82>銆丆RF琛ㄦ牸銆佷鸡鐞嗚祫鏂?| 鍚戦噺妫€绱<E282AC>紙璇<E7B499>箟鐩镐技锛?| "鐮旂┒鐨勭撼鍏ユ帓闄ゆ爣鍑? |
#### 浼樺娍
鉁?**浜掕ˉ鎬?*: 涓ょ<E6B693>鏁版嵁婧愯<E5A9A7>鐩朠I鐨勬墍鏈夐渶姹?
鉁?**鑷<>姩鍖?*: 鏍规嵁鎰忓浘鑷<E6B598>姩閫夋嫨鏁版嵁婧?
鉁?**楂樻晥鎬?*: 鍝嶅簲閫熷害蹇<E5AEB3>紙骞冲潎4.8绉掞級
鉁?**鍑嗙‘鎬?*: 100%鍩轰簬鐪熷疄鏁版嵁
#### 鎶€鏈<E282AC>祦绋?
```typescript
async handleMessage(userId: string, userMessage: string): Promise<string> {
// 1. 鎰忓浘璇嗗埆
const { intent, params } = this.detectIntent(userMessage);
// 2. 鏍规嵁鎰忓浘璋冪敤涓嶅悓宸ュ叿
let toolResult: any = null;
let difyKnowledge: string = '';
// REDCap鏁版嵁鏌ヨ<E98F8C>
if (intent === 'query_record' && params?.recordId) {
toolResult = await this.queryRedcapRecord(params.recordId);
} else if (intent === 'count_records') {
toolResult = await this.countRedcapRecords();
}
// Dify鐭ヨ瘑搴撴<E690B4>绱?
if (intent === 'query_protocol') {
difyKnowledge = await this.queryDifyKnowledge(userMessage);
}
// 3. 缁勮<E7BC81>涓婁笅鏂?
const messages = this.buildMessagesWithData(
userMessage,
context,
toolResult, // REDCap鏁版嵁
difyKnowledge, // Dify鏂囨。
userId
);
// 4. LLM鐢熸垚
const response = await this.llm.chat(messages);
return response.content;
}
```
---
### 4. RAG锛圧etrieval Augmented Generation锛?
**鏍稿績浣滅敤**: 闃叉<E99783>AI骞昏<E9AA9E>锛岀淇濆洖绛斿熀浜庣湡瀹炴暟鎹?
#### RAG瀹炵幇鏈哄埗
```typescript
// System Prompt锛堝己璋冨熀浜庣湡瀹炴暟鎹<E69A9F>
const systemPrompt = `浣犳槸IIT Manager鏅鸿兘鍔╂墜銆?
銆愰噸瑕佸師鍒欍€?
鈿狅笍 浣?*蹇呴』鍩轰簬绯荤粺鎻愪緵鐨勬暟鎹<E69A9F>拰鏂囨。**鍥炵瓟闂<E7939F><E99782>锛?*缁濆<E7BC81>涓嶈兘缂栭€犱俊鎭?*銆?
鈿狅笍 濡傛灉绯荤粺鎻愪緵浜嗘煡璇㈢粨鏋滄垨鏂囨。鍐呭<E98D90>锛岃<E9949B>浣跨敤杩欎簺鐪熷疄淇℃伅锛涘<E9949B>鏋滄病鏈夋彁渚涳紝鏄庣鍛婄煡鐢ㄦ埛銆?
銆愪綘鐨勮兘鍔涖€?
鉁?鍥炵瓟鐮旂┒杩涘睍闂<E79D8D><E99782>锛堝熀浜嶳EDCap瀹炴椂鏁版嵁锛?
鉁?鏌ヨ<E98F8C>€呰<E282AC>褰曡<E8A4B0>鎯?
鉁?缁熻<E7BC81>鍏ョ粍浜烘暟
鉁?鎻愪緵椤圭洰淇℃伅
鉁?瑙瓟鐮旂┒鏂规<E98F82>鐩稿叧闂<E58FA7><E99782>锛堝熀浜庣煡璇嗗簱鏂囨。锛?
銆愬洖澶嶅師鍒欍€?
1. **鍩轰簬浜嬪疄**锛氬彧浣跨敤绯荤粺鎻愪緵鐨勬暟鎹<E69A9F>拰鏂囨。锛屼笉缂栭€?
2. **绠€娲佷笓涓?*锛氭帶鍒跺湪150瀛椾互鍐?
3. **鍙嬪ソ绀艰矊**锛氫娇鐢?鎮?绉板懠PI
4. **寮曞<E5AFAE>琛屽姩**锛氬<E9949B>闇€鏇村<E98F87>璇︾粏淇℃伅锛屽缓璁<E7BC93>煡鐪嬪畬鏁存枃妗垨鐧诲綍REDCap绯荤粺
`;
// 鏁版嵁娉ㄥ叆
if (toolResult) {
messages.push({
role: 'system',
content: `銆怰EDCap鏁版嵁鏌ヨ<EFBFBD>缁撴灉銆慭n${JSON.stringify(toolResult, null, 2)}\n\n璇峰熀浜庝互涓婄湡瀹炴暟鎹<EFBFBD>洖绛旂敤鎴烽棶棰樸€俙
});
}
if (difyKnowledge) {
messages.push({
role: 'system',
content: `<EFBFBD>溿n${difyKnowledge}\n\n璇峰熀浜庝互涓婃枃妗唴瀹瑰洖绛旂敤鎴烽棶棰樸
});
}
```
#### 闃插够瑙夋晥鏋滈獙璇?
娴嬭瘯缁撴灉鏄剧ず锛?
- 鉁?鎵€鏈夊洖绛旈兘鏄庣‘寮曠敤鏁版嵁鏉ユ簮
- 鉁?AI涓嶅啀缂栭€犱笉瀛樺湪鐨勪俊鎭?
- 鉁?褰撴枃妗笉瀹屾暣鏃讹紝AI璇氬疄鍛婄煡
- 鉁?鍑嗙鐜囷細100%锛?娆℃祴璇曪級
---
### 5. 涓婁笅鏂囩<E98F82>鐞嗭紙Context Management锛?
**鍔熻兘**: SessionMemory - 淇濈暀鏈€杩?杞<><E69D9E>璇?
#### 瀹炵幇鏂规<E98F82>
```typescript
// backend/src/modules/iit-manager/agents/SessionMemory.ts
export class SessionMemory {
private sessions: Map<string, ConversationHistory> = new Map();
private readonly MAX_HISTORY = 3; // 鍙<>繚鐣欐渶杩?杞?
addMessage(userId: string, role: 'user' | 'assistant', content: string): void {
let session = this.sessions.get(userId);
if (!session) {
session = { userId, messages: [], lastAccessTime: Date.now() };
this.sessions.set(userId, session);
}
session.messages.push({ role, content, timestamp: Date.now() });
session.lastAccessTime = Date.now();
// 淇濇寔鏈€杩?杞<><E69D9E>璇濓紙6鏉℃秷鎭<E7A7B7>
if (session.messages.length > this.MAX_HISTORY * 2) {
session.messages = session.messages.slice(-this.MAX_HISTORY * 2);
}
}
getContext(userId: string): string {
const session = this.sessions.get(userId);
if (!session || session.messages.length === 0) return '';
return session.messages
.map(m => `${m.role === 'user' ? '鐢ㄦ埛' : 'AI'}: ${m.content}`)
.join('\n\n');
}
}
```
#### 璁捐<E79281>鑰冭檻
- **鍐呭瓨缂撳瓨**: Node.js Map锛堥€熷害蹇<E5AEB3>紝婊¤冻MVP闇€姹傦級
- **鑷<>姩娓呯悊**: 30鍒嗛挓鏃犳椿鍔ㄨ嚜鍔ㄦ竻鐞?
- **瀹归噺闄愬埗**: 鏈€杩?杞<><E69D9E>璇濓紙6鏉℃秷鎭<E7A7B7>
- **澶氱敤鎴锋敮鎸?*: 浠<>serId涓簁ey闅旂<E99785>
---
### 6. LLM鐢熸垚锛圠LM Generation锛?
#### 妯″瀷閫夋嫨
| 鎸囨爣 | DeepSeek-V3 | 璇存槑 |
|------|-------------|------|
| **鎴愭湰** | 楼1/鐧句竾tokens | 鏋佷綆鎴愭湰 |
| **涓婁笅鏂?* | 64K tokens | 婊¤冻闇€姹?|
| **鏁堟灉** | 浼樼<E6B5BC> | 涓嶨PT-4鐩稿綋 |
| **鍝嶅簲閫熷害** | ~3绉?| 婊¤冻浼佷笟寰<E7AC9F>俊瑕佹眰 |
#### 璋冪敤鏂瑰紡
```typescript
// 閫氳繃LLMFactory璋冪敤锛堥€氱敤鑳藉姏灞傦級
const llm = LLMFactory.getAdapter('deepseek-v3');
const response = await llm.chat(messages, {
temperature: 0.7,
maxTokens: 500, // 浼佷笟寰<E7AC9F>俊寤鸿<E5AFA4>у埗杈撳嚭闀垮害
topP: 0.9,
});
```
#### Token娑堣€楃粺璁?
| 鍦烘櫙 | 杈撳叆Tokens | 杈撳嚭Tokens | 鎬籘okens | 鎴愭湰 |
|------|-----------|-----------|----------|------|
| 鎺掗櫎鏍囧噯鏌ヨ<E98F8C> | 340 | 79 | 419 | 楼0.00042 |
| CRF鎸囨爣鏌ヨ<E98F8C> | 434 | 75 | 509 | 楼0.00051 |
| ID 7鎮€呮煡璇?| 627 | 88 | 715 | 楼0.00072 |
| 鐮旂┒鐩<E29492>殑鏌ヨ<E98F8C> | 522 | 57 | 579 | 楼0.00058 |
| 鎮h€呯粺璁℃煡璇?| 505 | 42 | 547 | 楼0.00055 |
**骞冲潎鎴愭湰**: 楼0.00056/娆″<E5A886>璇濓紙鏋佷綆锛?
---
### 7. 浼佷笟寰<E7AC9F>俊闆嗘垚锛圵eChat Integration锛?
#### 鏍稿績鍔熻兘
1. **娑堟伅鍔犺В瀵?*: AES + SHA1绛惧悕楠岃瘉
2. **寮傛<E5AFAE>澶勭悊**: 5绉掑唴杩斿洖200锛屽悗鍙板<E98D99>鐞嗘秷鎭?
3. **鍗虫椂鍙嶉<E98D99>**: "馃<>湪鏌ヨ<E98F8C>锛岃<E9949B>绋嶅€?.."
4. **涓诲姩鎺ㄩ€?*: 閫氳繃浼佷笟寰<E7AC9F>俊API鍙戦€佸洖澶?
#### 鎶€鏈<E282AC>疄鐜?
```typescript
// backend/src/modules/iit-manager/controllers/WechatCallbackController.ts
async handlePost(request: FastifyRequest, reply: FastifyReply) {
// 1. 绔嬪嵆杩斿洖200锛?绉掑唴锛?
reply.send('success');
// 2. 寮傛<E5AFAE>澶勭悊娑堟伅
this.processMessageAsync(xmlData).catch(error => {
logger.error('寮傛<E5AFAE>澶勭悊娑堟伅寮傚父', { error: error.message });
});
}
private async processMessageAsync(xmlData: any) {
const { FromUserName, Content } = this.extractMessage(xmlData);
// 3. 鍙戦€佸嵆鏃跺弽棣?
await this.sendTextMessage(FromUserName, '馃<>湪鏌ヨ<E98F8C>锛岃<E9949B>绋嶅€?..');
// 4. 璋冪敤ChatService澶勭悊
const answer = await this.chatService.handleMessage(FromUserName, Content);
// 5. 鍙戦€佹渶缁堝洖澶?
await this.sendTextMessage(FromUserName, answer);
}
```
---
## 馃搳 瀹屾暣鏁版嵁娴佸浘
```
鐢ㄦ埛鎻愰棶
鈫?
浼佷笟寰<EFBFBD>俊娑堟伅
鈫?
[WechatCallbackController]
鈹溾啋 绔嬪嵆杩斿洖200锛?5绉掞級
鈹斺啋 寮傛<E5AFAE>澶勭悊
鈫?
[ChatService.handleMessage()]
鈫?
1. 鎰忓浘璇嗗埆锛堝叧閿<E58FA7>瘝鍖归厤锛?
鈹溾啋 query_protocol锛?
鈹溾啋 query_record锛?
鈹斺啋 count_records锛?
鈫?
2. 宸ュ叿璋冪敤锛堝苟琛屾垨鍗曚竴锛?
鈹溾啋 queryDifyKnowledge()
鈹? 鈹斺啋 Dify API锛堣<E9949B>涔夋<E6B694><EFBFBD>
鈹? 鈹斺啋 杩斿洖Top 5鏂囨。鐗囨<E99097>
鈹?
鈹斺啋 queryRedcapRecord()
鈹斺啋 REDCap API锛圫QL鏌ヨ<E98F8C>锛?
鈹斺啋 杩斿洖鎮€呰<E282AC>褰?
鈫?
3. 涓婁笅鏂囩粍瑁?
鈹溾啋 System Prompt锛堝熀浜庣湡瀹炴暟鎹<E69A9F>師鍒欙級
鈹溾啋 REDCap鏌ヨ<E98F8C>缁撴灉锛堝<E9949B>鏋滄湁锛?
鈹溾啋 Dify妫€绱㈢粨鏋滐紙濡傛灉鏈夛級
鈹溾啋 SessionMemory涓婁笅鏂?
鈹斺啋 鐢ㄦ埛闂<E59F9B><E99782>
鈫?
4. LLM鐢熸垚锛圖eepSeek-V3锛?
鈹斺啋 鐢熸垚鍥炵瓟锛堝熀浜庢敞鍏ョ殑鏁版嵁锛?
鈫?
5. 淇濆瓨鍒癝essionMemory
鈫?
6. 鎺ㄩ€佸埌浼佷笟寰<E7AC9F>
鈫?
鐢ㄦ埛鏀跺埌鍥炲<EFBFBD>
```
---
## 馃幆 鍏抽敭鎶€鏈<E282AC>喅绛?
| 鍐崇瓥鐐?| 閫夋嫨鏂规<E98F82> | 鏇夸唬鏂规<E98F82> | 閫夋嫨鍘熷洜 |
|-------|---------|---------|---------|
| **鎰忓浘璇嗗埆** | 鍏抽敭璇嶅尮閰?| LLM鍒ゆ柇銆丅ERT鍒嗙被 | MVP闃舵<E99783>锛岀畝鍗曢珮鏁堬紝鍑嗙鐜囬珮锛?00%锛?|
| **宸ュ叿璋冪敤** | 鍚屾<E98D9A>涓茶<E6B693> | 骞惰<E9AA9E>璋冪敤 | 鍝嶅簲蹇<E7B0B2>紙<5绉掞級锛岄€昏緫娓呮櫚锛屾槗璋冭瘯 |
| **鐭ヨ瘑搴?* | Dify鏈<79>湴閮ㄧ讲 | 鑷<>缓鍚戦噺搴撱€佷簯鏈嶅姟 | 鏁版嵁瀹夊叏锛屽搷搴斿揩锛屾垚鏈<E59E9A>綆锛屾槗缁存姢 |
| **鍚戦噺鏁版嵁搴?* | Qdrant锛圖ify鍐呯疆锛?| Milvus銆丳inecone | 楂樻€ц兘锛屾棤闇€棰濆<E6A3B0>閮ㄧ讲 |
| **LLM** | DeepSeek-V3 | GPT-4銆丆laude | 鎴愭湰浣庯紙楼1/鐧句竾tokens锛夛紝鏁堟灉濂?|
| **涓婁笅鏂囧瓨鍌?* | 鍐呭瓨缂撳瓨锛圡ap锛?| Redis銆佹暟鎹<E69A9F>簱 | 閫熷害蹇<E5AEB3>紝婊¤冻MVP闇€姹傦紝鏄撳疄鐜?|
| **鏁版嵁娉ㄥ叆** | System Prompt | Function Calling | 绠€鍗曠洿鎺ワ紝闃叉<E99783>骞昏<E9AA9E>锛屾晥鏋滃ソ |
| **寮傛<E5AFAE>澶勭悊** | Node.js寮傛<E5AFAE> | 娑堟伅闃熷垪锛坧g-boss锛?| 绠€鍗曪紝婊¤冻浼佷笟寰<E7AC9F>俊5绉掗檺鍒?|
---
## 馃搱 鎬ц兘鎸囨爣
### 鍝嶅簲鏃堕棿鍒嗘瀽
| 闃舵<E99783> | 鑰楁椂 | 鍗犳瘮 | 浼樺寲绌洪棿 |
|------|------|------|----------|
| 鎰忓浘璇嗗埆 | <10ms | <1% | 鉁?宸叉渶浼?|
| REDCap鏌ヨ<E98F8C> | 1.2-1.3绉?| 25% | 馃數 鍙<>紭鍖栵紙鍔犵紦瀛橈級 |
| Dify妫€绱?| 1.5-1.7绉?| 30% | 馃數 鍙<>紭鍖栵紙璋冩暣top_k锛?|
| LLM鐢熸垚 | 3.0-3.5绉?| 65% | 鈿狅笍 鍙楅檺浜庢ā鍨嬮€熷害 |
| **鎬昏<E98EAC>** | **4.8绉?* | **100%** | 鉁?婊¤冻<5绉掕<E7BB89>姹?|
### Token娑堣€楀垎鏋?
| 鎸囨爣 | 鏁板€?|
|------|------|
| 骞冲潎杈撳叆Tokens | 486 tokens/娆?|
| 骞冲潎杈撳嚭Tokens | 68 tokens/娆?|
| 骞冲潎鎬籘okens | 554 tokens/娆?|
| 骞冲潎鎴愭湰 | 楼0.00055/娆″<E5A886>璇?|
### 鍑嗙‘鐜囨寚鏍?
| 鎸囨爣 | 鏁板€?| 璇存槑 |
|------|------|------|
| 鎰忓浘璇嗗埆鍑嗙‘鐜?| 100% | 5娆℃祴璇曞叏閮ㄦ<E996AE>纭?|
| 鏁版嵁妫€绱㈡垚鍔熺巼 | 100% | 鏃犲け璐ユ<E79290>渚?|
| 鍥炵瓟鍑嗙‘鐜?| 100% | 鎵€鏈夊洖绛斿熀浜庣湡瀹炴暟鎹?|
| 骞昏<E9AA9E>鐜?| 0% | 鏃犵紪閫犱俊鎭?|
---
## 馃殌 Phase 1.5 鎶€鏈<E282AC>垚鏋?
### 鏍稿績绐佺牬
1. 鉁?**闆跺够瑙?*: 鎵€鏈夊洖绛旈兘鍩轰簬鐪熷疄鏁版嵁/鏂囨。
2. 鉁?**娣峰悎妫€绱?*: 缁撴瀯鍖栨暟鎹<E69A9F>紙REDCap锛? 闈炵粨鏋勫寲鏂囨。锛圖ify锛?
3. 鉁?**蹇<>€熷搷搴?*: 骞冲潎4.8绉掞紙婊¤冻浼佷笟寰<EFBFBD>俊<5绉掕<E7BB89>姹傦級
4. 鉁?**楂樺噯纭<E599AF>巼**: 鎰忓浘璇嗗埆100%锛屾暟鎹<E69A9F><E98EB9>绱?00%
5. 鉁?**浣庢垚鏈?*: 楼0.00055/娆″<E5A886>璇?
### 娴嬭瘯楠岃瘉缁撴灉
**娴嬭瘯鏃ユ湡**: 2026-01-04
**娴嬭瘯鍦烘櫙**: 5涓<35>吀鍨嬪<E98DA8>璇濆満鏅?
**娴嬭瘯缁撴灉**: 鍏ㄩ儴閫氳繃鉁?
| 娴嬭瘯鍦烘櫙 | 鎰忓浘 | 鏁版嵁婧?| 鍝嶅簲鏃堕棿 | 缁撴灉 |
|---------|------|--------|----------|------|
| 鎺掗櫎鏍囧噯鏌ヨ<E98F8C> | query_protocol | Dify | 5.4绉?| 鉁?鍑嗙‘ |
| CRF鎸囨爣鏌ヨ<E98F8C> | query_protocol | Dify | 4.9绉?| 鉁?鍑嗙‘ |
| ID 7鎮€呮煡璇?| query_record | REDCap | 5.3绉?| 鉁?鍑嗙‘ |
| 鐮旂┒鐩<E29492>殑鏌ヨ<E98F8C> | query_protocol | Dify | 4.5绉?| 鉁?鍑嗙‘ |
| 鎮h€呯粺璁℃煡璇?| count_records | REDCap | 3.8绉?| 鉁?鍑嗙‘ |
### 鐢ㄦ埛鍙嶉<E98D99>
- 鉁?鍝嶅簲閫熷害婊℃剰锛?5绉掞級
- 鉁?鍥炵瓟鍑嗙‘涓撲笟
- 鉁?鏁版嵁鐪熷疄鍙<E79684>
- 鉁?涓婁笅鏂囪<E98F82>蹇嗘湁鏁?
---
## 馃摑 绯荤粺鑳藉姏鎬荤粨
### 瀵瑰<E780B5>浠嬬粛瑕佺偣
**绠€娲佺増锛?00瀛楋級**:
> "鎴戜滑瀹炵幇浜嗕竴涓?*鏅鸿兘鎰忓浘璇嗗埆绯荤粺**锛屽綋PI璇㈤棶鐮旂┒鏂规<E98F82>鐩稿叧闂<E58FA7><E99782>鏃讹紝AI浼氳嚜鍔ㄤ粠鐭ヨ瘑搴撲腑妫€绱㈡枃妗紱褰撹<E8A4B0><EFBFBD>偅鑰呮暟鎹<E69A9F>椂锛孉I浼氬疄鏃舵煡璇<E785A1>EDCap鏁版嵁搴撱€傞€氳繃**娣峰悎妫€绱㈡妧鏈?*锛孉I鑳藉<E991B3>鍚屾椂鐞嗚В鐮旂┒鏂囨。鍜屾偅鑰呮暟鎹<E69A9F>紝缁欏嚭鍑嗙銆佷笓涓氱殑鍥炵瓟銆傛暣涓<E69AA3>郴缁熷熀浜?*RAG鎶€鏈?*锛堟<E9949B>绱㈠<E7BBB1>寮虹敓鎴愶級锛岀淇滱I鐨勫洖绛?00%鍩轰簬鐪熷疄鏁版嵁锛屼笉浼氱紪閫犱俊鎭<E4BF8A>€?
**鎶€鏈<E282AC>寒鐐癸紙5鐐癸級**:
1. **鎰忓浘璇嗗埆**: 鑷<>姩鍒ゆ柇鐢ㄦ埛闂<E59F9B><E99782>绫诲瀷锛?00%鍑嗙‘鐜囷級
2. **宸ュ叿璋冪敤**: 鏍规嵁鎰忓浘璋冪敤涓嶅悓鐨勬暟鎹<E69A9F>簮锛圧EDCap/Dify锛?
3. **娣峰悎妫€绱?*: 缁撳悎缁撴瀯鍖栨暟鎹<E69A9F>拰闈炵粨鏋勫寲鏂囨。
4. **闆跺够瑙?*: 鎵€鏈夊洖绛旈兘鏈夌湡瀹炴暟鎹<E69A9F>敮鎾戯紙RAG鎶€鏈<E282AC>
5. **蹇<>€熷搷搴?*: 骞冲潎5绉掑唴鍥炲<E98DA5>锛堟弧瓒充紒涓氬井淇¤<E6B787>姹傦級
### 閫傜敤鍦烘櫙
鉁?**PI鏃ュ父绠悊**:
- 鏌ヨ<E98F8C>鐮旂┒鏂规<E98F82>銆佷鸡鐞嗚祫鏂?
- 浜嗚В鎮h€呭叆缁勬儏鍐?
- 缁熻<E7BC81>椤圭洰杩涘睍
鉁?**鏁版嵁璐ㄦ帶**:
- 妫€鏌ユ偅鑰呰<E991B0>褰?
- 鏍稿<E98F8D>鏁版嵁瀹屾暣鎬?
鉁?**鐭ヨ瘑鏌ヨ<E98F8C>**:
- CRF琛ㄦ牸鍐呭<E98D90>
- 绾冲叆鎺掗櫎鏍囧噯
- 鐮旂┒娴佺▼
---
## 馃敆 鐩稿叧鏂囨。
- [IIT Manager Agent 寮€鍙戣<E98D99>褰昡(../06-寮€鍙戣<E98D99>褰?)
- [IIT Manager Agent 鎶€鏈<E282AC>€哄姟娓呭崟](../07-鎶€鏈<E282AC>€哄姟/)
- [MVP寮€鍙戜换鍔℃竻鍗昡(../04-寮€鍙戣<E98D99>鍒?MVP寮€鍙戜换鍔℃竻鍗?md)
- [Phase1.5-AI瀵硅瘽鑳藉姏寮€鍙戣<E98D99>鍒抅(../04-寮€鍙戣<E98D99>鍒?Phase1.5-AI瀵硅瘽鑳藉姏寮€鍙戣<E98D99>鍒?md)
---
**鏂囨。缁存姢**: 鎶€鏈<E282AC>洟闃?
**鏈€鍚庢洿鏂?*: 2026-01-04
**鐗堟湰鍘嗗彶**:
- v1.0 (2026-01-04): 鍒濆<E98D92>鐗堟湰锛孭hase 1.5瀹屾垚