diff --git a/docs/SYSTEM_ARCHITECTURE.md b/docs/SYSTEM_ARCHITECTURE.md index 5e88cc5..a30b56c 100644 --- a/docs/SYSTEM_ARCHITECTURE.md +++ b/docs/SYSTEM_ARCHITECTURE.md @@ -139,33 +139,62 @@ ## ๐Ÿ”ง ๅ…ฑไบซๅŸบ็ก€่ฎพๆ–ฝ -### 1. ่ฎฐๅฟ†็ณป็ปŸ (Memory System) +### 1. ่ฎฐๅฟ†็ณป็ปŸ (Memory System) - ๅ•ๅบ“่žๅˆๆžถๆž„ ``` -โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ ่ฎฐๅฟ†็ณป็ปŸๆžถๆž„ โ”‚ -โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค -โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ -โ”‚ โ”‚ Mem0 Core โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ Qdrant โ”‚ โ”‚ -โ”‚ โ”‚ (Python) โ”‚ โ”‚ (Vector DB)โ”‚ โ”‚ -โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ -โ”‚ โ”‚ โ”‚ โ”‚ -โ”‚ โ”‚ Embedding โ”‚ 1024 ็ปดๅบฆ โ”‚ -โ”‚ โ”‚ (DashScope) โ”‚ localhost:6333 โ”‚ -โ”‚ โ–ผ โ–ผ โ”‚ -โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ -โ”‚ โ”‚ MEMORY.md + memory/*.md โ”‚ โ”‚ -โ”‚ โ”‚ (ๆ–‡ๆœฌ่ฎฐๅฟ† ยท Git ็‰ˆๆœฌๆŽงๅˆถ) โ”‚ โ”‚ -โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ่ฎฐๅฟ†็ณป็ปŸๆžถๆž„ (ๅ•ๅบ“่žๅˆ) โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ Mem0 Core โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ Qdrant โ”‚ โ”‚ +โ”‚ โ”‚ (Python) โ”‚ โ”‚ mem0_global_v4 โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ (ๅ”ฏไธ€ๅ…จๅฑ€ Collection) โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ Embedding โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ +โ”‚ โ”‚ v4 (1024) โ”‚ โ”‚ Payload Metadata โ”‚ โ”‚ โ”‚ +โ”‚ โ–ผ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ agent_id โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ DashScope โ”‚ โ”‚ โ”‚ โ”‚ - "main" โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ Gemini Pro โ”‚ โ”‚ โ”‚ โ”‚ - "life" โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ text-embed- โ”‚ โ”‚ โ”‚ โ”‚ user_id โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ ding-v4 โ”‚ โ”‚ โ”‚ โ”‚ - "wang_..." โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` -**้…็ฝฎ:** +**ๆ ธๅฟƒๆžถๆž„:** - **Qdrant:** `localhost:6333` -- **Embedding:** DashScope `text-embedding-v3` (1024 ็ปดๅบฆ) -- **Collection:** `mem0_v4_main`, `mem0_v4_life` (้š”็ฆป) +- **Embedding:** Gemini Pro `text-embedding-v4` (1024 ็ปดๅบฆ) +- **Collection:** `mem0_global_v4` (**ๅ”ฏไธ€ๅ…จๅฑ€ Collection**) +- **้š”็ฆปๆ–นๅผ:** ๅ…ƒๆ•ฐๆฎๆ ‡็ญพ่ฝฏ้š”็ฆป (`metadata.agent_id`) - **ๆ›ดๆ–ฐ้ข‘็އ:** ๆฏ 5 ๅˆ†้’Ÿ่‡ชๅŠจๅŒๆญฅ +**้š”็ฆปๆœบๅˆถ:** +```python +# ๅ†™ๅ…ฅๆ—ถๆณจๅ…ฅ agent_id +metadata = { + "agent_id": "main", # ๆˆ– "life" + "user_id": "wang_yuanzhang", + "source": "openclaw" +} + +# ๆฃ€็ดขๆ—ถไฝฟ็”จ metadata ่ฟ‡ๆปค +memories = memory.search( + query, + user_id="wang_yuanzhang", + filters={"agent_id": "main"} # ่ฝฏ้š”็ฆปๅ…ณ้”ฎ +) +``` + +**ๆžถๆž„ไผ˜ๅŠฟ:** +- โœ… **็ปดๅบฆ็ปŸไธ€** - ้ฟๅ…ๅคš Collection ็ปดๅบฆไธไธ€่‡ดๅฏผ่‡ด็š„ๅดฉๆบƒ้ฃŽ้™ฉ +- โœ… **่ฟ็ปด็ฎ€ๅŒ–** - ๅ•ไธ€ Collection๏ผŒ้™ไฝŽ็ฎก็†ๅคๆ‚ๅบฆ +- โœ… **่ฎฐๅฟ†ๅ…ฑไบซ** - ๆ”ฏๆŒ่ทจ Agent ่ฎฐๅฟ†ๆŸฅ่ฏข๏ผˆๅฏ้€‰๏ผ‰ +- โœ… **ๆœ€ไฝณๅฎž่ทต** - ็ฌฆๅˆ Mem0 ๅฎ˜ๆ–นๆŽจ่็š„ๅ…ƒๆ•ฐๆฎ้š”็ฆปๆจกๅผ + --- ### 2. ็ณป็ปŸๆœๅŠก (Systemd Services) @@ -231,9 +260,21 @@ โ–ผ โ–ผ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Session โ”‚ โ”‚ Session โ”‚ โ”‚ Session โ”‚ - โ”‚ (main) โ”‚ โ”‚ (life) โ”‚ โ”‚ (new) โ”‚ - โ”‚ Eason โ”‚ โ”‚ ๅผ ๅคงๅธˆ โ”‚ โ”‚ ๆœชๆฅ โ”‚ - โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ (main) โ”‚ โ”‚ (life) โ”‚ โ”‚ Session โ”‚ + โ”‚ Eason โ”‚ โ”‚ ๅผ ๅคงๅธˆ โ”‚ โ”‚ (new) โ”‚ + โ”‚agent_id= โ”‚ โ”‚agent_id= โ”‚ โ”‚ ๆœชๆฅ โ”‚ + โ”‚ "main" โ”‚ โ”‚ "life" โ”‚ โ”‚ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ–ผ + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” + โ”‚ mem0_global_v4 โ”‚ + โ”‚ (ๅ”ฏไธ€ Collection) โ”‚ + โ”‚ metadata.agent_id โ”‚ + โ”‚ ่ฝฏ้š”็ฆป โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` **ๅ…ณ้”ฎ็‰นๆ€ง:** @@ -242,6 +283,7 @@ 3. **ๅ…ฑไบซๆŠ€่ƒฝ** - skills/ ็›ฎๅฝ•ไธ‹็š„ๆŠ€่ƒฝๆ‰€ๆœ‰ Agent ๅฏ็”จ 4. **็‹ฌ็ซ‹้…็ฝฎ** - ๆฏไธช Agent ๆœ‰่‡ชๅทฑ็š„ workspace ๅ’Œ้…็ฝฎ 5. **็ปŸไธ€็ฎก็†** - Eason ่ดŸ่ดฃๆ‰€ๆœ‰ Agent ็š„้ƒจ็ฝฒๅ’Œไผ˜ๅŒ– +6. **ๅ•ๅบ“่žๅˆ** - ๆ‰€ๆœ‰่ฎฐๅฟ†ๅ†™ๅ…ฅๅ”ฏไธ€ Collection๏ผŒ้€š่ฟ‡ `metadata.agent_id` ้š”็ฆป ---