For the complete documentation index, see llms.txt. This page is also available as Markdown.

Рецепты

Готовые примеры доработки. Каждый — один файл, который кладётся в каталог плагинов соответствующего сервера. Проверяйте dry-run перед развёртыванием.

Чем решать задачу

Задача
Чем решать
Цена

Свои сокращения и термины в запросах

Таблица ALIASES / QUERY_ALIASES

Перезагрузка

Готовый инструмент с зафиксированными аргументами

Таблица TOOL_PRESETS

Перезагрузка

Не показывать часть диагностик анализатора

Таблица SUPPRESSED_DIAGNOSTICS

Перезагрузка

Переписать запрос перед поиском

on_request (call-scoped)

Перезагрузка

Переупорядочить или отфильтровать выдачу

on_result / on_rank / on_search_candidates

Перезагрузка

Изменить то, что попадает в индекс

derived-state хук

Пересборка индекса

Выбросить документы или строки из индекса

derived-state хук, skip = True

Пересборка индекса

Правило простое: если ответ не зависит от вызова — таблица; если зависит — call-scoped хук; и только если менять нужно само сохранённое состояние — derived-state.

HelpSearchServer: термины компании и пресет инструмента

Таблицы и call-scoped хук — пересборки не требуют.

"""Термины компании и готовый поиск по стандартам. /app/plugins/10-terms.py"""

REQUIRES = {"host": 1, "product": "1c-help", "hooks": 1}

#: Дополнительные имена, которые разрешает docinfo.
ALIASES = {
    "ТЗ": "ТаблицаЗначений",
    "РС": "РегистрСведений",
}

#: Отдельный инструмент — пресет docsearch с зафиксированным doc_type.
TOOL_PRESETS = [
    {
        "name": "search_structures",
        "description": "Поиск по страницам структур справки платформы.",
        "tool": "docsearch",
        "bind": {"doc_type": "structure"},
    },
]


def on_result(result, request):
    """Свои стандарты — первыми в выдаче."""
    result["items"].sort(
        key=lambda item: not item["citation"].get("source", "").startswith("rules/"),
    )
    return result

HelpSearchServer: разметить и выбросить документы при сборке

Derived-state: правка этого файла делает сохранённый индекс устаревшим, и следующий старт пересобирает его в staging-поколение, пока текущее продолжает отвечать.

SSLSearchServer: синонимы и вытеснение устаревшего

Выбросить записи ещё на этапе индексации (derived-state, стоит переэмбеддирования выбранной базы БСП):

SyntaxCheckServer: корпоративный профиль проверок

Таблица подавления окончательна и не выполняет кода; on_diagnostics добавляет то, что зависит от вызова.

Номера строк в payload нулевые: публикуемая база применяется после хуков. Сравнивайте и сортируйте в тех числах, которые получили.

TemplatesSearchServer: свой префикс запроса и метка отдела

Derived-state вариант — эмбеддить шаблоны вместе с названием подсистемы (стоит пересборки коллекций):

Graph Metadata Search: свои факты об объектах и свой Cypher

Не забудьте GRAPH_PLUGINS_ENABLED=true — иначе каталог не читается.

Хук проставляет свойство при сборке графа, шаблон его читает — вместе это даёт инструменту run_graph_cypher_template запрос в терминах вашей организации.

1CCodeChecker: пресет ERP и очистка перед отправкой

Все хуки здесь call-scoped: перезагрузка действует со следующего вызова, ничего не переиндексируется. on_upstream_call — последняя точка перед передачей данных в code.1c.ai.

Не записывайте call и request в собственный журнал: через них могут проходить исходный код и параметры сессии.


Композиция нескольких файлов

Файлы выполняются в отсортированном порядке имён, и каждый хук — конвейер: что вернул 10-terms.py, то получит 20-filter.py. Отсюда практика именования:

Действующий порядок всегда виден в состоянии подсистемы (plugin_state, list_plugins, GET /plugins) — вместе с эпохой, ошибками и накопленным временем каждого хука.

Last updated