使用技巧
合并脚本:
#!/bin/bash
# =============================================
# OpenClaw 模型白名单更新脚本(全功能版)
# =============================================
set -e
CONFIG_FILE="${HOME}/.openclaw/openclaw.json"
# 默认值
MODE="append"
PREFIX=""
MODELS_TXT=""
show_help() {
echo "用法: $0 [models.txt路径] [选项]"
echo ""
echo "选项:"
echo " --mode append|new 设置更新模式: append (增量, 默认), new (覆盖现有列表)"
echo " --prefix PREFIX 为读入的模型名称添加前缀 (例如: --prefix nvidia)"
echo " --show 显示当前配置文件中的模型列表并退出"
echo " --help 显示此帮助信息"
echo ""
echo "示例:"
echo " $0 models.txt --mode new --prefix hello"
echo " $0 --show"
exit 0
}
show_models() {
if [[ ! -f "$CONFIG_FILE" ]]; then
echo "❌ 错误:配置文件不存在: $CONFIG_FILE"
exit 1
fi
echo "📊 当前模型列表 (.agents.defaults.models):"
jq '.agents.defaults.models' "$CONFIG_FILE"
exit 0
}
# 参数解析
while [[ $# -gt 0 ]]; do
case $1 in
--help)
show_help
;;
--show)
show_models
;;
--mode)
MODE="$2"
shift 2
;;
--prefix)
PREFIX="$2"
shift 2
;;
-*)
echo "❌ 未知参数: $1"
echo "请使用 --help 查看用法"
exit 1
;;
*)
MODELS_TXT="$1"
shift
;;
esac
done
# 如果未指定文件,尝试默认路径
if [[ -z "$MODELS_TXT" ]]; then
MODELS_TXT="${HOME}/.openclaw/models.txt"
fi
if [[ ! -f "$MODELS_TXT" ]]; then
echo "❌ 错误:模型列表文件不存在: $MODELS_TXT"
echo "请使用 --help 查看用法"
exit 1
fi
if [[ ! -f "$CONFIG_FILE" ]]; then
echo "❌ 错误:OpenClaw 主配置文件不存在: $CONFIG_FILE"
exit 1
fi
# 备份配置文件
BACKUP_FILE="${HOME}/.openclaw/openclaw.json.bak.$(date +%Y%m%d_%H%M%S)"
cp "$CONFIG_FILE" "$BACKUP_FILE"
echo "✅ 已备份原配置文件 → $BACKUP_FILE"
# 使用 jq 更新
jq --rawfile raw_models "$MODELS_TXT" \
--arg mode "$MODE" \
--arg prefix "$PREFIX" '
.agents.defaults //= {} |
.agents.defaults.models //= {} |
(
$raw_models
| split("\n")
| map(select(length > 0))
| map(if $prefix != "" then ($prefix + "/" + .) else . end)
| map({(.): {}})
| add
) as $new_models |
if $mode == "new" then
.agents.defaults.models = $new_models
else
.agents.defaults.models += $new_models
end
' "$CONFIG_FILE" >"${CONFIG_FILE}.tmp" &&
mv "${CONFIG_FILE}.tmp" "$CONFIG_FILE"
echo "✅ 已成功更新模型列表 (模式: $MODE, 前缀: ${PREFIX:-无})"
# 显示更新后的模型数量
MODEL_COUNT=$(jq '.agents.defaults.models | length' "$CONFIG_FILE")
echo " 当前白名单模型数量: $MODEL_COUNT"
echo "🎉 操作完成!"