Все статьи

3 мин чтенияTrustPolicy

Что должен фиксировать журнал аудита для общего coding agent

День, когда что-то пошло не так, — худший день для начала логирования. Шесть полей для каждой строки запроса, пять — для строки согласования, то, чего никогда не должно быть в журнале, и почему хранить его должен владелец, а не автор запроса.

Автор: Noah· Product at Muti AI

Журнал аудита для общего coding agent — это запись только для добавления (append-only) с одной строкой на каждый запрос и одной строкой на каждое согласование. Он хранится у владельца машины и доступен ему для экспорта. Постфактум он отвечает на вопросы: кто попросил агента сделать действие, кто разрешил его, что именно выполнилось и сколько это стоило. Если агентом пользуется только владелец, достаточно собственного транскрипта runtime. В тот момент, когда второй человек получает возможность отправлять запросы, этого уже мало.

В этом посте перечислены поля в том порядке, в каком они нужны читателю, а затем то, чему в журнале не место.

Строка запроса

Каждый запрос формирует ровно одну строку, когда переходит в конечное состояние.

ПолеЗачем оно нужно
ID запросаHandle, который используют все: в комнате, в ветках чата, в отчетах об ошибках. R20260906-07.
Кто запросилАккаунт автора запроса и статус: владелец, участник с постоянным разрешением или гость с однократным допуском. Доверие индивидуально; журнал обязан указывать конкретного человека.
Какой агент, какая комнатаАгент указывает на машину и рабочий каталог. Комната показывает аудиторию, которая видела запуск.
Какое правило разрешило запускВладелец, постоянный доступ или разовое согласование с именем согласовавшего. Это поле аудиторы смотрят в первую очередь.
Результатdone, failed, cancelled, expired, а также класс ошибки, если она возникла.
ВремяСоздан, запущен, завершен. Разница между созданием и запуском — ожидание согласования; между запуском и завершением — выполнение.
ИспользованиеТокены или собственный отчет об использовании от runtime, чтобы у чужих запросов была понятна стоимость.

Строка согласования

Согласования выносятся в отдельные строки, потому что это решения, а у решений другие читатели, чем у запусков.

ПолеЗачем
ДействиеТочная команда или путь, без пересказа: git push origin main, rm -rf build/, read ~/.aws/credentials.
Сработавшее правилоPush в общую ветку, удаление, расход средств, учетные данные или кастомное правило.
Кто запросил, кто решилДва имени. Они намеренно различаются, когда агента одалживают.
РешениеApproved, rejected, продолжить в режиме только для чтения или expired.
ЗаметкаВсё, что написал принявший решение. Заметки имеют тот же вес, что и сам запрос, поэтому они должны быть в записи.
ЗадержкаСколько времени запрос ожидал. Долгое ожидание — сигнал сузить область ответственности агентов.

Строки запросов и согласований: подтвержденный push выделен янтарным, а истекшее удаление — красным.Строки запросов и согласований: подтвержденный push выделен янтарным, а истекшее удаление — красным.

Чего не должно быть в журнале

  • Секреты. Согласование доступа к учетным данным фиксирует обращение к ключу, а не сам ключ.
  • Содержимое файлов. Diffs — это пути и количество строк. Само изменение находится в репозитории, где действуют его собственные правила контроля доступа.
  • Полный вывод команд. Хвоста вывода достаточно, чтобы понять причину сбоя. Полные логи могут содержать что угодно.
  • Другие комнаты. Журнал каждой комнаты ограничен ею самой. Владелец видит происходящее по всем комнатам, участники — только свою.

Свойства, а не только поля

Только добавление (append-only). Никто не может редактировать журнал, включая владельца. Исправления вносятся новыми строками.

Хранится у владельца. Человек, на чьей машине выполнялась работа, владеет записью и может ее экспортировать. Авторы запросов видят свои строки в комнате.

Полнота при отзыве доступа. Отзыв разрешения или отключение машины отменяет задачи в очереди и дает завершиться текущим, поэтому в журнале не возникает пробелов вида «что-то запустилось, но мы перестали следить».

Учет действий владельца. Владелец не проходит согласования для своего агента, но его запросы логируются аналогично. Журнал, фиксирующий только внешних пользователей, закрывает лишь половину рисков.

Чтение журнала

Чаще всего возникают три вопроса, и поля выше отвечают на каждый одним фильтром.

  1. «Кто запушил это?» Отфильтруйте строки согласования по правилу = push, прочитайте поля кто запросил и кто решил.
  2. «Почему этот запрос выполнялся час?» Сравните время создания и запуска; ожидание согласования обычно и есть ответ.
  3. «Сколько стоило предоставление агента в этом месяце?» Просуммируйте использование в строках запросов, где кто запросил — не владелец.

Часто задаваемые вопросы

Является ли timeline комнаты журналом аудита? Timeline — это подробная, понятная человеку история одного запуска. Журнал аудита — это сводка по запускам по принципу «одна строка на событие», предназначенная для фильтрации и экспорта. muti сохраняет и то, и другое; журнал строится на основе тех же событий, которые выгружает daemon. См. что выгружает daemon.

Как долго он хранится? Строки запросов и согласований хранятся в течение всего срока жизни комнаты. Удаление комнаты является мягким (soft delete); запись сохраняется для владельца.

Может ли автор запроса видеть строки других участников? Они видят timeline комнаты, куда входят запросы всех участников этой комнаты. Экспорт доступен только владельцу.

Нужно ли согласование для запросов владельца, чтобы они попали в журнал? Нет. Запуски владельца логируются без согласований, со значением правило = owner.

Журнал — это то, что превращает фразу «вы сможете отозвать доступ позже» в реальное обещание. Создайте комнату для своего агента — журнал уже включен.

Опубликовано

Дайте своему агенту комнату.

muti бесплатен во время закрытой беты. Подключите компьютер, на котором работают ваши агенты, и пригласите людей, которым доверяете.

Начать

Читать дальше

6 мин чтенияComparison

QoderWake and muti

Of every agent product launched in 2026, Alibaba's QoderWake is the closest in shape to muti. Both run on your own machine, and both let a group send it work, through a chat that has to be paired first. They split on whose agent it is, what it runs, and who approves when a colleague's request reaches a delete.

9 мин чтенияComparison

WorkBuddy, QwenWork and QoderWake

Tencent's WorkBuddy lets you drive the agent on your own computer from WeChat and WeCom. Alibaba's QwenWork merges desktop, cloud and DingTalk agents into one product. QoderWake runs a team of digital employees on your machine behind a single bot the whole group can mention. All three let colleagues use the agent. They answer how in very different ways.

5 мин чтенияPersonal agents

An agent with its own phone number

Manus Cue gives each personal agent an email address, a phone number, a wallet and a computer. That makes the agent reachable by anyone who has the number, which changes the permission question from "what may my agent do" to "what may a stranger make it do". What Manus 2.0 shipped, and what reachability asks of an agent.