Введение в проблему технического хаоса

Представьте, что вы дежуришь ночью в дата-центре, система падает, а мануал по восстановлению написан так художественно, будто это роман Стивена Кинга (спойлер: выживут не все, особенно дежурный). В критических сценариях (например, при обслуживании турбины или устранении сбоев в инфраструктуре Kubernetes — что в целом одинаково стрессово) неоднозначное описание в инструкции может стоить компании миллионов. Современная техдокументация для сложных систем часто страдает от стилистического хаоса, ведь её пишут распределенные команды инженеров.

Решением этой проблемы выступает стандарт ASD-STE100 Simplified Technical English (STE). Созданный ассоциацией ASD (AeroSpace and Defense Industries Association of Europe), этот международный стандарт жестко ограничивает лексику и грамматику английского языка. Он разрешает использовать базовый словарный запас, предписывает строгие структуры предложений и требует абсолютной однозначности терминов.

Однако ручное внедрение STE — это бутылочное горлышко для технических писателей. Проверка объёмных текстов по словарю тормозит релизы, а традиционные линтеры часто выдают ложноположительные результаты, не улавливая контекст. Решением становится интеграция автономных ИИ-агентов. Создание специализированного Agent Skill позволяет программно заставлять LLM генерировать и переписывать документацию строго по спецификации ASD-STE100.

Покажем на практике, как спроектировать такой скилл, который превратит хаотичный текст в строгий технический регламент.

Анатомия стандарта ASD-STE100 для языковых моделей

Прежде чем проектировать Skill-модуль для ИИ-агента, необходимо перевести правила человеческого стандарта в машиночитаемые инструкции. ASD-STE100 делится на две ключевые категории: контроль словарного запаса и синтаксические ограничения.

  • Controlled Vocabulary: Использование только одобренных терминов. Омонимы и синонимы исключаются — для каждого действия закреплен строго один глагол.
  • Ограничение длины предложений: Процедурные (инструктивные) предложения ограничены 20 словами, а описательные — 25 словами.
  • Синтаксические запреты: Исключение герундия в заголовках, минимизация пассивного залога и отказ от сложных вложенных придаточных предложений.

Внедрить эти правила вручную на ревью каждого пулл-реквеста с документацией — верный путь к выгоранию команды (ведь у нас уже есть легаси-код и горящие дедлайны для этого). Гораздо эффективнее делегировать рутину кодовому агенту.

Архитектура ИИ-агента для проверки и генерации STE

Для реализации Agent Skill мы используем модульную архитектуру, разделяющую задачи парсинга, инференса LLM и валидации. Ниже представлена базовая схема взаимодействия компонентов в виде кода на Python с использованием псевдофреймворка агентов:

import os
from typing import List
from ai_agent_framework import Agent, Skill, LLMClient

class STESkill(Skill):
    name = "asd_ste100_validator"
    description = "Rewrites and validates text according to ASD-STE100 standard"

    def __init__(self, llm_client: LLMClient):
        self.llm = llm_client
        self.max_procedure_words = 20

    def process(self, raw_text: str) -> str:
        prompt = self._build_ste_prompt(raw_text)
        response = self.llm.complete(prompt)
        validated_text = self._validate_constraints(response)
        return validated_text

    def _build_ste_prompt(self, text: str) -> str:
        return f"""
        Rewrite the following technical text strictly adhering to ASD-STE100 standard.
        - Max words per sentence in procedures: {self.max_procedure_words}
        - Use only approved vocabulary.
        - Eliminate ambiguity and passive voice where possible.
        Text to process:
        {text}
        """

    def _validate_constraints(self, text: str) -> str:
        # Логика постобработки и проверки длины предложений
        sentences = text.split('.')
        for s in sentences: