From 80ac1d9c8807130af499f6c13d02a8ce0ff4e3b7 Mon Sep 17 00:00:00 2001 From: ThearchyHelios Date: Tue, 29 Sep 2026 17:28:34 +0800 Subject: [PATCH] =?UTF-8?q?dev.sh=20=E6=94=AF=E6=8C=81=20--host=EF=BC=9A?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=9C=A8=E5=B1=80=E5=9F=9F=E7=BD=91=E4=B8=8A?= =?UTF-8?q?=E4=B9=9F=E8=83=BD=E6=89=93=E5=BC=80=EF=BC=9B=E8=AE=A4=E4=B8=8D?= =?UTF-8?q?=E5=87=BA=E7=9A=84=E5=8F=82=E6=95=B0=E7=9B=B4=E6=8E=A5=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 以前 dev.sh 不读任何参数,./scripts/dev.sh --host 被悄悄忽略,前端照旧只听本机 - --host 让前端开发服务器监听所有网卡,启动时打印局域网地址;后端仍只听 127.0.0.1, 页面里的 /api 由前端开发服务器在本机转发,局域网里的设备不需要、也不该直连后端 - 用法说明里写明:AgentLab 没有登录,同一网络里打得开页面的人都能用它,只在信得过的网络里开 - 认不出的参数报错并打印用法(-h / --help 看用法) --- scripts/dev.sh | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/scripts/dev.sh b/scripts/dev.sh index b7ad9b48..773f523b 100755 --- a/scripts/dev.sh +++ b/scripts/dev.sh @@ -2,6 +2,27 @@ # 一条命令把前后端都拉起来。Ctrl-C 一起退出。 set -euo pipefail +usage() { + cat <<'USAGE' +用法:./scripts/dev.sh [--host] + + --host 前端也在局域网上监听(同一网络里的手机、别的电脑能打开)。后端仍只听 127.0.0.1: + 页面里的 /api 由前端开发服务器在本机转发,局域网里的设备不需要、也不该直连后端。 + 注意:AgentLab 没有登录,同一网络里打得开页面的人都能用它——跑工作流、花你配的 + 模型额度、读数据源、执行沙箱代码。只在信得过的网络里开。 +USAGE +} + +# 参数先认完再干活:以前不读参数,--host 这类写了也被悄悄忽略 +WEB_ARGS=() +for arg in "$@"; do + case "$arg" in + --host) WEB_ARGS+=(--host) ;; + -h|--help) usage; exit 0 ;; + *) echo "认不出的参数:$arg"; echo; usage; exit 2 ;; + esac +done + ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" API_PORT="${AGENTLAB_PORT:-8000}" WEB_PORT="${AGENTLAB_WEB_PORT:-5273}" @@ -70,11 +91,16 @@ done [ -n "$ready" ] || { echo "后端 30s 内没就绪(或 $API_PORT 上答话的不是 agentlab)"; exit 1; } echo "==> 前端 http://localhost:$WEB_PORT" -(cd "$ROOT/frontend" && pnpm dev --port "$WEB_PORT") & +(cd "$ROOT/frontend" && pnpm dev --port "$WEB_PORT" ${WEB_ARGS[@]+"${WEB_ARGS[@]}"}) & WEB_PID=$! echo echo " 界面 http://localhost:$WEB_PORT" +if [ ${#WEB_ARGS[@]} -gt 0 ]; then + # 本机在局域网里的地址:macOS 取 en0 / en1,Linux 取 hostname -I 的第一个 + LAN_IP="$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1 2>/dev/null || hostname -I 2>/dev/null | awk '{print $1}' || true)" + echo " 局域网 http://${LAN_IP:-<本机 IP>}:$WEB_PORT (没有登录:同一网络里打得开页面的人都能用它)" +fi echo " 接口 http://127.0.0.1:$API_PORT/docs" echo wait