aip9105 commited on
Commit
d6be067
·
verified ·
1 Parent(s): b6b4b53

Update start-openclaw.sh

Browse files
Files changed (1) hide show
  1. start-openclaw.sh +43 -87
start-openclaw.sh CHANGED
@@ -1,14 +1,11 @@
1
  #!/bin/bash
2
  set -euo pipefail
3
- echo "===== OpenClaw 启动脚本 v2.2 (修正版) ====="
4
  echo "启动时间: $(date)"
5
 
6
  echo ""
7
  echo "=== 1. 初始化环境与目录 ==="
8
- mkdir -p /root/.openclaw/agents/main/sessions
9
- mkdir -p /root/.openclaw/credentials
10
- mkdir -p /root/.openclaw/sessions
11
- mkdir -p /root/.openclaw/skills
12
  echo "目录结构创建完成。"
13
 
14
  echo ""
@@ -16,68 +13,50 @@ echo "=== 2. 从备份恢复数据 ==="
16
  if python3 /app/sync.py restore; then
17
  echo "✓ 数据恢复完成。"
18
  else
19
- echo "⚠️ 数据恢复过程可能存在问题继续启动流程。" >&2
20
  fi
21
 
22
  echo ""
23
  echo "=== 3. 检查与安装技能 ==="
24
- SKILLS=("openclaw-tavily-search" "openclaw-setup-service" "openclaw-weixin")
25
  INSTALLED_SKILLS=()
26
 
27
  for skill in "${SKILLS[@]}"; do
28
- echo ""
29
- echo "检查技能: $skill"
30
  is_installed=false
31
-
32
- if command -v clawhub &> /dev/null && clawhub list 2>/dev/null | grep -q "$skill"; then
33
- echo " ✓ 已通过 clawhub 安装。"
 
34
  is_installed=true
 
35
  elif [ -d "/app/skills/$skill" ] || [ -d "/root/.openclaw/skills/$skill" ]; then
36
- echo " ✓ 技能目录已存在"
37
  is_installed=true
 
38
  else
39
- echo " 未找到技能,尝试通过 clawhub 安装..."
40
- if command -v clawhub &> /dev/null && clawhub install "$skill"; then
41
- echo " ✓ 安装成功: $skill"
42
  is_installed=true
43
  else
44
- echo " ⚠️ 安装失败: $skill (clawhub 可能不可用或网络错误)。" >&2
45
  fi
46
  fi
47
-
48
- if [ "$is_installed" = true ]; then
49
- INSTALLED_SKILLS+=("$skill")
50
- fi
51
  done
52
 
53
-
54
  echo ""
55
- echo "=== 5. 技能结构诊断 ==="
56
- for skill in "${INSTALLED_SKILLS[@]}"; do
57
- echo ""
58
- echo "--- 诊断技能: $skill ---"
59
- possible_paths=("/app/skills/$skill" "/root/.openclaw/skills/$skill" "/skills/$skill")
60
- for dir in "${possible_paths[@]}"; do
61
- if [ -d "$dir" ]; then
62
- echo " 找到目录: $dir"
63
- for meta_file in "skill.json" "package.json" "_meta.json"; do
64
- if [ -f "$dir/$meta_file" ]; then
65
- echo " 📄 发现 $meta_file"
66
- fi
67
- done
68
- break
69
- fi
70
- done
71
- done
72
-
73
- echo ""
74
- echo "=== 6. 配置 API 地址与生成主配置 ==="
75
  CLEAN_BASE="${OPENAI_API_BASE%/}"
76
  CLEAN_BASE="${CLEAN_BASE%/chat/completions}"
77
  CLEAN_BASE="${CLEAN_BASE%/v1}"
78
  CLEAN_BASE="${CLEAN_BASE}/v1"
79
- echo "规范化后的 API 地址: $CLEAN_BASE"
80
 
 
81
  cat > /root/.openclaw/openclaw.json <<EOF
82
  {
83
  "models": {
@@ -110,9 +89,7 @@ cat > /root/.openclaw/openclaw.json <<EOF
110
  "token": "$OPENCLAW_GATEWAY_PASSWORD"
111
  },
112
  "controlUi": {
113
- "allowedOrigins": [
114
- "*",
115
- ],
116
  "dangerouslyAllowHostHeaderOriginFallback": true,
117
  "allowInsecureAuth": true,
118
  "dangerouslyDisableDeviceAuth": true
@@ -125,80 +102,59 @@ cat > /root/.openclaw/openclaw.json <<EOF
125
  "enabled": true
126
  }
127
  }
