HelloSun commited on
Commit
bbddfa2
·
verified ·
1 Parent(s): b26cee8

build.sh: pi 依 Node 版本安裝(Node<22.19 用 legacy-node20),安裝後驗證可執行;curl 下載取代崩潰的 hf CLI

Browse files
Files changed (1) hide show
  1. build.sh +32 -10
build.sh CHANGED
@@ -66,12 +66,14 @@ fi
66
  if [[ ! -s "$MODEL_PATH" ]]; then
67
  info "下載模型 $MODEL_REPO/$MODEL_FILE(約 24 GiB,支援續傳)"
68
  URL="https://huggingface.co/$MODEL_REPO/resolve/main/$MODEL_FILE?download=true"
69
- if command -v hf >/dev/null 2>&1; then
70
- hf download "$MODEL_REPO" "$MODEL_FILE" --local-dir "$ROOT" || \
71
- curl -L -C - --retry 3 --retry-delay 5 "$URL" -o "$MODEL_PATH"
72
- else
73
- curl -L -C - --retry 3 --retry-delay 5 "$URL" -o "$MODEL_PATH"
74
  fi
 
 
75
  fi
76
  if [[ ! -s "$MODEL_PATH" ]]; then
77
  warn "模型不存在或下載失敗:$MODEL_PATH"
@@ -81,14 +83,34 @@ ok "模型:$MODEL_PATH"
81
 
82
  # ── 3. Install pi if needed, and configure it to use this llama-server ───────
83
  export PATH="$HOME/.local/bin:$HOME/.pi/bin:${XDG_DATA_HOME:-$HOME/.local/share}/pi-node/current/bin:$PATH"
84
- if ! command -v pi >/dev/null 2>&1; then
85
- if command -v npm >/dev/null 2>&1; then
86
- info "安裝 pi coding agent 到 $HOME/.local"
 
 
 
 
 
 
 
 
 
 
 
 
87
  npm install -g --ignore-scripts --no-fund --no-audit --progress=false \
88
- --prefix "$HOME/.local" @earendil-works/pi-coding-agent || warn "pi 安裝失敗"
 
 
 
 
 
 
89
  else
90
- warn "找不到 npm,略過 pi 安裝(僅寫入設定)"
91
  fi
 
 
92
  fi
93
 
94
  info "設定 pi 使用本地 llama-server:http://127.0.0.1:$LLAMA_PORT/v1"
 
66
  if [[ ! -s "$MODEL_PATH" ]]; then
67
  info "下載模型 $MODEL_REPO/$MODEL_FILE(約 24 GiB,支援續傳)"
68
  URL="https://huggingface.co/$MODEL_REPO/resolve/main/$MODEL_FILE?download=true"
69
+ # 直接用 curl 續傳(hf CLI 在部分映像會因 typer/click 版本衝突而崩潰)。
70
+ # HF_TOKEN 有設定時帶上 Authorization(私有 repo 或避免匿名限速)。
71
+ CURL_AUTH=()
72
+ if [[ -n "${HF_TOKEN:-}" ]]; then
73
+ CURL_AUTH=(-H "Authorization: Bearer $HF_TOKEN")
74
  fi
75
+ curl -fL -C - --retry 3 --retry-delay 5 "${CURL_AUTH[@]}" "$URL" -o "$MODEL_PATH" \
76
+ || warn "curl 下載失敗(exit=$?)"
77
  fi
78
  if [[ ! -s "$MODEL_PATH" ]]; then
79
  warn "模型不存在或下載失敗:$MODEL_PATH"
 
83
 
84
  # ── 3. Install pi if needed, and configure it to use this llama-server ───────
85
  export PATH="$HOME/.local/bin:$HOME/.pi/bin:${XDG_DATA_HOME:-$HOME/.local/share}/pi-node/current/bin:$PATH"
86
+ # pi 1.x 起要求 Node >= 22.19;Space 映像是 Node 20,npm 的 latest 會裝到啟動即崩潰的版本
87
+ # (SyntaxError: enableCompileCache)。依目前 Node 版本選擇:新 Node 用 latest,
88
+ # 舊 Node 用 npm dist-tag legacy-node20(0.74.2)。並且安裝後實際執行 pi --version 驗證。
89
+ PI_PKG="@earendil-works/pi-coding-agent"
90
+ pi_runs() { command -v pi >/dev/null 2>&1 && pi --version >/dev/null 2>&1; }
91
+ if ! pi_runs; then
92
+ if command -v npm >/dev/null 2>&1 && command -v node >/dev/null 2>&1; then
93
+ if node -e 'const [a,b]=process.versions.node.split(".").map(Number); process.exit(a>22||(a===22&&b>=19)?0:1)'; then
94
+ PI_SPEC="$PI_PKG@latest"
95
+ else
96
+ PI_SPEC="$PI_PKG@legacy-node20"
97
+ fi
98
+ info "安裝 pi coding agent($PI_SPEC)到 $HOME/.local(Node $(node -v))"
99
+ # 舊版殘留的 bin 連結會讓 npm 拒絕覆寫(EEXIST),先移除。
100
+ rm -f "$HOME/.local/bin/pi"
101
  npm install -g --ignore-scripts --no-fund --no-audit --progress=false \
102
+ --prefix "$HOME/.local" "$PI_SPEC" || warn "pi 安裝失敗"
103
+ hash -r
104
+ if pi_runs; then
105
+ ok "pi 可執行:$(pi --version 2>&1 | head -n1)"
106
+ else
107
+ warn "pi 安裝後仍無法執行(pi --version 失敗)"
108
+ fi
109
  else
110
+ warn "找不到 npm/node,略過 pi 安裝(僅寫入設定)"
111
  fi
112
+ else
113
+ ok "pi 已可執行:$(pi --version 2>&1 | head -n1)"
114
  fi
115
 
116
  info "設定 pi 使用本地 llama-server:http://127.0.0.1:$LLAMA_PORT/v1"