BF free-model-router
Предоставляет бесплатную службу интеллектуальной маршрутизации моделей для OpenClaw, поддерживая локальный прокси, автоматическую настройку, автоматический опрос, переключение при сбое и нулевое внедрение конфигурации. Используется при необходимости настройки бесплатной маршрутизации моделей, настройки провайдера, переключения моделей или диагностики проблем с доступностью моделей.
машинный переводПоказать оригиналСкрыть оригинал«为 OpenClaw 提供免费模型智能路由服务,支持本地代理、自动配置、自动轮询、故障切换和配置零侵入。在需要设置免费模型路由、配置 Pro…»
为 OpenClaw 提供免费模型智能路由服务,支持本地代理、自动配置、自动轮询、故障切换和配置零侵入。在需要设置免费模型路由、配置 Provider、切换模型或诊断模型可用性问题时使用。
Предоставляет бесплатную службу интеллектуальной маршрутизации моделей для OpenClaw, поддерживая локальный прокси, автоматическую настройку, автоматический…
Как процесс F 36/100 · Не запустится — Скилл ссылается на файлы, которых нет в архиве: {url}
Как улучшить
- Скажите в description, КОГДА применять скилл («используй, когда…», примеры запросов): это главный сигнал для агента.
- В тексте есть ссылки на отсутствующие файлы: добавьте файлы или уберите ссылки.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 10
✓ Критических и высоких находок нет
Средние и низкие: 10
-
низкая Секреты в коде
secret-password-literalcore/admin/admin-routes.js:1Захардкоженный пароль / ключ (возможно, пример)const fs=require("fs"),path=require("path"),auth=require("./auth"),srp=require("./srp"),PUBLIC_DIR=path.join(__dirname,"public");function registerRoutes(e){return{handleAdminRequest:function(e,s){cons -
низкая Опасные команды
cmd-pipe-to-shellcore/admin/public/js/admin.js:1Скачивание и запуск удалённого кода с неизвестного хоста (pipe в shell) (определение детектора / чёрного списка; строковый литерал в коде, не выполняется; демонстрация атаки / пример)const API_BASE="";let _isLocalAccess=!1;function getAuthHeaders(){if(_isLocalAccess)return{};const e=localStorage.getItem("adminToken");return e?{Authorization:"Bearer "+e}:{}}async function initAuth(детекторстрока в кодедемонстрация -
низкая Секреты в коде
secret-password-literalcore/route-engine.js:1Захардкоженный пароль / ключ (возможно, пример)const path=require("path"),fs=require("fs"),config=require("./config"),monitorLogger=require("./monitor-logger"),serverClient=require("./server-client"),notifications=require("./notifications"),health -
низкая Секреты в коде
secret-high-entropy-tokenpackage-lock.json:82Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)"integrity": "sha5…55h/ff8EMaJ+cYhy…4pW+sXf9…fFg==",
в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenpackage-lock.json:209Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)"integrity": "sha5…IRT+10J3…DFX+wKFiWjqWp/iCfL…SCR+0w/h1ES/MjA==",
в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenpackage-lock.json:226Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)"integrity": "sha5…hjc+H3XB…EI2+jeA8…6pF+UStUCfEpdysA==",
в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenpackage-lock.json:243Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)"integrity": "sha5…ZVS+3FYl…bbw==",
в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenpackage-lock.json:413Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)"integrity": "sha5…XAu+wKhL…NtR+lZ2B4uwr+usqG…vGw==",
в кавычках -
низкая Опасные команды
cmd-execpolicy-bypasspackage.json:29Запуск PowerShell с обходом execution policy (в кавычках — упоминание, а не команда)"build:standalone:win": "powershell -ExecutionPolicy Bypass -File deploy\\deploy.ps1",
в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenscripts/free-model-cli.js:1Строка, похожая на токен (может быть id, хеш или секрет) (определение детектора / чёрного списка)const http=require("http"),{spawn}=require("child_process"),path=require("path"),fs=require("fs"),os=require("os"),ROUTER_HOST="127.0.0.1",ROUTER_PORT=5678,ROUTER_BASE="http://127.0.0.1:5678",configMoдетектор
Просканировано файлов: 45. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- предупреждение
description-no-whendescription не говорит, КОГДА применять скилл (нет "use when / используй когда") - предупреждение
missing-refссылка на отсутствующий файл: {url}
Процессный рейтинг: все десять параметров 36/100
- 0Инструменты и файлы. Не хватает 1 файла(ов): {url}
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 40Согласованность. Имя во frontmatter (free-model-router) не совпадает с папкой (free-model-router-v1)
- 50Ошибки и развилки. Развилок: 0, есть раздел про ошибки
- 100Шаги. Шагов: 39
- 100Стоимость исполнения. Тело инструкции 1584 токенов
- 100Повторный запуск. Изменяющих операций нет
- low Разделов верхнего уровня: 14. Похоже на несколько доменов в одном скилле
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Длина description 94: рекомендуется 120–800 символов
- +3Формат ответа не описан: модель каждый раз решает сама
- -34 из 5 скриптов не упомянуты в SKILL.md
- +1Лицензия не указана
- +2Инструкции на одном языке
- +4Структура: 20 заголовков
- +3Пошаговые инструкции: 39 пунктов
- +4Есть примеры (6 блоков кода)
- +4Справочные файлы упоминаются в инструкциях (3 из 3)
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 64.