Справочник Input Schema
Обзор
Узлы agent-directive используют JSON Schema (Draft 7) для валидации ответов агента. Невалидные ответы вызывают повторную попытку с сообщениями об ошибках валидации.
Базовая структура
{ "inputSchema": { "type": "object", "properties": { "field_name": { "type": "string" } }, "required": ["field_name"] }}Определения типов
String
{ "properties": { "name": { "type": "string" }, "description": { "type": "string", "minLength": 10 }, "code": { "type": "string", "maxLength": 100 } }}Number
{ "properties": { "score": { "type": "number", "minimum": 0, "maximum": 100 }, "count": { "type": "integer", "minimum": 1 } }}Boolean
{ "properties": { "confirmed": { "type": "boolean" } }}Array
{ "properties": { "items": { "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 10 } }}Object
{ "properties": { "config": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "value": { "type": "number" } }, "required": ["enabled"] } }}Ограничения Enum
String Enum
{ "properties": { "status": { "type": "string", "enum": ["pending", "approved", "rejected"] }, "decision": { "type": "string", "enum": ["yes", "no"] } }}Boolean-подобный Enum
Для ответов на русском:
{ "properties": { "confirmed": { "type": "string", "enum": ["да", "нет"] } }}Используйте строковые enum для да/нет вместо boolean. Это делает ответы агента более явными и последовательными.
Optional и Required
Обязательные поля
{ "required": ["result", "confidence"]}Необязательные поля со значением по умолчанию
{ "properties": { "verbose": { "type": "boolean", "default": false } }}Паттерн необязательного пропуска
{ "properties": { "result": { "type": "string" }, "skip": { "type": "string", "enum": ["yes"] } }}Агент предоставляет либо result, либо skip, но не оба.
Валидация по паттерну
Паттерн пути к файлу
{ "properties": { "file_path": { "type": "string", "pattern": "^[a-zA-Z0-9/_.-]+\\.(json|yaml|md)$" } }}Паттерн email
{ "properties": { "email": { "type": "string", "pattern": "^[^@]+@[^@]+\\.[^@]+$" } }}Паттерн URL
{ "properties": { "url": { "type": "string", "pattern": "^https?://" } }}Валидация массивов
Типизированные элементы массива
{ "properties": { "tags": { "type": "array", "items": { "type": "string" } } }}Объектные элементы массива
{ "properties": { "steps": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "status": { "type": "string", "enum": ["done", "pending"] } }, "required": ["name", "status"] }, "minItems": 1 } }}Дополнительные свойства
Строгая схема (по умолчанию)
{ "type": "object", "properties": { "result": { "type": "string" } }, "required": ["result"], "additionalProperties": false}Отклоняет любые поля, не определённые в properties. Движок автоматически применяет additionalProperties: false ко всем объектным схемам с properties, поэтому это поведение по умолчанию даже без явного указания.
Разрешить дополнительные поля
{ "additionalProperties": true}Явно укажите additionalProperties: true для разрешения дополнительных полей.
Описания для агентов
Добавляйте описания, чтобы помочь агентам понять назначение полей:
{ "properties": { "issues_count": { "type": "number", "minimum": 0, "description": "Number of reproducible blocking findings in the report; zero is valid" }, "evidence": { "type": "string", "description": "Concrete proof that work is complete (test output, command results)" } }}note: Описания показываются агентам в ошибках валидации и подсказках.
Магические переменные
Специальная переменная execution_note обновляет отслеживание execution:
{ "properties": { "execution_note": { "type": "string", "description": "Note to identify this execution" } }}Подробнее в Магические переменные.
Типичные паттерны
Ответ Да/Нет
{ "type": "object", "properties": { "result": { "type": "string", "enum": ["yes", "no"] }, "reason": { "type": "string" } }, "required": ["result"]}Число с доказательством
{ "type": "object", "properties": { "error_count": { "type": "number", "minimum": 0 }, "evidence": { "type": "string", "minLength": 10 } }, "required": ["error_count", "evidence"]}Множественный выбор
{ "type": "object", "properties": { "action": { "type": "string", "enum": ["create", "edit", "delete", "skip"] }, "details": { "type": "string" } }, "required": ["action"]}Смотрите также
- Магические переменные - Специальные поля ввода
- Валидация - Как работает валидация