128
- },
129
-
130
  }
131
  EOF
132
- echo "配置文件已生成: /root/.openclaw/openclaw.json"
133
 
134
  echo ""
135
- echo "=== 7. 设置权限与技能链接 ==="
136
  chmod 700 /root/.openclaw
137
  chmod 600 /root/.openclaw/openclaw.json
138
  chmod 700 /root/.openclaw/{agents,credentials,sessions}
139
  chmod 750 /root/.openclaw/skills
140
 
 
141
  for skill in "${INSTALLED_SKILLS[@]}"; do
142
- echo "处理技能链接: $skill"
143
- source_dir=""
144
  for dir in "/app/skills/$skill" "/skills/$skill" "/root/.openclaw/skills/$skill"; do
145
  if [ -d "$dir" ]; then
146
- source_dir="$dir"
 
147
  break
148
  fi
149
  done
150
-
151
- if [ -n "$source_dir" ]; then
152
- link_target="/root/.openclaw/skills/$(basename "$skill")"
153
- if [ ! -L "$link_target" ] || [ "$(readlink -f "$link_target")" != "$(readlink -f "$source_dir")" ]; then
154
- ln -sfn "$source_dir" "$link_target"
155
- echo " ✓ 链接已创建/更新: $link_target -> $source_dir"
156
- fi
157
- else
158
- echo " ⚠️ 未找到技能目录,无法创建链接: $skill" >&2
159
- fi
160
  done
161
 
162
  echo ""
163
- echo "=== 8. 运行启动前检查 ==="
164
- if command -v openclaw &> /dev/null; then
165
  openclaw doctor --fix 2>&1 | tee /tmp/openclaw-doctor-startup.log
166
- echo "健康检查日志: /tmp/openclaw-doctor-startup.log"
167
- echo ""
168
- echo "--- 已安装技能列表 (openclaw) ---"
169
- openclaw skills list 2>&1 || echo " 无法列出技能。"
170
  else
171
- echo "⚠️ openclaw 命令未找到,跳过健康检查。" >&2
172
  fi
173
 
174
  echo ""
175
- echo "=== 9. 环境摘要 ==="
176
- echo "服务端口: $PORT"
177
- echo "模型: $MODEL"
178
- echo "API 地址: ${CLEAN_BASE%/v1} (v1)"
179
- echo "网关令牌: ${OPENCLAW_GATEWAY_PASSWORD:0:3}..."
180
- echo "Tavily Key: ${TAVILY_API_KEY:0:5}..."
181
 
182
  echo ""
183
- echo "=== 10. 启动后台任务与主服务 ==="
 
184
  (
185
- echo " 定时备份任务启动。"
186
  while true; do
187
  sleep 3600
188
- if python3 /app/sync.py backup; then
189
- echo " [$(date)] 定时备份完成。"
190
- else
191
- echo " [$(date)] 定时备份失败。" >&2
192
- fi
193
  done
194
  ) &
195
- BACKUP_PID=$!
196
- echo " 定时备份任务 PID: $BACKUP_PID"
197
 
198
  echo ""
199
  echo "======================================"
200
- echo "正在启动 OpenClaw 网关..."
201
- echo "控制台 (如配置): "
202
  echo "======================================"
203
  echo ""
204
  exec openclaw gateway run --port "$PORT"
 
1
  #!/bin/bash
2
  set -euo pipefail
3
+ echo "===== OpenClaw 启动脚本 v2.3 (简化版) ====="
4
  echo "启动时间: $(date)"
5
 
6
  echo ""
7
  echo "=== 1. 初始化环境与目录 ==="
8
+ mkdir -p /root/.openclaw/{agents/main/sessions,credentials,sessions,skills}
 
 
 
9
  echo "目录结构创建完成。"
10
 
11
  echo ""
 
13
  if python3 /app/sync.py restore; then
14
  echo "✓ 数据恢复完成。"
15
  else
16
+ echo "⚠️ 数据恢复失败,继续启动。" >&2
17
  fi
18
 
19
  echo ""
20
  echo "=== 3. 检查与安装技能 ==="
21
+ SKILLS=("openclaw-tavily-search")
22
  INSTALLED_SKILLS=()
23
 
24
  for skill in "${SKILLS[@]}"; do
25
+ echo "处理技能: $skill"
 
