Просмотр исходного кода

feat: 添加 claude-mem 安装技能和系统架构文档

yourname 4 недель назад
Родитель
Сommit
3760ad8494

BIN
.claude/skills/claude-mem-install.skill


+ 177 - 0
.claude/skills/claude-mem-install/SKILL.md

@@ -0,0 +1,177 @@
+---
+name: claude-mem-install
+description: Claude-Mem 持久记忆系统安装和配置工具。用于在 Claude Code 中安装 claude-mem 插件,实现跨会话的上下文持久化。当用户请求安装 claude-mem、配置记忆系统、或验证记忆插件状态时使用。触发词:安装 claude-mem、配置记忆插件、验证 claude-mem、记忆系统安装。注意:使用 Gitee 镜像仓库(国内可访问),使用 claude CLI 命令行方式安装。
+---
+
+# Claude-Mem 安装和配置
+
+## 概述
+
+Claude-Mem 是一个为 Claude Code 设计的持久记忆压缩系统,通过自动捕获工具使用观察、生成语义摘要,使上下文在会话间保持持久化。
+
+**仓库地址**: `git@gitee.com:zyh320888/claude-mem.git` (Gitee 镜像,国内可访问)
+
+## 系统要求
+
+- **Node.js**: >= 18.0.0
+- **Claude Code**: 最新版本(支持插件)
+- **Bun**: JavaScript 运行时(自动安装)
+- **uv**: Python 包管理器(自动安装)
+
+## 安装步骤
+
+### 步骤 1: 检查 Node.js 版本
+
+```bash
+node -v
+```
+
+确保版本 >= 18.0.0。如果版本过低,从 https://nodejs.org 下载安装。
+
+### 步骤 2: 使用 claude CLI 安装插件
+
+**重要**: 在非交互式环境中(如云开发容器),使用 `claude` 命令行方式安装:
+
+```bash
+# 添加插件市场(使用 Gitee 镜像仓库)
+claude plugin marketplace add git@gitee.com:zyh320888/claude-mem.git
+
+# 安装插件
+claude plugin install claude-mem
+```
+
+### 步骤 3: 重启 Claude Code
+
+退出并重新启动 Claude Code 以使插件生效。
+
+### 步骤 4: 验证安装
+
+运行验证脚本检查安装状态(**包含自动启动 Worker 功能**):
+
+```bash
+bash .claude/skills/claude-mem-install/scripts/verify_install.sh
+```
+
+验证脚本会自动:
+- 检查 Node.js 版本
+- 检查插件目录
+- 检查 Worker 服务状态
+- **如果 Worker 未运行,尝试自动启动**
+
+或手动检查:
+
+1. **Worker 服务**: 访问 http://localhost:37777
+2. **健康检查**: `curl http://localhost:37777/api/health`
+3. **配置文件**: 查看 `~/.claude-mem/settings.json`
+
+## 安装后配置
+
+### 配置文件位置
+
+`~/.claude-mem/settings.json`(首次运行自动创建)
+
+### 常用配置选项
+
+```json
+{
+  "aiProvider": "anthropic",
+  "workerPort": 37777,
+  "dataDir": "~/.claude-mem/data",
+  "logLevel": "info"
+}
+```
+
+### 隐私控制
+
+使用 `<private>` 标签排除敏感内容:
+
+```bash
+# 此命令不会被记录
+<private> echo "敏感信息"
+```
+
+## 验证安装状态
+
+运行验证脚本:
+
+```bash
+bash .claude/skills/claude-mem-install/scripts/verify_install.sh
+```
+
+脚本检查:
+- ✅ Node.js 版本
+- ✅ Claude Code 插件目录
+- ✅ Worker 服务状态(端口 37777)
+- ✅ 配置文件存在
+- ✅ 数据库文件
+
+## 主要功能
+
+| 功能 | 说明 |
+|------|------|
+| 🧠 持久记忆 | 上下文跨会话保存 |
+| 📊 渐进式披露 | 分层记忆检索 |
+| 🔍 自然语言搜索 | 用 mem-search 技能查询历史 |
+| 🖥️ Web 查看器 | http://localhost:37777 |
+| 🔒 隐私控制 | `<private>` 标签排除敏感内容 |
+
+## 故障排除
+
+### Bun 未安装或安装失败
+
+GitHub 访问受限时,官方安装脚本会失败。使用 npm 安装:
+
+```bash
+# 推荐:使用 npm 安装 Bun
+npm install -g bun
+
+# 验证安装
+bun --version
+```
+
+### Worker 服务未启动
+
+```bash
+# 检查 Bun 是否安装
+bun --version
+
+# 使用 worker-cli.js 启动 Worker(推荐方式)
+cd ~/.claude/plugins/cache/thedotmack/claude-mem/<version>
+node scripts/worker-cli.js start
+
+# 验证服务状态
+curl http://localhost:37777/api/health
+```
+
+**注意**: 插件实际安装路径是 `~/.claude/plugins/cache/thedotmack/claude-mem/<version>/`,而非 `marketplaces` 目录。
+
+### 插件未生效
+
+确保使用 `claude plugin` 命令安装(非交互式环境),而非 `npm install -g claude-mem`(后者只安装 SDK)。
+
+### 查看 MCP 进程状态
+
+```bash
+# 查看 claude-mem MCP 服务器进程
+ps aux | grep claude-mem
+
+# 查看端口监听
+netstat -tlnp | grep 37777  # 或 ss -tlnp | grep 37777
+```
+
+### 查看日志
+
+```bash
+# Worker 日志
+tail -f ~/.claude-mem/worker.log
+
+# 或者查看插件目录日志
+ls -la ~/.claude/plugins/cache/thedotmack/claude-mem/
+```
+
+## 资源链接
+
+- 📚 **官方文档**: https://docs.claude-mem.ai/
+- 📦 **Gitee 镜像仓库**: git@gitee.com:zyh320888/claude-mem.git (国内推荐)
+- 💻 **GitHub 原仓库**: https://github.com/thedotmack/claude-mem
+- 🐛 **问题反馈**: https://github.com/thedotmack/claude-mem/issues

