# Chiến lược gắn tag bộ nhớ Tag là bí mật cho thu hồi bộ nhớ có khả năng mở rộng. Hướng dẫn này cho thấy cách gắn tag bộ nhớ để đúng cái quay lại đúng thời điểm. ## Tại sao Tag quan trọng Không có tag, bạn có tìm kiếm toàn văn phẳng. Với tag, bạn có điều hướng có cấu trúc: ```bash # Without tags: search everything GET /memory/search?q=docker # With tags: filter by project + technology GET /memory/search?q=deployment&tag=synapse&tag=docker ``` Tag cho phép: - **Lọc nhanh** — `GET /memory/by-tag?tag=production` - **Tìm kiếm phạm vi** — `?q=auth&tag=project-x` - **Nhóm** — tìm tất cả bộ nhớ "mistake" cho một dự án - **Tham chiếu chéo** — bộ nhớ chia sẻ tag liên quan ## Lược đồ tag ### Tag dự án Sử dụng tên dự án làm tag: ``` synapse, synapse-mcp, synapse-chat, synapse-sdk ``` ### Tag công nghệ Sử dụng tên công nghệ: ``` docker, kubernetes, postgres, fastify, react, typescript ``` ### Tag chủ đề Sử dụng danh mục chủ đề: ``` deployment, ci-cd, auth, database, frontend, backend, security ``` ### Tag trạng thái Sử dụng chỉ báo trạng thái: ``` active, completed, blocked, deprecated ``` ### Tag loại Sử dụng chỉ báo loại: ``` decision, mistake, pattern, reference, todo ``` ## Quy tắc tag ### Quy tắc 1: 2-5 tag mỗi bộ nhớ Quá ít tag = khả năng khám phá kém. Quá nhiều = nhiễu. ```json // Good: 3 relevant tags { "tags": ["synapse", "deployment", "docker"] } // Bad: 1 tag (too narrow) { "tags": ["synapse"] } // Bad: 10 tags (noise) { "tags": ["synapse", "deployment", "docker", "vps1", "2026", "june", "ssh", "git", "main", "production"] } ``` ### Quy tắc 2: Chữ thường, gạch nối ``` ✅ ci-cd, api-key, mind-key ❌ CI-CD, APIKey, MindKey ``` ### Quy tắc 3: Sử dụng từ vựng nhất quán Thiết lập từ vựng tag và bám sát nó: ``` # Project vocabulary synapse, synapse-mcp, synapse-chat # NOT: synapse_project, synapseProject, SYNAPSE ``` ### Quy tắc 4: Gắn tag với ý định tìm kiếm Hỏi: "Làm thế nào tôi sẽ tìm kiếm bộ nhớ này?" ```json // Storing a deployment decision { "content": "Decided to use Docker Swarm for Synapse deployment", "tags": ["synapse", "deployment", "docker", "swarm", "decision"] } // You'll likely search: ?q=docker+swarm or ?tag=deployment ``` ## Mẫu ### Mẫu 1: Dự án + Chủ đề ```json { "tags": ["synapse", "deployment"] } { "tags": ["synapse", "auth"] } { "tags": ["synapse-mcp", "tools"] } ``` Tìm: `?tag=synapse` (tất cả bộ nhớ dự án Synapse) Tìm: `?tag=synapse&q=deployment` (bộ nhớ deployment trong Synapse) ### Mẫu 2: Loại + Lĩnh vực ```json { "tags": ["mistake", "deployment"] } { "tags": ["decision", "database"] } { "tags": ["pattern", "auth"] } ``` Tìm: `?tag=mistake` (tất cả lỗi) Tìm: `?tag=mistake&q=deployment` (lỗi deployment) ### Mẫu 3: Phân cấp Cho dự án con trong một dự án: ```json { "tags": ["synapse", "synapse-docs", "markdown"] } { "tags": ["synapse", "synapse-mcp", "mcp"] } { "tags": ["synapse", "synapse-admin", "ui"] } ``` Tìm: `?tag=synapse` (tất cả Synapse) Tìm: `?tag=synapse-docs` (chỉ dự án con docs) ### Mẫu 4: Theo dõi trạng thái ```json // Active project { "tags": ["synapse", "active"], "priority": "high" } // Completed project { "tags": ["synapse-v1", "completed"], "priority": "low" } // Blocked { "tags": ["synapse-v2", "blocked"], "priority": "high" } ``` ## Trường hợp sử dụng phổ biến ### Tìm tất cả quyết định về một dự án ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=decision&tag=synapse" ``` ### Tìm tất cả lỗi trong một lĩnh vực ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=mistake&tag=deployment" ``` ### Tìm công việc đang hoạt động ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/by-tag?tag=active" ``` ### Tìm bộ nhớ về một công nghệ ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=postgres+performance&tag=database" ``` ## Bảo trì tag ### Xem xét định kỳ ```python # Find rarely-used tags (candidates for cleanup) tags = requests.get(f"{URL}/memory/tags", headers={"Authorization": f"Bearer {KEY}"}).json() for tag, count in tags.items(): if count < 2: print(f"Rare tag: {tag} ({count} memories)") ``` ### Hợp nhất tag Nếu bạn có tag không nhất quán (`docker` và `Docker`), hợp nhất chúng: ```python # Find all memories with "Docker" tag mems = requests.get(f"{URL}/memory/by-tag?tag=Docker", headers={"Authorization": f"Bearer {KEY}"}).json() # Update each to use "docker" instead for mem in mems["results"]: tags = [t.lower() for t in mem["tags"]] update_memory(mem["id"], tags=list(set(tags))) ``` ## Thực hành tốt nhất > [!TIP] > - **Thiết lập từ vựng sớm** — tag nhất quán từ ngày 1 > - **Gắn tag với ý định tìm kiếm** — làm thế nào bạn sẽ tìm cái này sau? > - **2-5 tag là điểm ngọt** — quá ít hoặc quá nhiều là xấu > - **Chữ thường + gạch nối** — `ci-cd` không phải `CI/CD` > - **Xem xét định kỳ** — hợp nhất trùng lặp, xóa không sử dụng ## Bước tiếp theo - [Thực hành tốt nhất về bộ nhớ](/docs/guides/memory-best-practices) - [Tìm kiếm FTS5](/docs/concepts/fts5-search) - [Quy trình điều khiển bởi tác vụ](/docs/llm-cookbook/task-driven-workflow)