← Agent Engine

Личность и права

agent-engine · workzone

Агент читает корпоративные знания — значит, кто-то решает, под какой личностью он их видит. Это не настройка пользователя и не строка промта, а рамка, которую движок привязывает к прогону. Рамка простая: агент действует под правами своего владельца — видит ровно то, что видит сам сотрудник, и только на чтение.

Рамка агента — инженерный слой

«Под какой личностью агент читает базу» решает не админ и не сам промт, а рамка агента — инженерный слой, который движок подмешивает в композицию промта и которым режет каждый запрос к знаниям. Промт можно подделать словами — рамку нет: она навязана снаружи цикла. Движок ставит в рамку личность владельца, и всё чтение идёт под его ACL.

Владелец
сотрудник, завёл агента
выдаёт
личность
рамка агента · движок
личность прогона
навязана снаружи, промтом не перебить
личность = владелец
читает
под ACL
Knowledge Store
срез по правам · read-only

Под правами владельца

Агент наследует ACL создателя целиком: его проекты, пространства, каналы. Что закрыто для сотрудника — закрыто и для его агента; права режутся на стороне Knowledge Store pre-filter'ом, тем же механизмом, что и в живом поиске. Отдельной модели личности агент не имеет — он и есть его владелец перед базой.

Личность владельца
  • рамка = ACL создателя, один срез на агента
  • права меняются вместе с правами владельца
  • урезали доступ → агент сужается следом, ACL живой
  • выбирать «чей ACL» не нужно — он один
v2 полная модель личности
  • сервисные аккаунты с собственным доступом
  • выбор «под чьей личностью» при создании
  • разрезы scope: personal · team · company
  • агент команды под правами команды, не автора

Связать агента с владельцем дёшево: личность сотрудника уже сведена с учёткой (мост identity.user_id в модели личностей), и FK прогона на владельца ведёт прямо к этому ACL — см. agents.

Это про живой ACL активного сотрудника. Уход владельца — другой механизм: деактивация гасит выключатель агента (enabled=false), удаление учётки сносит его каскадом — см. жизненный цикл владельца.

Граница: только чтение

Что бы агент ни «надумал», в Knowledge Store он ничего не пишет. Все три инструмента — search, graph, sql — на чтение; запись в граф (сущности, связи, векторы) принадлежит доводке знаний и сбору, не агенту. Отсюда два следствия: прогон не может испортить базу, и его чтение спокойно идёт параллельно записям графа — конкурировать не за что.

Перед KS агент неотличим от владельца: запрос идёт под его личностью, отдельного журнала доступа на стороне KS нет. След автоматического прогона живёт в журнале прогонов; различать «агент или человек» в самом KS-аудите — v2, вместе с журналом доступа KS.

Запись результатов агента обратно в граф как новых инсайтов — осмысленная, но отдельная ветка: v2, со своим контуром прав на запись. Выход агента остаётся в журнале прогонов, вне знаний.