Skip to content

Commit 9d0c26a

Browse files
author
SonicBotMan
committed
feat: add dual release system (offline + online versions)
Major Change: - Split into two parallel versions for different user needs New Features: ✅ Offline Version (~1.2 GB) - Built-in Qwen2.5-1.5B model - Complete offline operation - Zero API costs - Works out of the box ✅ Online Version (~300 MB) - No built-in model - 4x faster download - Use cloud APIs (DeepSeek, OpenAI, etc.) - Add custom models manually Workflow Changes: - Replaced build-offline.yml with build-dual-release.yml - Three jobs: build-offline, build-online, upload-to-release - Both packages uploaded to GitHub Artifacts (90 days) - Both packages uploaded to Release (when release is published) Documentation Updates: - README.md: Added version comparison table - README_CN.md: Added Chinese version comparison - README_JP.md: Added Japanese version comparison Benefits: - Users can choose the version that fits their needs - Faster download for users with stable internet - Complete offline option for restricted networks - Clear documentation on differences Each release will now include both versions: 1. OpenClaw-Portable-v6.0.0-windows-offline.tar.gz (~1.2 GB) 2. OpenClaw-Portable-v6.0.0-windows-online.tar.gz (~300 MB)
1 parent 6f3de50 commit 9d0c26a

6 files changed

Lines changed: 600 additions & 172 deletions

File tree

