diff --git a/agent/README.md b/agent/README.md index 5bf3be7..d9c3b58 100644 --- a/agent/README.md +++ b/agent/README.md @@ -2,9 +2,9 @@ | 目录 | 服务 | 端口 | 入口(白名单明文) | conda | |---|---|---|---|---| -| qa/ | QA V1.1.73 断言锚定检索 | 8091(浸泡影子 7921) | scripts/qa_v1_1_73_server.py | gfpy312 | -| methodology/ | Methodology 提取 | 8092(浸泡影子 8001) | scripts/methodology_server.py | gfpy312 | -| legacy-rag/ | 旧路由族(app 3 路由/main 11 族) | 8093(浸泡影子 7911) | api/app.py | plantai-bff | +| qa/ | QA V1.1.73 断言锚定检索 | 8091 | scripts/qa_v1_1_73_server.py | plantai-rag-new-venv | +| methodology/ | Methodology 提取 | 8092 | scripts/methodology_server.py | plantai-rag-new-venv | +| legacy-rag/ | 旧路由族(app 3 路由/main 11 族) | 8093 | api/app.py | plantai-rag-new-venv | | vendor/ | 共享源码池(非服务) | — | — | — | 约束:仅 shell 启动(`scripts/{start,stop,status,restart}.sh`);编译产物 `.so` 隐藏源码;`compile.manifest` 记录模块级白名单。vendor 为源码单份,编译时复制进各 agent 暂存目录。 diff --git a/agent/legacy-rag/api/methodology_routes.py b/agent/legacy-rag/api/methodology_routes.py index 006d1dd..3d0b901 100755 --- a/agent/legacy-rag/api/methodology_routes.py +++ b/agent/legacy-rag/api/methodology_routes.py @@ -32,7 +32,7 @@ REVIEW_RESULTS_CSV = BATCH_DIR / "review_results.csv" # 2026-08-31 新工程适配:上传目录/产出根支持 env 覆盖 UPLOAD_JOBS_DIR = Path(os.environ.get("METHODOLOGY_UPLOAD_JOBS_DIR", PROJECT_ROOT / "data" / "evaluation" / "methodology_upload_jobs")) UPLOAD_OUTPUT_ROOT = Path(os.environ.get("METHODOLOGY_UPLOAD_OUTPUT_ROOT", PROJECT_ROOT / "data" / "evaluation" / "0505")) -DEFAULT_MINERU_CMD = str(conda_env_path("minerupy311") / "bin" / "mineru") +DEFAULT_MINERU_CMD = str(conda_env_path("minerupy312") / "bin" / "mineru") DEFAULT_MINERU_API_URL = "http://127.0.0.1:50215" DEFAULT_MINERU_BACKEND = "hybrid-auto-engine" DEFAULT_MINERU_METHOD = "auto" @@ -554,7 +554,7 @@ def run_uploaded_methodology_job( } ) batch_cmd = [ - str(conda_env_path(os.environ.get("GF_PYTHON_ENV", "gfpy312")) / "bin" / "python"), + str(conda_env_path(os.environ.get("GF_PYTHON_ENV", "/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv")) / "bin" / "python"), "scripts/run_methodology_batch.py", "--papers", str(papers_csv), diff --git a/agent/legacy-rag/scripts/restart.sh b/agent/legacy-rag/scripts/restart.sh index 307ef9c..5072e33 100755 --- a/agent/legacy-rag/scripts/restart.sh +++ b/agent/legacy-rag/scripts/restart.sh @@ -2,6 +2,6 @@ # agent/legacy/scripts/restart.sh —— 重启(停 → 起) set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-7920}" +PORT="${1:-8093}" bash "$AGENT_ROOT/scripts/stop.sh" "$PORT" || true bash "$AGENT_ROOT/scripts/start.sh" "$PORT" diff --git a/agent/legacy-rag/scripts/start.sh b/agent/legacy-rag/scripts/start.sh index 447178b..6093ccc 100755 --- a/agent/legacy-rag/scripts/start.sh +++ b/agent/legacy-rag/scripts/start.sh @@ -1,15 +1,15 @@ #!/usr/bin/env bash # agent/legacy-rag/scripts/start.sh —— 旧路由族服务唯一启动接口 -main]|main] +# 用法:bash scripts/start.sh [port] [app|main] # app = 3 路由(生产 7900 同源,默认) / main = 11 路由裁剪版 set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-8093}" # 终态端口(浸泡期显式传 7911) +PORT="${1:-8093}" # 终态端口 ENTRY="${2:-app}" ENV_FILE="${LEGACY_ENV_FILE:-$AGENT_ROOT/env/prod.env}" LOG_FILE="${LEGACY_LOG_FILE:-/tmp/plantai-agent-legacy-$PORT.log}" PID_FILE="$AGENT_ROOT/run/legacy-$PORT.pid" -PYTHON="${LEGACY_PYTHON:-/home/xzq/miniconda3/envs/test4py311/bin/python}" +PYTHON="${LEGACY_PYTHON:-/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv/bin/python}" BIND="${LEGACY_API_HOST:-127.0.0.1}" case "$ENTRY" in diff --git a/agent/legacy-rag/scripts/stop.sh b/agent/legacy-rag/scripts/stop.sh index e064f7b..2881210 100755 --- a/agent/legacy-rag/scripts/stop.sh +++ b/agent/legacy-rag/scripts/stop.sh @@ -2,7 +2,7 @@ # agent/legacy/scripts/stop.sh —— 停止 legacy-rag 服务(停而不删,保留日志/pid 供回滚诊断) set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-7920}" +PORT="${1:-8093}" PID_FILE="$AGENT_ROOT/run/legacy-$PORT.pid" if [[ -f "$PID_FILE" ]]; then PID="$(cat "$PID_FILE")" diff --git a/agent/methodology/api/methodology_routes.py b/agent/methodology/api/methodology_routes.py index 3e244f9..847b82f 100755 --- a/agent/methodology/api/methodology_routes.py +++ b/agent/methodology/api/methodology_routes.py @@ -32,7 +32,7 @@ REVIEW_RESULTS_CSV = BATCH_DIR / "review_results.csv" # 2026-08-31 新工程适配:上传目录/产出根支持 env 覆盖(数据根迁移时无需改代码) UPLOAD_JOBS_DIR = Path(os.environ.get("METHODOLOGY_UPLOAD_JOBS_DIR", PROJECT_ROOT / "data" / "evaluation" / "methodology_upload_jobs")) UPLOAD_OUTPUT_ROOT = Path(os.environ.get("METHODOLOGY_UPLOAD_OUTPUT_ROOT", PROJECT_ROOT / "data" / "evaluation" / "0505")) -DEFAULT_MINERU_CMD = str(conda_env_path("minerupy311") / "bin" / "mineru") +DEFAULT_MINERU_CMD = str(conda_env_path("minerupy312") / "bin" / "mineru") DEFAULT_MINERU_API_URL = "http://127.0.0.1:50215" DEFAULT_MINERU_BACKEND = "hybrid-auto-engine" DEFAULT_MINERU_METHOD = "auto" @@ -554,7 +554,7 @@ def run_uploaded_methodology_job( } ) batch_cmd = [ - str(conda_env_path(os.environ.get("GF_PYTHON_ENV", "gfpy312")) / "bin" / "python"), + str(conda_env_path(os.environ.get("GF_PYTHON_ENV", "/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv")) / "bin" / "python"), "scripts/run_methodology_batch.py", "--papers", str(papers_csv), diff --git a/agent/methodology/scripts/restart.sh b/agent/methodology/scripts/restart.sh index 7499c88..3cba82b 100755 --- a/agent/methodology/scripts/restart.sh +++ b/agent/methodology/scripts/restart.sh @@ -2,6 +2,6 @@ # agent/methodology/scripts/restart.sh —— 重启(停 → 起) set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-7920}" +PORT="${1:-8092}" bash "$AGENT_ROOT/scripts/stop.sh" "$PORT" || true bash "$AGENT_ROOT/scripts/start.sh" "$PORT" diff --git a/agent/methodology/scripts/start.sh b/agent/methodology/scripts/start.sh index c694a92..c3ab28f 100755 --- a/agent/methodology/scripts/start.sh +++ b/agent/methodology/scripts/start.sh @@ -3,11 +3,11 @@ # 用法:bash scripts/start.sh [port] (默认 8092 终态;浸泡期影子用 8001) set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-8092}" # 终态端口(浸泡期显式传 8001) +PORT="${1:-8092}" # 终态端口 ENV_FILE="${METHODOLOGY_ENV_FILE:-$AGENT_ROOT/env/prod.env}" LOG_FILE="${METHODOLOGY_LOG_FILE:-/tmp/plantai-agent-methodology-$PORT.log}" PID_FILE="$AGENT_ROOT/run/methodology-$PORT.pid" -PYTHON="${METHODOLOGY_PYTHON:-/home/xzq/miniconda3/envs/gfpy312/bin/python}" +PYTHON="${METHODOLOGY_PYTHON:-/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv/bin/python}" BIND="${METHODOLOGY_API_HOST:-0.0.0.0}" mkdir -p "$AGENT_ROOT/run" diff --git a/agent/methodology/scripts/stop.sh b/agent/methodology/scripts/stop.sh index eb0a228..6270501 100755 --- a/agent/methodology/scripts/stop.sh +++ b/agent/methodology/scripts/stop.sh @@ -2,7 +2,7 @@ # agent/methodology/scripts/stop.sh —— 停止 Methodology 服务(停而不删,保留日志/pid 供回滚诊断) set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-7920}" +PORT="${1:-8092}" PID_FILE="$AGENT_ROOT/run/methodology-$PORT.pid" if [[ -f "$PID_FILE" ]]; then PID="$(cat "$PID_FILE")" diff --git a/agent/qa/scripts/restart.sh b/agent/qa/scripts/restart.sh index 0e3bf6f..ecad852 100755 --- a/agent/qa/scripts/restart.sh +++ b/agent/qa/scripts/restart.sh @@ -2,6 +2,6 @@ # agent/qa/scripts/restart.sh —— 重启(停 → 起) set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-7920}" +PORT="${1:-8091}" bash "$AGENT_ROOT/scripts/stop.sh" "$PORT" || true bash "$AGENT_ROOT/scripts/start.sh" "$PORT" diff --git a/agent/qa/scripts/start.sh b/agent/qa/scripts/start.sh index 94d8da4..0b2a9bf 100755 --- a/agent/qa/scripts/start.sh +++ b/agent/qa/scripts/start.sh @@ -3,11 +3,11 @@ # 用法:bash scripts/start.sh [port] (默认 8091 终态;浸泡期影子用 7921) set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-8091}" # 终态端口(浸泡期显式传 7921) +PORT="${1:-8091}" # 终态端口 ENV_FILE="${QA_ENV_FILE:-$AGENT_ROOT/env/prod.env}" LOG_FILE="${QA_LOG_FILE:-/tmp/plantai-agent-qa-$PORT.log}" PID_FILE="$AGENT_ROOT/run/qa-$PORT.pid" -PYTHON="${QA_PYTHON:-/home/xzq/miniconda3/envs/gfpy312/bin/python}" +PYTHON="${QA_PYTHON:-/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv/bin/python}" mkdir -p "$AGENT_ROOT/run" [[ -x "$PYTHON" ]] || { echo "QA Python 不可执行: $PYTHON" >&2; exit 1; } diff --git a/agent/qa/scripts/stop.sh b/agent/qa/scripts/stop.sh index dde3d56..5408cc2 100755 --- a/agent/qa/scripts/stop.sh +++ b/agent/qa/scripts/stop.sh @@ -2,7 +2,7 @@ # agent/qa/scripts/stop.sh —— 停止 QA 服务(停而不删,保留日志/pid 供回滚诊断) set -euo pipefail AGENT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${1:-7920}" +PORT="${1:-8091}" PID_FILE="$AGENT_ROOT/run/qa-$PORT.pid" if [[ -f "$PID_FILE" ]]; then PID="$(cat "$PID_FILE")" diff --git a/deploy/bff_restart.sh b/deploy/bff_restart.sh old mode 100644 new mode 100755 index 294e484..62aca1f --- a/deploy/bff_restart.sh +++ b/deploy/bff_restart.sh @@ -1,38 +1,39 @@ #!/bin/bash -# deploy/bff_restart.sh —— 远端 BFF 重启(PM 使用,在远端执行) -# 用法:ssh 192.168.0.175 -p 26518 'bash ~/5090/teamWorkspace/zh/PlantAI-rag-new/deploy/bff_restart.sh [bind_addr]' -# 参数:可选绑定地址(默认 127.0.0.1;内网演示传 0.0.0.0) -# 要点:用 setsid 完全脱离 SSH 会话,stdout/stderr 全部落日志。 +# deploy/bff_restart.sh —— 远端 BFF 重启(PM 使用,在远端执行) +# 用法:ssh 192.168.0.175 -p 26518 'bash ~/5090/teamWorkspace/zh/PlantAI-rag-new/deploy/bff_restart.sh [bind_addr]' +# 参数:可选绑定地址(默认 127.0.0.1;内网演示传 0.0.0.0) +# 要点:用 setsid 完全脱离 SSH 会话,stdout/stderr 全部落日志。 +# 2026-09-01 统一 Python:conda plantai-bff → plantai-rag-new-venv(py3.12.13) set -uo pipefail -ROOT="/home/xzq/5090/teamWorkspace/zh/PlantAI-rag-new" +SDK_ROOT="/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-deploy-unified/sdk" +PYTHON="/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv/bin/python" BIND="${1:-127.0.0.1}" -source ~/miniconda3/etc/profile.d/conda.sh -conda activate plantai-bff +[[ -x "$PYTHON" ]] || { echo "BFF Python 不可执行: $PYTHON" >&2; exit 1; } -# 杀旧进程([u] 正则技巧防 pkill 自匹配) +# 杀旧进程([u] 正则技巧防 pkill 自匹配) pkill -f "[a]pp.main:app" 2>/dev/null sleep 2 -cd "$ROOT/sdk" -# 加载运行时凭据(sdk/.env,不入 git)并导出给应用进程。 -# pydantic-settings 会把 .env 载入 settings 对象,但 services/neo4j.py 的 -# _env() 直接读 os.environ,故需显式 set -a 导出。 +cd "$SDK_ROOT" +# 加载运行时凭据(sdk/.env,不入 git)并导出给应用进程。 +# pydantic-settings 会把 .env 载入 settings 对象,但 services/neo4j.py 的 +# _env() 直接读 os.environ,故需显式 set -a 导出。 set -a [ -f .env ] && source .env set +a -setsid python -m uvicorn app.main:app --host "$BIND" --port 8090 \ +setsid "$PYTHON" -m uvicorn app.main:app --host "$BIND" --port 8090 \ > /tmp/plantai-bff.log 2>&1 < /dev/null & disown sleep 12 if ss -tln | grep -q ":8090 "; then - echo "BFF UP ($BIND:8090)" + echo "BFF UP ($BIND:8090, venv py3.12.13)" curl -s --max-time 20 http://127.0.0.1:8090/api/health | head -c 200 echo - # 生产形态:静态托管 ui/dist(存在时 BFF 单进程服务整个前端) - curl -s --max-time 10 http://127.0.0.1:8090/ | grep -o "