Скрипты — это запасной выход продукта. Пока встроенных возможностей хватает, о них можно не думать. Но если чего-то не хватает — источник отдаёт данные необычным способом, нужное значение не достаётся обычным разбором, нужной службы нет среди готовых каналов — соответствующий шаг описывается своим кодом на Python. Писать код самому не придётся: вы объясняете задачу словами, а пишет, проверяет и запускает его ваш агент.
Зачем это нужно
Готовые возможности закрывают большинство задач, но не все. Свой код нужен, когда:
- Источник устроен нестандартно — данные отдаёт отдельная программная служба, а не страница или лента.
- Значение не достаётся обычным способом — подставляется уже на странице или лежит в непривычном месте.
- Нужной службы нет среди каналов и целей публикации — например, корпоративный мессенджер или своя система управления сайтом.
- Условие не выразить готовыми полями — нужен свой признак, посчитанный по своим правилам.
- Обработку хочется считать самому — без обращения во внешнюю модель.
Какой шаг можно заменить
Свой код можно подключить почти к любому месту пути одной новости. Смысл везде один: продукт делает свою работу, а на выбранном шаге спрашивает ваш код.
- При сборе — быть источником целиком; почистить страницу сразу после скачивания; разобрать письмо необычного формата; дополнить материал на входе.
- При наблюдении — почистить страницу перед сравнением; достать значения своим кодом (см. Мониторы).
- При обработке — быть поставщиком ИИ вместо внешней модели; добавить свою обработку всех материалов и событий (см. ИИ-обработка).
- При принятии решений — посчитать свой признак для условия и выполнить своё действие по правилу (см. Правила).
- При доставке — поправить вид сообщения; быть каналом целиком (см. Каналы доставки).
- При публикации — поправить текст черновика; быть целью публикации (см. Публикация).
Как устроен скрипт
Скрипт — обычный текстовый файл в разделе Скрипты рядом с остальными настройками. Он лежит под контролем версий вместе с ними и перечитывается на лету: правка применяется со следующего запуска, перезапуск не нужен.
- Код можно хранить двумя способами — прямо в файле настроек или рядом отдельным файлом, который удобнее править в своём редакторе. Один скрипт — один из двух способов, не оба сразу.
- Задание и ответ — обычные данные — скрипт получает, что именно нужно сделать, для какого источника и с какими настройками, и возвращает результат тоже данными. Печатать по ходу можно что угодно: значимым считается последний ответ.
- Секреты хранятся вместе со скриптом — токены и пароли указываются в нём же и при чтении настроек маскируются, как везде в продукте.
- Своё постоянное место для данных — у каждого скрипта есть своя папка: удобно запомнить, до чего дочитал сборщик, и продолжить с того же места.
- Общие библиотеки ставятся сами — если скрипту нужны дополнительные библиотеки, они перечисляются один раз, и продукт устанавливает их сам.
Проверка и журнал запусков
Скрипт может ошибаться так же, как любая настройка, поэтому его всегда видно насквозь.
- Тестовый запуск — с экрана «Скрипты» можно попросить агента выполнить скрипт сейчас и показать, что тот вернул, не дожидаясь расписания.
- Журнал запусков — у каждого скрипта своя история: на каком шаге вызывался, что было поводом, что было предметом, чем закончилось, сколько заняло и что ответило (или на чём споткнулось). Видно и успешные запуски, и ошибку с её причиной.
- Видно подключения — рядом со скриптом показано, какие настройки на него ссылаются. Сразу понятно, что сломается, если его удалить, — поэтому продукт не даст удалить скрипт, пока на него ссылаются. Неподключённый скрипт отмечен отдельно.
- Свои записи на экране «Скрипты» — что скрипт делает, к какому шагу подключён и как отработали последние запуски: Экраны наблюдения.
Ограничители
Свой код — самая свободная часть продукта, поэтому на неё есть понятная упряжь. Всё настраивается, значения ниже — по умолчанию.
- Общий выключатель — одним движением можно остановить все скрипты сразу. Каждый пропущенный запуск честно записывается в журнал с причиной.
- Срок на один запуск — минута, при необходимости до десяти. Зависший скрипт снимается вместе со всеми запущенными им процессами.
- Не больше двух запусков одновременно — скрипты не съедают весь сервер, пока идёт сбор и обработка новостей.
- Ограничение на объём данных — до одного мегабайта в каждую сторону. Лишнее лучше складывать в свою папку, чем гнать через ответ.
- Журнал запусков хранится 30 дней — и убирается вместе с остальным архивом по срокам хранения.
- Поломка видна сразу — если на сервере нет Python или библиотеки ещё ставятся, на экране «Скрипты» появляется предупреждение с подсказкой, что проверить, а не тишина.
Честные ограничения
- Скрипты работают без изоляции. Это доверенный код владельца: он получает те же доступы к файлам и сети, что и сам продукт. Ограничения здесь не технические, а дисциплинарные — поэтому писать и проверять скрипты стоит вместе с агентом.
- Ключ управления скрипту не выдаётся. Он не может менять настройки продукта за вас.
- Скрипт расширяет шаг, но не меняет продукт. Если нужна другая логика самого продукта, это уже вопрос лицензии на исходный код, а не скриптов.
Лицензия входит в подписку «Фабрика агентов».
Дальше → Оглавление документации