Files
claude-mem/CLAUDE.md
T
airkjw 0289eab838
Deploy Install Scripts / deploy (push) Waiting to run
Windows / build (push) Waiting to run
chore: merge upstream v12.5.1 + keep local fixes
Upstream changes (v12.4.7 → v12.5.1):

v12.4.8 — timeline tool: coerce stringified numeric anchor in MCP tool (#2176)

v12.4.9 — 7 critical fixes (PR #2219):
  - build/bundle drift fix
  - strip privacy tags before summarization
  - preserve relevance order in semantic search
  - restore Windows spawn + Windows CI
  - Codex transcript ingestion + Windows queue self-deadlock fix
  - SDK boundary isolation (closes 6 issues)
  - standalone batch fixes

v12.5.0 — observation pipeline cleanup:
  - removed per-message retry counter that silently dropped data
  - parser collapsed to binary {valid:true,...} | {valid:false}
  - schema migrations v31 + v32 drop dead pending_messages columns:
    retry_count, failed_at_epoch, completed_at_epoch, worker_pid
  - status enum reduced to 'pending' | 'processing'
  - GeneratorExitHandler drain-in-flight loop deleted
  - PendingMessageStore: 226 → 165 lines (markFailed etc removed)
  - net -181 lines of source

v12.5.1 — install fix for Node 25+ (tree-sitter native build skipped via
  trustedDependencies allowlist) (#2278)

Local fixes preserved (resolved manual conflicts in SessionStore.ts and
sessions/create.ts where upstream removed surrounding context):
- env-sanitizer PATH extension for claude CLI lookup (auto-merged with
  upstream's expanded ENV_PRESERVE for AWS Bedrock / Vertex auth vars)
- SessionStore + sessions/create stale session reset (mac sleep / 4h
  wall-clock)

Built artifacts rebuilt; both fixes verified present in worker-service.cjs.
Worker restarted to v12.5.1 (PID 94088). Schema v31+v32 auto-migration
ran on startup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 13:27:58 +09:00

6.8 KiB

내 저장소 설정

업데이트


Claude-Mem: AI Development Instructions

Claude-mem is a Claude Code plugin providing persistent memory across sessions. It captures tool usage, compresses observations using the Claude Agent SDK, and injects relevant context into future sessions.

Architecture

5 Lifecycle Hooks: SessionStart → UserPromptSubmit → PostToolUse → Summary → SessionEnd

Hooks (src/hooks/*.ts) - TypeScript hook logic compiled into the unified worker dispatcher (plugin/scripts/worker-service.cjs). Lifecycle hook entries in plugin/hooks/hooks.json invoke the worker via bun-runner.js. The Setup-phase version-check.js is the only standalone hook script.

Worker Service (src/services/worker-service.ts) - Express API on the per-user worker port (default 37700 + (uid % 100), configurable via CLAUDE_MEM_WORKER_PORT), Bun-managed, handles AI processing asynchronously

Database (src/services/sqlite/) - SQLite3 at ~/.claude-mem/claude-mem.db

Search Skill (plugin/skills/mem-search/SKILL.md) - HTTP API for searching past work, auto-invoked when users ask about history

Planning Skill (plugin/skills/make-plan/SKILL.md) - Orchestrator instructions for creating phased implementation plans with documentation discovery

Execution Skill (plugin/skills/do/SKILL.md) - Orchestrator instructions for executing phased plans using subagents

Chroma (src/services/sync/ChromaSync.ts) - Vector embeddings for semantic search

Viewer UI (src/ui/viewer/) - React interface served by the worker on its configured port (default http://127.0.0.1:<worker-port>), built to plugin/ui/viewer.html

Privacy Tags

  • <private>content</private> - User-level privacy control (manual, prevents storage)

Implementation: Tag stripping happens at hook layer (edge processing) before data reaches worker/database. See src/utils/tag-stripping.ts for shared utilities.

Build Commands

npm run build-and-sync        # Build, sync to marketplace, restart worker

Configuration

Settings are managed in ~/.claude-mem/settings.json. The file is auto-created with defaults on first run.

Multi-account

Claude-mem supports running multiple isolated profiles on the same machine (e.g. work vs personal accounts) via environment variables. No CLI subcommand needed — set the env vars in the shell where you run Claude Code.

  • Switch profiles per shell: Set CLAUDE_MEM_DATA_DIR=<path> and every claude-mem path (database, chroma, logs, settings.json, worker.pid, transcripts config) derives from it. Example:

    export CLAUDE_MEM_DATA_DIR="$HOME/.claude-mem-work"
    
  • Port collisions are auto-handled: The default worker port is 37700 + (uid % 100), so two different OS users on the same box get different ports for free. If you want fixed ports per profile (e.g. you run two profiles as the same UID), set CLAUDE_MEM_WORKER_PORT too:

    export CLAUDE_MEM_WORKER_PORT=37800
    
  • All paths and ports derive from these two env vars. Hooks, npx-cli (install/uninstall/start/search), the OpenCode plugin, the OpenClaw installer, and the timeline-report skill all honor them. The settings file itself lives at $CLAUDE_MEM_DATA_DIR/settings.json.

  • See src/shared/SettingsDefaultsManager.ts for the canonical port/data-dir defaults and plugin/skills/timeline-report/SKILL.md for the shell snippet that resolves the port for arbitrary skills.

File Locations

  • Source: <project-root>/src/
  • Built Plugin: <project-root>/plugin/
  • Installed Plugin: ~/.claude/plugins/marketplaces/thedotmack/
  • Database: ~/.claude-mem/claude-mem.db
  • Chroma: ~/.claude-mem/chroma/

Exit Code Strategy

Claude-mem hooks use specific exit codes per Claude Code's hook contract:

  • Exit 0: Success or graceful shutdown (Windows Terminal closes tabs)
  • Exit 1: Non-blocking error (stderr shown to user, continues)
  • Exit 2: Blocking error (stderr fed to Claude for processing)

Philosophy: Worker/hook errors exit with code 0 to prevent Windows Terminal tab accumulation. The wrapper/plugin layer handles restart logic. ERROR-level logging is maintained for diagnostics.

See private/context/claude-code/exit-codes.md for full hook behavior matrix.

Requirements

  • Bun (all platforms - auto-installed if missing)
  • uv (all platforms - auto-installed if missing, provides Python for Chroma)
  • Node.js

Documentation

Public Docs: https://docs.claude-mem.ai (Mintlify) Source: docs/public/ - MDX files, edit docs.json for navigation Deploy: Auto-deploys from GitHub on push to main

Pro Features Architecture

Claude-mem is designed with a clean separation between open-source core functionality and optional Pro features.

Open-Source Core (this repository):

  • All local worker HTTP API endpoints (per-user port — see Architecture above) remain fully open and accessible
  • Pro features are headless - no proprietary UI elements in this codebase
  • Pro integration points are minimal: settings for license keys, tunnel provisioning logic
  • The architecture ensures Pro features extend rather than replace core functionality

Pro Features (coming soon, external):

  • Enhanced UI (Memory Stream) connects to the same local worker endpoints as the open viewer
  • Additional features like advanced filtering, timeline scrubbing, and search tools
  • Access gated by license validation, not by modifying core endpoints
  • Users without Pro licenses continue using the full open-source viewer UI without limitation

This architecture preserves the open-source nature of the project while enabling sustainable development through optional paid features.

Important

No need to edit the changelog ever, it's generated automatically.

Daily Maintenance

Run a daily version check across all package manifests and upgrade every dependency to its latest version — including major version bumps. Staying on the latest is the goal; do not skip majors.

  • Check package.json (root) and all nested package.json files (e.g. plugin/, openclaw/) for outdated dependencies via npm outdated.
  • Upgrade every package to latest (use npm install <pkg>@latest for each, or npx npm-check-updates -u && npm install). Bump majors too.
  • Run npm audit fix to resolve advisories.
  • After upgrades, run npm run build-and-sync and verify the worker starts and tests pass. Fix any breakage caused by major bumps in the same change.
  • Commit the updated package.json and package-lock.json files.