26
  is_installed=false
27
+
28
+ # 检查是否已安装
29
+ if clawhub list 2>/dev/null | grep -q "$skill"; then
30
+ echo " ✓ 已安装"
31
  is_installed=true
32
+ # 检查是否已存在目录
33
  elif [ -d "/app/skills/$skill" ] || [ -d "/root/.openclaw/skills/$skill" ]; then
34
+ echo " ✓ 目录已存在"
35
  is_installed=true
36
+ # 尝试安装
37
  else
38
+ echo " 🔧 尝试安装..."
39
+ if clawhub install "$skill"; then
40
+ echo " ✓ 安装成功"
41
  is_installed=true
42
  else
43
+ echo " ⚠️ 安装失败" >&2
44
  fi
45
  fi
46
+
47
+ [ "$is_installed" = true ] && INSTALLED_SKILLS+=("$skill")
 
 
48
  done
49
 
 
50
  echo ""
51
+ echo "=== 4. 配置 API 地址与生成主配置 ==="
52
+ # 清理 API 地址
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  CLEAN_BASE="${OPENAI_API_BASE%/}"
54
  CLEAN_BASE="${CLEAN_BASE%/chat/completions}"
55
  CLEAN_BASE="${CLEAN_BASE%/v1}"
56
  CLEAN_BASE="${CLEAN_BASE}/v1"
57
+ echo "API 地址: $CLEAN_BASE"
58
 
59
+ # 生成主配置
60
  cat > /root/.openclaw/openclaw.json <<EOF
61
  {
62
  "models": {
 
89
  "token": "$OPENCLAW_GATEWAY_PASSWORD"
90
  },
91
  "controlUi": {
92
+ "allowedOrigins": ["*"],
 
 
93
  "dangerouslyAllowHostHeaderOriginFallback": true,
94
  "allowInsecureAuth": true,
95
  "dangerouslyDisableDeviceAuth": true
 
102
  "enabled": true
103
  }
104
  }
105
+ }
 
106
  }
107
  EOF
108
+ echo "配置生成完成"
109
 
110
  echo ""
111
+ echo "=== 5. 设置权限与技能链接 ==="
112
  chmod 700 /root/.openclaw
113
  chmod 600 /root/.openclaw/openclaw.json
114
  chmod 700 /root/.openclaw/{agents,credentials,sessions}
115
  chmod 750 /root/.openclaw/skills
116
 
117
+ # 创建技能链接
118
  for skill in "${INSTALLED_SKILLS[@]}"; do
 
 
119
  for dir in "/app/skills/$skill" "/skills/$skill" "/root/.openclaw/skills/$skill"; do
120
  if [ -d "$dir" ]; then
121
+ ln -sfn "$dir" "/root/.openclaw/skills/$(basename "$skill")"
122
+ echo "✓ 链接创建: $skill"
123
  break
124
  fi
125
  done
 
 
 
 
 
 
 
 
 
 
126
  done
127
 
128
  echo ""
129
+ echo "=== 6. 运行启动前检查 ==="
130
+ if command -v openclaw &>/dev/null; then
131
  openclaw doctor --fix 2>&1 | tee /tmp/openclaw-doctor-startup.log
132
+ echo "--- 已安装技能列表 ---"
133
+ openclaw skills list 2>&1 || true
 
 
134
  else
135
+ echo "⚠️ openclaw 命令未找到" >&2
136
  fi
137
 
138
  echo ""
139
+ echo "=== 7. 环境摘要 ==="
140
+ echo "端口: $PORT | 模型: $MODEL"
141
+ echo "API: ${CLEAN_BASE%/v1} (v1)"
142
+ echo "令牌: ${OPENCLAW_GATEWAY_PASSWORD:0:3}***"
143
+ echo "Tavily: ${TAVILY_API_KEY:0:5}***"
 
144
 
145
  echo ""
146
+ echo "=== 8. 启动后台任务与主服务 ==="
147
+ # 定时备份任务
148
  (
 
149
  while true; do
150
  sleep 3600
151
+ python3 /app/sync.py backup && echo "[$(date)] 备份完成" || echo "[$(date)] 备份失败" >&2
 
 
 
 
152
  done
153
  ) &
 
 
154
 
155
  echo ""
156
  echo "======================================"
157
+ echo "启动 OpenClaw 网关..."
 
158
  echo "======================================"
159
  echo ""
160
  exec openclaw gateway run --port "$PORT"