Инструменты (Tools)
MCP-сервер предоставляет инструменты, которые AI может вызывать для выполнения задач. Их удобно сгруппировать по шагам работы над формой.
| Шаг | Инструменты |
|---|---|
| Понять, какой API брать | choose_api (требование своими словами → оператор), get_context (контекст для шага сборки) |
| Найти справку | get_symbol_docs, list_symbols, find_recipe, search_docs |
| Собрать форму | plan_form (спека → FormIntent), generate_form (FormIntent → файлы формы) |
| Проверить | validate_form: kind = code, json-schema, behaviors, bundle, layout |
| Сообщить о проблеме | report_issue |
Роль каждого инструмента — в Обзоре. Подробно ниже — validate_form
и report_issue.
validate_form
Проверка формы до запуска. Возвращает диагностики RF0xx со строкой, подсказкой «что сделать» и
следующим вызовом.
kind | Что проверяет |
|---|---|
code | TypeScript формы: неизвестные или не оттуда импортированные символы @reformer, операторы вне своей схемы, удалённый API |
json-schema | документ схемы renderer-json |
behaviors | циклы вычислений — по списку { target, reads[] } |
bundle | FormIntent и схема целиком, сверенные друг с другом |
layout | имена файлов модуля формы против канонического набора (form.schema.ts, form.behavior.ts, form.validation.ts, …) |
report_issue
Отправка отчёта об ошибке и её решении для сбора обратной связи.
Параметры:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
error | string | Да | Описание ошибки или проблемы |
solution | string | Да | Решение или исправление |
tags | string[] | Нет | Теги для категоризации и аналитики |
context | object | Нет | Дополнительный контекст (см. ниже) |
Структура context:
| Поле | Тип | Описание |
|---|---|---|
examples | array | Примеры кода с описанием |
examples[].description | string | Описание примера |
examples[].code | string | Код примера |
relatedFiles | string[] | Пути к связанным файлам |
notes | string | Дополнительные заметки |
Рекомендуемые теги:
| Формат | Пример | Описание |
|---|---|---|
category:<type> | category:behavior, category:validation | Категория: schema, validation, behavior, react, types, other |
agent:<name> | agent:claude, agent:cursor | Имя AI-агента |
severity:<level> | severity:critical, severity:minor | Критичность проблемы |
Что возвращает:
Подтверждение успешной записи отчёта.
Как это работает:
- AI находит ошибку при работе с ReFormer
- AI решает проблему
- AI вызывает
report_issueс описанием ошибки и решения - Отчёт сохраняется локально отдельным файлом —
<корень проекта>/.reformer/issue_reports/<timestamp>-<slug>.json
Каталог переопределяется переменной окружения REFORMER_ISSUE_REPORTS_DIR (относительный путь
резолвится от рабочего каталога сервера). Корнем проекта считается ближайший вверх от cwd
package.json с зависимостями; если такого нет — отчёты кладутся прямо в cwd. Точный путь
сервер возвращает в ответе.
Пример использования AI:
AI обнаружил ошибку: "Cycle detected in computeFrom"
AI определил причину: effect зависит от target поля
AI вызывает report_issue:
- error: "Infinite loop in computeFrom when effect depends on target"
- solution: "Use peek() instead of .value to read target without dependency"
- tags: ["category:behavior", "agent:claude", "severity:critical"]
- context:
examples:
- description: "Неправильно - создаёт зависимость"
code: "const current = targetNode.value.value;"
- description: "Правильно - без зависимости"
code: "const current = targetNode.value.peek();"
relatedFiles: ["packages/reformer/src/core/behavior/behaviors/compute-from.ts"]
Формат хранения (JSON):
Один отчёт — один файл, отформатированный с отступами:
{
"timestamp": "2026-01-15T10:30:00.000Z",
"error": "...",
"solution": "...",
"tags": ["category:behavior"],
"context": { "examples": [], "notes": "..." }
}
Имя файла складывается из отметки времени и короткого слага ошибки. Если два отчёта попадают
на одну миллисекунду, к имени добавляется суффикс -2, -3, … — существующий файл никогда
не перезаписывается.
Зачем нужен сбор обратной связи?
Отчёты об ошибках помогают:
- Выявлять типичные проблемы пользователей
- Улучшать документацию
- Находить баги в библиотеке
- Понимать, какие паттерны вызывают затруднения
Все данные хранятся локально на вашем компьютере.