From 30896232878871d2d7f63abcaffa98584aa5bd86 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 8 Apr 2026 22:59:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Neo4j=20=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E9=97=AE=E9=A2=98=20-=20=E8=87=AA=E5=8A=A8=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E5=B7=B2=E6=9C=89=E5=AE=B9=E5=99=A8=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=B9=B6=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/install_neo4j_ubuntu.sh | 54 ++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/scripts/install_neo4j_ubuntu.sh b/scripts/install_neo4j_ubuntu.sh index fd5b0a3..1c1cc74 100755 --- a/scripts/install_neo4j_ubuntu.sh +++ b/scripts/install_neo4j_ubuntu.sh @@ -69,12 +69,31 @@ else # 如果 Docker 可用,使用 Docker 启动 Neo4j if command -v docker &> /dev/null; then - docker run -d --name neo4j \ - -p 7474:7474 -p 7687:7687 \ - -e NEO4J_AUTH=neo4j/neo4j \ - -e NEO4J_PLUGINS='["apoc"]' \ - neo4j:5 || true - echo " Neo4j Docker 容器已启动" + # 检查是否有已存在的容器 + EXISTING=$(docker ps -a --filter "name=neo4j" --format "{{.Names}}" | head -1) + if [ -n "$EXISTING" ]; then + echo " 找到已有 Neo4j 容器: $EXISTING" + docker start "$EXISTING" 2>/dev/null || true + # 尝试从环境变量获取密码 + NEO4J_AUTH=$(docker inspect "$EXISTING" --format '{{.Config.Env}}' 2>/dev/null | grep -o 'NEO4J_AUTH=[^ ]*' | cut -d'=' -f2) + if [ -n "$NEO4J_AUTH" ]; then + NEO4J_PASSWORD=$(echo "$NEO4J_AUTH" | cut -d'/' -f2) + fi + else + # 生成随机密码 + NEO4J_PASS=$(openssl rand -hex 8 2>/dev/null || echo "openclaw$(date +%s)") + docker run -d --name openclaw-neo4j \ + -p 7474:7474 -p 7687:7687 \ + -e NEO4J_AUTH=neo4j/${NEO4J_PASS} \ + -e NEO4J_PLUGINS='["apoc"]' \ + neo4j:5 || true + echo " Neo4j Docker 容器已启动" + echo " 密码: $NEO4J_PASS" + NEO4J_PASSWORD="$NEO4J_PASS" + + # 保存密码到文件 + echo "$NEO4J_PASS" > "$PROJECT_DIR/.neo4j_pass" + fi else echo " 无法安装 Neo4j,请手动安装或使用 Docker" exit 1 @@ -145,15 +164,31 @@ source venv/bin/activate pip install --upgrade pip pip install neo4j openai +# 获取 Neo4j 密码 +NEO4J_PASSWORD="neo4j" +RUNNING_CONTAINER=$(docker ps --filter "name=neo4j" --format "{{.Names}}" 2>/dev/null | head -1) +if [ -n "$RUNNING_CONTAINER" ]; then + # 运行中的容器,检查是否已有 auth 文件 + if docker exec "$RUNNING_CONTAINER" test -f /var/lib/neo4j/data/neo4j.auth 2>/dev/null; then + echo " 检测到运行中的 Neo4j 容器: $RUNNING_CONTAINER" + fi +fi + +# 检查之前是否保存过密码 +if [ -f "$PROJECT_DIR/.neo4j_pass" ]; then + NEO4J_PASSWORD=$(cat "$PROJECT_DIR/.neo4j_pass") +fi + # 创建环境变量文件 -cat > .env << 'EOF' +cat > .env << EOF DEEPSEEK_API_KEY=your-api-key-here NEO4J_URI=bolt://localhost:7687 NEO4J_USER=neo4j -NEO4J_PASSWORD=neo4j +NEO4J_PASSWORD=${NEO4J_PASSWORD} EOF echo " 虚拟环境已创建: $PROJECT_DIR/venv" +echo " Neo4j 密码: $NEO4J_PASSWORD" echo " 激活: source $PROJECT_DIR/venv/bin/activate" # ------------------------------------------------------------------------- @@ -171,6 +206,9 @@ if [ "$1" = "--run" ] || [ "$1" = "-r" ]; then export DEEPSEEK_API_KEY="$user_api_key" fi + # 导出 Neo4j 密码 + export NEO4J_PASSWORD="$NEO4J_PASSWORD" + source venv/bin/activate cd /home/program/graph_enable_ability python openclaw_neo4j_demo.py