Lines changed: 364 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,364 @@
1+
name: Build Dual Release Packages
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
8+
jobs:
9+
# Job 1: Build Offline Version (with bundled model)
10+
build-offline:
11+
runs-on: windows-latest
12+
timeout-minutes: 90
13+
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: Create directory structure
19+
shell: bash
20+
run: |
21+
mkdir -p dist/OpenClaw-Portable-v6.0.0-windows-offline/{node,openclaw-pkg,llm/bin,llm/models,config,data,workspace,temp}
22+
23+
- name: Download model from GitHub Release
24+
shell: bash
25+
run: |
26+
echo "=========================================="
27+
echo " Downloading Qwen2.5-1.5B Model (1066MB)"
28+
echo "=========================================="
29+
30+
cd dist/OpenClaw-Portable-v6.0.0-windows-offline/llm/models
31+
32+
# Download all parts
33+
echo "📦 Part 1/3 (500MB)..."
34+
curl -L --retry 3 --retry-delay 5 -o part1.bin \
35+
"https://github.com/SonicBotMan/openclaw-portable/releases/download/v6.0.0/qwen-model-part1.bin"
36+
37+
echo "📦 Part 2/3 (500MB)..."
38+
curl -L --retry 3 --retry-delay 5 -o part2.bin \
39+
"https://github.com/SonicBotMan/openclaw-portable/releases/download/v6.0.0/qwen-model-part2.bin"
40+
41+
echo "📦 Part 3/3 (66MB)..."
42+
curl -L --retry 3 --retry-delay 5 -o part3.bin \
43+
"https://github.com/SonicBotMan/openclaw-portable/releases/download/v6.0.0/qwen-model-part3.bin"
44+
45+
# Merge parts
46+
echo "🔧 Merging parts..."
47+
cat part1.bin part2.bin part3.bin > qwen2.5-1.5b-instruct-q4_k_m.gguf
48+
49+
# Clean up
50+
rm -f part*.bin
51+
52+
# Verify
53+
ls -lh qwen2.5-1.5b-instruct-q4_k_m.gguf
54+
echo "✅ Model downloaded and merged"
55+
56+
- name: Download Node.js
57+
shell: bash
58+
run: |
59+
echo "=========================================="
60+
echo " Downloading Node.js 22.16.0"
61+
echo "=========================================="
62+
63+
curl -fsSL \
64+
"https://nodejs.org/dist/v22.16.0/node-v22.16.0-win-x64.zip" \
65+
-o /tmp/node.zip
66+
67+
unzip -q /tmp/node.zip -d /tmp/
68+
mv /tmp/node-v22.16.0-win-x64/* dist/OpenClaw-Portable-v6.0.0-windows-offline/node/
69+
rm -rf /tmp/node.zip /tmp/node-v22.16.0-win-x64
70+
71+
echo "✅ Node.js downloaded"
72+
73+
- name: Install OpenClaw
74+
shell: bash
75+
run: |
76+
echo "=========================================="
77+
echo " Installing OpenClaw"
78+
echo "=========================================="
79+
80+
cd dist/OpenClaw-Portable-v6.0.0-windows-offline
81+
82+
./node/node.exe ./node/node_modules/npm/bin/npm-cli.js \
83+
install -g openclaw@latest \
84+
--prefix openclaw-pkg \
85+
--registry https://registry.npmmirror.com
86+
87+
echo "✅ OpenClaw installed"
88+
89+
- name: Download llama.cpp
90+
shell: bash
91+
run: |
92+
echo "=========================================="
93+
echo " Downloading llama.cpp"
94+
echo "=========================================="
95+
96+
curl -fsSL \
97+
"https://github.com/ggml-org/llama.cpp/releases/download/b4265/llama-b4265-bin-win-avx2-x64.zip" \
98+
-o /tmp/llama.zip
99+
100+
unzip -q /tmp/llama.zip -d /tmp/llama-tmp
101+
102+
# Find and move llama-server.exe
103+
find /tmp/llama-tmp -name "llama-server.exe" -exec mv {} \
104+
dist/OpenClaw-Portable-v6.0.0-windows-offline/llm/bin/llama-server-win32-avx2.exe \;
105+
106+
rm -rf /tmp/llama.zip /tmp/llama-tmp
107+
108+
echo "✅ llama.cpp downloaded"
109+
110+
- name: Copy scripts and config
111+
shell: bash
112+
run: |
113+
echo "=========================================="
114+
echo " Copying scripts"
115+
echo "=========================================="
116+
117+
cp start.bat stop.bat check.bat dist/OpenClaw-Portable-v6.0.0-windows-offline/
118+
cp -r config dist/OpenClaw-Portable-v6.0.0-windows-offline/ || true
119+
120+
# Create README for offline version
121+
cat > dist/OpenClaw-Portable-v6.0.0-windows-offline/README-OFFLINE.txt << 'EOF'
122+
OpenClaw Portable v6.0.0 - OFFLINE VERSION
123+
==========================================
124+
125+
This version includes a built-in CPU-only AI model (Qwen2.5-1.5B).
126+
127+
Features:
128+
✅ Complete offline operation after first download
129+
✅ No external API needed
130+
✅ Zero configuration required
131+
132+
The model is located in: llm/models/qwen2.5-1.5b-instruct-q4_k_m.gguf
133+
134+
To start: Double-click start.bat
135+
136+
For more information: https://github.com/SonicBotMan/openclaw-portable
137+
EOF
138+
139+
echo "✅ Scripts copied"
140+
141+
- name: Create archive
142+
shell: bash
143+
run: |
144+
echo "=========================================="
145+
echo " Creating offline archive"
146+
echo "=========================================="
147+
148+
cd dist
149+
tar -czf OpenClaw-Portable-v6.0.0-windows-offline.tar.gz \
150+
OpenClaw-Portable-v6.0.0-windows-offline
151+
152+
SIZE=$(du -h OpenClaw-Portable-v6.0.0-windows-offline.tar.gz | cut -f1)
153+
echo "✅ Offline archive created: $SIZE"
154+
ls -lh OpenClaw-Portable-v6.0.0-windows-offline.tar.gz
155+
156+
- name: Upload to Artifacts
157+
uses: actions/upload-artifact@v4
158+
with:
159+
name: openclaw-portable-v6.0.0-windows-offline
160+
path: dist/OpenClaw-Portable-v6.0.0-windows-offline.tar.gz
161+
retention-days: 90
162+
compression-level: 0
163+
164+
- name: Summary
165+
shell: bash
166+
run: |
167+
echo "=========================================="
168+
echo " ✅ Offline Build Complete!"
169+
echo "=========================================="
170+
echo " Package: OpenClaw-Portable-v6.0.0-windows-offline.tar.gz"
171+
du -h dist/OpenClaw-Portable-v6.0.0-windows-offline.tar.gz
172+
echo " Size: ~1.2 GB (includes Qwen2.5-1.5B model)"
173+
echo "=========================================="
174+
175+
# Job 2: Build Online Version (without bundled model)
176+
build-online:
177+
runs-on: windows-latest
178+
timeout-minutes: 30
179+
180+
steps:
181+
- name: Checkout code
182+
uses: actions/checkout@v4
183+
184+
- name: Create directory structure
185+
shell: bash
186+
run: |
187+
mkdir -p dist/OpenClaw-Portable-v6.0.0-windows-online/{node,openclaw-pkg,llm/bin,llm/models,config,data,workspace,temp}
188+
189+
- name: Download Node.js
190+
shell: bash
191+
run: |
192+
echo "=========================================="
193+
echo " Downloading Node.js 22.16.0"
194+
echo "=========================================="
195+
196+
curl -fsSL \
197+
"https://nodejs.org/dist/v22.16.0/node-v22.16.0-win-x64.zip" \
198+
-o /tmp/node.zip
199+
200+
unzip -q /tmp/node.zip -d /tmp/
201+
mv /tmp/node-v22.16.0-win-x64/* dist/OpenClaw-Portable-v6.0.0-windows-online/node/
202+
rm -rf /tmp/node.zip /tmp/node-v22.16.0-win-x64
203+
204+
echo "✅ Node.js downloaded"
205+
206+
- name: Install OpenClaw
207+
shell: bash
208+
run: |
209+
echo "=========================================="
210+
echo " Installing OpenClaw"
211+
echo "=========================================="
212+
213+
cd dist/OpenClaw-Portable-v6.0.0-windows-online
214+
215+
./node/node.exe ./node/node_modules/npm/bin/npm-cli.js \
216+
install -g openclaw@latest \
217+
--prefix openclaw-pkg \
218+
--registry https://registry.npmmirror.com
219+
220+
echo "✅ OpenClaw installed"
221+
222+
- name: Download llama.cpp
223+
shell: bash
224+
run: |
225+
echo "=========================================="
226+
echo " Downloading llama.cpp"
227+
echo "=========================================="
228+
229+
curl -fsSL \
230+
"https://github.com/ggml-org/llama.cpp/releases/download/b4265/llama-b4265-bin-win-avx2-x64.zip" \
231+
-o /tmp/llama.zip
232+
233+
unzip -q /tmp/llama.zip -d /tmp/llama-tmp
234+
235+
# Find and move llama-server.exe
236+
find /tmp/llama-tmp -name "llama-server.exe" -exec mv {} \
237+
dist/OpenClaw-Portable-v6.0.0-windows-online/llm/bin/llama-server-win32-avx2.exe \;
238+
239+
rm -rf /tmp/llama.zip /tmp/llama-tmp
240+
241+
echo "✅ llama.cpp downloaded"
242+
243+
- name: Copy scripts and config
244+
shell: bash
245+
run: |
246+
echo "=========================================="
247+
echo " Copying scripts"
248+
echo "=========================================="
249+
250+
cp start.bat stop.bat check.bat dist/OpenClaw-Portable-v6.0.0-windows-online/
251+
cp -r config dist/OpenClaw-Portable-v6.0.0-windows-online/ || true
252+
253+
# Create README for online version
254+
cat > dist/OpenClaw-Portable-v6.0.0-windows-online/README-ONLINE.txt << 'EOF'
255+
OpenClaw Portable v6.0.0 - ONLINE VERSION
256+
=========================================
257+
258+
This version does NOT include a built-in AI model.
259+
260+
You can:
261+
1. Use cloud AI APIs (DeepSeek, OpenAI, etc.) - requires API key
262+
2. Add your own local model to llm/models/ directory
263+
264+
To add a local model:
265+
1. Download a GGUF model (e.g., Qwen2.5-1.5B-Instruct)
266+
2. Place it in: llm/models/
267+
3. Restart OpenClaw
268+
269+
Recommended models:
270+
- Qwen2.5-1.5B-Instruct-Q4_K_M.gguf (~900MB)
271+
- Qwen2.5-3B-Instruct-Q4_K_M.gguf (~1.8GB)
272+
- Llama-3.2-3B-Instruct-Q4_K_M.gguf (~1.8GB)
273+
274+
Download models from: https://huggingface.co/Qwen
275+
276+
To start: Double-click start.bat
277+
278+
For more information: https://github.com/SonicBotMan/openclaw-portable
279+
EOF
280+
281+
echo "✅ Scripts copied"
282+
283+
- name: Create archive
284+
shell: bash
285+
run: |
286+
echo "=========================================="
287+
echo " Creating online archive"
288+
echo "=========================================="
289+
290+
cd dist
291+
tar -czf OpenClaw-Portable-v6.0.0-windows-online.tar.gz \
292+
OpenClaw-Portable-v6.0.0-windows-online
293+
294+
SIZE=$(du -h OpenClaw-Portable-v6.0.0-windows-online.tar.gz | cut -f1)
295+
echo "✅ Online archive created: $SIZE"
296+
ls -lh OpenClaw-Portable-v6.0.0-windows-online.tar.gz
297+
298+
- name: Upload to Artifacts
299+
uses: actions/upload-artifact@v4
300+
with:
301+
name: openclaw-portable-v6.0.0-windows-online
302+
path: dist/OpenClaw-Portable-v6.0.0-windows-online.tar.gz
303+
retention-days: 90
304+
compression-level: 0
305+
306+
- name: Summary
307+
shell: bash
308+
run: |
309+
echo "=========================================="
310+
echo " ✅ Online Build Complete!"
311+
echo "=========================================="
312+
echo " Package: OpenClaw-Portable-v6.0.0-windows-online.tar.gz"
313+
du -h dist/OpenClaw-Portable-v6.0.0-windows-online.tar.gz
314+
echo " Size: ~300 MB (no built-in model)"
315+
echo "=========================================="
316+
317+
# Job 3: Upload both packages to Release
318+
upload-to-release:
319+
needs: [build-offline, build-online]
320+
runs-on: ubuntu-latest
321+
if: github.event_name == 'release'
322+
323+
steps:
324+
- name: Download offline artifact
325+
uses: actions/download-artifact@v4
326+
with:
327+
name: openclaw-portable-v6.0.0-windows-offline
328+
path: ./packages
329+
330+
- name: Download online artifact
331+
uses: actions/download-artifact@v4
332+
with:
333+
name: openclaw-portable-v6.0.0-windows-online
334+
path: ./packages
335+
336+
- name: List packages
337+
run: |
338+
echo "📦 Packages to upload:"
339+
ls -lh packages/
340+
341+
- name: Upload to Release
342+
uses: softprops/action-gh-release@v1
343+
with:
344+
files: packages/*
345+
env:
346+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
347+
348+
- name: Summary
349+
run: |
350+
echo "=========================================="
351+
echo " ✅ Dual Release Complete!"
352+
echo "=========================================="
353+
echo ""
354+
echo " Packages uploaded to Release:"
355+
echo " 1. OpenClaw-Portable-v6.0.0-windows-offline.tar.gz (~1.2 GB)"
356+
echo " - With built-in Qwen2.5-1.5B model"
357+
echo " - Complete offline operation"
358+
echo ""
359+
echo " 2. OpenClaw-Portable-v6.0.0-windows-online.tar.gz (~300 MB)"
360+
echo " - No built-in model"
361+
echo " - Smaller download size"
362+
echo " - Use cloud APIs or add your own model"
363+
echo ""
364+
echo "=========================================="

0 commit comments

Comments
 (0)