7.2 KiB
7.2 KiB
Telegram-агент для разрешённых игроков
- Горизонт:
near - Ориентир: сегодня/завтра
- Статус:
proposal
Кратко
Нужно расширить SHiNE-agent-bot-coder, чтобы агент мог принимать личные сообщения от заранее разрешённых пользователей, вести по каждому отдельную рабочую папку и историю, помогать им с обсуждениями/документами без изменения кода, а краткий результат публиковать в общий канал.
Пользовательский сценарий
- Разрешённый пользователь пишет агенту в личные сообщения текстом или голосом.
- Голосовое сообщение распознаётся так же, как сейчас распознаются voice/audio-задачи.
- Сервис определяет пользователя по разрешённому списку логинов.
- Для пользователя используется отдельная папка в
Players/. - Codex запускается с системным контекстом: от имени какого человека он работает, где лежит его папка, какие у него локальные инструкции.
- Агент может читать код и документацию проекта, но писать должен только в папку этого пользователя, если нет отдельного согласования на изменение общего проекта.
- После ответа пользователю агент отправляет в общий канал короткую сводку двумя сообщениями или двумя блоками: вопрос пользователя и полученный ответ.
- Команда
/newилиNewсбрасывает только сессию этого пользователя.
Предлагаемая структура
Players/Ivan/AGENTS.mdhistory/files/
Sergey/AGENTS.mdhistory/files/
Milana/AGENTS.mdhistory/files/
Имена папок можно уточнить после получения точных Telegram-логинов.
Что нужно сделать
- Добавить конфигурацию разрешённых Telegram-пользователей.
- Описать соответствие
telegram username -> имя игрока -> папка. - Создавать или использовать отдельную историю диалога для каждого игрока.
- Поддержать личные сообщения от разрешённых пользователей.
- Запретить постановку задач от неизвестных пользователей.
- Для групп/каналов оставить текущую логику: команды Айдара имеют приоритет.
- При запуске Codex для игрока добавлять отдельный системный контекст:
- имя пользователя;
- путь к его папке;
- правило записи только в эту папку;
- путь к персональному
AGENTS.md.
- После ответа игроку отправлять краткую сводку в общий канал.
- Поддержать
/new/Newкак сброс только персональной сессии игрока. - Добавить защиту от случайного изменения общего кода в режиме игрока.
Вопросы перед реализацией
- Точные Telegram-логины Ивана, Сергея и Миланы.
- Какой общий канал использовать для сводок: текущий
@shine_writingили отдельный чат. - Нужно ли отправлять в общий канал полный текст вопроса/ответа или краткую выжимку.
- Нужно ли пересылать вложения игроков в общий канал или только текстовые сводки.
- Разрешить ли игрокам читать все документы проекта, включая технические заметки деплоя.
- Что делать, если пользователь просит изменить код: отказать, создать предложение в своей папке или просить подтверждение Айдара.
- Нужны ли русские имена папок (
Иван,Сергей,Милана) или ASCII-имена (Ivan,Sergey,Milana). - Нужно ли хранить истории игроков в общей папке сервиса или внутри
Players/<name>/history/.
Риски и ограничения
- Нужно аккуратно разделить режим Айдара и режим игрока, чтобы игроки не могли случайно запустить изменение общего кода.
- Нужно не смешать истории разных пользователей.
- Нужно ограничить публикацию в общий канал, чтобы не утекали личные или слишком длинные ответы.
- Нужна проверка Telegram-идентификации: username может меняться, поэтому желательно хранить и
user_id.
Документы, которые обновить при реализации
SHiNE-agent-bot-coder/AGENTS.mdSHiNE-agent-bot-coder/AGENT.mdSHiNE-agent-bot-coder/README.mdDev_Docs/deploy/agent-bot-coder-local-systemd.md, если появятся новые переменные окружения или настройки сервиса.
Минимальная проверка
- Айдар по-прежнему может ставить задачи из
@shine_writing. - Неизвестный пользователь не ставит задачу в очередь.
- Разрешённый игрок пишет личное текстовое сообщение и получает ответ.
- Разрешённый игрок отправляет voice, оно распознаётся и обрабатывается.
- История одного игрока не попадает в историю другого.
/newсбрасывает только историю текущего игрока.- Сводка вопрос/ответ появляется в общем канале.
- В режиме игрока агент не пишет за пределы
Players/<name>/без отдельного подтверждения.