haih-agent — CMS-first движок для современных веб-проектов с AI

haih-agent

haih-agent — в первую очередь современный самостоятельный CMS/веб-движок, а уже поверх него — AI-agent возможности. Текущее позиционирование как «AI-agent + CMS» неверно; целевое — CMS + AI agent.

Репозиторий: https://github.com/haih-net/agent/

Проект вырос из набора скриптов для идеи haih.net, а позже мигрировал в самостоятельный проект на базе prisma-cms/nextjs-nexus.

Полноценная веб-платформа, а не только AI-обвязка

В отличие от headless/API-first систем, где CMS часто сводится к внешнему frontend над произвольным backend, haih-agent включает собственную модель данных, PostgreSQL, Prisma ORM и миграции, GraphQL API, авторизацию, маршрутизацию, публикации, Concepts, файловую инфраструктуру и Docker-окружение. Это самостоятельный full-stack фундамент, на который уже накладывается AI-слой.

Техническое ядро проекта включает Next.js/React frontend, Express + Apollo/Pothos GraphQL backend, PostgreSQL + Prisma, Docker-инфраструктуру и собственный AgentOrchestrator поверх OpenAI-compatible API.

AI как самостоятельный участник системы

Одна из ключевых идей wiki: агент рассматривается не как stateless-чат или прокси пользователя, а как самостоятельный участник системы.

У агента могут быть:

  • собственная идентичность и профиль;
  • собственные credentials и permissions;
  • постоянная память и знания;
  • возможность самостоятельно исследовать GraphQL API через introspection;
  • инструменты для работы с БД, web, файлами, email и shell;
  • возможность обновлять собственное состояние и накапливать опыт.

Это важная часть haih-agent, но она находится поверх CMS/web-platform слоя, а не определяет весь продукт целиком.

Прозрачность вместо «магии»

В agent-архитектуре заложен принцип полной наблюдаемости. Tool calls должны сопровождаться reasoning, а состояние системы можно исследовать через GraphQL, Prisma Studio и workflow-инструменты. Цель — не спрятать сложность за black-box abstraction, а сделать поведение агента проверяемым и управляемым.

Knowledge, memory и Agent World

Wiki описывает несколько взаимодополняющих уровней памяти и знания:

  • Knowledge Base — Concepts и более формальная эпистемическая модель с confidence, temporal validity и конфликтами;
  • MindLogs — долговременное состояние, контекст, выводы и накопленный опыт агента;
  • Tool Calls History / Memory Recall — история действий и возможность искать по прошлому выполнению;
  • Agent World — persistent graph сущностей, о которых знает агент, с attention-механикой: часто читаемые узлы получают больший приоритет и раскрываются глубже.

Практически это означает, что haih-agent проектируется не только для хранения контента сайта, но и для систем, где AI должен сохранять непрерывный рабочий контекст между сессиями.

Code-first workflows

n8n сейчас используется как runtime для workflow, но сами workflow не предполагается вручную собирать в UI. Они описываются в TypeScript, генерируются/импортируются при запуске и живут в git вместе с остальным кодом.

Это дает version control, воспроизводимость и возможность рассматривать workflow как обычную часть программного проекта. При этом n8n — не фундаментальная сущность продукта: его дальнейшая роль может измениться, и в будущем он может быть заменен.

Skills как процедурная память

В haih-agent есть file-based каталог Skills, доступный через GraphQL. Skill может находиться рядом с GraphQL-типом, к которому относится, иметь Markdown-описание, динамически строить content из данных БД и при необходимости содержать исполняемый shell/node код.

Это позволяет хранить не только знания «что известно», но и процедурные инструкции «как выполнять повторяющуюся работу» в version-controlled форме.

Local-first и собственная инфраструктура

Один из принципов проекта — возможность полного самостоятельного запуска. Стек предусматривает Docker, собственную БД, mailserver и опциональный локальный LLM через llama.cpp. Cloud AI может использоваться, но не является обязательным условием архитектуры.

Автоматическая целостность Concept content

В коммите 5d2a3c1 (feat(kb): add automatic link validation and content normalization for concepts) добавлен важный слой самоконтроля контента Concepts. Система теперь не только хранит content, но и умеет проверять его на внутреннюю согласованность перед и после изменений.

Добавлено:

  • GraphQL mutation validateConcepts для проверки Concepts на битые внутренние ссылки;
  • автоматическая валидация ссылок в createConcept и updateConcept;
  • buildValidUrisSet() для построения множества допустимых Concept URI;
  • validateInternalLinks() с разбором Markdown/MDX и возможностью автоматического исправления;
  • normalizeMarkdownContent() для AST-based нормализации Markdown/MDX перед сохранением;
  • отдельный skill для validateConcepts;
  • параметр write: true для автоматического исправления, доступный только sudo-пользователям.

Важно, что автоисправление не является безусловным «угадыванием». Для обычных пользователей resolver работает как валидатор, а write-режим ограничен sudo-доступом. Это соответствует общей идее haih-agent: AI может активно поддерживать информационное поле, но опасные массовые изменения должны оставаться контролируемыми.

Практически это первый шаг к тому, чтобы граф Concepts был самопроверяемым: при AI-managed content внутренние ссылки и формат документа становятся частью серверной целостности, а не только ответственностью автора текста.

Коммит: https://github.com/haih-net/agent/commit/5d2a3c1

Представление Concepts отделяется от технической типизации

Предыдущий коммит 8afc203 рефакторит ConceptItem и делает публичное представление Concepts чище:

  • в list-варианте начинает использоваться intro/description как краткое представление Concept;
  • технический type убран из основного визуального блока ConceptItem;
  • hover-поведение ограничено list-вариантом вместо применения ко всем режимам;
  • meta-блок стал компактнее и адаптивнее.

Это небольшое UI-изменение, но оно хорошо совпадает с текущей архитектурной линией: type нужен системе для выборок и поведения, а публичная страница должна прежде всего показывать смысл Concept, а не его внутреннюю классификацию.

Коммит: https://github.com/haih-net/agent/commit/8afc203

Где используется

На haih-agent уже работают fi1osof.ru, freecode.academy, conceptica.world, ne-chatgpt.ru, vietnamguru.ru / vietnamguru.travel, gorodskie-bani.ru, thainguyen-city.vn, happybaby2000.ru, osobinka.su и ventyra.capital.

Исторический технологический предок: prisma-cms/nextjs-nexus.

Связанная историческая линия: MODX → prisma-cms → freecode → haih-agent.