File size: 3,770 Bytes
512f4fa dac2247 d6be067 670c1d0 ba27334 d6be067 ba27334 512f4fa 670c1d0 ba27334 d6be067 ba27334 512f4fa 84dd831 ba27334 49290b8 670c1d0 84dd831 670c1d0 d6be067 dac2247 d6be067 ba27334 d6be067 ba27334 d6be067 ba27334 d6be067 670c1d0 d6be067 ba27334 670c1d0 d6be067 670c1d0 d6be067 670c1d0 87e3582 84dd831 ba27334 d6be067 dac2247 ba27334 dac2247 d6be067 670c1d0 d6be067 512f4fa 17a8a91 512f4fa 17a8a91 ba27334 17a8a91 512f4fa 17a8a91 ba27334 670c1d0 17a8a91 670c1d0 17a8a91 d6be067 512f4fa 17a8a91 3bc6f09 512f4fa d6be067 512f4fa 84dd831 d6be067 a09f6f4 ba27334 dac2247 a09f6f4 d6be067 670c1d0 d6be067 670c1d0 84dd831 670c1d0 281eef6 87e3582 9392514 438d10a ba27334 d6be067 ba27334 438d10a 281eef6 438d10a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | #!/bin/bash
set -euo pipefail
echo "===== OpenClaw ๅฏๅจ่ๆฌ v2.3 (็ฎๅ็) ====="
echo "ๅฏๅจๆถ้ด: $(date)"
echo ""
echo "=== 1. ๅๅงๅ็ฏๅขไธ็ฎๅฝ ==="
mkdir -p /root/.openclaw/{agents/main/sessions,credentials,sessions,skills}
echo "็ฎๅฝ็ปๆๅๅปบๅฎๆใ"
echo ""
echo "=== 2. ไปๅคไปฝๆขๅคๆฐๆฎ ==="
if python3 /app/sync.py restore; then
echo "โ ๆฐๆฎๆขๅคๅฎๆใ"
else
echo "โ ๏ธ ๆฐๆฎๆขๅคๅคฑ่ดฅ๏ผ็ปง็ปญๅฏๅจใ" >&2
fi
echo ""
echo "=== 3. ๆฃๆฅไธๅฎ่ฃ
ๆ่ฝ ==="
SKILLS=("openclaw-tavily-search")
INSTALLED_SKILLS=()
for skill in "${SKILLS[@]}"; do
echo "ๅค็ๆ่ฝ: $skill"
is_installed=false
# ๆฃๆฅๆฏๅฆๅทฒๅฎ่ฃ
if clawhub list 2>/dev/null | grep -q "$skill"; then
echo " โ ๅทฒๅฎ่ฃ
"
is_installed=true
# ๆฃๆฅๆฏๅฆๅทฒๅญๅจ็ฎๅฝ
elif [ -d "/app/skills/$skill" ] || [ -d "/root/.openclaw/skills/$skill" ]; then
echo " โ ็ฎๅฝๅทฒๅญๅจ"
is_installed=true
# ๅฐ่ฏๅฎ่ฃ
else
echo " ๐ง ๅฐ่ฏๅฎ่ฃ
..."
if clawhub install "$skill"; then
echo " โ ๅฎ่ฃ
ๆๅ"
is_installed=true
else
echo " โ ๏ธ ๅฎ่ฃ
ๅคฑ่ดฅ" >&2
fi
fi
[ "$is_installed" = true ] && INSTALLED_SKILLS+=("$skill")
done
echo ""
echo "=== 4. ้
็ฝฎ API ๅฐๅไธ็ๆไธป้
็ฝฎ ==="
# ๆธ
็ API ๅฐๅ
CLEAN_BASE="${OPENAI_API_BASE%/}"
CLEAN_BASE="${CLEAN_BASE%/chat/completions}"
CLEAN_BASE="${CLEAN_BASE%/v1}"
CLEAN_BASE="${CLEAN_BASE}/v1"
echo "API ๅฐๅ: $CLEAN_BASE"
# ็ๆไธป้
็ฝฎ
cat > /root/.openclaw/openclaw.json <<EOF
{
"models": {
"providers": {
"nvidia": {
"baseUrl": "$CLEAN_BASE",
"apiKey": "$OPENAI_API_KEY",
"api": "openai-completions",
"models": [
{ "id": "$MODEL", "name": "$MODEL", "contextWindow": 128000 }
]
}
}
},
"agents": {
"defaults": {
"model": { "primary": "nvidia/$MODEL" }
}
},
"commands": {
"restart": true
},
"gateway": {
"mode": "local",
"bind": "lan",
"port": $PORT,
"trustedProxies": ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"],
"auth": {
"mode": "token",
"token": "$OPENCLAW_GATEWAY_PASSWORD"
},
"controlUi": {
"allowedOrigins": ["*"],
"dangerouslyAllowHostHeaderOriginFallback": true,
"allowInsecureAuth": true,
"dangerouslyDisableDeviceAuth": true
}
},
"plugins": {
"allow": ["openclaw-weixin"],
"entries": {
"openclaw-weixin": {
"enabled": true
}
}
},
}
EOF
echo "้
็ฝฎ็ๆๅฎๆ"
echo ""
echo "=== 5. ่ฎพ็ฝฎๆ้ไธๆ่ฝ้พๆฅ ==="
chmod 700 /root/.openclaw
chmod 600 /root/.openclaw/openclaw.json
chmod 700 /root/.openclaw/{agents,credentials,sessions}
chmod 750 /root/.openclaw/skills
# ๅๅปบๆ่ฝ้พๆฅ
for skill in "${INSTALLED_SKILLS[@]}"; do
for dir in "/app/skills/$skill" "/skills/$skill" "/root/.openclaw/skills/$skill"; do
if [ -d "$dir" ]; then
ln -sfn "$dir" "/root/.openclaw/skills/$(basename "$skill")"
echo "โ ้พๆฅๅๅปบ: $skill"
break
fi
done
done
echo ""
npm install -g @tencent-weixin/openclaw-weixin
openclaw plugins install "@tencent-weixin/openclaw-weixin"
openclaw channels login --channel openclaw-weixin
echo ""
echo "=== 7. ็ฏๅขๆ่ฆ ==="
echo "็ซฏๅฃ: $PORT | ๆจกๅ: $MODEL"
echo "API: ${CLEAN_BASE%/v1} (v1)"
echo "ไปค็: ${OPENCLAW_GATEWAY_PASSWORD:0:3}***"
echo "Tavily: ${TAVILY_API_KEY:0:5}***"
# 5. ๅฏๅจๅฎๆถๅคไปฝ (ๆฏ 1 ๅฐๆถ)
(while true; do sleep 3600; python3 /app/sync.py backup; done) &
# 6. ่ฟ่ก
openclaw doctor --fix
exec openclaw gateway run --port $PORT |