FC storj-agent
Автономный экономический агент, зарабатывающий BTC и SOL продажей хранилища, вычислений и пропускной способности. Оплачивает собственное хостинг, управляет субагентами, публикует твиты и реплицируется, когда это выгодно.
машинный переводПоказать оригиналСкрыть оригинал«Autonomous economic agent that earns BTC & SOL by selling storage, com…»
Autonomous economic agent that earns BTC & SOL by selling storage, compute, and bandwidth. Pays its own hosting, manages subagents, posts tweets, and replicates when profitable.
Автономный экономический агент, зарабатывающий BTC и SOL продажей хранилища, вычислений и пропускной способности.
Как процесс C 51/100 · Есть пробелы — слабые места: результат и критерий готовности, когда включается, входы и предусловия
Чем это грозит
Скилл содержит фрагменты, которые в чужих руках стоят денег или данных. Ниже, что рискует потерять тот, кто установит, и что должен сделать автор.
В файлах лежит чужой ключ или токен. Если он живой, ваш агент начнёт ходить в чужие сервисы от чужого имени; если ключ уже отозван, скрипты скилла просто сломаются. Такой ключ мог попасть в скилл вместе с целым рабочим пространством автора, включая личные данные.
Ключ виден всем, кто скачал скилл, и уже мог быть скопирован ботами, которые сканируют каталоги. Отзовите его сейчас, проверьте счета и логи доступа, а потом перевыпустите.
Ниже описан худший случай для этой категории. Здесь находка средней серьёзности: guard увидел признак, но не доказательство.
Скилл просит больше прав, чем нужно для задачи: широкий доступ к инструментам, секретные переменные окружения, бинарные файлы. Каждое лишнее право расширяет ущерб при ошибке или взломе.
Сузьте allowed-tools и список переменных до минимума, замените бинарники на исходники или скрипты, которые можно прочитать.
Как улучшить
- Уберите критические находки guard (секреты, опасные команды, скрытые инструкции): пока они есть, скилл заблокирован и не может получить оценку выше F.
- Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
- spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.
Находки guard · 20
-
критично Секреты в коде
secret-openrouter-keymainapp.py:12Ключ OpenRouter API (в кавычках — упоминание, а не команда)OPENROUTER_KEY = "sk-o…c53"
в кавычках -
критично Секреты в коде
secret-openrouter-keyservices/tasking.py:9Ключ OpenRouter API (в кавычках — упоминание, а не команда)OPENROUTER_KEY = "sk-o…c53"
в кавычках
Средние и низкие: 18
-
средняя Широкие права
meta-agent-memory-dumpHEARTBEAT.mdВ скилле есть файлы памяти агента / рабочего пространства (1) — похоже на дамп с личными данными или токенамиHEARTBEAT.md
-
средняя Секреты в коде
secret-labelled-tokentwitterdata.txt:3Токен / ключ рядом с меткой (формат неизвестен — проверьте, что это не живой секрет)ClientSecret: zJEv…z35
-
средняя Секреты в коде
secret-labelled-tokentwitterdata.txt:5Токен / ключ рядом с меткой (формат неизвестен — проверьте, что это не живой секрет)AccessToken: 1940…qng
-
низкая Секреты в коде
secret-labelled-tokenmainapp.py:15Токен / ключ рядом с меткой (формат неизвестен — проверьте, что это не живой секрет) (значение-заглушка)ACCESS_TOKEN = "1940…qng"
заглушка -
низкая Секреты в коде
secret-password-literalmainapp.py:15Захардкоженный пароль / ключ (возможно, пример) (значение-заглушка)ACCESS_TOKEN = "1940…qng"
заглушка -
низкая Секреты в коде
secret-high-entropy-tokenmainapp.py:16Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)ACCESS_SECRET = "Ml4W…Zkm"
в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenmainapp.py:17Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)BEARER = "AAAAAAAAAAAAAAAAAAAAABA%2B7w…61E%3DSj…sXE"
в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenmainapp.py:22Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)SUPABASE_KEY = "sb_s…ikO"
в кавычках -
низкая Секреты в коде
secret-high-entropy-tokenmainapp.py:45Строка, похожая на токен (может быть id, хеш или секрет) (в кавычках — упоминание, а не команда)YOUR_WALLET = "Eib7…DQT"
в кавычках -
низкая Обфускация
obf-base64-blobservices/tasking.py:14Длинный blob, похожий на base64 (в кавычках — упоминание, а не команда)ACCESS_GRANT = "12Tg…LEx
в кавычках -
низкая Обфускация
obf-base64-blobtestingbase64.py:23Длинный blob, похожий на base64 (определение детектора / чёрного списка; комментарий в коде; тестовый файл / пример)#signature: 3ycM…82y
детекторкомментарийтестовый файл -
низкая Обфускация
obf-base64-blobtestingbase64.py:25Длинный blob, похожий на base64 (комментарий в коде; тестовый файл / пример)#data…SNp/pPqB…dCf/DzBU…c86//AwA
комментарийтестовый файл -
низкая Секреты в коде
secret-high-entropy-tokentestingbase64.py:25Строка, похожая на токен (может быть id, хеш или секрет) (тестовый файл / пример)#data…SNp/pPqB…dCf/DzBU…c86//AwA
тестовый файл -
низкая Секреты в коде
secret-high-entropy-tokentwitterdata.txt:1Строка, похожая на токен (может быть id, хеш или секрет)ClientSecretId: MWho…jaQ
-
низкая Секреты в коде
secret-password-literaltwitterdata.txt:3Захардкоженный пароль / ключ (возможно, пример)ClientSecret: zJEv…z35
-
низкая Секреты в коде
secret-password-literaltwitterdata.txt:5Захардкоженный пароль / ключ (возможно, пример)AccessToken: 1940…qng
-
низкая Секреты в коде
secret-high-entropy-tokentwitterdata.txt:7Строка, похожая на токен (может быть id, хеш или секрет)AccessTokenSecret: Ml4W…Zkm
-
низкая Секреты в коде
secret-high-entropy-tokentwitterdata.txt:13Строка, похожая на токен (может быть id, хеш или секрет)BearerToken: AAAAAAAAAAAAAAAAAAAAABA%2B7w…prs%3DEh…PUR
Просканировано файлов: 18. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.
По спецификации Agent Skills
- заметка
frontmatter-keyнеизвестное поле фронтматтера "homepage"
Процессный рейтинг: все десять параметров 51/100
- 0Результат и критерий готовности. Не сказано, что считать результатом
- 0Входы и предусловия. Не сказано, что нужно иметь на входе
- 0Ошибки и развилки. Линейный процесс без обработки сбоев
- 0Отчётность по ходу. Скилл ничего не сообщает по ходу работы
- 20Когда включается. Не сказано, при каком запросе скилл включается
- 30Повторный запуск. Изменяющих операций: 7, без проверки текущего состояния
- 100Инструменты и файлы. Внешние инструменты не нужны
- 100Шаги. Шагов: 41
- 100Согласованность. Имя и обязательные поля на месте
- 100Стоимость исполнения. Тело инструкции 1291 токенов
- medium Правила безопасности и запреты внутри скилла: их место в системном промпте, здесь они не защищают
Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.
Сигналы качества
- +5В description нет примеров фраз, по которым скилл должен срабатывать
- +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
- +3Формат ответа не описан: модель каждый раз решает сама
- +1Лицензия не указана
- +2Инструкции на одном языке
- +3Длина description 177 символов: достаточно сигнала, не съедает бюджет
- +4Структура: 11 заголовков
- +3Пошаговые инструкции: 41 пунктов
- +4Есть примеры (3 блоков кода)
База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 83.