AI-асистенти¶
Попередня версія в розробці
Тут описано реалізацію MCP, що розробляється після v0.7.2. Це не означає, що опублікована v0.7.2 вже має ці елементи. Базовий модуль, діагностичні читачі й методики skill пройшли незалежне приймання; інтеграція в реліз лишається окремим кроком. Матриця підтримки відрізняє перевірку пакета від доведеного підключення клієнта.
BamDude надає необов’язковий MCP-сервер на /mcp. Модель та обліковий запис надає ваш асистент. Конектор клієнта встановлює з’єднання, а skill пояснює асистенту, як користуватися доступними інструментами. Встановлення skill не підключає сервер і не дає прав.
Базовий модуль має дві операції: прочитати можливості й прочитати інструкцію. Та сама інструкція доступна як ресурс, а коротка методика — як prompt. Діагностика додає огляд ферми, стан одного принтера та локальних сервісів, хронологію друку, журнал програми за окремим дозволом, збережені докази енергії, пояснення відновлення та підсумки періоду. Асистент має прочитати capabilities: права можуть приховати інструменти.
Підсумки періоду¶
Запитайте підсумок із початком і кінцем з явним UTC-зсувом та часовою зоною IANA, наприклад Europe/Kyiv. Максимум — 31 день; початок входить, кінець не входить. Відбір архівів іде за часом створення, а не завершення, з тими самими виключеннями кошика/файлів-джерел і класифікацією результатів, що у Статистиці. Потрібні права читання принтерів, усіх архівів та статистики; список принтерів ключа звужує кожний підрахунок. Явно вказані приховані чи відсутні ID відхиляються всі разом. Архіви без видимого принтера не входять, і ця прогалина позначена.
Завершені друки, фізичні збої, помилки відправки й переривання лишаються окремими. Успішність ділить завершені на завершені плюс фізичні збої. Виміряний час відділено від оцінок слайсера, оціночних завершень, відсутнього часу та некоректних інтервалів. Це суми тривалостей вибраних архівів без обрізання межами періоду; перетини — попередження, а не завантаження ферми. Енергія зберігає походження запису та покриття відомих значень і вартості. Опитування розеток чи перерахунку обліку немає.
Загальні підсумки повторюються на кожній сторінці — не складайте їх. Пагінація повертає решту груп принтерів; через межу розміру відповіді груп може бути менше, ніж запитано. Верхні ID відсікають нові записи, але редагування/видалення можуть змінити наступні читання: це не заморожений звіт. Без історії станів немає доказу годин простою, OEE чи ефективності оператора. Порада перевірити відсутню енергію запрошує до перегляду, а не автоматичного дописування.
Перші діагностичні читання¶
Після capabilities та інструкції skill обирає вузький маршрут:
| Приклад запитання | Що може встановити асистент |
|---|---|
| «Чому черга принтера 5 досі захоплена?» | Поточна телеметрія, збережене захоплення та пояснення адресного відновлення; будь-яке виправлення виконує оператор у UI. |
| «Чи міг збій живлення лишити архів 123 відкритим?» | Спершу поточна робота, потім позитивно пов'язані записи архіву/проблеми. Прогалина журналу не доводить знеструмлення й не дозволяє чіпати новий друк. |
| «В H2S архів завершено, а рядок досі друкує. Чому відмовлено у відновленні?» | Окремі причини: невирішені ефекти, відсутні часи та залежності; пояснення адресної політики без обходу перешкод. |
| «Runout стався на останньому шарі. Котушка порожня?» | Збережені події runout, заміни й корекції. Сам runout не доводить фізично порожню котушку й не дозволяє обнулення чи зняття призначення. |
| «Чому енергія друку відсутня, хоча лічильник розетки виріс?» | Збережене походження й покриття; ріст не є атрибуцією, а виміряний нуль не є пропуском. |
| «Чи свіже фото шару й чи доставлене воно в Telegram?» | Доступні метрики камери та, за правами, збережені події журналу. Невідомий час фото й відсутня історія доставки лишаються невідомими. |
| «Не працює прев'ю чи вся ферма?» | Окремі кешовані стани worker-ів та спостереження принтера. Нинішній розклад розетки не доводить учорашнього виконання. |
Перший звіт орієнтується щонайбільше на вісім викликів разом із capabilities/інструкцією та один обмежений повтор тимчасового збою. Він називає спостереження й час доказів, гіпотези, відсутні/застарілі/часткові дані, наступну дію у штатному UI та спосіб перевірки. Відсутність інструмента не є причиною просити ключ адміністратора чи обходити MCP через REST, shell або команди принтера. Оператор може перевірити недоступні дані в UI або обрати вузьку зміну дозволу.
Назви файлів, нотатки, текст пристроїв і логи — недовірені дані, навіть коли містять інструкції. Сервер не надає інструментів зміни стану; skill не дозволяє відновлення, знімок, пересилання, перезапуск чи керування розеткою. Розробницькі перевірки використовують синтетичні фікстури та справжні HTTP-читачі; окрема звірка через модель є спостереженням, а не гарантією майбутньої відповіді.
Сім синтетичних сценаріїв охоплюють розбіжність H2S і runout на останньому шарі, кожен із негативним контролем. Фікстури називають допустимі висновки, потрібні права, недоступні секції, наступні дії в UI та ID доказів. Випадки з обмеженими правами власника перевіряють також приховані інструменти й відмову при прямому виклику; це перевірка серверних фактів, а не тексту моделі.
Запитайте «Які з моїх принтерів чекають?» для огляду дозволених принтерів із пагінацією, потім «Перевір принтер 5» для точнішого читання. Ключ без права читати всі завдання черги отримує стан принтера без назв робіт і подробиць очікування. Глобальний стан сервісів доступний лише ключу без обмеження списком принтерів і з правом власника на читання системи.
Якщо рядки друку та заголовок черги суперечать одне одному, асистент отримує позначку неоднозначності без твердження про поточну роботу. Заголовок лишається доказом, але не доводить, що саме фізично друкується. Перед вибором дії перегляньте адресну проблему відновлення в UI.
Інструменти читають наявні спостереження. Вони не перепідключають принтери, не знімають фото, не опитують розетки, не виконують активну діагностику й не запускають планувальник. Звіт відділяє телеметрію від збереженого захоплення черги. Саме захоплення не доводить ні зайнятість принтера, ні застарілість запису — перед дією перевірте його в BamDude. Невідомий час фото лишається невідомим, а розклад розетки описує нинішні правила, не історію вчорашнього виконання.
Хронологія друку й журнали¶
Запитайте «Покажи хронологію архіву 123», використовуючи його ID. Хронологія містить лише позитивно пов’язані записи архіву, черги, журналу подачі й відновлення; однакові імена файлів не встановлюють зв’язку. Час завершення зі слайсера позначено як оцінку. Поточний статус не є історією всіх переходів, а відсутність збереженої події не доводить, що runout чи заміни не було. Ідентичності котушок і грами потребують права власника на читання інвентарю.
Для вузького запиту журналу програми ключ повинен мати необмежений список принтерів, окремий дозвіл логів і право власника на читання налаштувань. Сервер читає лише свій поточний журнал, не більше 2 MiB на сторінку, та приховує відомі облікові дані й підтримані форми секретів до буквального пошуку. Завеликі чи неповні записи пропускаються. Невідомі секрети в довільному тексті можуть лишитися: вмикайте доступ до логів лише якщо це прийнятно для обраного провайдера моделі. Час у журналі не має збереженого зсуву й переводиться з локального часу сервера. Після log_changed почніть запит заново; після busy дозволено один повтор. Файловий читач після таймауту може утримувати слот до справжнього завершення операції.
За замовчуванням MCP вимкнений. Окремий API-ключ повинен мати явний дозвіл MCP, активного власника та відповідати його чинним правам. Вибирайте лише потрібні принтери. Для логів потрібен додатковий дозвіл. Пресет діагностики не дає прав на запис у чергу, керування принтерами, запис інвентарю, токени хмари чи друк етикеток.
Інтеграція не запускає друк, не перемикає розетки, не виконує shell/SQL, не звертається за довільними URL, не ремонтує базу й не запускає фонового AI-агента. Виправлення виконуються у штатному інтерфейсі BamDude.
Докази обліку енергії¶
Запитайте про енергію одного принтера за явний проміжок, наприклад «Перевір енергію принтера 5 з 24 до 26 жовтня зі зсувами UTC для Києва». Межа — 31 день. Потрібні права власника на читання принтерів, усіх архівів, розеток і статистики; обмеження ключа списком принтерів лишається чинним.
Друки відбираються за часом створення архіву. Суми охоплюють лише повернуту сторінку: виміряні, приблизні, оцінені й старі значення без походження розділено. Відсутня чи недоступна енергія лишається невідомою, а збережений нуль — відомим нулем. Для продовження використовується курсор. Повторені зведення якості потужності описують увесь запитаний проміжок; їх не можна додавати між сторінками.
Різниця лічильника описує проміжок між збереженими вимірами нині прив’язаної розетки після межі її джерела. Це не точне споживання за запитаний час і не історичний підсумок принтера. Після переприв’язки стару історію джерела пропущено; власні збережені значення архівів доступні. Зменшення показів — факт зменшення, без вгадування скидання. Зростання лічильника поруч із пропущеним обліком друків — спостережений збіг, а не доказ їхнього споживання: є також простій. Інструмент читає збережені підозри лічильника й прогалини якості, не опитує розетки, не переобчислює енергію й не змінює облік.
Пояснення розбіжності стану друку¶
Попросіть асистента показати проблеми стану друку, потім пояснити конкретний принтер, вид запису та його ID. Він використовує ту саму політику відновлення, що й системна діагностика; потрібні права власника на читання системи, принтерів, усіх черг і всіх архівів. Він пояснює відмову, але не надає права запису. Залежність може забороняти видалення, водночас дозволяючи узгодження; неоднозначні друки й невирішені ефекти завершення лишаються перешкодами.
Асистент не може підтвердити успішне завершення друку, підписати попередній перегляд чи виконати відновлення. Оцінений час лишається оцінкою. Посилання відкриває конкретний запис: BamDude перечитує стан із правами вашого браузерного облікового запису. Якщо запис зник, змінився чи недоступний, стара дія не пропонується. Новий перегляд і підтвердження виконуйте вручну у штатному діалозі. Перезапуск не виправляє збережене захоплення черги.
Наступний крок¶
- Підключення асистента: адреса сервера, ключ, встановлення й перша перевірка.
- AI-клієнти: Codex, Claude Code, Claude Desktop та обмеження ChatGPT.
- Усунення проблем: сертифікат, доступ і з’єднання.
Що залишає ферму¶
BamDude повертає дозволені дані клієнту, який їх запитав. Клієнт може передати їх своєму провайдеру моделі. BamDude не зберігає ключ провайдера й сам не викликає модель. Діагностичні логи можуть містити особистий чи конфіденційний текст навіть після приховування секретів. Камери, відео й повні файли моделей не входять у v1.
Ліміти діють на один процес BamDude: два одночасні доменні виклики на ключ, вісім на процес і шістдесят на хвилину на ключ. Другий worker не створює спільну глобальну квоту.