AgentKits Logo

AgentKits Memory

by AityTech

npm License Claude Code Cursor Windsurf Cline OpenCode
Tests Coverage

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**를 엽니다. ### 세션 목록 타임라인 뷰와 활동 세부사항으로 모든 세션을 탐색합니다. ![Session List](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-session-list_v2.png) ### 메모리 목록 검색 및 네임스페이스 필터링으로 저장된 모든 메모리를 탐색합니다. ![Memory List](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-memory-list_v2.png) ### 메모리 추가 키, 네임스페이스, 유형, 콘텐츠, 태그로 새 메모리를 생성합니다. ![Add Memory](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-add-memory_v2.png) ### 메모리 세부사항 편집 및 삭제 옵션과 함께 전체 메모리 세부사항을 봅니다. ![Memory Detail](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-memory-detail_v2.png) ### 임베딩 관리 의미 검색을 위한 벡터 임베딩을 생성하고 관리합니다. ![Manage Embeddings](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-embedding_v2.png) --- ## 빠른 시작 ### 옵션 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) |

agentkits.net

--- ## Star History Star History Chart --- ## 라이선스 MIT ---

AI 어시스턴트에게 지속되는 메모리를 부여하세요.

AgentKits Memory by AityTech

도움이 되셨다면 이 저장소에 스타를 주세요.