+ 76 - 0
.claude/skills/claude-mem-install/scripts/start_worker.sh

@@ -0,0 +1,76 @@
+#!/bin/bash
+# Claude-Mem Worker 启动脚本
+# 当 SessionStart hook 自动启动失败时使用此脚本手动启动
+
+set -e
+
+# 颜色定义
+GREEN='\033[0;32m'
+RED='\033[0;31m'
+YELLOW='\033[1;33m'
+NC='\033[0m'
+
+echo "🚀 启动 Claude-Mem Worker 服务..."
+
+# 检查 Bun 是否安装
+if ! command -v bun &> /dev/null; then
+    echo -e "${YELLOW}⚠️  Bun 未安装,正在通过 npm 安装...${NC}"
+    npm install -g bun
+    echo -e "${GREEN}✅ Bun 安装完成: $(bun --version)${NC}"
+fi
+
+# 查找插件目录
+PLUGIN_DIRS=(
+    "$HOME/.claude/plugins/cache/thedotmack/claude-mem"
+    "$HOME/.claude/plugins/marketplaces/thedotmack"
+)
+
+PLUGIN_DIR=""
+for dir in "${PLUGIN_DIRS[@]}"; do
+    if [ -d "$dir" ]; then
+        # 找到版本号目录
+        VERSION_DIR=$(find "$dir" -maxdepth 1 -type d -name "[0-9]*" | sort -V | tail -n 1)
+        if [ -n "$VERSION_DIR" ]; then
+            PLUGIN_DIR="$VERSION_DIR"
+            break
+        fi
+    fi
+done
+
+if [ -z "$PLUGIN_DIR" ]; then
+    echo -e "${RED}❌ 未找到 claude-mem 插件目录${NC}"
+    echo "请先运行: claude plugin install claude-mem"
+    exit 1
+fi
+
+echo "📂 插件目录: $PLUGIN_DIR"
+
+# 检查 worker-cli.js 是否存在
+WORKER_CLI="$PLUGIN_DIR/scripts/worker-cli.js"
+if [ ! -f "$WORKER_CLI" ]; then
+    echo -e "${RED}❌ 未找到 worker-cli.js: $WORKER_CLI${NC}"
+    exit 1
+fi
+
+# 启动 Worker
+echo "🔄 启动 Worker 服务..."
+cd "$PLUGIN_DIR"
+node "$WORKER_CLI" start
+
+# 等待服务启动
+sleep 2
+
+# 验证服务状态
+if command -v curl &> /dev/null; then
+    if curl -s http://localhost:37777/api/health &> /dev/null; then
+        echo -e "${GREEN}✅ Worker 服务启动成功!${NC}"
+        echo ""
+        echo "🌐 Web 查看器: http://localhost:37777"
+        echo "📊 健康检查: curl http://localhost:37777/api/health"
+    else
+        echo -e "${YELLOW}⚠️  Worker 服务可能未正常启动,请检查日志${NC}"
+        echo "日志位置: ~/.claude-mem/worker.log"
+    fi
+else
+    echo -e "${YELLOW}⚠️  未安装 curl,无法验证服务状态${NC}"
+fi

+ 120 - 0
.claude/skills/claude-mem-install/scripts/verify_install.sh

