* feat: add domain management system with support for multiple domain profiles
- Introduced DomainManager class for loading and managing domain profiles.
- Added support for a default domain ('code') and fallback mechanisms.
- Implemented domain configuration validation and error handling.
- Created types for domain configuration, observation types, and concepts.
- Added new directory for domain profiles and ensured its existence.
- Updated SettingsDefaultsManager to include CLAUDE_MEM_DOMAIN setting.
* Refactor domain management to mode management
- Removed DomainManager class and replaced it with ModeManager for better clarity and functionality.
- Updated types from DomainConfig to ModeConfig and DomainPrompts to ModePrompts.
- Changed references from domains to modes in the settings and paths.
- Ensured backward compatibility by maintaining the fallback mechanism to the 'code' mode.
* feat: add migration 008 to support mode-agnostic observations and refactor service layer references in documentation
* feat: add new modes for code development and email investigation with detailed observation types and concepts
* Refactor observation parsing and prompt generation to incorporate mode-specific configurations
- Updated `parseObservations` function to use 'observation' as a universal fallback type instead of 'change', utilizing active mode's valid observation types.
- Modified `buildInitPrompt` and `buildContinuationPrompt` functions to accept a `ModeConfig` parameter, allowing for dynamic prompt content based on the active mode.
- Enhanced `ModePrompts` interface to include additional guidance for observers, such as recording focus and skip guidance.
- Adjusted the SDKAgent to load the active mode and pass it to prompt generation functions, ensuring prompts are tailored to the current mode's context.
* fix: correct mode prompt injection to preserve exact wording and type list visibility
- Add script to extract prompts from main branch prompts.ts into code.yaml
- Fix prompts.ts to show type list in XML template (e.g., "[ bugfix | feature | ... ]")
- Keep 'change' as fallback type in parser.ts (maintain backwards compatibility)
- Regenerate code.yaml with exact wording from original hardcoded prompts
- Build succeeds with no TypeScript errors
* fix: update ModeManager to load JSON mode files and improve validation
- Changed ModeManager to load mode configurations from JSON files instead of YAML.
- Removed the requirement for an "observation" type and updated validation to require at least one observation type.
- Updated fallback behavior in the parser to use the first type from the active mode's type list.
- Added comprehensive tests for mode loading, prompt injection, and parser integration, ensuring correct behavior across different modes.
- Introduced new mode JSON files for "Code Development" and "Email Investigation" with detailed observation types and prompts.
* Add mode configuration loading and update licensing information for Ragtime
- Implemented loading of mode configuration in WorkerService before database initialization.
- Added PolyForm Noncommercial License 1.0.0 to Ragtime directory.
- Created README.md for Ragtime with licensing details and usage guidelines.
* fix: add datasets directory to .gitignore to prevent accidental commits
* refactor: remove unused plugin package.json file
* chore: add package.json for claude-mem plugin with version 7.4.5
* refactor: remove outdated tests and improve error handling
- Deleted tests for ChromaSync error handling, smart install, strip memory tags, and user prompt tag stripping due to redundancy or outdated logic.
- Removed vitest configuration as it is no longer needed.
- Added a comprehensive implementation plan for fixing the modes system, addressing critical issues and improving functionality.
- Created a detailed test analysis report highlighting the quality and effectiveness of the current test suite, identifying areas for improvement.
- Introduced a new plugin package.json for runtime dependencies related to claude-mem hooks.
* refactor: remove parser regression tests to streamline codebase
* docs: update CLAUDE.md to clarify test management and changelog generation
* refactor: remove migration008 for mode-agnostic observations
* Refactor observation type handling to use ModeManager for icons and emojis
- Removed direct mappings of observation types to icons and work emojis in context-generator, FormattingService, SearchManager, and TimelineService.
- Integrated ModeManager to dynamically retrieve icons and emojis based on the active mode.
- Improved maintainability by centralizing the logic for observation type representation.
* Refactor observation metadata constants and update context generator
- Removed the explicit declaration of OBSERVATION_TYPES and OBSERVATION_CONCEPTS from observation-metadata.ts.
- Introduced fallback default strings for DEFAULT_OBSERVATION_TYPES_STRING and DEFAULT_OBSERVATION_CONCEPTS_STRING.
- Updated context-generator.ts to utilize observation types and concepts from ModeManager instead of constants.
* refactor: remove intermediate error handling from hooks (Phase 1)
Apply "fail fast" error handling strategy - errors propagate and crash loud
instead of being caught, wrapped, and re-thrown at intermediate layers.
Changes:
- Remove try/catch around fetch calls in all hooks - let errors throw
- Add try/catch ONLY around JSON.parse at entry points
- Delete error-handler.ts and hook-error-handler.ts (no longer needed)
- Update worker-utils.ts: functions now throw instead of returning null
- Update transcript-parser.ts: throw on missing path, empty file, malformed JSON
- Remove all handleWorkerError, handleFetchError imports
Philosophy: If something breaks, we KNOW it broke. No silent failures.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: remove intermediate error handling from worker service (Phase 2)
Apply "fail fast" error handling strategy to worker service layer.
Changes:
- worker-service.ts: Remove try/catch from version endpoint, cleanup,
MCP close, process enumeration, force kill, and isAlive check
- SessionRoutes.ts: Remove try/catch from JSON.stringify calls, remove
.catch() from Chroma sync and SDK agent calls
- SettingsRoutes.ts: Remove try/catch from toggleMcp()
- DatabaseManager.ts: Remove .catch() from backfill and close operations
- SDKAgent.ts: Keep outer try/catch (top-level), remove .catch() from
Chroma sync operations
- SSEBroadcaster.ts: Remove try/catch from broadcast and sendToClient
Philosophy: Errors propagate and crash loud. BaseRouteHandler.wrapHandler
provides top-level catching for HTTP routes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: remove error swallowing from SQLite services (Phase 3)
Apply "fail fast" error handling strategy to database layer.
SessionStore.ts migrations:
- ensureWorkerPortColumn(): Remove outer try/catch, let it throw
- ensurePromptTrackingColumns(): Remove outer try/catch, let it throw
- removeSessionSummariesUniqueConstraint(): Keep inner transaction
rollback, remove outer catch
- addObservationHierarchicalFields(): Remove outer try/catch
- makeObservationsTextNullable(): Keep inner transaction rollback,
remove outer catch
- createUserPromptsTable(): Keep inner transaction rollback, remove
outer catch
- getFilesForSession(): Remove try/catch around JSON.parse
SessionSearch.ts:
- ensureFTSTables(): Remove try/catch, let it throw
Philosophy: Migration errors that are swallowed mean we think the
database is fine when it's not. Keep only inner transaction rollback
try/catch blocks.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: remove error hiding from utilities (Phase 4)
Apply "fail fast" error handling strategy to utility layer.
logger.ts:
- formatTool(): Remove try/catch, let JSON.parse throw on malformed input
context-generator.ts:
- loadContextConfig(): Remove try/catch, let parseInt throw on invalid settings
- Transcript extraction: Remove try/catch, let file read errors propagate
ChromaSync.ts:
- close(): Remove nested try/catch blocks, let close errors propagate
Philosophy: No silent fallbacks or hidden defaults. If something breaks,
we know it broke immediately.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: serve static UI assets and update package root path
- Added middleware to serve static UI assets (JS, CSS, fonts, etc.) in ViewerRoutes.
- Updated getPackageRoot function to correctly return the package root directory as one level up from the current directory.
* feat: Enhance mode loading with inheritance support
- Introduced parseInheritance method to handle parent--override mode IDs.
- Added deepMerge method for recursively merging mode configurations.
- Updated loadMode method to support inheritance, loading parent modes and applying overrides.
- Improved error handling for missing mode files and logging for better traceability.
* fix(modes): correct inheritance file resolution and path handling
* Refactor code structure for improved readability and maintainability
* feat: Add mode configuration documentation and examples
* fix: Improve concurrency handling in translateReadme function
* Refactor SDK prompts to enhance clarity and structure
- Updated the `buildInitPrompt` and `buildContinuationPrompt` functions in `prompts.ts` to improve the organization of prompt components, including the addition of language instructions and footer messages.
- Removed redundant instructions and emphasized the importance of recording observations.
- Modified the `ModePrompts` interface in `types.ts` to include new properties for system identity, language instructions, and output format header, ensuring better flexibility and clarity in prompt generation.
* Enhance prompts with language instructions and XML formatting
- Updated `buildInitPrompt`, `buildSummaryPrompt`, and `buildContinuationPrompt` functions to include detailed language instructions in XML comments.
- Ensured that language instructions guide users to keep XML tags in English while writing content in the specified language.
- Modified the `buildSummaryPrompt` function to accept `mode` as a parameter for consistency.
- Adjusted the call to `buildSummaryPrompt` in `SDKAgent` to pass the `mode` argument.
* Refactor XML prompt generation in SDK
- Updated the buildInitPrompt, buildSummaryPrompt, and buildContinuationPrompt functions to use new placeholders for XML elements, improving maintainability and readability.
- Removed redundant language instructions in comments for clarity.
- Added new properties to ModePrompts interface for better structure and organization of XML placeholders and section headers.
* feat: Update observation prompts and structure across multiple languages
* chore: Remove planning docs and update Ragtime README
Remove ephemeral development artifacts:
- .claude/plans/modes-system-fixes.md
- .claude/test-analysis-report.md
- PROMPT_INJECTION_ANALYSIS.md
Update ragtime/README.md to explain:
- Feature is not yet implemented
- Dependency on modes system (now complete in PR #412)
- Ready to be scripted out in future release
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: Move summary prompts to mode files for multilingual support
Summary prompts were hardcoded in English in prompts.ts, breaking
multilingual support. Now properly mode-based:
- Added summary_instruction, summary_context_label,
summary_format_instruction, summary_footer to code.json
- Updated buildSummaryPrompt() to use mode fields instead of hardcoded text
- Added summary_footer with language instructions to all 10 language modes
- Language modes keep English prompts + language requirement footer
This fixes the gaslighting where we claimed full multilingual support
but summaries were still generated in English.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* chore: Clean up README by removing local preview instructions and streamlining beta features section
* Add translated README files for Ukrainian, Vietnamese, and Chinese languages
* Add new language modes for code development in multiple languages
- Introduced JSON configurations for Code Development in Greek, Finnish, Hebrew, Hindi, Hungarian, Indonesian, Italian, Dutch, Norwegian, Polish, Brazilian Portuguese, Romanian, Swedish, Turkish, and Ukrainian.
- Each configuration includes prompts for observations, summaries, and instructions tailored to the respective language.
- Ensured that all prompts emphasize the importance of generating observations without referencing the agent's actions.
* Add multilingual support links to README files in various languages
- Updated README.id.md, README.it.md, README.ja.md, README.ko.md, README.nl.md, README.no.md, README.pl.md, README.pt-br.md, README.ro.md, README.ru.md, README.sv.md, README.th.md, README.tr.md, README.uk.md, README.vi.md, and README.zh.md to include links to other language versions.
- Each README now features a centered paragraph with flags and links for easy navigation between different language documents.
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
13 KiB
🌐 이것은 자동 번역입니다. 커뮤니티의 수정 제안을 환영합니다!
🇨🇳 中文 • 🇯🇵 日本語 • 🇧🇷 Português • 🇰🇷 한국어 • 🇪🇸 Español • 🇩🇪 Deutsch • 🇫🇷 Français 🇮🇱 עברית • 🇸🇦 العربية • 🇷🇺 Русский • 🇵🇱 Polski • 🇨🇿 Čeština • 🇳🇱 Nederlands • 🇹🇷 Türkçe • 🇺🇦 Українська • 🇻🇳 Tiếng Việt • 🇮🇩 Indonesia • 🇹🇭 ไทย • 🇮🇳 हिन्दी • 🇧🇩 বাংলা • 🇷🇴 Română • 🇸🇪 Svenska • 🇮🇹 Italiano • 🇬🇷 Ελληνικά • 🇭🇺 Magyar • 🇫🇮 Suomi • 🇩🇰 Dansk • 🇳🇴 Norsk
Claude Code를 위해 구축된 지속적인 메모리 압축 시스템.
빠른 시작 • 작동 방식 • 검색 도구 • 문서 • 설정 • 문제 해결 • 라이선스
Claude-Mem은 도구 사용 관찰을 자동으로 캡처하고 의미론적 요약을 생성하여 향후 세션에서 사용할 수 있도록 함으로써 세션 간 컨텍스트를 원활하게 보존합니다. 이를 통해 Claude는 세션이 종료되거나 재연결된 후에도 프로젝트에 대한 지식의 연속성을 유지할 수 있습니다.
빠른 시작
터미널에서 새 Claude Code 세션을 시작하고 다음 명령을 입력하세요:
> /plugin marketplace add thedotmack/claude-mem
> /plugin install claude-mem
Claude Code를 재시작하세요. 이전 세션의 컨텍스트가 자동으로 새 세션에 나타납니다.
주요 기능:
- 🧠 지속적인 메모리 - 세션 간 컨텍스트 유지
- 📊 점진적 공개 - 토큰 비용 가시성을 갖춘 계층화된 메모리 검색
- 🔍 스킬 기반 검색 - mem-search 스킬로 프로젝트 기록 쿼리
- 🖥️ 웹 뷰어 UI - http://localhost:37777에서 실시간 메모리 스트림 확인
- 💻 Claude Desktop 스킬 - Claude Desktop 대화에서 메모리 검색
- 🔒 개인정보 제어 -
<private>태그를 사용하여 민감한 콘텐츠를 저장소에서 제외 - ⚙️ 컨텍스트 설정 - 주입되는 컨텍스트에 대한 세밀한 제어
- 🤖 자동 작동 - 수동 개입 불필요
- 🔗 인용 - ID로 과거 관찰 참조 (http://localhost:37777/api/observation/{id}를 통해 액세스하거나 http://localhost:37777의 웹 뷰어에서 모두 보기)
- 🧪 베타 채널 - 버전 전환을 통해 Endless Mode와 같은 실험적 기능 사용
문서
📚 전체 문서 보기 - GitHub에서 마크다운 문서 탐색
시작하기
- 설치 가이드 - 빠른 시작 및 고급 설치
- 사용 가이드 - Claude-Mem이 자동으로 작동하는 방법
- 검색 도구 - 자연어로 프로젝트 기록 쿼리
- 베타 기능 - Endless Mode와 같은 실험적 기능 시도
모범 사례
- 컨텍스트 엔지니어링 - AI 에이전트 컨텍스트 최적화 원칙
- 점진적 공개 - Claude-Mem의 컨텍스트 프라이밍 전략의 철학
아키텍처
- 개요 - 시스템 구성 요소 및 데이터 흐름
- 아키텍처 진화 - v3에서 v5로의 여정
- 후크 아키텍처 - Claude-Mem이 라이프사이클 후크를 사용하는 방법
- 후크 참조 - 7개 후크 스크립트 설명
- 워커 서비스 - HTTP API 및 Bun 관리
- 데이터베이스 - SQLite 스키마 및 FTS5 검색
- 검색 아키텍처 - Chroma 벡터 데이터베이스를 활용한 하이브리드 검색
설정 및 개발
작동 방식
핵심 구성 요소:
- 5개 라이프사이클 후크 - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6개 후크 스크립트)
- 스마트 설치 - 캐시된 종속성 검사기 (사전 후크 스크립트, 라이프사이클 후크 아님)
- 워커 서비스 - 웹 뷰어 UI와 10개 검색 엔드포인트를 갖춘 포트 37777의 HTTP API, Bun으로 관리
- SQLite 데이터베이스 - 세션, 관찰, 요약 저장
- mem-search 스킬 - 점진적 공개를 통한 자연어 쿼리
- Chroma 벡터 데이터베이스 - 지능형 컨텍스트 검색을 위한 하이브리드 의미론적 + 키워드 검색
자세한 내용은 아키텍처 개요를 참조하세요.
mem-search 스킬
Claude-Mem은 과거 작업에 대해 질문할 때 자동으로 호출되는 mem-search 스킬을 통해 지능형 검색을 제공합니다:
작동 방식:
- 자연스럽게 질문하세요: "지난 세션에서 무엇을 했나요?" 또는 "이 버그를 이전에 수정했나요?"
- Claude가 관련 컨텍스트를 찾기 위해 mem-search 스킬을 자동으로 호출합니다
사용 가능한 검색 작업:
- 관찰 검색 - 관찰에 대한 전체 텍스트 검색
- 세션 검색 - 세션 요약에 대한 전체 텍스트 검색
- 프롬프트 검색 - 원시 사용자 요청 검색
- 개념별 - 개념 태그로 찾기 (discovery, problem-solution, pattern 등)
- 파일별 - 특정 파일을 참조하는 관찰 찾기
- 유형별 - 유형별로 찾기 (decision, bugfix, feature, refactor, discovery, change)
- 최근 컨텍스트 - 프로젝트의 최근 세션 컨텍스트 가져오기
- 타임라인 - 특정 시점 주변의 통합된 컨텍스트 타임라인 가져오기
- 쿼리별 타임라인 - 관찰을 검색하고 가장 일치하는 항목 주변의 타임라인 컨텍스트 가져오기
- API 도움말 - 검색 API 문서 가져오기
자연어 쿼리 예제:
"지난 세션에서 어떤 버그를 수정했나요?"
"인증을 어떻게 구현했나요?"
"worker-service.ts에 어떤 변경 사항이 있었나요?"
"이 프로젝트의 최근 작업을 보여주세요"
"뷰어 UI를 추가할 때 무슨 일이 있었나요?"
자세한 예제는 검색 도구 가이드를 참조하세요.
베타 기능
Claude-Mem은 Endless Mode(확장된 세션을 위한 생체모방 메모리 아키텍처)와 같은 실험적 기능을 제공하는 베타 채널을 제공합니다. http://localhost:37777 → Settings의 웹 뷰어 UI에서 안정 버전과 베타 버전 간 전환이 가능합니다.
Endless Mode 및 사용 방법에 대한 자세한 내용은 **베타 기능 문서**를 참조하세요.
시스템 요구 사항
- Node.js: 18.0.0 이상
- Claude Code: 플러그인 지원이 있는 최신 버전
- Bun: JavaScript 런타임 및 프로세스 관리자 (누락 시 자동 설치)
- uv: 벡터 검색을 위한 Python 패키지 관리자 (누락 시 자동 설치)
- SQLite 3: 영구 저장을 위한 데이터베이스 (번들 포함)
설정
설정은 ~/.claude-mem/settings.json에서 관리됩니다 (첫 실행 시 기본값으로 자동 생성). AI 모델, 워커 포트, 데이터 디렉토리, 로그 수준 및 컨텍스트 주입 설정을 구성할 수 있습니다.
사용 가능한 모든 설정 및 예제는 **설정 가이드**를 참조하세요.
개발
빌드 지침, 테스트 및 기여 워크플로우는 **개발 가이드**를 참조하세요.
문제 해결
문제가 발생하면 Claude에게 문제를 설명하면 troubleshoot 스킬이 자동으로 진단하고 수정 사항을 제공합니다.
일반적인 문제 및 해결 방법은 **문제 해결 가이드**를 참조하세요.
버그 보고
자동화된 생성기로 포괄적인 버그 보고서를 작성하세요:
cd ~/.claude/plugins/marketplaces/thedotmack
npm run bug-report
기여
기여를 환영합니다! 다음 절차를 따라주세요:
- 저장소 포크
- 기능 브랜치 생성
- 테스트와 함께 변경 사항 작성
- 문서 업데이트
- Pull Request 제출
기여 워크플로우는 개발 가이드를 참조하세요.
라이선스
이 프로젝트는 GNU Affero General Public License v3.0 (AGPL-3.0)에 따라 라이선스가 부여됩니다.
Copyright (C) 2025 Alex Newman (@thedotmack). All rights reserved.
전체 세부 정보는 LICENSE 파일을 참조하세요.
의미:
- 이 소프트웨어를 자유롭게 사용, 수정 및 배포할 수 있습니다
- 수정하여 네트워크 서버에 배포하는 경우 소스 코드를 공개해야 합니다
- 파생 작업물도 AGPL-3.0에 따라 라이선스가 부여되어야 합니다
- 이 소프트웨어에는 보증이 없습니다
Ragtime에 대한 참고 사항: ragtime/ 디렉토리는 PolyForm Noncommercial License 1.0.0에 따라 별도로 라이선스가 부여됩니다. 자세한 내용은 ragtime/LICENSE를 참조하세요.
지원
- 문서: docs/
- 이슈: GitHub Issues
- 저장소: github.com/thedotmack/claude-mem
- 작성자: Alex Newman (@thedotmack)
Claude Agent SDK로 구축 | Claude Code 기반 | TypeScript로 제작