dev.sh 支持 --host:前端在局域网上也能打开;认不出的参数直接报错

- 以前 dev.sh 不读任何参数,./scripts/dev.sh --host 被悄悄忽略,前端照旧只听本机
- --host 让前端开发服务器监听所有网卡,启动时打印局域网地址;后端仍只听 127.0.0.1,
  页面里的 /api 由前端开发服务器在本机转发,局域网里的设备不需要、也不该直连后端
- 用法说明里写明:AgentLab 没有登录,同一网络里打得开页面的人都能用它,只在信得过的网络里开
- 认不出的参数报错并打印用法(-h / --help 看用法)
This commit is contained in:
ThearchyHelios
2026-09-29 17:28:34 +08:00
parent dbae680abf
commit 80ac1d9c88
+27 -1
View File
@@ -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