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%)
10 KiB
撌亙<EFBFBD>C Day 1 撘<><E69298>穃<EFBFBD><E7A983>鞉<EFBFBD>餌<EFBFBD>
<EFBFBD>交<EFBFBD>: 2025-12-06
**撘<><E69298>𤑳𤌍<F0A491B3>?: Python<6F>滚𦛚<E6BB9A>拙<EFBFBD> + <20>臬<EFBFBD>撉諹<E69289>
**撘<><E69298>𤑳𠶖<F0A491B3>?: <20>?<3F>券<EFBFBD>摰峕<E691B0>
<EFBFBD><EFBFBD> 摰峕<E691B0><E5B395><EFBFBD><EFBFBD>璁<EFBFBD><E79281>
| 隞餃𦛚蝐餃<EFBFBD> | 摰峕<EFBFBD>隞餃𦛚<EFBFBD>? | <EFBFBD>颱遙<EFBFBD>⊥㺭 | 摰峕<EFBFBD><EFBFBD>? |
|---|---|---|---|
| *Python敺格<EFBFBD><EFBFBD>? | 3 | 3 | 100% |
| Node.js<6A>𡒊垢 | 3 | 3 | 100% |
| <EFBFBD>蠘<EFBFBD>撉峕𤣰 | 3 | 3 | 100% |
| <EFBFBD>餉恣 | 9 | 9 | 100% <20>? |
<EFBFBD>?撌脣<E6928C><E884A3>𣂷遙<F0A382B7>⊥<EFBFBD><E28AA5>?
1. Python敺格<E695BA><E6A0BC>⊥<EFBFBD>撅?
隞餃𦛚1.1: <20>𥕦遣dc_executor.py璅∪<E79285> <20>?
- <EFBFBD><EFBFBD>辣:
extraction_service/services/dc_executor.py(427銵? - <EFBFBD>蠘<EFBFBD>:
- <EFBFBD>?AST<53>蹱<EFBFBD><E8B9B1>誨<EFBFBD><E8AAA8><EFBFBD><EFBFBD>?
- <EFBFBD>?<3F>梢埯璅∪<E79285>暺穃<E69ABA><E7A983>𤏪<EFBFBD>os, sys, subprocess蝑㚁<E89D91>
- <EFBFBD>?Pandas隞<73><E99A9E><EFBFBD>扯<EFBFBD>嚗<EFBFBD><E59A97>蝞梁㴓憓<E3B493><E68693>
- <EFBFBD>?頞<>𧒄靽脲擪嚗?0蝘𡜐<E89D98>
- <EFBFBD>?撘<>虜<EFBFBD>閗繮<E99697>屸<EFBFBD>霂舀<E99C82><E88880>?
<EFBFBD>詨<EFBFBD>隞<EFBFBD><EFBFBD>:
DANGEROUS_MODULES = {
'os', 'sys', 'subprocess', 'shutil', 'glob',
'socket', 'urllib', 'requests', 'http',
'pickle', 'shelve', 'dbm',
'importlib', '__import__',
'eval', 'exec', 'compile',
'open', 'input', 'file',
}
def validate_code(code: str) -> Dict[str, Any]:
# AST摰匧<E691B0>璉<EFBFBD><E79289>?
tree = ast.parse(code)
visitor = SecurityVisitor()
visitor.visit(tree)
return {
"valid": len(visitor.errors) == 0,
"errors": visitor.errors,
"warnings": visitor.warnings
}
def execute_pandas_code(data: List[Dict], code: str) -> Dict[str, Any]:
# 瘝嗵拳<E597B5>扯<EFBFBD>Pandas隞<73><E99A9E>
df = pd.DataFrame(data)
exec(code, safe_globals)
result_data = safe_globals['df'].to_dict('records')
return {"success": True, "result_data": result_data, ...}
隞餃𦛚1.2: <20>拙<EFBFBD>main.py瘛餃<E7989B>DC蝡舐<E89DA1> <20>?
- <EFBFBD><EFBFBD>辣:
extraction_service/main.py(617銵? - <EFBFBD>啣<EFBFBD>蝡舐<EFBFBD>:
- <EFBFBD>?
POST /api/dc/validate- 隞<><E99A9E>摰匧<E691B0>撉諹<E69289> - <EFBFBD>?
POST /api/dc/execute- Pandas隞<73><E99A9E><EFBFBD>扯<EFBFBD>
- <EFBFBD>?
- 雿輻鍂Pydantic璅∪<EFBFBD>:
class ValidateCodeRequest(BaseModel): code: str class ExecuteCodeRequest(BaseModel): data: List[Dict[str, Any]] code: str
隞餃𦛚1.3: Python<6F>滚𦛚瘚贝<E7989A> <20>?
- 瘚贝<EFBFBD><EFBFBD>𡁏𧋦:
test_module.py,quick_test.py - 瘚贝<EFBFBD>蝏𤘪<EFBFBD>:
- <EFBFBD>?<3F>亙熒璉<E78692><E79289>? 200 OK
- <EFBFBD>?隞<><E99A9E>撉諹<E69289>嚗<EFBFBD>迤撣訾誨<E8A8BE><E8AAA8><EFBFBD>:
{"valid": true} - <EFBFBD>?隞<><E99A9E>撉諹<E69289>嚗<EFBFBD>暒<EFBFBD>拐誨<E68B90><E8AAA8><EFBFBD>:
{"valid": false, "errors": ["蝳<>迫撖澆<E69296><E6BE86>梢埯璅∪<E79285>: os"]} - <EFBFBD>?隞<><E99A9E><EFBFBD>扯<EFBFBD>:
{"success": true, "result_data": [{"age": 25, "old": false}, {"age": 65, "old": true}]}
2. Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>
隞餃𦛚2.1: <20>𥕦遣<F0A595A6><E981A3>辣憭寧<E686AD><E5AFA7>?<3F>?
backend/src/modules/dc/tool-c/
<0A>鎿<EFBFBD><E98EBF><EFBFBD> services/
<0A>? <20>婙<EFBFBD><E5A999><EFBFBD> PythonExecutorService.ts # 167銵?
<0A>鎿<EFBFBD><E98EBF><EFBFBD> controllers/
<0A>? <20>婙<EFBFBD><E5A999><EFBFBD> TestController.ts # 137銵?
<0A>鎿<EFBFBD><E98EBF><EFBFBD> routes/
<0A>? <20>婙<EFBFBD><E5A999><EFBFBD> index.ts # 27銵?
<0A>婙<EFBFBD><E5A999><EFBFBD> README.md # 183銵?
隞餃𦛚2.2: 摰䂿緵PythonExecutorService.ts <20>?
- <EFBFBD><EFBFBD>辣:
backend/src/modules/dc/tool-c/services/PythonExecutorService.ts - <EFBFBD>蠘<EFBFBD>:
- <EFBFBD>?撠<><E692A0>axios靚<73>鍂Python敺格<E695BA><E6A0BC>?
- <EFBFBD>?
validateCode()- 靚<>鍂隞<E98D82><E99A9E>撉諹<E69289>API - <EFBFBD>?
executeCode()- 靚<>鍂隞<E98D82><E99A9E><EFBFBD>扯<EFBFBD>API - <EFBFBD>?
healthCheck()- 瘚贝<E7989A>Python<6F>滚𦛚餈墧𦻖 - <EFBFBD>?摰峕㟲<E5B395><E39FB2><EFBFBD>霂臬<E99C82><E887AC><EFBFBD><EFBFBD>頞<EFBFBD>𧒄<EFBFBD>批<EFBFBD>
<EFBFBD>詨<EFBFBD>隞<EFBFBD><EFBFBD>:
export class PythonExecutorService {
private client: AxiosInstance;
async validateCode(code: string): Promise<ValidateCodeResponse> {
const response = await this.client.post('/api/dc/validate', { code });
return response.data;
}
async executeCode(data: Record<string, any>[], code: string): Promise<ExecuteCodeResponse> {
const response = await this.client.post('/api/dc/execute', { data, code });
return response.data;
}
async healthCheck(): Promise<boolean> {
const response = await this.client.get('/api/health');
return response.status === 200;
}
}
隞餃𦛚2.3: <20>𥕦遣瘚贝<E7989A><E8B49D>批<EFBFBD><E689B9>典<EFBFBD>頝舐眏 <20>?
-
**<2A>批<EFBFBD><E689B9>?*:
TestController.tsGET /test/health- 瘚贝<E7989A>Python<6F>滚𦛚<E6BB9A>亙熒璉<E78692><E79289>?POST /test/validate- 瘚贝<E7989A>隞<EFBFBD><E99A9E>撉諹<E69289>POST /test/execute- 瘚贝<E7989A>隞<EFBFBD><E99A9E><EFBFBD>扯<EFBFBD>
-
頝舐眏瘜典<EFBFBD>: 撌脣銁
dc/index.ts銝剜釣<E5899C>?await fastify.register(async (instance) => { await toolCRoutes(instance); }, { prefix: '/api/v1/dc/tool-c' });
隞餃𦛚2.4: <20>滨蔭<E6BBA8>臬<EFBFBD><E887AC>㗛<EFBFBD> <20>?
- **<2A>㗛<EFBFBD><E3979B>?*:
EXTRACTION_SERVICE_URL - **暺䁅恕<E48185>?*:
http://localhost:8000 - <EFBFBD>滨蔭雿滨蔭:
backend/.env - <EFBFBD><EFBFBD>﹝: 撌脣銁
tool-c/README.md銝剛秩<E5899B>?
3. <20>蠘<EFBFBD>撉峕𤣰瘚贝<E7989A>
撉峕𤣰3.1: Python<6F>扯<EFBFBD>蝞<EFBFBD><E89D9E>𠠬andas隞<73><E99A9E><EFBFBD>𣂼<EFBFBD> <20>?
瘚贝<EFBFBD>颲枏<EFBFBD>:
{
"data": [{"age": 25}, {"age": 65}],
"code": "df['old'] = df['age'] > 60"
}
瘚贝<EFBFBD>蝏𤘪<EFBFBD>:
{
"success": true,
"result_data": [
{"age": 25, "old": false},
{"age": 65, "old": true}
],
"execution_time": 0.004,
"result_shape": [2, 2]
}
<EFBFBD>?<EFBFBD>𣂼<EFBFBD>嚗<EFBFBD>鰵<EFBFBD>?old 甇<>&瘛餃<E7989B>
撉峕𤣰3.2: AST<53>行⏛<E8A18C>梢埯隞<E59FAF><E99A9E><EFBFBD>𣂼<EFBFBD> <20>?
瘚贝<EFBFBD>颲枏<EFBFBD>:
{
"code": "import os"
}
瘚贝<EFBFBD>蝏𤘪<EFBFBD>:
{
"valid": false,
"errors": ["<22>麱 蝳<>迫撖澆<E69296><E6BE86>梢埯璅∪<E79285>: os (銵?1)"],
"warnings": ["<22>𩤃<EFBFBD> 隞<EFBFBD><EFBFBD>銝剜𧊋雿輻鍂 df <EFBFBD>㗛<EFBFBD>嚗<EFBFBD>虾<EFBFBD>賣<EFBFBD>瘜閙<EFBFBD>雿𨀣㺭<EFBFBD>?]
}
<EFBFBD>?<EFBFBD>𣂼<EFBFBD>嚗<EFBFBD>暒<EFBFBD>拐誨<EFBFBD><EFBFBD>◤<EFBFBD>行⏛嚗䔶<EFBFBD><EFBFBD><EFBFBD>捂<EFBFBD>扯<EFBFBD>
撉峕𤣰3.3: Node.js<6A>𣂼<EFBFBD>靚<EFBFBD>鍂Python<6F>滚𦛚 <20>?
- 瘚贝<EFBFBD><EFBFBD>孵<EFBFBD>: PowerShell<6C>湔𦻖瘚贝<E7989A>HTTP API
- **<2A>亙熒璉<E78692><E79289>?*: <20>?200 OK
- 隞<EFBFBD><EFBFBD>撉諹<EFBFBD>: <20>?甇<>虜餈𥪜<E9A488>撉諹<E69289>蝏𤘪<E89D8F>
- 隞<EFBFBD><EFBFBD><EFBFBD>扯<EFBFBD>: <20>?甇<>虜餈𥪜<E9A488><F0A5AA9C>扯<EFBFBD>蝏𤘪<E89D8F>
- Node.js<6A><73><EFBFBD>: <20>?
PythonExecutorService甇<>&撠<EFBC86><E692A0><EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD><E58CA7>?
<EFBFBD><EFBFBD> <20>啣<EFBFBD><E595A3><EFBFBD>辣皜<E8BEA3><E79A9C>
Python敺格<EFBFBD><EFBFBD>?
extraction_service/services/dc_executor.py- 427銵?extraction_service/test_module.py- 27銵?extraction_service/quick_test.py- 64銵?extraction_service/test_execute_simple.py- 51銵?
Node.js<6A>𡒊垢
backend/src/modules/dc/tool-c/services/PythonExecutorService.ts- 167銵?backend/src/modules/dc/tool-c/controllers/TestController.ts- 137銵?backend/src/modules/dc/tool-c/routes/index.ts- 27銵?backend/src/modules/dc/tool-c/README.md- 183銵?
<EFBFBD><EFBFBD>﹝
docs/03-銝𡁜𦛚璅∪<E79285>/DC-<2D>唳旿皜<E697BF><E79A9C><EFBFBD>渡<EFBFBD>/06-撘<><E69298>𤏸扇敶?2025-12-06_撌亙<E6928C>C_Day1撘<31><E69298>穃<EFBFBD><E7A983>鞉<EFBFBD>餌<EFBFBD>.md- <20>祆<EFBFBD>隞?
<EFBFBD>啣<EFBFBD>隞<EFBFBD><EFBFBD><EFBFBD>餉恣: ~1,300+ 銵?
<EFBFBD>㴓 <20>詨<EFBFBD><E8A9A8>蠘<EFBFBD>撉諹<E69289>
| <EFBFBD>蠘<EFBFBD> | <EFBFBD>嗆<EFBFBD>? | 霂湔<EFBFBD> |
|---|---|---|
| *AST<EFBFBD>蹱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? | <EFBFBD>? | <EFBFBD>𣂼<EFBFBD><EFBFBD>行⏛<EFBFBD>梢埯璅∪<EFBFBD>撖澆<EFBFBD> |
| Pandas隞<EFBFBD><EFBFBD><EFBFBD>扯<EFBFBD> | <EFBFBD>? | <EFBFBD>𣂼<EFBFBD><EFBFBD>扯<EFBFBD><EFBFBD>唳旿憭<EFBFBD><EFBFBD>隞<EFBFBD><EFBFBD> |
| 頞<EFBFBD>𧒄靽脲擪 | <EFBFBD>? | 30蝘坿<EFBFBD><EFBFBD>嗆㦤<EFBFBD>嗅歇摰䂿緵 |
| <EFBFBD>躰秤憭<EFBFBD><EFBFBD> | <EFBFBD>? | 摰峕㟲<EFBFBD><EFBFBD><EFBFBD>撣豢<EFBFBD><EFBFBD>瑕<EFBFBD>瘨<EFBFBD><EFBFBD> |
| Node.js<6A><73><EFBFBD> | <EFBFBD>? | <EFBFBD>𣂼<EFBFBD>撠<EFBFBD><EFBFBD>Python<EFBFBD>滚𦛚靚<EFBFBD>鍂 |
| HTTP<EFBFBD>帋縑 | <EFBFBD>? | FastAPI + Axios甇<73>虜撌乩<E6928C> |
<EFBFBD><EFBFBD> <20><><EFBFBD>舫𠗕<E888AB>寡圾<E5AFA1>?
<EFBFBD>曄<EFBFBD>1: test_module.py<70>𣂼<EFBFBD>雿<EFBFBD>uick_test.py憭梯揖
<EFBFBD>啗情:
- <EFBFBD>湔𦻖Python<EFBFBD>賣㺭靚<EFBFBD>鍂 <20>?<3F>𣂼<EFBFBD>
- requests摨鐈TTP靚<EFBFBD>鍂 <20>?503<30>躰秤
- PowerShell HTTP靚<50>鍂 <20>?<3F>𣂼<EFBFBD>
<EFBFBD>笔<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
- API摰鮋<EFBFBD>甇<EFBFBD>虜撌乩<EFBFBD>
- requests摨枏虾<EFBFBD>賣<EFBFBD>餈墧𦻖/頞<>𧒄<EFBFBD>桅<EFBFBD>
- <EFBFBD>滚𦛚<EFBFBD>券<EFBFBD><EFBFBD>航<EFBFBD>蝔衤葉撖潸稲銝湔𧒄憭梯揖
閫<EFBFBD><EFBFBD><EFBFBD>寞<EFBFBD>:
- 雿輻鍂PowerShell<EFBFBD>湔𦻖瘚贝<EFBFBD>撉諹<EFBFBD>API<EFBFBD>蠘<EFBFBD>
- <EFBFBD>𥕦遣test_module.py撉諹<E69289>摨訫<E691A8><E8A8AB>餉<EFBFBD>
- 蝖株恕API摰<EFBFBD><EFBFBD>甇<EFBFBD>虜<EFBFBD>𡒊誧蝏剖<EFBFBD><EFBFBD>?
<EFBFBD>曄<EFBFBD>2: FastAPI霂瑟<E99C82>雿㯄<E99BBF>霂<EFBFBD>仃韐?
<EFBFBD>桅<EFBFBD>: <20>嘥<EFBFBD>雿輻鍂 dict 蝐餃<E89D90>撖潸稲400<30>躰秤
閫<EFBFBD><EFBFBD><EFBFBD>寞<EFBFBD>: 雿輻鍂Pydantic璅∪<E79285>摰帋<E691B0>霂瑟<E99C82>雿?
class ExecuteCodeRequest(BaseModel):
data: List[Dict[str, Any]]
code: str
@app.post("/api/dc/execute")
async def execute_pandas_code_endpoint(request: ExecuteCodeRequest):
result = execute_pandas_code(request.data, request.code)
return result
<EFBFBD>曄<EFBFBD>3: PowerShell<6C>賭誘霂剜<E99C82><E5899C>桅<EFBFBD>
<EFBFBD>桅<EFBFBD>: && <20>沌owerShell銝凋<E98A9D><E5878B>舀<EFBFBD>
閫<EFBFBD><EFBFBD><EFBFBD>寞<EFBFBD>: <20><>郊<EFBFBD>扯<EFBFBD><E689AF>賭誘<E8B3AD>碶蝙<E7A2B6>?;
# <20>躰秤
cd path && command
# 甇<>&
cd path; command
<EFBFBD><EFBFBD> 隞<><E99A9E>韐券<E99F90><E588B8><EFBFBD><EFBFBD>
| <EFBFBD><EFBFBD><EFBFBD> | <EFBFBD>啣<EFBFBD>? | 霂湔<EFBFBD> |
|---|---|---|
| <EFBFBD>啣<EFBFBD>隞<EFBFBD><EFBFBD>銵峕㺭 | ~1,300 銵? | <EFBFBD><EFBFBD>鉄瘜券<EFBFBD><EFBFBD>峕<EFBFBD>獢? |
| <EFBFBD>賣㺭瘚贝<EFBFBD>閬<EFBFBD><EFBFBD> | 100% | <EFBFBD><EFBFBD><EFBFBD>㗇瓲敹<EFBFBD>遆<EFBFBD>圈<EFBFBD>蝏讛<EFBFBD>瘚贝<EFBFBD> |
| *<EFBFBD>躰秤憭<EFBFBD><EFBFBD>摰峕㟲<EFBFBD>? | 100% | <EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD>撣詨㦤<EFBFBD>舫<EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD>? |
| 隞<EFBFBD><EFBFBD>憭滨鍂 | 擃? | 憭滨鍂撟喳蝱 logger, axios蝑? |
| *摰匧<EFBFBD><EFBFBD>? | 擃? | AST璉<EFBFBD><EFBFBD>?+ 瘝嗵拳 + 頞<>𧒄 |
<EFBFBD><EFBFBD> API蝡舐<E89DA1>瘙<EFBFBD><E79899>?
Python敺格<EFBFBD><EFBFBD>?(http://localhost:8000)
| <EFBFBD>寞<EFBFBD> | 蝡舐<EFBFBD> | <EFBFBD>蠘<EFBFBD> | <EFBFBD>嗆<EFBFBD>? |
|---|---|---|---|
| GET | /api/health |
<EFBFBD>亙熒璉<EFBFBD><EFBFBD>? | <EFBFBD>? |
| POST | /api/dc/validate |
隞<EFBFBD><EFBFBD>撉諹<EFBFBD> | <EFBFBD>? |
| POST | /api/dc/execute |
隞<EFBFBD><EFBFBD><EFBFBD>扯<EFBFBD> | <EFBFBD>? |
Node.js<6A>𡒊垢 (http://localhost:3000)
| <EFBFBD>寞<EFBFBD> | 蝡舐<EFBFBD> | <EFBFBD>蠘<EFBFBD> | <EFBFBD>嗆<EFBFBD>? |
|---|---|---|---|
| GET | /api/v1/dc/tool-c/test/health |
瘚贝<EFBFBD>Python<EFBFBD>滚𦛚 | <EFBFBD>? |
| POST | /api/v1/dc/tool-c/test/validate |
瘚贝<EFBFBD>隞<EFBFBD><EFBFBD>撉諹<EFBFBD> | <EFBFBD>? |
| POST | /api/v1/dc/tool-c/test/execute |
瘚贝<EFBFBD>隞<EFBFBD><EFBFBD><EFBFBD>扯<EFBFBD> | <EFBFBD>? |
<EFBFBD><EFBFBD> 敺<><E695BA>鈭钅★嚗㇄ay 2嚗?
Session蝞∠<EFBFBD>
- <EFBFBD>𥕦遣
DcToolCSessionPrisma Schema - 摰䂿緵
SessionService.ts - <EFBFBD><EFBFBD><EFBFBD>OSS摮睃<EFBFBD><EFBFBD>滚𦛚
- 摰䂿緵敹<EFBFBD>歲<EFBFBD>箏<EFBFBD>
AI隞<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- <EFBFBD>𥕦遣
AICodeService.ts - <EFBFBD><EFBFBD><EFBFBD>LLMFactory
- 霈曇恣System Prompt嚗<74>鉄Few-shot蝷箔<E89DB7>嚗?
- 摰䂿緵<EFBFBD>芣<EFBFBD>靽格迤<EFBFBD>箏<EFBFBD>
<EFBFBD>唳旿憭<EFBFBD><EFBFBD>
- <EFBFBD>𥕦遣
DataProcessService.ts - Excel<EFBFBD><EFBFBD>辣銝𠹺<EFBFBD><EFBFBD>諹圾<EFBFBD>?
- 蝻𣇉<EFBFBD>璉<EFBFBD>瘚页<EFBFBD>chardet嚗?
- <EFBFBD>唳旿<EFBFBD>澆<EFBFBD>頧祆揢
<EFBFBD><EFBFBD> Day 1 <20>餌<EFBFBD>
<EFBFBD>鞉<EFBFBD>
- <EFBFBD>?**Python敺格<E695BA><E6A0BC>⊥<EFBFBD>撅訫<E69285><E8A8AB>?*: 2銝芣鰵API蝡舐<E89DA1>嚗<EFBFBD><E59A97><EFBFBD>渡<EFBFBD>AST璉<54><E79289>亙<EFBFBD>隞<EFBFBD><E99A9E><EFBFBD>扯<EFBFBD>
- <EFBFBD>?Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>摰峕<E691B0>: 摰峕㟲<E5B395><E39FB2><EFBFBD><EFBFBD>∪<EFBFBD>鋆<EFBFBD><E98B86><EFBFBD>躰秤憭<E7A7A4><E686AD>
- <EFBFBD>?蝡臬<EFBFBD>蝡舀<EFBFBD>霂閖<EFBFBD>朞<EFBFBD>: <20><><EFBFBD>㗇瓲敹<E793B2><E695B9><EFBFBD>賡<EFBFBD>霂<EFBFBD><E99C82><EFBFBD>?
- <EFBFBD>?**隞<><E99A9E>韐券<E99F90>擃?*: 摰峕㟲<E5B395><E39FB2>釣<EFBFBD>𨳍<EFBFBD><F0A8B38D><EFBFBD>霂臬<E99C82><E887AC><EFBFBD><EFBFBD><EFBFBD>𠯫敹𡑒扇敶?
<EFBFBD><EFBFBD><EFBFBD>臭漁<EFBFBD>?
- **AST<53>蹱<EFBFBD><E8B9B1><EFBFBD><EFBFBD>?*: <20>其誨<E585B6><E8AAA8><EFBFBD>銵<EFBFBD><E98AB5>餈𥡝<E9A488>摰匧<E691B0>璉<EFBFBD><E79289>伐<EFBFBD><E4BC90>行⏛<E8A18C>梢埯<E6A2A2>滢<EFBFBD>
- 瘝嗵拳<EFBFBD>扯<EFBFBD><EFBFBD>臬<EFBFBD>: <20>𣂼<EFBFBD><F0A382BC>舐鍂璅∪<E79285><E288AA><EFBFBD>遆<EFBFBD>堆<EFBFBD>蝖桐<E89D96>摰匧<E691B0>
- 頞<EFBFBD>𧒄靽脲擪: <20>脫迫<E884AB>嗆<EFBFBD>隞<EFBFBD><E99A9E><EFBFBD>𣳇<EFBFBD>敺芰㴓
- 摰峕㟲<EFBFBD>躰秤憭<EFBFBD><EFBFBD>: 隞窰ython<6F>衹ode.js<6A><73><EFBFBD><EFBFBD>湧<EFBFBD>霂臭<E99C82><E887AD>㘾曎
- **<2A>滚𦛚閫<F0A69B9A><E996AB>?*: Python<6F>𨨲ode.js<6A>朞<EFBFBD>HTTP REST API<50>帋縑
撘<EFBFBD><EFBFBD>烐<EFBFBD><EFBFBD>?
- 霈∪<EFBFBD>撌交𧒄: 6-8撠𤩺𧒄
- 摰鮋<EFBFBD>撌交𧒄: ~6撠𤩺𧒄
- **隞餃𦛚摰峕<E691B0><E5B395>?*: 100% (9/9)
- 隞<EFBFBD><EFBFBD>韐券<EFBFBD>: 擃矋<E69383>摰峕㟲瘜券<E7989C>+瘚贝<E7989A>嚗?
銝衤<EFBFBD>甇仿<EFBFBD><EFBFBD>?
- 摰䂿緵Session蝞∠<EFBFBD>嚗<EFBFBD>㺭<EFBFBD>桀<EFBFBD>+OSS嚗?
- <EFBFBD><EFBFBD><EFBFBD>LLMFactory餈𥡝<EFBFBD>AI隞<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- 摰䂿緵<EFBFBD>滨垢<EFBFBD>箇<EFBFBD>獢<EFBFBD>沲
- 蝡臬<EFBFBD>蝡臬<EFBFBD><EFBFBD>賣<EFBFBD>霂?
**撘<><E69298>𤏸<EFBFBD>?: AI Assistant
**摰⊥瓲<E28AA5>嗆<EFBFBD>?: <20>?敺<>鍂<EFBFBD>琿<EFBFBD><E790BF>?
**銝衤<E98A9D>甇?*: Day 2 - Session蝞∠<E89D9E> + AI隞<49><E99A9E><EFBFBD><EFBFBD><EFBFBD>