Документация

Шаги с кодом

Узел code_step выполняет пользовательскую логику в песочнице Starlark — свободно редактируемый, ограниченный списком разрешённых инструментов.

Шаги с кодом (code_step)

Некоторая логика слишком специфична для оператора compute, но при этом слишком детерминирована, чтобы оправдывать LLM-агента: сверки из нескольких источников, специализированные бизнес-вычисления, экзотические нормализации. Для таких случаев узел code_step выполняет код внутри песочницы, без вызова LLM и с предсказуемым выводом.

Код редактируется напрямую, как любое другое поле конфигурации, и запускается сразу после сохранения.

Модель выполнения

code_step выполняет Starlark — диалект Python, спроектированный для изоляции: без доступа к файловой системе, без сети, без произвольных импортов, детерминированный, ограниченный бюджетом времени. Код видит только:

  • Входы (input_paths), которые вы явно на него отображаете.
  • Инструменты (allowed_tools), которые вы разрешаете ему вызывать.

Всё остальное недосягаемо. Шаг с кодом не может получить доступ к ресурсу, который вы ему не передали.

Конфигурация

ПолеНазначение
CodeИсходный код Starlark, который выполняется, редактируется напрямую.
Inputs (input_paths)Отображение variable → selector. Коду раскрываются только эти ключи контекста. Внутренние ключи (_*) отклоняются.
Tool allowlistИнструменты, вызываемые через tool(name, args). Каждый вызов наследует собственные защитные механизмы инструмента (защита от SSRF, биллинг, аудит, killswitch).
Output keyКуда поместить результат в контексте. Нижестоящие узлы читают этот ключ.
Execution budgetПотолок времени (мс), ограниченный на стороне сервера. Шаг, который его превышает, прерывается.

Где проходит граница безопасности

Язык не является угрозой: Starlark изолирован по своей природе — сам по себе он не может ни прочитать файл, ни выйти в сеть, ни зациклиться навечно. Чистое вычисление безвредно.

Единственная реальная возможность — это мост tool(), и он ограничен списком разрешённых инструментов, применяемым во время выполнения: код может вызывать только те инструменты, которые вы перечислили, и каждый из них несёт собственные защитные механизмы (защита от SSRF, биллинг, аудит, killswitch). Именно там — в выборе инструментов — вы задаёте область того, что шагу разрешено делать.

Пустой список разрешённых инструментов = отсутствие возможности побочных эффектов: шаг просто вычисляет по своим входам и производит вывод.

Когда его использовать

  • Да: детерминированная логика, которую вы можете описать точно, но которая выходит за пределы встроенных операций compute (сверка нескольких списков, составные бизнес-правила, проприетарные форматы).
  • Нет: простой фильтр, агрегация или проекция → достаточно оператора compute.
  • Нет: задача, требующая суждения или открытого письма → это agent, а не код.