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