# ai-hr **Repository Path**: hephec321/ai-hr ## Basic Information - **Project Name**: ai-hr - **Description**: ai-hr - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-03 - **Last Updated**: 2026-02-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Simular HR Agent ๆ•ฐๅญ—ๅ‘˜ๅทฅ ๐ŸŽฏ **Simular HR Agent** ๆ˜ฏไธ€ๆฌพๅŸบไบŽ AI ็š„ๆ•ฐๅญ—ๅ‘˜ๅทฅ็ณป็ปŸ๏ผŒๆ—จๅœจ้€š่ฟ‡่‡ชๅŠจๅŒ–ๆŠ€ๆœฏๆๅ‡ HR ๅทฅไฝœๆ•ˆ็އใ€‚่ฏฅ็ณป็ปŸ้›†ๆˆไบ† Simular Agent-S (GUI-Agents) ๆ ธๅฟƒ่ƒฝๅŠ›๏ผŒๆ”ฏๆŒๆต่งˆๅ™จ่‡ชๅŠจๅŒ–ใ€ๆกŒ้ข่‡ชๅŠจๅŒ–ๅ’Œๆ™บ่ƒฝๅทฅไฝœๆต็ผ–ๆŽ’๏ผŒๅฏๅค„็†ๆ‹›่˜ใ€ๅ…ฅ่Œใ€่–ช้…ฌๆ ธ็ฎ—็ญ‰ๅคๆ‚ HR ๅœบๆ™ฏไปปๅŠกใ€‚ ## ๆ ธๅฟƒๅŠŸ่ƒฝๆจกๅ— ### ๐Ÿค– ๆ™บ่ƒฝๆ‹›่˜็ฎก็† - **่Œไฝๅ‘ๅธƒ่‡ชๅŠจๅŒ–**๏ผšๆ”ฏๆŒๅคšๅนณๅฐ๏ผˆBoss ็›ด่˜็ญ‰๏ผ‰่‡ชๅŠจๅ‘ๅธƒ่Œไฝไฟกๆฏ๏ผŒ็ป“ๅˆ AI ็†่งฃๆ‹›่˜้œ€ๆฑ‚ๅนถๆ™บ่ƒฝๅกซๅ……ๅ†…ๅฎน - **็ฎ€ๅކๆ™บ่ƒฝ่งฃๆž**๏ผšๅŸบไบŽ OCR ๆŠ€ๆœฏ่‡ชๅŠจ่ฏ†ๅˆซ PDF/ๅ›พ็‰‡็ฎ€ๅކ๏ผŒๆๅ–ๅ€™้€‰ไบบๅ…ณ้”ฎไฟกๆฏ - **ๅ€™้€‰ไบบ็ญ›้€‰**๏ผšAI ่พ…ๅŠฉๅˆ็ญ›๏ผŒ่‡ชๅŠจ่ฏ„ไผฐๅ€™้€‰ไบบๅŒน้…ๅบฆ - **้ข่ฏ•้‚€่ฏทๅ‘้€**๏ผš่‡ชๅŠจ็”Ÿๆˆๅนถๅ‘้€้ข่ฏ•้€š็Ÿฅ๏ผŒๆ”ฏๆŒๅคš็ง้ข่ฏ•ๅฝขๅผ ### ๐Ÿ‘ฅ ๅ…ฅ่Œๆต็จ‹่‡ชๅŠจๅŒ– - **ๅ‘˜ๅทฅไฟกๆฏ็ฎก็†**๏ผšๅˆ›ๅปบๅ’Œ็ปดๆŠคๅ‘˜ๅทฅๆกฃๆกˆ๏ผŒๆ”ฏๆŒ่บซไปฝ่ฏไฟกๆฏ่‡ชๅŠจ่ฏ†ๅˆซ - **ๅคš็ณป็ปŸ่ดฆๅทๅˆ›ๅปบ**๏ผš่‡ชๅŠจๅœจ OAใ€้’‰้’‰ใ€้‚ฎไปถ็ญ‰็ณป็ปŸๅˆ›ๅปบๅ…ฅ่Œ่ดฆๅท - **ๅ…ฅ่Œ่ฟ›ๅบฆ่ทŸ่ธช**๏ผšๅฏ่ง†ๅŒ–ๅฑ•็คบๅ‘˜ๅทฅๅ…ฅ่Œๆต็จ‹็Šถๆ€ ### ๐Ÿ’ฐ ่–ช้…ฌๆ ธ็ฎ—็ฎก็† - **่€ƒๅ‹คๆ•ฐๆฎๅฏผๅ‡บ**๏ผš่‡ชๅŠจไปŽ้’‰้’‰็ญ‰ๅนณๅฐๅฏผๅ‡บ่€ƒๅ‹ค่ฎฐๅฝ• - **่–ช่ต„่ฎก็ฎ—**๏ผšๆ”ฏๆŒ็คพไฟๅ…ฌ็งฏ้‡‘ไธช็จŽ่‡ชๅŠจๆ ธ็ฎ— - **ๅทฅ่ต„ๅ‘ๆ”พ**๏ผšๆ‰น้‡ๆ‰ง่กŒๅทฅ่ต„ๅ‘ๆ”พๆ“ไฝœ - **ๅކๅฒ่ฎฐๅฝ•ๆŸฅ่ฏข**๏ผšๅฎŒๆ•ด็š„่–ช้…ฌๅ‘ๆ”พๅކๅฒ่ฟฝๆบฏ ### โš™๏ธ ๅทฅไฝœๆตๅผ•ๆ“Ž - **ๅฏ่ง†ๅŒ–ๅทฅไฝœๆต่ฎพ่ฎก**๏ผš้€š่ฟ‡ๅฝ•ๅˆถๆˆ–ๆ‰‹ๅŠจ้…็ฝฎๅˆ›ๅปบ่‡ชๅŠจๅŒ–ๅทฅไฝœๆต - **ๆททๅˆๆ‰ง่กŒๆจกๅผ**๏ผšๆ”ฏๆŒไผ ็ปŸๆญฅ้ชคไธŽ AI ๆ™บ่ƒฝๆญฅ้ชคๆททๅˆ็ผ–ๆŽ’ - **ไบบๆœบๅไฝœๆœบๅˆถ**๏ผšๅคๆ‚ไปปๅŠกๆ”ฏๆŒไบบๅทฅๆŽฅ็ฎก๏ผŒ็กฎไฟๆ‰ง่กŒๅ‡†็กฎ - **ๅทฅไฝœๆตๅฝ•ๅˆถ**๏ผšๅฎžๆ—ถ่ฎฐๅฝ•็”จๆˆทๆ“ไฝœๅนถ่ฝฌๆขไธบๅฏๆ‰ง่กŒๅทฅไฝœๆต ## ๆŠ€ๆœฏๆžถๆž„ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๅ‰็ซฏๅฑ•็คบๅฑ‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Vue.js โ”‚ โ”‚ PyQt6 โ”‚ โ”‚ WebSocket โ”‚ โ”‚ โ”‚ โ”‚ (Web็ฎก็†) โ”‚ โ”‚ (ๆกŒ้ขๅฎขๆˆท็ซฏ) โ”‚ โ”‚ (ๅฎžๆ—ถ้€šไฟก) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ ๅŽ็ซฏๆœๅŠกๅฑ‚ (FastAPI) โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ API ่ทฏ็”ฑๅฑ‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๆ‹›่˜ๆจกๅ— โ”‚ โ”‚ ๅ…ฅ่Œๆจกๅ— โ”‚ โ”‚ ่–ช้…ฌๆจกๅ— โ”‚ โ”‚ ๅทฅไฝœๆตๆจกๅ— โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ๆ ธๅฟƒๅผ•ๆ“Žๅฑ‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ Agent-S2 โ”‚ โ”‚ ๆต่งˆๅ™จๅผ•ๆ“Ž โ”‚ โ”‚ ๆกŒ้ข่‡ชๅŠจๅŒ–ๅผ•ๆ“Ž โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ AIๆ™บ่ƒฝไฝ“ โ”‚ โ”‚ (Playwright)โ”‚ โ”‚ (PyQt/PyAutoGUI)โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ OCR ๅค„็†ๅฑ‚ โ”‚ โ”‚ โ”‚ โ”‚ (่บซไปฝ่ฏ่ฏ†ๅˆซ | ็ฎ€ๅކ่งฃๆž | ้ชŒ่ฏ็ ่ฏ†ๅˆซ) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ AI ๅŸบ็ก€ๆจกๅž‹ๅฑ‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ UI-TARS โ”‚ โ”‚ OpenAI / Claude API โ”‚ โ”‚ โ”‚ โ”‚ (GUIๅฎšไฝๆจกๅž‹) โ”‚ โ”‚ (ๅคง่ฏญ่จ€ๆจกๅž‹) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### ๆ ธๅฟƒๆŠ€ๆœฏๆ ˆ | ๅฑ‚ๆฌก | ๆŠ€ๆœฏ้€‰ๅž‹ | ่ฏดๆ˜Ž | |------|----------|------| | **AI ๆ ธๅฟƒ** | Simular Agent-S (gui-agents) | GUI ๆ™บ่ƒฝไฝ“๏ผŒ็†่งฃๅฑๅน•ๅนถๆ‰ง่กŒ่‡ช็„ถ่ฏญ่จ€ๆŒ‡ไปค | | **ๅŽ็ซฏๆก†ๆžถ** | Python + FastAPI | ้ซ˜ๆ€ง่ƒฝๅผ‚ๆญฅ Web ๆก†ๆžถ | | **ๆต่งˆๅ™จ่‡ชๅŠจๅŒ–** | Playwright | ่ทจๆต่งˆๅ™จ่‡ชๅŠจๅŒ–ๆต‹่ฏ•ๆก†ๆžถ | | **ๆกŒ้ข่‡ชๅŠจๅŒ–** | PyQt6 + PyAutoGUI | ๆœฌๅœฐๅบ”็”จ่‡ชๅŠจๅŒ–ๆŽงๅˆถ | | **OCR ่ฏ†ๅˆซ** | PaddleOCR / EasyOCR | ๆ–‡ๆกฃ่ฏ†ๅˆซไธŽๆ–‡ๆœฌๆๅ– | | **ๅ‰็ซฏๆก†ๆžถ** | Vue 3 + TypeScript | ็ŽฐไปฃๅŒ–ๅ‰็ซฏๅผ€ๅ‘ | | **UI ็ป„ไปถๅบ“** | Element Plus | Vue 3 ็ป„ไปถๅบ“ | | **ๆ•ฐๆฎๅบ“** | SQLAlchemy + SQLite | ORM ๆก†ๆžถไธŽๆ•ฐๆฎๅญ˜ๅ‚จ | ## ้กน็›ฎ็›ฎๅฝ•็ป“ๆž„ ``` simular-hr-agent/ โ”œโ”€โ”€ backend/ # ๅŽ็ซฏๆœๅŠก โ”‚ โ”œโ”€โ”€ app/ โ”‚ โ”‚ โ”œโ”€โ”€ api/v1/ # API ๆŽฅๅฃๆจกๅ— โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ agent.py # Agent ็Šถๆ€ไธŽๆŽงๅˆถ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ audit.py # ๅฎก่ฎกๆ—ฅๅฟ—ๆŽฅๅฃ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ onboarding.py # ๅ…ฅ่Œ็ฎก็†ๆŽฅๅฃ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ payroll.py # ่–ช้…ฌๆ ธ็ฎ—ๆŽฅๅฃ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ recruitment.py # ๆ‹›่˜็ฎก็†ๆŽฅๅฃ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ workflow.py # ๅทฅไฝœๆตๆŽฅๅฃ โ”‚ โ”‚ โ”œโ”€โ”€ core/ # ๆ ธๅฟƒๅผ•ๆ“Ž โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ agent_s2.py # Agent-S2 ๆ™บ่ƒฝไฝ“ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ browser.py # ๆต่งˆๅ™จ่‡ชๅŠจๅŒ– โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ desktop.py # ๆกŒ้ข่‡ชๅŠจๅŒ– โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ocr.py # OCR ่ฏ†ๅˆซๅผ•ๆ“Ž โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ workflow.py # ๅทฅไฝœๆตๅผ•ๆ“Ž โ”‚ โ”‚ โ””โ”€โ”€ models/ # ๆ•ฐๆฎๆจกๅž‹ โ”‚ โ”‚ โ”œโ”€โ”€ audit.py # ๅฎก่ฎกๆ—ฅๅฟ—ๆจกๅž‹ โ”‚ โ”‚ โ”œโ”€โ”€ candidate.py # ๅ€™้€‰ไบบๆจกๅž‹ โ”‚ โ”‚ โ”œโ”€โ”€ employee.py # ๅ‘˜ๅทฅๆจกๅž‹ โ”‚ โ”‚ โ”œโ”€โ”€ task.py # ไปปๅŠกๆจกๅž‹ โ”‚ โ”‚ โ”œโ”€โ”€ user.py # ็”จๆˆทๆจกๅž‹ โ”‚ โ”‚ โ””โ”€โ”€ workflow.py # ๅทฅไฝœๆตๆจกๅž‹ โ”‚ โ”œโ”€โ”€ requirements.txt # Python ไพ่ต– โ”‚ โ”œโ”€โ”€ config.py # ้…็ฝฎๆ–‡ไปถ โ”‚ โ””โ”€โ”€ main.py # ๅบ”็”จๅ…ฅๅฃ โ”œโ”€โ”€ frontend/ # ๅ‰็ซฏๅบ”็”จ โ”‚ โ”œโ”€โ”€ src/ โ”‚ โ”‚ โ”œโ”€โ”€ views/ # ้กต้ข็ป„ไปถ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Dashboard/ # ๅทฅไฝœๅฐ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Recruitment/ # ๆ‹›่˜็ฎก็† โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Onboarding/ # ๅ…ฅ่Œ็ฎก็† โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Payroll/ # ่–ช้…ฌ็ฎก็† โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Settings/ # ็ณป็ปŸ่ฎพ็ฝฎ โ”‚ โ”‚ โ”œโ”€โ”€ api/ # API ่ฐƒ็”จ โ”‚ โ”‚ โ”œโ”€โ”€ router/ # ่ทฏ็”ฑ้…็ฝฎ โ”‚ โ”‚ โ””โ”€โ”€ types/ # TypeScript ็ฑปๅž‹ โ”‚ โ”œโ”€โ”€ package.json # Node ไพ่ต– โ”‚ โ””โ”€โ”€ vite.config.ts # Vite ้…็ฝฎ โ”œโ”€โ”€ desktop-client/ # ๆกŒ้ขๅฎขๆˆท็ซฏ โ”‚ โ”œโ”€โ”€ requirements.txt # Python ไพ่ต– โ”‚ โ””โ”€โ”€ src/main.py # ๅฎขๆˆท็ซฏๅ…ฅๅฃ โ””โ”€โ”€ docs/ # ้กน็›ฎๆ–‡ๆกฃ โ”œโ”€โ”€ AGENT_S2_INTEGRATION.md โ”œโ”€โ”€ GUI_AGENTS_CORE.md โ”œโ”€โ”€ DIAGRAMS.md โ””โ”€โ”€ MODULE_UPDATE.md ``` ## ๅฟซ้€Ÿๅผ€ๅง‹ ### ็Žฏๅขƒ่ฆๆฑ‚ | ไพ่ต–้กน | ๆœ€ไฝŽ็‰ˆๆœฌ | ่ฏดๆ˜Ž | |--------|----------|------| | Python | 3.10+ | ๆŽจ่ 3.11 | | Node.js | 18+ | ๅ‰็ซฏๆž„ๅปบ | | Git | 2.0+ | ็‰ˆๆœฌๆŽงๅˆถ | | Redis | 6.0+ | ๅฏ้€‰๏ผŒไปปๅŠก้˜Ÿๅˆ— | ### ๆญฅ้ชค 1๏ผšๅฎ‰่ฃ…ๅŽ็ซฏไพ่ต– ```bash cd backend # ๅˆ›ๅปบ่™šๆ‹Ÿ็Žฏๅขƒ๏ผˆๆŽจ่๏ผ‰ python -m venv venv source venv/bin/activate # Linux/Mac # ๆˆ– venv\Scripts\activate # Windows # ๅฎ‰่ฃ… Python ไพ่ต– pip install -r requirements.txt # ๅฎ‰่ฃ… Playwright ๆต่งˆๅ™จ playwright install chromium ``` ### ๆญฅ้ชค 2๏ผšๅฎ‰่ฃ… Simular Agent-S ```bash # ๅฎ‰่ฃ… gui-agents ๅŒ… pip install gui-agents # ้ชŒ่ฏๅฎ‰่ฃ… python -c "from gui_agents import AgentS; print('Agent-S ๅฎ‰่ฃ…ๆˆๅŠŸ')" ``` ### ๆญฅ้ชค 3๏ผš้…็ฝฎ API ๅฏ†้’ฅ ๅˆ›ๅปบ `backend/.env` ๆ–‡ไปถ๏ผš ```env # LLM API ้…็ฝฎ๏ผˆ่‡ณๅฐ‘ไธ€ไธช๏ผ‰ OPENAI_API_KEY=sk-your-openai-key ANTHROPIC_API_KEY=sk-ant-your-key # UI-TARS ๆจกๅž‹้…็ฝฎ HF_TOKEN=hf-your-huggingface-token GROUNDING_URL=http://localhost:8080 GROUNDING_MODEL=ui-tars-1.5-7b # ๅฑๅน•ๅˆ†่พจ็އ GROUNDING_WIDTH=1920 GROUNDING_HEIGHT=1080 ``` **ๅฏ้€‰๏ผšไฝฟ็”จ Claude ๆ›ฟไปฃ OpenAI** ```env LLM_PROVIDER=anthropic ANTHROPIC_API_KEY=sk-ant-your-key ``` ### ๆญฅ้ชค 4๏ผš่ฎพ็ฝฎ UI-TARS ๆจกๅž‹ **ๆ–นๅผไธ€๏ผšไฝฟ็”จ HuggingFace ๆŽจ็† API๏ผˆๆŽจ่๏ผ‰** ้ป˜่ฎค้…็ฝฎๅทฒๆŒ‡ๅ‘ HF ๆŽจ็†็ซฏ็‚น๏ผŒไป…้œ€้…็ฝฎ `HF_TOKEN` ๅณๅฏใ€‚ **ๆ–นๅผไบŒ๏ผšๆœฌๅœฐ้ƒจ็ฝฒ UI-TARS** ```bash # ๅฏๅŠจ Flask ๆœๅŠก python -m ui_tars_server --model-path UI-TARS/ui-tars-1.5-7b --port 8080 # ๆˆ–ไฝฟ็”จ vLLM ๅŠ ้€Ÿ๏ผˆ้œ€่ฆ GPU๏ผ‰ python -m ui_tars_server --model-path UI-TARS/ui-tars-1.5-7b --port 8080 --backend vllm ``` ### ๆญฅ้ชค 5๏ผšๅฏๅŠจๆœๅŠก **็ปˆ็ซฏ 1๏ผšๅฏๅŠจๅŽ็ซฏ** ```bash cd backend python main.py ``` **็ปˆ็ซฏ 2๏ผšๅฏๅŠจๅ‰็ซฏ** ```bash cd frontend npm install npm run dev ``` **็ปˆ็ซฏ 3๏ผšๅฏๅŠจๆกŒ้ขๅฎขๆˆท็ซฏ๏ผˆๅฏ้€‰๏ผ‰** ```bash cd desktop-client pip install -r requirements.txt python src/main.py ``` **็ปˆ็ซฏ 4๏ผšๅฏๅŠจ Redis๏ผˆๅฏ้€‰๏ผ‰** ```bash redis-server ``` ### ่ฎฟ้—ฎๅบ”็”จ - **Web ็ฎก็†็•Œ้ข**๏ผšhttp://localhost:5173 - **ๅŽ็ซฏ API**๏ผšhttp://localhost:8000 - **API ๆ–‡ๆกฃ**๏ผšhttp://localhost:8000/docs ## ไฝฟ็”จๆ–นๅผ ### ๆ–นๅผไธ€๏ผšไผ ็ปŸ่‡ชๅŠจๅŒ– ้€š่ฟ‡ๅฝ•ๅˆถๆˆ–ๆ‰‹ๅŠจ้…็ฝฎๅˆ›ๅปบๅทฅไฝœๆต๏ผŒๆ‰ง่กŒ้ข„ๅฎšไน‰ๆ“ไฝœๅบๅˆ—ใ€‚ ```python # ๅˆ›ๅปบๅทฅไฝœๆต workflow = Workflow( name="ๆ‹›่˜ๆต็จ‹", steps=[ WorkflowStep(type=StepType.BROWSER_NAVIGATE, config={"url": "https://www.zhipin.com"}), WorkflowStep(type=StepType.BROWSER_CLICK, config={"selector": ".job-btn"}), WorkflowStep(type=StepType.BROWSER_FILL, config={"selector": "#job-title", "value": "Pythonๅทฅ็จ‹ๅธˆ"}), ] ) # ๆ‰ง่กŒๅทฅไฝœๆต engine.execute(workflow) ``` ### ๆ–นๅผไบŒ๏ผšAI ่‡ช็„ถ่ฏญ่จ€ๆŒ‡ไปค ไฝฟ็”จ Agent-S ็†่งฃๅ’Œๆ‰ง่กŒ่‡ช็„ถ่ฏญ่จ€ไปปๅŠกใ€‚ ```python # ๅˆๅง‹ๅŒ– Agent agent = SimularAgentS2( openai_api_key="sk-xxx", grounding_url="http://localhost:8080" ) # ๆ‰ง่กŒ่‡ช็„ถ่ฏญ่จ€ๆŒ‡ไปค result = await agent.execute_instruction( "ๅœจBoss็›ด่˜ไธŠๅ‘ๅธƒไธ€ไธชPythonๅทฅ็จ‹ๅธˆ่Œไฝ๏ผŒ่ฆๆฑ‚3ๅนดไปฅไธŠ็ป้ชŒ๏ผŒ็†Ÿๆ‚‰Djangoๅ’ŒVue" ) # ่‡ชๅŠจ่งฃๆž็ฎ€ๅކ resume_info = await agent.parse_resume("/path/to/resume.pdf") ``` ### ๆ–นๅผไธ‰๏ผšๆททๅˆๅทฅไฝœๆต ็ป“ๅˆไผ ็ปŸๆญฅ้ชคๅ’Œ AI ๆ™บ่ƒฝๆญฅ้ชค๏ผŒๅค„็†ๅคๆ‚ๆต็จ‹ใ€‚ ```python workflow = Workflow( name="ๆททๅˆๅทฅไฝœๆต็คบไพ‹", steps=[ # ไผ ็ปŸๆญฅ้ชค๏ผšๅฏผ่ˆช WorkflowStep(type=StepType.BROWSER_NAVIGATE, config={"url": "https://portal.company.com"}), # AI ๆญฅ้ชค๏ผšๆ™บ่ƒฝๅกซๅ†™ๅคๆ‚่กจๅ• WorkflowStep( type=StepType.AGENT_INSTRUCTION, config={ "instruction": "ๅกซๅ†™ๅ…ฅ่Œไฟกๆฏ่กจๅ•๏ผŒๅŒ…ๆ‹ฌๅง“ๅใ€่บซไปฝ่ฏใ€ๆ‰‹ๆœบๅท๏ผŒ้€‰ๆ‹ฉๆŠ€ๆœฏ้ƒจ้—จ", "agent_type": "agent_s2" } ), # ไผ ็ปŸๆญฅ้ชค๏ผš็กฎ่ฎคๆไบค WorkflowStep(type=StepType.BROWSER_CLICK, config={"selector": "#submit-btn"}), ] ) ``` ## ๆ ธๅฟƒๆŽฅๅฃ ### Agent ๆŽงๅˆถ | ๆŽฅๅฃ | ๆ–นๆณ• | ่ฏดๆ˜Ž | |------|------|------| | `/api/v1/agent/status` | GET | ่Žทๅ– Agent ็Šถๆ€ | | `/api/v1/agent/control` | POST | ๆŽงๅˆถ Agent ๆ‰ง่กŒ | | `/api/v1/agent/screenshot` | GET | ่Žทๅ–ๅฝ“ๅ‰ๅฑๅน•ๆˆชๅ›พ | | `/api/v1/agent/ws` | WebSocket | ๅฎžๆ—ถ็Šถๆ€ๆŽจ้€ | ### ๆ‹›่˜็ฎก็† | ๆŽฅๅฃ | ๆ–นๆณ• | ่ฏดๆ˜Ž | |------|------|------| | `/api/v1/recruitment/jobs/post` | POST | ๅ‘ๅธƒ่Œไฝ | | `/api/v1/recruitment/candidates/parse-resume` | POST | ่งฃๆž็ฎ€ๅކ | | `/api/v1/recruitment/candidates` | GET | ๅ€™้€‰ไบบๅˆ—่กจ | ### ๅ…ฅ่Œ็ฎก็† | ๆŽฅๅฃ | ๆ–นๆณ• | ่ฏดๆ˜Ž | |------|------|------| | `/api/v1/onboarding/employees` | POST | ๅˆ›ๅปบๅ‘˜ๅทฅ | | `/api/v1/onboarding/employees/{id}/parse-id-card` | POST | ่บซไปฝ่ฏ่ฏ†ๅˆซ | | `/api/v1/onboarding/employees/{id}/create-accounts` | POST | ๅˆ›ๅปบ็ณป็ปŸ่ดฆๅท | ### ่–ช้…ฌ็ฎก็† | ๆŽฅๅฃ | ๆ–นๆณ• | ่ฏดๆ˜Ž | |------|------|------| | `/api/v1/payroll/attendance/export` | POST | ๅฏผๅ‡บ่€ƒๅ‹ค | | `/api/v1/payroll/calculate` | POST | ่ฎก็ฎ—่–ช่ต„ | | `/api/v1/payroll/history` | GET | ่–ช่ต„ๅކๅฒ | ## ๅฎ‰ๅ…จ็‰นๆ€ง โš ๏ธ **ๅฎ‰ๅ…จ่ญฆๅ‘Š**๏ผšๆœฌ็ณป็ปŸๆถ‰ๅŠๆ•ๆ„Ÿๆ•ฐๆฎๅค„็†ๅ’Œ่‡ชๅŠจๅŒ–ๆ“ไฝœ๏ผŒ่ฏทๅŠกๅฟ…ๆณจๆ„ไปฅไธ‹ๅฎ‰ๅ…จไบ‹้กนใ€‚ ### ๐Ÿ”’ ๆœฌๅœฐๅฎ‰ๅ…จๆžถๆž„ - **API ๅฏ†้’ฅไฟๆŠค**๏ผšๅฏ†้’ฅๅญ˜ๅ‚จๅœจๆœฌๅœฐ `.env` ๆ–‡ไปถ๏ผŒไธไธŠไผ ่‡ณไปฃ็ ไป“ๅบ“ - **ๆ•ฐๆฎๆœฌๅœฐๅŒ–**๏ผšๆ‰€ๆœ‰ๆ•ฐๆฎๅค„็†ๅœจๆœฌๅœฐๆ‰ง่กŒ๏ผŒไธไพ่ต–ๅค–้ƒจไบ‘ๆœๅŠก - **ๆฒ™็ฎฑๆ‰ง่กŒ**๏ผšAgent-S ๆ”ฏๆŒๆœฌๅœฐไปฃ็ ๆ‰ง่กŒ๏ผˆLocalEnv๏ผ‰๏ผŒ้œ€่ฐจๆ…Ž้…็ฝฎ - **ๆ“ไฝœๅฎก่ฎก**๏ผšๅฎŒๆ•ด่ฎฐๅฝ•ๆ‰€ๆœ‰่‡ชๅŠจๅŒ–ๆ“ไฝœ๏ผŒๆ”ฏๆŒ่ฟฝๆบฏๅ’Œๅฎก่ฎก ### โš ๏ธ ๆณจๆ„ไบ‹้กน 1. **API ๅฏ†้’ฅๅฎ‰ๅ…จ**๏ผšๅˆ‡ๅ‹ฟๅฐ†ๅŒ…ๅซๅฏ†้’ฅ็š„ `.env` ๆ–‡ไปถๆไบคๅˆฐ็‰ˆๆœฌๆŽงๅˆถ็ณป็ปŸ 2. **็ฝ‘็ปœ้š”็ฆป**๏ผš็”Ÿไบง็Žฏๅขƒๅปบ่ฎฎ้…็ฝฎ็ฝ‘็ปœ้š”็ฆป๏ผŒ้™ๅˆถ Agent ๅฏ่ฎฟ้—ฎ่Œƒๅ›ด 3. **ไบบๅทฅ็›‘็ฃ**๏ผšๅ…ณ้”ฎๆ“ไฝœๅปบ่ฎฎๅฏ็”จไบบๅทฅ็กฎ่ฎคๆœบๅˆถ 4. **ๆƒ้™ๆŽงๅˆถ**๏ผš้ตๅพชๆœ€ๅฐๆƒ้™ๅŽŸๅˆ™๏ผŒไป…ๆŽˆไบˆๅฟ…่ฆ็ณป็ปŸๆƒ้™ ## ๆ•…้šœๆŽ’้™ค ### ๅธธ่ง้—ฎ้ข˜ | ้—ฎ้ข˜ | ๅŽŸๅ›  | ่งฃๅ†ณๆ–นๆกˆ | |------|------|----------| | `No module named 'gui_agents'` | Agent-S ๆœชๅฎ‰่ฃ… | ๆ‰ง่กŒ `pip install gui-agents` | | `OPENAI_API_KEY not found` | ็ผบๅฐ‘็Žฏๅขƒๅ˜้‡ | ๆฃ€ๆŸฅ `.env` ๆ–‡ไปถ้…็ฝฎ | | UI-TARS ่ฟžๆŽฅๅคฑ่ดฅ | ๆœๅŠกๆœชๅฏๅŠจ | ๅฏๅŠจ UI-TARS ๆœๅŠก | | Playwright ๆต่งˆๅ™จๆœชๆ‰พๅˆฐ | ๆต่งˆๅ™จๆœชๅฎ‰่ฃ… | ๆ‰ง่กŒ `playwright install chromium` | | ๆƒ้™่ขซๆ‹’็ป๏ผˆWindows๏ผ‰ | ๆƒ้™ไธ่ถณ | ไปฅ็ฎก็†ๅ‘˜่บซไปฝ่ฟ่กŒ | ### ๆต‹่ฏ•ๅฎ‰่ฃ… ```python # ๆต‹่ฏ• Agent-S ๅŸบๆœฌๅŠŸ่ƒฝ python -c " from gui_agents import AgentS print('โœ“ Agent-S ๆจกๅ—ๅฏผๅ…ฅๆˆๅŠŸ') import os from backend.config import settings print('โœ“ ้…็ฝฎๅŠ ่ฝฝๆˆๅŠŸ') print(f' - LLM ๆไพ›ๅ•†: {settings.LLM_PROVIDER}') print(f' - ๆŽฅๅœฐๆจกๅž‹: {settings.GROUNDING_MODEL}') " ``` ## ๆ–‡ๆกฃ่ต„ๆบ | ๆ–‡ๆกฃ | ่ฏดๆ˜Ž | |------|------| | [INSTALL.md](./backend/INSTALL.md) | ่ฏฆ็ป†ๅฎ‰่ฃ…ๆŒ‡ๅ— | | [AGENT_S2_INTEGRATION.md](./docs/AGENT_S2_INTEGRATION.md) | Agent-S ้›†ๆˆ่ฏดๆ˜Ž | | [GUI_AGENTS_CORE.md](./docs/GUI_AGENTS_CORE.md) | GUI-Agents ๆ ธๅฟƒๅŠŸ่ƒฝ | | [DIAGRAMS.md](./docs/DIAGRAMS.md) | ๆžถๆž„ไธŽๆต็จ‹ๅ›พ | | [MODULE_UPDATE.md](./docs/MODULE_UPDATE.md) | ๆจกๅ—ๆ›ดๆ–ฐ่ฏดๆ˜Ž | ## ่ฎธๅฏ่ฏ ๆœฌ้กน็›ฎ้‡‡็”จ **MIT ่ฎธๅฏ่ฏ**ใ€‚ ## ่ดก็ŒฎๆŒ‡ๅ— ๆฌข่ฟŽ่ดก็Œฎไปฃ็ ๆˆ–ๆ–‡ๆกฃ๏ผŒ่ฏท้ตๅพชไปฅไธ‹ๆญฅ้ชค๏ผš 1. Fork ๆœฌไป“ๅบ“ 2. ๅˆ›ๅปบ็‰นๆ€งๅˆ†ๆ”ฏ (`git checkout -b feature/AmazingFeature`) 3. ๆไบคๆ›ดๆ”น (`git commit -m 'Add some AmazingFeature'`) 4. ๆŽจ้€ๅˆฐๅˆ†ๆ”ฏ (`git push origin feature/AmazingFeature`) 5. ๅˆ›ๅปบ Pull Request ### ่ดก็Œฎ่ฏดๆ˜Ž 1. **Agent-S ้›†ๆˆ่ฆๆฑ‚**๏ผš็กฎไฟ็†่งฃ GUI-Agents ๅทฅไฝœๅŽŸ็† 2. **ๅฎ‰ๅ…จๆณจๆ„ไบ‹้กน**๏ผšๆถ‰ๅŠๆ•ๆ„Ÿๆ•ฐๆฎๅค„็†้œ€่ฐจๆ…Ž 3. **ๆ€ง่ƒฝไผ˜ๅŒ–ๅปบ่ฎฎ**๏ผš่€ƒ่™‘ๅคง่ง„ๆจกๆ•ฐๆฎๅœบๆ™ฏไธ‹็š„ๆ€ง่ƒฝ่กจ็Žฐ 4. **ๆจกๅ—ๆ›ดๆ–ฐ่ฏดๆ˜Ž**๏ผšๆ›ดๆ–ฐๆ–‡ๆกฃไปฅๅๆ˜ ไปฃ็ ๅ˜ๆ›ด --- **โšก ้ซ˜ๆ•ˆๅŠžๅ…ฌ ยท ๆ™บ่ƒฝ HR ยท ่ฎฉ่‡ชๅŠจๅŒ–ไธบๆ‚จๆœๅŠก**