@@ -0,0 +1,120 @@
+#!/bin/bash
+# Claude-Mem 安装验证脚本
+
+echo "🔍 正在验证 Claude-Mem 安装..."
+
+# 颜色定义
+GREEN='\033[0;32m'
+RED='\033[0;31m'
+YELLOW='\033[1;33m'
+NC='\033[0m' # No Color
+
+# 1. 检查 Node.js 版本
+echo ""
+echo "📦 检查 Node.js 版本..."
+if command -v node &> /dev/null; then
+    NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
+    if [ "$NODE_VERSION" -ge 18 ]; then
+        echo -e "${GREEN}✅ Node.js 版本: $(node -v) (满足要求 >= 18.0.0)${NC}"
+    else
+        echo -e "${RED}❌ Node.js 版本过低: $(node -v) (需要 >= 18.0.0)${NC}"
+        exit 1
+    fi
+else
+    echo -e "${RED}❌ 未检测到 Node.js${NC}"
+    exit 1
+fi
+
+# 2. 检查 Claude Code 插件目录
+echo ""
+echo "🔌 检查 Claude Code 插件..."
+CLAUDE_DIR="$HOME/.claude"
+MARKETPLACE_DIR="$CLAUDE_DIR/plugins/marketplaces/thedotmack"
+
+if [ -d "$MARKETPLACE_DIR" ]; then
+    echo -e "${GREEN}✅ Claude Code 插件目录存在${NC}"
+else
+    echo -e "${YELLOW}⚠️  Claude Code 插件目录不存在,可能需要先安装插件${NC}"
+fi
+
+# 3. 检查 worker 服务 (37777 端口)
+echo ""
+echo "🔄 检查 Claude-Mem Worker 服务..."
+WORKER_RUNNING=false
+if command -v curl &> /dev/null; then
+    if curl -s http://localhost:37777/api/health &> /dev/null; then
+        echo -e "${GREEN}✅ Claude-Mem Worker 服务运行中 (端口 37777)${NC}"
+        WORKER_RUNNING=true
+    else
+        echo -e "${YELLOW}⚠️  Claude-Mem Worker 服务未运行${NC}"
+    fi
+else
+    echo -e "${YELLOW}⚠️  未安装 curl,无法检查服务状态${NC}"
+fi
+
+# 如果 Worker 未运行,尝试自动启动
+if [ "$WORKER_RUNNING" = false ]; then
+    echo ""
+    echo "💡 尝试自动启动 Worker 服务..."
+
+    # 检查 Bun 是否安装
+    if ! command -v bun &> /dev/null; then
+        echo -e "${YELLOW}⚠️  Bun 未安装,请先安装: npm install -g bun${NC}"
+    else
+        # 查找插件目录并启动
+        PLUGIN_DIR=""
+        for dir in "$HOME/.claude/plugins/cache/thedotmack/claude-mem" "$HOME/.claude/plugins/marketplaces/thedotmack"; do
+            if [ -d "$dir" ]; then
+                VERSION_DIR=$(find "$dir" -maxdepth 1 -type d -name "[0-9]*" 2>/dev/null | sort -V | tail -n 1)
+                if [ -n "$VERSION_DIR" ]; then
+                    PLUGIN_DIR="$VERSION_DIR"
+                    break
+                fi
+            fi
+        done
+
+        if [ -n "$PLUGIN_DIR" ] && [ -f "$PLUGIN_DIR/scripts/worker-cli.js" ]; then
+            echo "📂 找到插件目录: $PLUGIN_DIR"
+            cd "$PLUGIN_DIR" && node scripts/worker-cli.js start 2>/dev/null || true
+            sleep 2
+            if curl -s http://localhost:37777/api/health &> /dev/null; then
+                echo -e "${GREEN}✅ Worker 服务启动成功!${NC}"
+            else
+                echo -e "${YELLOW}⚠️  自动启动失败,请手动运行: bash .claude/skills/claude-mem-install/scripts/start_worker.sh${NC}"
+            fi
+        else
+            echo -e "${YELLOW}⚠️  未找到插件,请先安装: claude plugin install claude-mem${NC}"
+        fi
+    fi
+fi
+
+# 4. 检查配置文件
+echo ""
+echo "⚙️  检查配置文件..."
+SETTINGS_FILE="$HOME/.claude-mem/settings.json"
+if [ -f "$SETTINGS_FILE" ]; then
+    echo -e "${GREEN}✅ Claude-Mem 配置文件存在: $SETTINGS_FILE${NC}"
+else
+    echo -e "${YELLOW}⚠️  Claude-Mem 配置文件不存在(首次安装后自动创建)${NC}"
+fi
+
+# 5. 检查数据库
+echo ""
+echo "🗄️  检查数据库..."
+DATA_DIR="$HOME/.claude-mem/data"
+if [ -d "$DATA_DIR" ]; then
+    DB_FILE=$(find "$DATA_DIR" -name "*.db" 2>/dev/null | head -n 1)
+    if [ -n "$DB_FILE" ]; then
+        echo -e "${GREEN}✅ Claude-Mem 数据库存在: $DB_FILE${NC}"
+    else
+        echo -e "${YELLOW}⚠️  未找到数据库文件${NC}"
+    fi
+else
+    echo -e "${YELLOW}⚠️  Claude-Mem 数据目录不存在${NC}"
+fi
+
+echo ""
+echo "📋 验证完成!"
+echo ""
+echo "🌐 Web 查看器地址: http://localhost:37777"
+echo "📚 文档地址: https://docs.claude-mem.ai/"

BIN
claude-mem-install.skill


BIN
docs/系统故障20260311.docx