Skip to main content
Glama
KNOWLEDGE_BASE_STRATEGY.mdβ€’8.42 kB
# πŸ“š 지식 베이슀 μ €μž₯ μ „λž΅ **κ²°λ‘ **: 3단계 ν•˜μ΄λΈŒλ¦¬λ“œ μ ‘κ·Ό --- ## 🎯 μ „λž΅ κ°œμš” ### Tier 1: Git Repository (μ˜ˆμ‹œ + λ¬Έμ„œ) **μš©λŸ‰**: ~20MB **λͺ©μ **: μ‚¬μš©μžκ°€ μ¦‰μ‹œ 이해할 수 μžˆλ„λ‘ ``` knowledge-base-samples/ β”œβ”€β”€ 410-llm-engineer/ β”‚ β”œβ”€β”€ core-competencies/ β”‚ β”‚ └── transformer-architectures.md (20 pages) βœ… Git β”‚ └── README.md (μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€) └── README.md (전체 지식 베이슀 κ°œμš”) ``` **Git에 포함**: - βœ… 각 페λ₯΄μ†Œλ‚˜λ‹Ή 1-2개 λŒ€ν‘œ λ¬Έμ„œ (μ˜ˆμ‹œ) - βœ… ꡬ쑰 및 μ‚¬μš©λ²• λ¬Έμ„œ - βœ… 메타데이터 (manifest.json) ### Tier 2: Google Drive / S3 (전체 지식 베이슀) **μš©λŸ‰**: 14.2GB (142 personas Γ— 100MB) **λͺ©μ **: ν”„λ‘œλ•μ…˜ μ‚¬μš© ``` knowledge-base-full.zip (14.2GB) └── 410-llm-engineer/ (100MB) β”œβ”€β”€ core-competencies/ (50MB) β”œβ”€β”€ case-studies/ (20MB) β”œβ”€β”€ code-examples/ (15MB) β”œβ”€β”€ research-papers/ (10MB) └── best-practices/ (5MB) ``` **λ‹€μš΄λ‘œλ“œ 링크**: ```bash # μžλ™ μ„€μΉ˜ 슀크립트 npm run install-knowledge-base # λ˜λŠ” μˆ˜λ™ curl -L https://drive.google.com/uc?id=FILE_ID -o kb.zip unzip kb.zip -d knowledge-base/ ``` ### Tier 3: μžλ™ 생성 (선택사항) **μš©λŸ‰**: 0 (생성 μ‹œμ  크둀링) **λͺ©μ **: 항상 μ΅œμ‹  μœ μ§€ ```bash # νŠΉμ • 페λ₯΄μ†Œλ‚˜λ§Œ 생성 npm run build-kb -- --persona 410-llm-engineer # λͺ¨λ‘ 생성 (30λΆ„ μ†Œμš”) npm run build-kb -- --all ``` --- ## πŸ“ μ΅œμ’… 디렉토리 ꡬ쑰 ``` persona-mcp/ β”œβ”€β”€ .gitignore β”‚ └── knowledge-base/ # 둜컬 전체 KB μ œμ™Έ β”‚ !knowledge-base-samples/ # μ˜ˆμ‹œλ§Œ 포함 β”‚ β”œβ”€β”€ knowledge-base-samples/ (Git에 포함, 20MB) β”‚ β”œβ”€β”€ 410-llm-engineer/ β”‚ β”‚ └── transformer-architectures.md β”‚ β”œβ”€β”€ 108-devops-engineer/ β”‚ β”‚ └── ci-cd-best-practices.md β”‚ └── README.md β”‚ β”œβ”€β”€ knowledge-base/ (Git μ œμ™Έ, 둜컬만, 14.2GB) β”‚ β”œβ”€β”€ 410-llm-engineer/ (100MB) β”‚ β”œβ”€β”€ 108-devops-engineer/ (80MB) β”‚ └── ... (142개, μ‚¬μš©μžκ°€ λ‹€μš΄λ‘œλ“œ) β”‚ β”œβ”€β”€ knowledge-base-manifest.json (Git에 포함) β”‚ └── λ‹€μš΄λ‘œλ“œ 링크, 체크섬 β”‚ └── scripts/ β”œβ”€β”€ download-knowledge-base.js └── build-knowledge-base.js ``` --- ## πŸ› οΈ .gitignore μ„€μ • ```gitignore # Knowledge Base (둜컬만) knowledge-base/ # μ˜ˆμ™Έ: μƒ˜ν”Œμ€ 포함 !knowledge-base-samples/ # 벑터 DB (둜컬만) .chroma/ *.faiss # Node modules node_modules/ ``` --- ## πŸ“¦ knowledge-base-manifest.json ```json { "version": "3.1.0", "updated": "2025-11-23", "total_size": "14.2 GB", "personas": { "410-llm-engineer": { "size": "102.4 MB", "chunks": 50000, "documents": 523, "sources": [ "https://drive.google.com/uc?id=1ABC123/410-llm-engineer.zip", "https://huggingface.co/datasets/personas/410-llm-engineer" ], "checksum": "sha256:abc123...", "sample_included": true, "sample_path": "knowledge-base-samples/410-llm-engineer/" }, "108-devops-engineer": { "size": "78.5 MB", "chunks": 39250, "documents": 412, "sources": ["..."], "checksum": "sha256:def456..." } }, "download_instructions": { "automatic": "npm run install-knowledge-base", "manual": "curl -L [url] -o kb.zip && unzip kb.zip", "selective": "npm run install-kb -- --persona 410" } } ``` --- ## πŸš€ μ‚¬μš©μž μ›Œν¬ν”Œλ‘œμš° ### 첫 μ„€μΉ˜ (λΉ λ₯Έ μ‹œμž‘) ```bash # 1. Git 클둠 (μƒ˜ν”Œ 포함, 50MB) git clone https://github.com/seanshin0214/world-class-leadership-personas.git cd world-class-leadership-personas # 2. μ˜μ‘΄μ„± μ„€μΉ˜ npm install # 3. μƒ˜ν”Œλ‘œ μ¦‰μ‹œ ν…ŒμŠ€νŠΈ κ°€λŠ₯! βœ… npm run dev # β†’ knowledge-base-samples/ μ‚¬μš© (20MB, Gitμ—μ„œ λ‹€μš΄λ‘œλ“œλ¨) # 4. (선택) 전체 KB λ‹€μš΄λ‘œλ“œ (ν”„λ‘œλ•μ…˜μš©) npm run install-knowledge-base # β†’ knowledge-base/ 생성 (14.2GB, Google Driveμ—μ„œ λ‹€μš΄λ‘œλ“œ) ``` ### 선택적 λ‹€μš΄λ‘œλ“œ ```bash # νŠΉμ • 페λ₯΄μ†Œλ‚˜λ§Œ (μΆ”μ²œ) npm run install-kb -- --persona 410-llm-engineer # β†’ 100MB만 λ‹€μš΄λ‘œλ“œ # μ—¬λŸ¬ 페λ₯΄μ†Œλ‚˜ npm run install-kb -- --personas 410,108,201 # β†’ 300MB λ‹€μš΄λ‘œλ“œ # 전체 (ν”„λ‘œλ•μ…˜) npm run install-kb -- --all # β†’ 14.2GB λ‹€μš΄λ‘œλ“œ ``` --- ## πŸ’Ύ scripts/download-knowledge-base.js ```javascript #!/usr/bin/env node const https = require('https'); const fs = require('fs'); const path = require('path'); const { pipeline } = require('stream/promises'); const unzipper = require('unzipper'); async function downloadKnowledgeBase(personaId = null) { const manifest = require('../knowledge-base-manifest.json'); const toDownload = personaId ? [manifest.personas[personaId]] : Object.values(manifest.personas); console.log(`Downloading ${toDownload.length} persona knowledge bases...`); for (const persona of toDownload) { console.log(`\nDownloading ${persona.id}... (${persona.size})`); const url = persona.sources[0]; const zipPath = path.join(__dirname, `../temp/${persona.id}.zip`); const extractPath = path.join(__dirname, `../knowledge-base/${persona.id}`); // Download await downloadFile(url, zipPath); // Verify checksum const actualChecksum = await calculateChecksum(zipPath); if (actualChecksum !== persona.checksum) { throw new Error(`Checksum mismatch for ${persona.id}`); } // Extract await extractZip(zipPath, extractPath); // Cleanup fs.unlinkSync(zipPath); console.log(`βœ“ ${persona.id} installed`); } console.log('\nβœ… Knowledge base installation complete!'); } async function downloadFile(url, dest) { const file = fs.createWriteStream(dest); return new Promise((resolve, reject) => { https.get(url, (response) => { if (response.statusCode === 302 || response.statusCode === 301) { // Follow redirect return downloadFile(response.headers.location, dest) .then(resolve) .catch(reject); } response.pipe(file); file.on('finish', () => { file.close(resolve); }); }).on('error', (err) => { fs.unlink(dest); reject(err); }); }); } async function extractZip(zipPath, destPath) { await fs.createReadStream(zipPath) .pipe(unzipper.Extract({ path: destPath })) .promise(); } async function calculateChecksum(filePath) { const crypto = require('crypto'); const hash = crypto.createHash('sha256'); const stream = fs.createReadStream(filePath); return new Promise((resolve, reject) => { stream.on('data', (data) => hash.update(data)); stream.on('end', () => resolve(hash.digest('hex'))); stream.on('error', reject); }); } // CLI const args = process.argv.slice(2); const personaId = args.includes('--persona') ? args[args.indexOf('--persona') + 1] : null; downloadKnowledgeBase(personaId) .catch(console.error); ``` --- ## πŸ“Š λΉ„μš© 비ꡐ ### Git LFS ``` Storage: $5/μ›” for 50GB Bandwidth: $0.0875/GB μ˜ˆμƒ λΉ„μš©: $10-20/μ›” ``` ### Google Drive (μΆ”μ²œ) ``` 무료: 15GB Google One: $2/μ›” for 100GB β†’ μ˜ˆμƒ λΉ„μš©: $2/μ›” λ˜λŠ” 무료 ``` ### AWS S3 ``` Storage: $0.023/GB/μ›” (14.2GB = $0.33/μ›”) Transfer: $0.09/GB (100GB = $9/μ›”) β†’ μ˜ˆμƒ λΉ„μš©: ~$10/μ›” ``` ### HuggingFace Datasets (μΆ”μ²œ) ``` 무료 λ¬΄μ œν•œ! datasets.load_dataset("personas/410-llm-engineer") β†’ μ˜ˆμƒ λΉ„μš©: $0 ``` --- ## βœ… μ΅œμ’… ꢌμž₯사항 ### Phase 1 (ν˜„μž¬) ```bash # Git에 μƒ˜ν”Œλ§Œ 포함 knowledge-base-samples/ └── 410-llm-engineer/ └── transformer-architectures.md βœ… 이미 컀밋됨 ``` ### Phase 2 (λ‹€μŒ 단계) ```bash # Google Drive에 전체 μ—…λ‘œλ“œ 1. 410-llm-engineer.zip (100MB) 생성 2. Google Drive 곡유 링크 생성 3. manifest.json μ—…λ°μ΄νŠΈ 4. download 슀크립트 μž‘μ„± ``` ### Phase 3 (ν”„λ‘œλ•μ…˜) ```bash # HuggingFace Datasets둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ from datasets import load_dataset kb = load_dataset("world-class-personas/410-llm-engineer") # β†’ 무료, λ¬΄μ œν•œ, 버전 관리, CDN ``` --- **ν˜„μž¬ μƒνƒœ**: Git에 μƒ˜ν”Œ 1개 포함 βœ… **λ‹€μŒ 단계**: manifest.json + download 슀크립트 μž‘μ„± **μ΅œμ’… λͺ©ν‘œ**: HuggingFace Datasets ν˜ΈμŠ€νŒ…

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/seanshin0214/persona-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server