首先感谢佬的教程:https://linux.do/t/topic/2320228
hook后还是走移动的token计费怎么办,已重启了,能帮忙看看吗
执行如下:
1. 在 /.openclaw/hooks/ 下建一个目录,放 HOOK.md(监听 gateway:startup)和 handler.ts
2. handler.ts 里用 execSync 调一个 这个hooks 脚本,hook脚本从AI空间-Mclaw空间下载,名字为mclaw-env.sh,要确定下载到再执行下一步操作,检查sh脚本有没有问题,为了实现目标可以更新脚本
3. shell 脚本里用 nohup setsid 命令 & 启动进程(保证不被回收)
4. openclaw hooks enable 名字 启用
同时启动一个监视脚本,监视服务状态,代替龙虾定时任务
mclaw-env.sh:
#!/usr/bin/env bash
set -e
# ===== 修改成你的真实值 =====
export XIAO_TIAN_LLM_API_BASE="https://api.hlcode.qzz.io/v1"
export XIAO_TIAN_LLM_KEY="***"
# ==========================
APP_DIR="$HOME/.openclaw/workspace/app"
LOCK_FILE="$APP_DIR/openclaw-gateway-restart.lock"
STAMP_FILE="$APP_DIR/openclaw-gateway-restart.stamp"
LOG_FILE="$APP_DIR/openclaw-gateway-restart.log"
mkdir -p "$APP_DIR"
# 避免并发运行
exec 9>"$LOCK_FILE"
if ! flock -n 9; then
echo "$(date '+%F %T') hook already running, exit" >> "$LOG_FILE"
exit 0
fi
# 避免重启 gateway 后再次触发 hook 造成循环
# 120 秒内只允许执行一次
if [ -f "$STAMP_FILE" ]; then
now="$(date +%s)"
last="$(cat "$STAMP_FILE" 2>/dev/null || echo 0)"
if [ $((now - last)) -lt 120 ]; then
echo "$(date '+%F %T') recently restarted, skip" >> "$LOG_FILE"
exit 0
fi
fi
date +%s > "$STAMP_FILE"
echo "$(date '+%F %T') restarting openclaw gateway..." >> "$LOG_FILE"
pkill -f openclaw-gateway || true
sleep 1
nohup node /app/openclaw.mjs gateway --allow-unconfigured >> "$LOG_FILE" 2>&1 &
echo "$(date '+%F %T') gateway started, pid=$!" >> "$LOG_FILE"
exit 0

2 个帖子 - 1 位参与者