feat(portable): 内网/局域网可用性工具包 + 启动绕代理 (v2.1.10)

便携版在内网/离线/受控浏览器环境下"配不上、用不了、查不清"的三个痛点工具化,
Win + Mac 双端,纯 Node 零依赖脚本,中文提示由 node 打印(.bat 保持纯 ASCII,
.command 保持 LF),三端真机验证(本机 Win / Mac mini / 客户机 pc-7512)。

新增工具:
- lib/intranet-check.mjs (+ Windows-IntranetFix.bat / Mac-IntranetFix.command)
  一键体检: 代理env + 直连可达 + 真发一条对话,分清"网络不通 vs 配置错"。
- lib/setup-local-model.mjs (+ Windows-LocalModel.bat / Mac-LocalModel.command)
  纯命令行配 Ollama / newapi 并当场实测,绕开打不开的 Control UI;写前自动备份+merge。
- lib/resolve-no-proxy.mjs 接入 Windows-Start.bat / Mac-Start.command:
  把配置里的模型 host 写进 NO_PROXY,避免系统代理劫持内网模型请求
  (OpenClaw 自身只 bypass loopback CDP,不管模型 host)。
- OpenClaw-Doctor.bat / Mac-OpenClaw-Doctor.command: 官方 doctor 的隔离进阶入口
  (只读、非交互;doctor 实跑慢且 TTY-only,故不进客户一键流程)。

测试: tests/windows-launchers.test.mjs 新增回归
- 客户面 .bat 必须纯 ASCII (UTF-8 中文会被 GBK cmd 读乱,报 usebackq 不是命令)
- macOS .command 必须 LF-only (CRLF 触发 bad interpreter: /bin/bash^M)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
hfshfg
2026-06-22 18:51:16 +08:00
parent 7805ee01f7
commit 3439db32ad
13 changed files with 815 additions and 2 deletions

View File

@@ -0,0 +1,52 @@
#!/bin/bash
# ============================================================
# U-Claw - OpenClaw Doctor (官方完整体检, 进阶, 英文)
# 注意:先启动 U-Claw 再跑本工具,否则 doctor 会卡在探测未启动的 gateway 上。
# 只读:故意不传 --fix/--repair/--force。卡住可按 Ctrl+C 安全中断。
# ============================================================
UCLAW_DIR="$(cd "$(dirname "$0")" && pwd)"
APP_DIR="$UCLAW_DIR/app"
CORE_DIR="$APP_DIR/core"
DATA_DIR="$UCLAW_DIR/data"
STATE_DIR="$DATA_DIR/.openclaw"
OPENCLAW_MJS="$CORE_DIR/node_modules/openclaw/openclaw.mjs"
ARCH=$(uname -m)
case "$ARCH" in
arm64) NODE_BIN="$APP_DIR/runtime/node-mac-arm64/bin/node" ;;
x86_64) NODE_BIN="$APP_DIR/runtime/node-mac-x64/bin/node" ;;
*) NODE_BIN="" ;;
esac
if [ ! -x "$NODE_BIN" ]; then NODE_BIN="$(command -v node)"; fi
if [ -z "$NODE_BIN" ] || [ ! -x "$NODE_BIN" ]; then
echo " [错误] 找不到 Node 运行环境。"
read -p " 按回车关闭..."
exit 1
fi
if [ ! -f "$OPENCLAW_MJS" ]; then
echo " [错误] 找不到 OpenClaw 运行时 (app/core/node_modules/openclaw)。"
read -p " 按回车关闭..."
exit 1
fi
export OPENCLAW_HOME="$DATA_DIR"
export OPENCLAW_STATE_DIR="$STATE_DIR"
export OPENCLAW_CONFIG_PATH="$STATE_DIR/openclaw.json"
export OPENCLAW_DISABLE_BONJOUR=1
xattr -rd com.apple.quarantine "$UCLAW_DIR" 2>/dev/null || true
echo ""
echo " ========================================"
echo " OpenClaw Doctor (官方体检, 英文, 较慢)"
echo " ========================================"
echo " 请确保 U-Claw 已经在运行。卡住可 Ctrl+C 中断(只读,安全)。"
echo " 想要快速的中文体检请改用 Mac-IntranetFix.command。"
echo ""
read -p " 按回车开始..."
"$NODE_BIN" "$OPENCLAW_MJS" doctor --non-interactive
echo ""
read -p " 按回车关闭..."