DC dont-be-scary
Безопасное обновление OpenClaw на macOS (brew cask install) с автоматическим снимком пакета npm + .app бандла, проверкой работоспособности после обновления и автоматическим откатом к предыдущей версии, если шлюз не запускается. Скрипт обновления запускается отдельно, поэтому он переживает перезапуск шлюза, который убивает вызывающий агент. Уведомляет о прогрессе через Telegram на каждом этапе (начало, успех, сбой, откат). Используйте, когда пользователь просит обновить OpenClaw, обновить до новой версии, запустить "openclaw update" или хочет защиты от сбоя обновления, нарушающего работу их шлюза. Только для Mac (требуется brew cask install + launchctl). Требуется настройка Telegram в openclaw.json и ~500 МБ свободного места в /tmp.
машинный переводПоказать оригиналСкрыть оригинал«Update OpenClaw safely on macOS (brew cask install) with automatic sna…»
Update OpenClaw safely on macOS (brew cask install) with automatic snapshot of the npm package + .app bundle, post-update health check, and automatic rollback to the previous version if the gateway doesn't come back. The update script runs detached so it survives the gateway restart that kills the calling agent. Notifies progress via Telegram at every step (start, success, failure, rollback). Use when the user asks to update OpenClaw, upgrade to a new version, run "openclaw update", or wants protection against a broken update breaking their gateway. Mac-only (requires brew cask install + launchctl). Requires Telegram configured in openclaw.json and ~500MB free in /tmp.
Безопасное обновление OpenClaw на macOS (brew cask install) с автоматическим снимком пакета npm + .app бандла, проверкой работоспособности после обновления и…
Как процесс C 64/100 · Есть пробелы — слабые места: результат и критерий готовности, повторный запуск
Чем это грозит
Скилл содержит фрагменты, которые в чужих руках стоят денег или данных. Ниже, что рискует потерять тот, кто установит, и что должен сделать автор.
Скилл содержит команды, которые удаляют файлы, переписывают диски или исполняют код, скачанный из сети. Агент может выполнить их без вопроса, если считает, что так требует инструкция.
Замените разрушительные команды на безопасные аналоги с подтверждением, ограничьте область действия конкретной папкой и не тяните код через curl | bash: укажите версию и контрольную сумму.
Как улучшить
- Разберите находки высокой серьёзности: каждая стоит 18 баллов безопасности. Если это ложное срабатывание, добавьте код правила в guard.allow в spec.yaml.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 11
-
высокая Опасные команды
cmd-persistencereferences/rescue-prompt.md:28Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре)- launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/ai.openclaw.gateway.plist
-
высокая Опасные команды
cmd-persistencereferences/rescue-prompt.md:32Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре)- launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.openclaw.gateway.plist
-
высокая Опасные команды
cmd-persistencereferences/rescue-prompt.md:48Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре)- LaunchAgent: ~/Library/LaunchAgents/ai.openclaw.gateway.plist
-
высокая Опасные команды
cmd-persistencescripts/safe-update.sh:106Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре)launchctl bootstrap "gui/$(id -u)" "$PLIST" 2>/dev/null
Средние и низкие: 7
-
средняя Опасные команды
cmd-persistencescripts/safe-update.sh:22Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (комментарий в коде)# OPENCLAW_PLIST — LaunchAgent plist (default: ~/Library/LaunchAgents/ai.openclaw.gateway.plist)
комментарий -
средняя Опасные команды
cmd-persistencescripts/safe-update.sh:31Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (строковый литерал в коде, не выполняется)PLIST="${OPENCLAW_PLIST:-$HOME/Library/LaunchAgents/ai.openclaw.gateway.plist}"строка в коде -
средняя Опасные команды
cmd-persistenceSKILL.md:50Механизм закрепления (cron / launchd / планировщик / автозапуск в реестре) (в кавычках — упоминание, а не команда)- `OPENCLAW_PLIST` — LaunchAgent (default: `~/Library/LaunchAgents/ai.openclaw.gateway.plist`)
в кавычках -
низкая Опасные команды
cmd-background-processscripts/safe-update.sh:5Запуск фонового / автозапускаемого процесса (комментарий в коде)# nohup "$OPENCLAW_WORKSPACE_DIR/skills/dont-be-scary/scripts/safe-update.sh" </dev/null >/dev/null 2>&1 & disown
комментарий -
низкая Утечка данных
exfil-webhook-urlscripts/safe-update.sh:84URL вебхука / коллбэка, типичный для эксфильтрации (проверьте адрес) (значение-заглушка)curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \заглушка -
низкая Утечка данных
net-credential-usescripts/safe-update.sh:84Учётные данные используются в сетевом вызове (проверьте, что адрес — нужный сервис) (хост вендора самого скилла)curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \vendor-host -
низкая Опасные команды
cmd-background-processSKILL.md:21Запуск фонового / автозапускаемого процессаnohup "<path-to-skill>/scripts/safe-update.sh" </dev/null >/dev/null 2>&1 & disown
Просканировано файлов: 4. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
✓ По спецификации Agent Skills замечаний нет
Процессный рейтинг: все десять параметров 64/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 30Повторный запуск. Изменяющих операций: 1, без проверки текущего состояния
- 50Ошибки и развилки. Развилок: 0, есть раздел про ошибки
- 60Инструменты и файлы. Используются инструменты (web, node), но во frontmatter они не объявлены
- 70Когда включается. Сказано, когда применять, но не сказано, когда не стоит
- 70Входы и предусловия. Входные данные и предусловия перечислены
- 100Шаги. Шагов: 24
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 837 токенов
- 100Отчётность по ходу. Скилл сообщает о ходе работы
- low Ответ описан самодельной разметкой (5 тегов): типизированный вызов надёжнее
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- -2Ссылки на localhost: у другого пользователя не заработает
- +1Лицензия не указана
- +2Инструкции на одном языке
- +3Длина description 677 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 8 заголовков
- +3Пошаговые инструкции: 24 пунктов
- +4Есть примеры (1 блоков кода)
- +4Справочные файлы упоминаются в инструкциях (1 из 1)
- +3Все 1 скриптов описаны в инструкциях
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 89.