by AityTech
AI 코딩 어시스턴트를 위한 영구 메모리 시스템
AI 어시스턴트는 세션 간에 모든 것을 잊어버립니다. AgentKits Memory가 이를 해결합니다.
결정사항, 패턴, 오류, 컨텍스트 — MCP를 통해 로컬에 영구 저장됩니다.
웹사이트 • 문서 • 빠른 시작 • 작동 방식 • 플랫폼 • CLI • 웹 뷰어
English · 简体中文 · 日本語 · 한국어 · Español · Deutsch · Français · Português · Tiếng Việt · Русский · العربية
--- ## 기능 | 기능 | 이점 | |---------|---------| | **100% 로컬** | 모든 데이터가 사용자 컴퓨터에 저장됩니다. 클라우드 없음, API 키 없음, 계정 없음 | | **초고속** | 네이티브 SQLite (better-sqlite3) = 즉각적인 쿼리, 지연시간 제로 | | **설정 불필요** | 별도 설정 없이 바로 작동합니다. 데이터베이스 설정 불필요 | | **멀티 플랫폼** | Claude Code, Cursor, Windsurf, Cline, OpenCode — 한 번의 설정 명령 | | **MCP 서버** | 9가지 도구: save, search, timeline, details, recall, list, update, delete, status | | **자동 캡처** | 훅이 세션 컨텍스트, 도구 사용, 요약을 자동으로 캡처 | | **AI 강화** | 백그라운드 워커가 AI 생성 요약으로 관찰 데이터 강화 | | **벡터 검색** | 다국어 임베딩을 사용한 sqlite-vec 의미적 유사성 (100개 이상 언어) | | **웹 뷰어** | 브라우저 UI로 메모리 보기, 검색, 추가, 편집, 삭제 | | **3계층 검색** | 점진적 노출로 모든 것을 가져오는 것보다 ~87% 토큰 절약 | | **라이프사이클 관리** | 이전 세션 자동 압축, 아카이브, 정리 | | **내보내기/가져오기** | JSON으로 메모리 백업 및 복원 | --- ## 작동 방식 ``` 세션 1: "인증에 JWT 사용" 세션 2: "로그인 엔드포인트 추가" ┌──────────────────────────┐ ┌──────────────────────────┐ │ AI와 코딩... │ │ AI가 이미 알고 있음: │ │ AI가 결정 │ │ ✓ JWT 인증 결정 │ │ AI가 오류 발견 │ ───► │ ✓ 오류 해결책 │ │ AI가 패턴 학습 │ 저장됨 │ ✓ 코드 패턴 │ │ │ │ ✓ 세션 컨텍스트 │ └──────────────────────────┘ └──────────────────────────┘ │ ▲ ▼ │ .claude/memory/memory.db ──────────────────┘ (SQLite, 100% 로컬) ``` 1. **한 번만 설정** — `npx @aitytech/agentkits-memory`이 플랫폼을 구성합니다 2. **자동 캡처** — 작업하는 동안 훅이 결정사항, 도구 사용, 요약을 기록합니다 3. **컨텍스트 주입** — 다음 세션이 이전 세션의 관련 이력으로 시작됩니다 4. **백그라운드 처리** — 워커가 AI로 관찰 데이터를 강화하고, 임베딩을 생성하며, 이전 데이터를 압축합니다 5. **언제든 검색** — AI가 MCP 도구(`memory_search` → `memory_details`)를 사용하여 과거 컨텍스트를 찾습니다 모든 데이터는 사용자 컴퓨터의 `.claude/memory/memory.db`에 저장됩니다. 클라우드 없음. API 키 불필요. --- ## 중요한 설계 결정 대부분의 메모리 도구는 데이터를 마크다운 파일에 분산 저장하거나, Python 런타임이 필요하거나, 코드를 외부 API로 전송합니다. AgentKits Memory는 근본적으로 다른 선택을 합니다: | 설계 선택 | 중요한 이유 | |---------------|----------------| | **단일 SQLite 데이터베이스** | 하나의 파일(`memory.db`)이 모든 것을 보관 — 메모리, 세션, 관찰, 임베딩. 동기화할 분산 파일 없음, 병합 충돌 없음, 고아 데이터 없음. 백업 = 파일 하나만 복사 | | **네이티브 Node.js, Python 제로** | Node가 실행되는 곳이면 어디서나 실행됩니다. conda 없음, pip 없음, virtualenv 없음. MCP 서버와 같은 언어 — `npx` 명령 하나로 완료 | | **토큰 효율적인 3계층 검색** | 먼저 검색 인덱스(~50 토큰/결과), 그 다음 타임라인 컨텍스트, 마지막으로 전체 세부사항. 필요한 것만 가져옵니다. 다른 도구는 전체 메모리 파일을 컨텍스트에 덤프하여 무관한 콘텐츠에 토큰을 낭비합니다 | | **훅을 통한 자동 캡처** | 결정사항, 패턴, 오류가 발생하는 즉시 기록됩니다 — 저장을 기억한 후가 아닙니다. 세션 컨텍스트 주입은 다음 세션 시작 시 자동으로 발생합니다 | | **로컬 임베딩, API 호출 없음** | 벡터 검색은 로컬 ONNX 모델(multilingual-e5-small)을 사용합니다. 의미 검색이 오프라인에서 작동하고, 비용이 없으며, 100개 이상의 언어를 지원합니다 | | **백그라운드 워커** | AI 강화, 임베딩 생성, 압축이 비동기적으로 실행됩니다. 코딩 흐름이 결코 차단되지 않습니다 | | **처음부터 멀티 플랫폼** | `--platform=all` 플래그 하나로 Claude Code, Cursor, Windsurf, Cline, OpenCode를 동시에 구성합니다. 동일한 메모리 데이터베이스, 다른 에디터 | | **구조화된 관찰 데이터** | 도구 사용이 유형 분류(read/write/execute/search), 파일 추적, 의도 감지, AI 생성 내러티브와 함께 캡처됩니다 — 원시 텍스트 덤프가 아닙니다 | | **프로세스 누수 없음** | 백그라운드 워커는 5분 후 자동 종료되며, PID 기반 잠금 파일을 사용하고 오래된 잠금 정리와 SIGTERM/SIGINT를 우아하게 처리합니다. 좀비 프로세스 없음, 고아 워커 없음 | | **메모리 누수 없음** | 훅은 단기 프로세스로 실행됩니다(장기 실행 데몬이 아님). 데이터베이스 연결은 종료 시 닫힙니다. 임베딩 서브프로세스는 제한된 재시작(최대 2회), 대기 중인 요청 타임아웃, 모든 타이머와 큐의 우아한 정리를 갖습니다 | --- ## 웹 뷰어 최신 웹 인터페이스를 통해 메모리를 보고 관리하세요. ```bash npx @aitytech/agentkits-memory web ``` 그런 다음 브라우저에서 **http://localhost:1905**를 엽니다. ### 세션 목록 타임라인 뷰와 활동 세부사항으로 모든 세션을 탐색합니다.  ### 메모리 목록 검색 및 네임스페이스 필터링으로 저장된 모든 메모리를 탐색합니다.  ### 메모리 추가 키, 네임스페이스, 유형, 콘텐츠, 태그로 새 메모리를 생성합니다.  ### 메모리 세부사항 편집 및 삭제 옵션과 함께 전체 메모리 세부사항을 봅니다.  ### 임베딩 관리 의미 검색을 위한 벡터 임베딩을 생성하고 관리합니다.  --- ## 빠른 시작 ### 옵션 1: Claude Code 플러그인 마켓플레이스 (Claude Code 권장) 하나의 명령으로 설치 — 수동 구성 불필요: ```bash /plugin marketplace add aitytech/agentkits-memory /plugin install agentkits-memory@agentkits-memory ``` 훅, MCP 서버, 메모리 워크플로 스킬이 자동으로 설치됩니다. 설치 후 Claude Code를 재시작하세요. ### 옵션 2: 자동 설정 (모든 플랫폼) ```bash npx @aitytech/agentkits-memory ``` 플랫폼을 자동 감지하고 모든 것을 구성합니다: MCP 서버, 훅(Claude Code/OpenCode), 규칙 파일(Cursor/Windsurf/Cline), 임베딩 모델 다운로드. **특정 플랫폼 대상 지정:** ```bash npx @aitytech/agentkits-memory setup --platform=cursor npx @aitytech/agentkits-memory setup --platform=windsurf,cline npx @aitytech/agentkits-memory setup --platform=all ``` ### 옵션 3: 수동 MCP 구성 수동 설정을 선호하는 경우, MCP 구성에 추가하세요: ```json { "mcpServers": { "memory": { "command": "npx", "args": ["-y", "@aitytech/agentkits-memory", "server"] } } } ``` 구성 파일 위치: - **Claude Code**: `.claude/settings.json` (`mcpServers` 키에 포함) - **Cursor**: `.cursor/mcp.json` - **Windsurf**: `.windsurf/mcp.json` - **Cline / OpenCode**: `.mcp.json` (프로젝트 루트) ### 3. MCP 도구 구성 후, AI 어시스턴트가 다음 도구를 사용할 수 있습니다: | 도구 | 설명 | |------|-------------| | `memory_status` | 메모리 시스템 상태 확인 (먼저 호출!) | | `memory_save` | 결정사항, 패턴, 오류 또는 컨텍스트 저장 | | `memory_search` | **[1단계]** 검색 인덱스 — 경량 ID + 제목 (~50 토큰/결과) | | `memory_timeline` | **[2단계]** 메모리 주변의 시간적 컨텍스트 가져오기 | | `memory_details` | **[3단계]** 특정 ID의 전체 콘텐츠 가져오기 | | `memory_recall` | 빠른 주제 개요 — 그룹화된 요약 | | `memory_list` | 최근 메모리 나열 | | `memory_update` | 기존 메모리 콘텐츠 또는 태그 업데이트 | | `memory_delete` | 오래된 메모리 제거 | --- ## 점진적 노출 (토큰 효율적 검색) AgentKits Memory는 전체 콘텐츠를 미리 가져오는 것보다 ~70% 토큰을 절약하는 **3계층 검색 패턴**을 사용합니다. ### 작동 방식 ``` ┌─────────────────────────────────────────────────────────────┐ │ 1단계: memory_search │ │ 반환: ID, 제목, 태그, 점수 (~50 토큰/항목) │ │ → 인덱스 검토, 관련 메모리 선택 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 2단계: memory_timeline (선택사항) │ │ 반환: 메모리 주변 ±30분 컨텍스트 │ │ → 전후에 무슨 일이 일어났는지 이해 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 3단계: memory_details │ │ 반환: 선택한 ID의 전체 콘텐츠만 │ │ → 실제로 필요한 것만 가져오기 │ └─────────────────────────────────────────────────────────────┘ ``` ### 예제 워크플로 ```typescript // 1단계: 검색 - 경량 인덱스 가져오기 memory_search({ query: "authentication" }) // → 반환: [{ id: "abc", title: "JWT pattern...", score: 85% }] // 2단계: (선택사항) 시간적 컨텍스트 보기 memory_timeline({ anchor: "abc" }) // → 반환: 이 메모리 전후에 무슨 일이 일어났는지 // 3단계: 필요한 것만 전체 콘텐츠 가져오기 memory_details({ ids: ["abc"] }) // → 반환: 선택한 메모리의 전체 콘텐츠 ``` ### 토큰 절약 | 접근 방식 | 사용된 토큰 | |----------|-------------| | **기존:** 모든 콘텐츠 가져오기 | ~500 토큰 × 10 결과 = 5000 토큰 | | **신규:** 점진적 노출 | 50 × 10 + 500 × 2 = 1500 토큰 | | **절약** | **70% 감소** | --- ## CLI 명령어 ```bash # 한 번의 명령으로 설정 (플랫폼 자동 감지) npx @aitytech/agentkits-memory npx @aitytech/agentkits-memory setup --platform=cursor # 특정 플랫폼 npx @aitytech/agentkits-memory setup --platform=all # 모든 플랫폼 npx @aitytech/agentkits-memory setup --force # 재설치/업데이트 # MCP 서버 시작 npx @aitytech/agentkits-memory server # 웹 뷰어 (포트 1905) npx @aitytech/agentkits-memory web # 터미널 뷰어 npx @aitytech/agentkits-memory viewer npx @aitytech/agentkits-memory viewer --stats # 데이터베이스 통계 npx @aitytech/agentkits-memory viewer --json # JSON 출력 # CLI에서 저장 npx @aitytech/agentkits-memory save "Use JWT with refresh tokens" --category pattern --tags auth,security # 설정 npx @aitytech/agentkits-memory hook settings . # 현재 설정 보기 npx @aitytech/agentkits-memory hook settings . --reset # 기본값으로 재설정 npx @aitytech/agentkits-memory hook settings . aiProvider.provider=openai aiProvider.apiKey=sk-... # 내보내기 / 가져오기 npx @aitytech/agentkits-memory hook export . my-project ./backup.json npx @aitytech/agentkits-memory hook import . ./backup.json # 라이프사이클 관리 npx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30 npx @aitytech/agentkits-memory hook lifecycle-stats . ``` --- ## 프로그래밍 방식 사용 ```typescript import { ProjectMemoryService } from '@aitytech/agentkits-memory'; const memory = new ProjectMemoryService({ baseDir: '.claude/memory', dbFilename: 'memory.db', }); await memory.initialize(); // 메모리 저장 await memory.storeEntry({ key: 'auth-pattern', content: 'Use JWT with refresh tokens for authentication', namespace: 'patterns', tags: ['auth', 'security'], }); // 메모리 쿼리 const results = await memory.query({ type: 'hybrid', namespace: 'patterns', content: 'authentication', limit: 10, }); // 키로 가져오기 const entry = await memory.getByKey('patterns', 'auth-pattern'); ``` --- ## 자동 캡처 훅 훅이 AI 코딩 세션을 자동으로 캡처합니다(Claude Code 및 OpenCode만): | 훅 | 트리거 | 동작 | |------|---------|--------| | `context` | 세션 시작 | 이전 세션 컨텍스트 + 메모리 상태 주입 | | `session-init` | 사용자 프롬프트 | 세션 초기화/재개, 프롬프트 기록 | | `observation` | 도구 사용 후 | 의도 감지와 함께 도구 사용 캡처 | | `summarize` | 세션 종료 | 구조화된 세션 요약 생성 | | `user-message` | 세션 시작 | 사용자에게 메모리 상태 표시 (stderr) | 훅 설정: ```bash npx @aitytech/agentkits-memory ``` **자동으로 캡처되는 내용:** - 경로가 있는 파일 읽기/쓰기 - 구조화된 차이로서의 코드 변경 (이전 → 이후) - 개발자 의도 (bugfix, feature, refactor, investigation 등) - 결정사항, 오류, 다음 단계가 있는 세션 요약 - 세션 내 다중 프롬프트 추적 --- ## 멀티 플랫폼 지원 | 플랫폼 | MCP | 훅 | 규칙 파일 | 설정 | |----------|-----|-------|------------|-------| | **Claude Code** | `.claude/settings.json` | ✅ 전체 | CLAUDE.md (skill) | `--platform=claude-code` | | **Cursor** | `.cursor/mcp.json` | — | `.cursorrules` | `--platform=cursor` | | **Windsurf** | `.windsurf/mcp.json` | — | `.windsurfrules` | `--platform=windsurf` | | **Cline** | `.mcp.json` | — | `.clinerules` | `--platform=cline` | | **OpenCode** | `.mcp.json` | ✅ 전체 | — | `--platform=opencode` | - **MCP 서버**는 모든 플랫폼에서 작동 (MCP 프로토콜을 통한 메모리 도구) - **훅**은 Claude Code 및 OpenCode에서 자동 캡처 제공 - **규칙 파일**은 Cursor/Windsurf/Cline에게 메모리 워크플로를 가르침 - **메모리 데이터**는 항상 `.claude/memory/`에 저장 (단일 진실의 원천) --- ## 백그라운드 워커 각 세션 후, 백그라운드 워커가 대기 중인 작업을 처리합니다: | 워커 | 작업 | 설명 | |--------|------|-------------| | `embed-session` | 임베딩 | 의미 검색을 위한 벡터 임베딩 생성 | | `enrich-session` | AI 강화 | AI 생성 요약, 사실, 개념으로 관찰 데이터 강화 | | `compress-session` | 압축 | 이전 관찰 압축 (10:1–25:1) 및 세션 다이제스트 생성 (20:1–100:1) | 워커는 세션 종료 후 자동으로 실행됩니다. 각 워커는: - 실행당 최대 200개 항목 처리 - 동시 실행을 방지하기 위해 잠금 파일 사용 - 5분 후 자동 종료 (좀비 방지) - 실패한 작업을 최대 3회 재시도 --- ## AI 제공자 구성 AI 강화는 플러그형 제공자를 사용합니다. 기본값은 `claude-cli` (API 키 불필요). | 제공자 | 유형 | 기본 모델 | 참고 | |----------|------|---------------|-------| | **Claude CLI** | `claude-cli` | `haiku` | `claude --print` 사용, API 키 불필요 | | **OpenAI** | `openai` | `gpt-4o-mini` | 모든 OpenAI 모델 | | **Google Gemini** | `gemini` | `gemini-2.0-flash` | Google AI Studio 키 | | **OpenRouter** | `openai` | any | `baseUrl`을 `https://openrouter.ai/api/v1`로 설정 | | **GLM (Zhipu)** | `openai` | any | `baseUrl`을 `https://open.bigmodel.cn/api/paas/v4`로 설정 | | **Ollama** | `openai` | any | `baseUrl`을 `http://localhost:11434/v1`로 설정 | ### 옵션 1: 환경 변수 ```bash # OpenAI export AGENTKITS_AI_PROVIDER=openai export AGENTKITS_AI_API_KEY=sk-... # Google Gemini export AGENTKITS_AI_PROVIDER=gemini export AGENTKITS_AI_API_KEY=AIza... # OpenRouter (OpenAI 호환 형식 사용) export AGENTKITS_AI_PROVIDER=openai export AGENTKITS_AI_API_KEY=sk-or-... export AGENTKITS_AI_BASE_URL=https://openrouter.ai/api/v1 export AGENTKITS_AI_MODEL=anthropic/claude-3.5-haiku # 로컬 Ollama (API 키 불필요) export AGENTKITS_AI_PROVIDER=openai export AGENTKITS_AI_BASE_URL=http://localhost:11434/v1 export AGENTKITS_AI_MODEL=llama3.2 # AI 강화 완전히 비활성화 export AGENTKITS_AI_ENRICHMENT=false ``` ### 옵션 2: 영구 설정 ```bash # .claude/memory/settings.json에 저장됨 — 세션 간 유지 npx @aitytech/agentkits-memory hook settings . aiProvider.provider=openai aiProvider.apiKey=sk-... npx @aitytech/agentkits-memory hook settings . aiProvider.provider=gemini aiProvider.apiKey=AIza... npx @aitytech/agentkits-memory hook settings . aiProvider.baseUrl=https://openrouter.ai/api/v1 # 현재 설정 보기 npx @aitytech/agentkits-memory hook settings . # 기본값으로 재설정 npx @aitytech/agentkits-memory hook settings . --reset ``` > **우선순위:** 환경 변수가 settings.json을 재정의합니다. settings.json이 기본값을 재정의합니다. --- ## 라이프사이클 관리 시간 경과에 따른 메모리 증가 관리: ```bash # 7일 이상 된 관찰 압축, 30일 이상 된 세션 아카이브 npx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30 # 90일 이상 된 아카이브된 세션도 자동 삭제 npx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30 --delete --delete-days=90 # 라이프사이클 통계 보기 npx @aitytech/agentkits-memory hook lifecycle-stats . ``` | 단계 | 수행되는 작업 | |-------|-------------| | **압축** | AI가 관찰을 압축하고, 세션 다이제스트 생성 | | **아카이브** | 이전 세션을 아카이브로 표시 (컨텍스트에서 제외) | | **삭제** | 아카이브된 세션 제거 (옵트인, `--delete` 필요) | --- ## 내보내기 / 가져오기 프로젝트 메모리 백업 및 복원: ```bash # 프로젝트의 모든 세션 내보내기 npx @aitytech/agentkits-memory hook export . my-project ./backup.json # 백업에서 가져오기 (자동 중복 제거) npx @aitytech/agentkits-memory hook import . ./backup.json ``` 내보내기 형식에는 세션, 관찰, 프롬프트, 요약이 포함됩니다. --- ## 메모리 카테고리 | 카테고리 | 사용 사례 | |----------|----------| | `decision` | 아키텍처 결정, 기술 스택 선택, 트레이드오프 | | `pattern` | 코딩 규칙, 프로젝트 패턴, 반복되는 접근 방식 | | `error` | 버그 수정, 오류 해결책, 디버깅 인사이트 | | `context` | 프로젝트 배경, 팀 규칙, 환경 설정 | | `observation` | 자동 캡처된 세션 관찰 | --- ## 저장소 메모리는 프로젝트 디렉토리 내 `.claude/memory/`에 저장됩니다. ``` .claude/memory/ ├── memory.db # SQLite 데이터베이스 (모든 데이터) ├── memory.db-wal # Write-ahead log (임시) ├── settings.json # 영구 설정 (AI 제공자, 컨텍스트 구성) └── embeddings-cache/ # 캐시된 벡터 임베딩 ``` --- ## CJK 언어 지원 AgentKits Memory는 중국어, 일본어, 한국어 텍스트 검색을 위한 **자동 CJK 지원**을 제공합니다. ### 설정 불필요 `better-sqlite3`이 설치되면 (기본값), CJK 검색이 자동으로 작동합니다: ```typescript import { ProjectMemoryService } from '@aitytech/agentkits-memory'; const memory = new ProjectMemoryService('.claude/memory'); await memory.initialize(); // CJK 콘텐츠 저장 await memory.storeEntry({ key: 'auth-pattern', content: '認証機能の実装パターン - JWT with refresh tokens', namespace: 'patterns', }); // 일본어, 중국어, 한국어로 검색 - 바로 작동합니다! const results = await memory.query({ type: 'hybrid', content: '認証機能', }); ``` ### 작동 방식 - **네이티브 SQLite**: 최대 성능을 위해 `better-sqlite3` 사용 - **트라이그램 토크나이저**: FTS5가 트라이그램으로 CJK 매칭을 위한 3문자 시퀀스 생성 - **스마트 폴백**: 짧은 CJK 쿼리(< 3자)는 자동으로 LIKE 검색 사용 - **BM25 순위**: 검색 결과에 대한 관련성 점수 ### 고급: 일본어 단어 분할 적절한 단어 분할을 사용한 고급 일본어의 경우, 선택적으로 lindera를 사용하세요: ```typescript import { createJapaneseOptimizedBackend } from '@aitytech/agentkits-memory'; const backend = createJapaneseOptimizedBackend({ databasePath: '.claude/memory/memory.db', linderaPath: './path/to/liblindera_sqlite.dylib', }); ``` [lindera-sqlite](https://github.com/lindera/lindera-sqlite) 빌드가 필요합니다. --- ## API 참조 ### ProjectMemoryService ```typescript interface ProjectMemoryConfig { baseDir: string; // 기본값: '.claude/memory' dbFilename: string; // 기본값: 'memory.db' enableVectorIndex: boolean; // 기본값: false dimensions: number; // 기본값: 384 embeddingGenerator?: EmbeddingGenerator; cacheEnabled: boolean; // 기본값: true cacheSize: number; // 기본값: 1000 cacheTtl: number; // 기본값: 300000 (5분) } ``` ### 메서드 | 메서드 | 설명 | |--------|-------------| | `initialize()` | 메모리 서비스 초기화 | | `shutdown()` | 종료 및 변경사항 유지 | | `storeEntry(input)` | 메모리 항목 저장 | | `get(id)` | ID로 항목 가져오기 | | `getByKey(namespace, key)` | 네임스페이스와 키로 항목 가져오기 | | `update(id, update)` | 항목 업데이트 | | `delete(id)` | 항목 삭제 | | `query(query)` | 필터로 항목 쿼리 | | `semanticSearch(content, k)` | 의미적 유사성 검색 | | `count(namespace?)` | 항목 수 세기 | | `listNamespaces()` | 모든 네임스페이스 나열 | | `getStats()` | 통계 가져오기 | --- ## 코드 품질 AgentKits Memory는 21개의 테스트 스위트에 걸쳐 **970개의 단위 테스트**로 철저하게 테스트되었습니다. | 지표 | 커버리지 | |------|---------| | **구문** | 90.29% | | **분기** | 80.85% | | **함수** | 90.54% | | **라인** | 91.74% | ### 테스트 카테고리 | 카테고리 | 테스트 수 | 커버 내용 | |----------|---------|----------| | 코어 메모리 서비스 | 56 | CRUD, 검색, 페이지네이션, 카테고리, 태그, 가져오기/내보내기 | | SQLite 백엔드 | 65 | 스키마, 마이그레이션, FTS5, 트랜잭션, 오류 처리 | | sqlite-vec 벡터 인덱스 | 47 | 삽입, 검색, 삭제, 영속성, 엣지 케이스 | | 하이브리드 검색 | 44 | FTS + 벡터 융합, 스코어링, 랭킹, 필터 | | 토큰 이코노믹스 | 27 | 3계층 검색 예산, 절삭, 최적화 | | 임베딩 시스템 | 63 | 캐시, 서브프로세스, 로컬 모델, CJK 지원 | | 훅 시스템 | 502 | 컨텍스트, 세션 초기화, 관찰, 요약, AI 강화, 서비스 라이프사이클, 큐 워커, 어댑터, 타입 | | MCP 서버 | 48 | 전체 9개 MCP 도구, 유효성 검사, 오류 응답 | | CLI | 34 | 플랫폼 감지, 규칙 생성 | | 통합 테스트 | 84 | 엔드투엔드 플로우, 임베딩 통합, 멀티 세션 | ```bash # 테스트 실행 npm test # 커버리지 포함 테스트 npm run test:coverage ``` --- ## 요구 사항 - **Node.js LTS**: 18.x, 20.x, 또는 22.x (권장) - MCP 호환 AI 코딩 어시스턴트 ### Node.js 버전 참고사항 이 패키지는 네이티브 바이너리가 필요한 `better-sqlite3`을 사용합니다. **사전 빌드된 바이너리는 LTS 버전에서만 사용 가능합니다**. | Node 버전 | 상태 | 참고 | |--------------|--------|-------| | 18.x LTS | ✅ 작동 | 사전 빌드된 바이너리 | | 20.x LTS | ✅ 작동 | 사전 빌드된 바이너리 | | 22.x LTS | ✅ 작동 | 사전 빌드된 바이너리 | | 19.x, 21.x, 23.x | ⚠️ 빌드 도구 필요 | 사전 빌드된 바이너리 없음 | ### 비-LTS 버전 사용 (Windows) 비-LTS 버전(19, 21, 23)을 사용해야 하는 경우, 먼저 빌드 도구를 설치하세요: **옵션 1: Visual Studio Build Tools** ```powershell # 다음에서 다운로드 및 설치: # https://visualstudio.microsoft.com/visual-cpp-build-tools/ # "Desktop development with C++" 워크로드 선택 ``` **옵션 2: windows-build-tools (npm)** ```powershell npm install --global windows-build-tools ``` **옵션 3: Chocolatey** ```powershell choco install visualstudio2022-workload-vctools ``` 자세한 내용은 [node-gyp Windows 가이드](https://github.com/nodejs/node-gyp#on-windows)를 참조하세요. --- ## AgentKits 생태계 **AgentKits Memory**는 AityTech의 AgentKits 생태계의 일부입니다 - AI 코딩 어시스턴트를 더 스마트하게 만드는 도구입니다. | 제품 | 설명 | 링크 | |---------|-------------|------| | **AgentKits Engineer** | 28개의 특화 에이전트, 100개 이상의 스킬, 엔터프라이즈 패턴 | [GitHub](https://github.com/aitytech/agentkits-engineer) | | **AgentKits Marketing** | AI 기반 마케팅 콘텐츠 생성 | [GitHub](https://github.com/aitytech/agentkits-marketing) | | **AgentKits Memory** | AI 어시스턴트를 위한 영구 메모리 (이 패키지) | [npm](https://www.npmjs.com/package/@aitytech/agentkits-memory) | --- ## Star HistoryAI 어시스턴트에게 지속되는 메모리를 부여하세요.
AgentKits Memory by AityTech
도움이 되셨다면 이 저장소에 스타를 주세요.