BUNBASTER7BLASTER

bbd6 2.6 spec

Sep 4th, 2026
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.99 KB | None | 0 0
  1. BBD6 v2.6 - актуальная спецификация
  2. версия на 23.07.2026
  3.  
  4. Документ обновлен после ревью и фиксирует не только фичи, но и контракт,
  5. типы, ошибки, зависимости и архитектурные причины решений.
  6.  
  7.  
  8. Кратко о версии
  9.  
  10. v2.6 сохраняет AI-пайплайн v2.5 и вводит переключаемый Discord backend:
  11. - selenium (стабильный, полный)
  12. - playwright (новый, совместимый, расширяемый)
  13.  
  14. AI-слой не зависит от драйвера браузера: смена backend не требует правок
  15. в ai/, memory/, emotion/, persona/.
  16.  
  17.  
  18. Структура проекта v2.6
  19.  
  20. V2.6[2-mind]-Undetect/
  21. bbd6-v2.6.py Основной цикл
  22. config.py Настройки окружения и путей
  23. activity.py
  24. detection.py
  25. text_helpers.py
  26.  
  27. ai/ Граф, генерация, validation и tool-команды
  28. memory/ ChatLog, recall, индексы и память
  29. emotion/ appraise и состояние эмоций
  30. persona/ профили, факты, режимы и эффективность
  31. prompts/ промпты и стилевые профили
  32. content/ инструменты и контентные банки
  33.  
  34. runtime/
  35. discord_init.py Выбор backend и инициализация сессии
  36. message_routing.py Маршрутизация Chat vs Reply
  37. idle.py idle cycle, life post, GIF
  38. reaction_tool.py Реакции и favourite emoji logic
  39. startup.py начальная инициализация памяти/кэшей
  40. tool_handlers.py служебные tool handlers
  41. creator_discipline.py правила creator mode
  42.  
  43. Discord-Tools/
  44. Discord_Tools/ Selenium backend
  45. Discord_Tools_Playwright/ Playwright backend
  46.  
  47. cache/
  48. data/ chatlog, индексы, persona/user state
  49. logs/ debug файлы runtime
  50.  
  51. settings/runtime/.env
  52. documentation/
  53.  
  54.  
  55. Discord Backend Contract
  56.  
  57. Версия контракта: Discord Backend Contract 1.0
  58.  
  59. Цель: стабилизировать API между AI-слоем и браузерными реализациями, чтобы
  60. добавлять новые функции без разлома вызывающего кода.
  61.  
  62. Интерфейс (Contract 1.0):
  63.  
  64. class DiscordBackend:
  65. # Messaging
  66. send_chat(text: str) -> SendResult
  67. send_reply(message_id: str, text: str) -> SendResult
  68. react(message_id: str, emoji_name: str | None = None) -> ReactResult
  69. edit(message_id: str, text: str) -> EditResult
  70. delete(message_id: str) -> DeleteResult
  71. typing(duration_s: float | None = None) -> None
  72.  
  73. # Navigation and session
  74. navigate(guild: str, channel: str) -> NavigateResult
  75. validate_session() -> bool
  76. restore_session() -> bool
  77.  
  78. # Read model
  79. get_messages_in_view() -> list[Message]
  80.  
  81. Примечание по совместимости текущего кода:
  82. - Текущие публичные имена в проекте: Chat, ReplyToMessage, NavigateChannel,
  83. GetMessagesInView, IsMessageReplyToUser.
  84. - Они считаются legacy-compatible facade для Contract 1.0.
  85. - Новые backends должны реализовывать Contract 1.0 полностью или возвращать
  86. NotImplementedResult для неподдерживаемых операций.
  87.  
  88.  
  89. Реализация статуса методов (на 23.07.2026)
  90.  
  91. Selenium backend (Discord_Tools/main.py):
  92. - send_chat: supported (через Chat)
  93. - send_reply: supported (через ReplyToMessage)
  94. - react: supported
  95. - edit: not implemented
  96. - delete: not implemented
  97. - typing: partial (эмуляция через human typing)
  98. - navigate: supported (через NavigateChannel)
  99. - validate_session: supported
  100. - restore_session: supported
  101.  
  102. Playwright backend (Discord_Tools_Playwright/main.py):
  103. - send_chat: supported (через Chat)
  104. - send_reply: supported (через ReplyToMessage)
  105. - react: stub (совместимая заглушка)
  106. - edit: not implemented
  107. - delete: not implemented
  108. - typing: partial (через keyboard typing delays)
  109. - navigate: supported (через NavigateChannel)
  110. - validate_session: supported
  111. - restore_session: supported
  112.  
  113.  
  114. Типы данных (Contract 1.0)
  115.  
  116. Текущий runtime всё еще потребляет тройки (timestamp, author, text), но
  117. нормативная модель для расширения контракта фиксируется уже сейчас.
  118.  
  119. Message:
  120. - id: str
  121. - timestamp: str
  122. - author: str
  123. - text: str
  124. - reply_to: str | None
  125. - attachments: list[Attachment]
  126. - raw: dict | None
  127.  
  128. Attachment:
  129. - id: str | None
  130. - kind: str # image, video, file, embed, sticker, other
  131. - url: str | None
  132. - filename: str | None
  133. - size_bytes: int | None
  134.  
  135. SendResult:
  136. - ok: bool
  137. - message_id: str | None
  138. - error_code: str | None
  139. - details: str | None
  140.  
  141. NavigateResult:
  142. - ok: bool
  143. - guild: str
  144. - channel: str
  145. - error_code: str | None
  146. - details: str | None
  147.  
  148.  
  149. Ошибки и исключения
  150.  
  151. В Contract 1.0 backend должен либо бросить backend-исключение, либо вернуть
  152. Result с error_code. Смешивание допустимо только на границе legacy API.
  153.  
  154. Базовые ошибки:
  155. - BackendError
  156. - DOMChangedError
  157. - ChannelNotFoundError
  158. - SessionExpiredError
  159. - RateLimitedError
  160. - PermissionDeniedError
  161. - TransportError
  162. - NotImplementedBackendError
  163.  
  164. Правила поведения по основным операциям:
  165.  
  166. get_messages_in_view():
  167. - DOM изменился: DOMChangedError или [] (если включен soft mode)
  168. - сессия истекла: SessionExpiredError
  169. - канал недоступен/не открыт: ChannelNotFoundError
  170. - временный рейтлимит: RateLimitedError
  171.  
  172. navigate():
  173. - канал/сервер не найден: ChannelNotFoundError
  174. - редирект на login: SessionExpiredError
  175.  
  176. send_chat()/send_reply():
  177. - нет прав отправки: PermissionDeniedError
  178. - рейтлимит: RateLimitedError
  179. - target message отсутствует (reply): ChannelNotFoundError или TransportError
  180.  
  181. react()/edit()/delete():
  182. - не реализовано backend-ом: NotImplementedBackendError
  183.  
  184.  
  185. AI pipeline (подробнее)
  186.  
  187. route:
  188. - Классифицирует тип входа (упоминание, reply-to-bot, обычная активность).
  189. - Выделяет сигнал важности и предварительный режим реакции.
  190.  
  191. decide:
  192. - Принимает решение, отвечать или пропустить.
  193. - Учитывает вероятностные фильтры, creator mode, anti-bait и ignore-шансы.
  194.  
  195. retrieve:
  196. - Достает релевантный контекст автора и темы из chatlog/памяти.
  197. - Добавляет recalled history и связанные факты для текущего turn.
  198.  
  199. reason:
  200. - Генерирует кандидат ответа через LLM с учетом mood/emotion/style.
  201. - Применяет активные цели, mode hints и ограничения длины.
  202.  
  203. validate:
  204. - Проверяет повторы, low-quality паттерны, anchoredness и уместность.
  205. - Отсекает слабые ответы или переводит в fallback стиль.
  206.  
  207.  
  208. Производительность
  209.  
  210. Важно: значения зависят от latency Discord DOM и LLM API.
  211.  
  212. Оценочные диапазоны v2.6:
  213. - Runtime цикл без генерации ответа: ~120-450 ms
  214. - Runtime цикл с генерацией ответа: ~0.9-3.5 s (обычно API-bound)
  215. - Навигация в канал при активной сессии: ~1.5-6 s
  216. - Первая инициализация нового профиля: до ручного логина пользователя
  217.  
  218. Данные и индексы:
  219. - Инициализация chatlog/index при старте: O(n)
  220. - Поиск по индексам/ключам: около O(log n) при корректной структуре индекса
  221. - Dedupe на видимых сообщениях: O(k), где k = количество видимых сообщений
  222.  
  223. Факторы просадки:
  224. - Частые DOM-изменения Discord
  225. - Слишком агрессивные тайминги polling
  226. - Медленные API-ответы модели
  227. - Рост chatlog без плановой ротации
  228.  
  229.  
  230. Зависимости
  231.  
  232. Базовые Python (см. pyproject.toml):
  233. - Python >= 3.11
  234. - openai
  235. - together
  236. - pydantic, pydantic-settings
  237. - python-dotenv
  238. - requests
  239. - pillow
  240. - faiss-cpu
  241. - sentence-transformers
  242. - numpy
  243.  
  244. Runtime/browser:
  245. - Selenium backend: selenium + chromedriver + Chrome/Chromium
  246. - Playwright backend: playwright + chromium (playwright install chromium)
  247.  
  248. Локальные компоненты:
  249. - Discord_Tools (внутрипроектный модуль)
  250. - Discord_Tools_Playwright (внутрипроектный модуль)
  251.  
  252.  
  253. Конфигурация backend
  254.  
  255. Ключевые переменные:
  256. - DT_ENGINE=selenium|playwright|pw
  257. - HEADLESS=true|false
  258. - PW_PROFILE_PATH=<path>
  259. - CHROME_BINARY_PATH=<path>
  260. - CHROMEDRIVER_PATH=<path> # Selenium only
  261.  
  262. Значения по умолчанию:
  263. - DT_ENGINE -> selenium
  264. - HEADLESS -> false
  265. - PW_PROFILE_PATH -> V2.6[2-mind]-Undetect/sessions/discord_profile_pw
  266.  
  267.  
  268. Логи и диагностика
  269.  
  270. Текущее состояние (реально существующие файлы):
  271. - cache/logs/debug_last_request.md
  272. - cache/logs/debug_discussion.md
  273. - cache/logs/debug_answer.md
  274. - cache/logs/seen_message_keys.txt
  275.  
  276. Рекомендуемая целевая схема логов (следующий этап):
  277. - cache/logs/runtime.log общий runtime-цикл и state transitions
  278. - cache/logs/errors.log исключения и stack traces
  279. - cache/logs/backend.log действия backend (navigate/send/read)
  280. - cache/logs/llm.log latency и параметры LLM-запросов
  281.  
  282. Важно: целевая схема выше пока частично не реализована отдельными файлами.
  283.  
  284.  
  285. Почему архитектура сделана так
  286.  
  287. Почему Playwright отдельным backend:
  288. - Selenium остается стабильным и уже покрывает существующие сценарии.
  289. - Playwright развивается параллельно без риска регрессий в production-потоке.
  290.  
  291. Почему persistent profile:
  292. - Сессия Discord сохраняется между рестартами.
  293. - Меньше ручной авторизации и меньше риск лишних login-flow коллизий.
  294.  
  295. Почему контракт backend:
  296. - AI-слой не должен знать о DOM-селекторах и браузерных деталях.
  297. - Упрощается замена/добавление backend без переписывания main loop.
  298.  
  299. Почему legacy facade сохраняется:
  300. - Позволяет мигрировать поэтапно, не ломая bbd6-v2.6.py одним коммитом.
  301.  
  302.  
  303. Ограничения текущей версии
  304.  
  305. - В Playwright backend react/edit/delete пока не завершены.
  306. - Контракт 1.0 частично представлен через legacy-методы; полная миграция на
  307. send_* naming запланирована как отдельный refactor.
  308. - При изменениях DOM Discord селекторы требуют актуализации в backend-коде.
  309.  
  310.  
  311. Roadmap (архитектурный)
  312.  
  313. Если проект масштабируется дальше, целевая декомпозиция:
  314. - interfaces/
  315. - backends/selenium
  316. - backends/playwright
  317. - models/
  318. - services/
  319. - repositories/
  320. - events/
  321.  
  322. Смысл: отделить runtime orchestration, backend adapters и доменные модели.
  323.  
  324.  
  325. Итог
  326.  
  327. v2.6 теперь документирован как система с versioned backend-контрактом,
  328. формальными типами и ошибками. Это снижает риск разлома интерфейса при
  329. добавлении новых операций (edit/delete/attachments) и готовит основу для
  330. Contract 2.0 без хаотичных миграций.
  331.  
Add Comment
Please, Sign In to add comment