惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
WordPress大学
WordPress大学
V
Vulnerabilities – Threatpost
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
罗磊的独立博客
O
OpenAI News
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
博客园_首页
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Attack and Defense Labs
Attack and Defense Labs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
雷峰网
雷峰网
Security Archives - TechRepublic
Security Archives - TechRepublic
Jina AI
Jina AI
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
博客园 - Franky
美团技术团队
L
Lohrmann on Cybersecurity
W
WeLiveSecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
月光博客
月光博客
腾讯CDC
N
News and Events Feed by Topic
P
Palo Alto Networks Blog
量子位
U
Unit 42
Schneier on Security
Schneier on Security
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
I
Intezer
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Full Disclosure
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Privacy International News Feed
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
D
Docker
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 聂微东
Martin Fowler
Martin Fowler
小众软件
小众软件

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Парадокс Open-Source: Единственный способ победить корпорации — раздать свой код бесплатно
Артем · 2026-06-17 · via Все публикации подряд на Хабре

Средний

10 мин

491

Вступление: Финал эксперимента и ответ скептикам. Как мы с ИИ написали Open-Source убийцу SaaS-ботов на 280 000 строк кода, и почему я отдаю его даром.

В своих прошлых статьях я рассказывал, как научился использовать ИИ вместо команды сеньоров («Почему для одних ИИ — гений, а для других — идиот») и почему классические венчурные миллионы сегодня только тормозят разработку из-за бюрократии и потери контекста («Парадокс инвестиций: Почему $1,000,000 и команда сеньоров убили бы мой стартап»).

В комментариях к ним на меня вылили ушат холодного и вполне обоснованного скепсиса. Мне писали: «Теория про ИИ — это круто, но где метрики? Кому нужен твой пет-проект? Ты серьезно думаешь, что один, без бюджета, сможешь конкурировать с корпорациями, у которых миллионы долларов на маркетинг и огромный штат?».

И знаете что? Вы абсолютно правы. ©

Бороться в лоб с гигантами индустрии, пытаясь перебить их рекламные бюджеты — это чистое самоубийство для соло-разработчика. У меня нет миллионов на закупку трафика. Именно поэтому я принял единственное верное стратегическое решение: я не буду с ними конкурировать. Я просто убью их бизнес-модель.

А сделать это можно только одним способом — через Open-Source. Отдать людям бесплатно то, за что корпорации берут по $50-100 в месяц.

Сегодня финал моего эксперимента. И возможно, это один из самых масштабных публичных кейсов, когда не профессиональный разработчик (хотя конечно за последний год я подрос в этом плане) создал проект такого уровня в одиночку при помощи ИИ.

Я представляю вам DepthSight — полноформатную платформу для алгоритмического трейдинга. В ней более 280 000 строк кода, 1100+ автотестов, 600+ файлов, распределенная микросервисная архитектура и нативный ИИ-ассистент. Сегодня я полностью открываю её исходники (AGPL-3.0).

В комментариях к прошлой статье кто-то бросил тезис: «Да такое можно написать за выходные». Знаете, возможно, вы правы. В теории. Но теперь у нас есть практика. Я открываю исходники проекта на 280 000 строк, где 90% кода написала машина.

Я обращаюсь к сеньорам и архитекторам, которые писали мне, что ИИ способен только на “Hello World” и сниппеты. Вы можете открыть репозиторий прямо сейчас. Найдите архитектурные дыры, покажите, где нейронка написала бредовый алгоритм, разнесите мой код в пух и прах. Я буду только рад, если вы докажете мне, что человек всё ещё незаменим. Но если этот код работает и держит нагрузку… тогда нам всем есть о чём подумать.

Боль индустрии: Архитектурный абсурд SaaS

В Web3 все помешаны на безопасности (аппаратные кошельки, seed-фразы в сейфах), но при этом трейдеры совершенно спокойно отдают API-ключи с правом торговли от счетов на миллионы долларов сторонним закрытым SaaS-сервисам (типа 3Commas, Veles или Bitsgap). Утечка базы данных такого сервиса — это не просто слив email-ов, это прямой путь к потере депозитов.

Вторая проблема — примитивность. За абонентскую плату вам продают тупую DCA-сетку, которая слепо покупает каждое падение цены на 1%, даже если рынок летит в пропасть на огромных объемах.

Моей целью было создать Self-Hosted SaaS «в коробке». Платформу, которая ставится на ваш личный сервер, где ключи хранятся в вашем зашифрованном Postgres, но логика которой превосходит любые платные аналоги.

Visual Strategy Editor

Visual Strategy Editor

Отказ от спагетти: Умные сетки и Иерархия

Сразу было решено отказаться от классических нодовых редакторов. Ноды неизбежно превращаются в “лапшу” из связей, в которой невозможно найти ошибку.

Вместо этого DepthSight использует строгую иерархическую структуру:

  1. Filters (Фильтры) — глобальные запреты (например, не торговать в Азиатскую сессию или если Биткоин падает).

  2. Entry Conditions (Условия) — логические контейнеры (AND/OR/Senior Timeframe).

  3. Management (Управление) — поведение после входа.

Киллер-фича: В отличие от обычных ботов, в DepthSight шаг усреднения сетки (DCA) можно привязать к любому блоку. Вы можете сделать так, чтобы бот усреднял позицию только если цена упала на 2% И в стакане появилась плотность лимитных ордеров больше $1,000,000. Динамические ссылки (Dynamic Links) позволяют прятать ордера за реальными деньгами маркет-мейкеров, а не за слепыми процентами.

Архитектура: Как это работает под капотом

Чтобы платформа выдерживала нагрузки и работала 24/7 в многопользовательском режиме, мы с ИИ спроектировали распределенную систему.

Стек проекта:

  • Бэкенд: Python 3.11+, FastAPI (REST + WebSockets).

  • Асинхронные задачи: Celery (для тяжелых бэктестов и генетической оптимизации).

  • Фронтенд: React / TypeScript + Tailwind.

  • Базы данных: PostgreSQL (постоянное хранилище) + Redis (стейт, Pub/Sub, квоты).

DepthSight Architecture Diagram

DepthSight Architecture Diagram

Эволюция коннектора: От самописных сокетов к CCXT

Изначально я отказался от готовых библиотек и написал прямой адаптер к Binance через aiohttp и нативные вебсокеты, чтобы выжать максимум скорости для скальпинга. Но по мере роста проекта и добавления новых бирж (Bybit, OKX, Bitget) поддерживать зоопарк нативных коннекторов в одиночку стало невозможно. Я принял решение переписать ядро исполнения (Executor) на базе библиотеки ccxt. Да, это стоило нам пары миллисекунд задержки, но взамен мы получили унифицированный интерфейс для подключения любой из десятков бирж, поддерживаемых CCXT, что критически важно для масштабирования платформы.

Инженерная магия: Market Data Fan-out

Одна из главных проблем торговых платформ — жесткие лимиты бирж на количество WebSocket-соединений (Rate Limits). Если 50 пользователей запустят ботов на паре BTC/USDT, и каждый откроет свой сокет к бирже — ваш сервер забанят по IP за пару минут.

DepthSight решает это через паттерн Market Data Fan-out. Работает один центральный сервис (market_data_service.py), который собирает тики и через Redis Pub/Sub раздает их всем изолированным worker-контейнерам.

# market_data_service.py
import redis.asyncio as redis_asyncio
from bot_module.exchanges import create_exchange_executor

class MarketDataService:
    def _get_consumer(self, exchange_id: str) -> DataConsumer:
        """Динамически создает коннектор на базе CCXT для нужной биржи."""
        if exchange_id not in self.consumers:
            # Универсальный экзекьютор под любую биржу
            futures_executor = create_exchange_executor(
                exchange=exchange_id,
                api_key="", api_secret="",
                session=self.session,
                market_type="futures_usdtm"
            )
            consumer = DataConsumer(
                executor=futures_executor,
                market_data_mode="direct",
                market_data_publish_callback=self._publish_market_payload
            )
            self.consumers[exchange_id] = consumer
        return self.consumers[exchange_id]

    async def _publish_market_payload(self, payload: Dict[str, Any]) -> None:
        """Единственное WebSocket-соединение получает данные от CCXT 
        и рассылает их воркерам через Redis Pub/Sub."""
        stream_key = payload.get("stream_key")
        channel = f"depthsight:market_data:events:{stream_key}"
        
        # Публикуем тик в канал. Ботам больше не нужно стучаться на биржу.
        await self.redis.publish(channel, json.dumps(payload))

Это решение позволяет масштабировать платформу горизонтально, обслуживая сотни ботов с нулевой дополнительной нагрузкой на биржу.

ИИ на уровне ядра: Защита от галлюцинаций и ИИ-Оракул

Пользователю не обязательно собирать стратегии руками. Он может описать логику текстом или просто загрузить скриншот графика из TradingView, и встроенный AI Copilot сам распознает паттерны и соберет рабочую стратегию в редакторе.

Но как заставить LLM не галлюцинировать и отдавать рабочий код? Бэкенд жестко контролирует вывод нейросети через Pydantic:

# api/schemas.py
from pydantic import BaseModel, Field
from typing import List, Optional, Literal

class GenerateStrategyRequest(BaseModel):
    text_prompt: str = Field(..., description="Текстовое описание стратегии от пользователя.")
    current_config_json: Optional[Dict[str, Any]] = Field(
        None, description="Текущая конфигурация для модификации."
    )

class StrategyV2ConfigData(BaseModel):
    strategy_name: str = Field(default="VisualBuilderStrategy")
    symbol: str
    marketType: Literal["FUTURES", "SPOT"]
    filters: ConditionNode
    entryConditions: ConditionNode
    positionManagement: List[ManagementBlock]
    oracle_regime: Optional[int] = None
    use_ml_confirmation: Optional[bool] = False

# api/routes/ai.py
@ai_core_router.post(
    "/generate-strategy",
    response_model=schemas.ApiResponseData[schemas.StrategyV2ConfigData],
)
async def generate_strategy_from_text_ai_core_endpoint(
    request: schemas.GenerateStrategyRequest,
    current_user: models.User = Depends(get_current_user),
):
    # LLM (Gemini/OpenRouter) генерирует JSON.
    # Pydantic строго валидирует ответ через schemas.StrategyV2ConfigData
    generated_json = await ai_assistant.generate_strategy_json_from_prompt(
        request, current_user
    )
    
    # Плюс проверка прав пользователя (доступность блоков на его тарифе)
    enforce_strategy_plan_restrictions(generated_json, current_user)
    
    return {"data": generated_json}

ИИ-Оракул (Market Regime)

Помимо генерации, в платформу вшит ИИ-Оракул, обученный на GMM (Gaussian Mixture Models). В отличие от классических индикаторов, он не предсказывает “вверх” или “вниз”. Он предсказывает фазу рынка. Оракул оценивает дрейф сложности (Complexity drift) и скорость забывания (Memory) рынка, понимая, когда плавный флэт перерастает в “экстремальный шок”. Бот может автоматически закрыть все позиции, если Оракул зафиксирует резкую смену рыночного режима.

Federated Discovery Hub (Социальный слой)

Трейдинг в одиночку на закрытом сервере — это безопасно, но скучно. Поэтому я встроил в монорепозиторий Discovery Hub.

Это федеративная клиент-серверная модель. Ваша личная Self-hosted нода безопасно связывается с центральным хабом сообщества. Вы не передаете туда приватные ключи или балансы. Вы делитесь только логикой стратегий и графиками PnL при желании.

По сути, это TradingView для алготрейдеров: вы можете зайти в Хаб, посмотреть бэктесты и статистику чужой стратегии, и в один клик (Import) скопировать её в свой локальный редактор.

Discovery Hub Community

Discovery Hub Community

DevOps для чайников: Деплой одной кнопкой и OTA-обновления

Создать крутую архитектуру — это полдела. Главная проблема опенсорса в том, что обычному трейдеру сложно поднять у себя связку из Postgres, Redis, Celery, FastAPI и React. Если инструкция по установке занимает 5 страниц, проект обречен.

Поэтому я написал deploy.sh — универсальный скрипт развертывания для любой голой Ubuntu. Вам достаточно арендовать сервер (Vultr, DigitalOcean) за $20, зайти по SSH и вставить одну команду:

curl -fsSL https://raw.githubusercontent.com/DepthSight-Pro/DepthSight/main/deploy.sh | bash

Что делает скрипт:

  1. Ставит Docker, UFW (настраивает Firewall) и нарезает Swap-файл (чтобы сборка React не убила дешевый VPS).

  2. Автоматически генерирует все пароли (Postgres, Redis), JWT-секреты и ключ шифрования ключей (Fernet) и кладет их в .env. Вам не нужно ничего придумывать руками.

  3. Спрашивает ваш домен, поднимает Caddy Server и сам получает SSL-сертификат от Let’s Encrypt.

  4. (Опционально) Разворачивает ноду Bitcart для приема криптоплатежей.

OTA-обновления (Over-The-Air) из браузера

Еще одна проблема Self-Hosted — как пользователям получать новые фичи? Лезть в консоль и делать git pull?

Я реализовал автообновления прямо из веб-интерфейса. Когда вы нажимаете кнопку “Обновить” в браузере, бэкенд FastAPI (работающий в контейнере) не может сам обновить Docker. Поэтому он просто создает пустой файл-триггер data/.update_trigger в примонтированном volume.

При деплое на хост-машину прописывается cron-задача:

* * * * * root if [ -f /opt/depthsight/data/.update_trigger ]; then rm /opt/depthsight/data/.update_trigger && bash /opt/depthsight/update.sh; fi

Каждую минуту хост проверяет наличие файла. Если он есть — запускается update.sh, который делает git reset --hard, пуллит свежий код и пересобирает контейнеры. Для пользователя это выглядит как магия: нажал кнопку в UI, попил кофе — бот обновился до последней версии с GitHub.

Монетизация Open-Source и Лицензия

Наверное, у людей далёких от разработки опенсорс может возникнуть вопрос: “Зачем ты отдаешь систему такого уровня бесплатно? В чем подвох?”

Буду предельно откровенен, благотворительностью я не занимаюсь.

Я выбрал лицензию AGPL-3.0. Она позволяет вам абсолютно бесплатно поднимать платформу для себя. Но она юридически обязывает любую компанию, которая решит сделать на базе моего кода закрытый коммерческий SaaS, открыть свои доработки сообществу.

Как я планирую зарабатывать? Недавно DepthSight получил статус официального брокера-партнера биржи Bybit. Я вшил свой Broker ID прямо в код экзекьютора. Когда ваш бот торгует на платформе, биржа отчисляет мне микро-часть своей комиссии. Для вас торговые условия, комиссии и спреды не меняются ни на цент — платит биржа.

Конечно, я не питаю иллюзий. Это Open-Source. Любой программист может зайти в исходники, найти строку с Broker ID и удалить её. Кто-то даже может попытаться спиратить проект и поднять свой закрытый сервис, наплевав на AGPL. Это неизбежные издержки открытого кода.

Но я делаю ставку на здравомыслие. Обычному пользователю нет смысла ковыряться в коде ради копеек (которые все равно достанутся бирже), рискуя сломать автообновления.

Мишени для код-ревью: за что меня уволили бы из корпорации

Я знаю, что эту статью читают суровые архитекторы. И прежде чем вы откроете репозиторий, чтобы доказать несостоятельность ИИ, я сам дам вам координаты главных мишеней.

Писать код с ИИ — это как ехать на спорткаре с завязанными глазами. Скорость огромная, но иногда ты сносишь заборы. Откуда вообще взялись эти 280 000 строк кода? Скептик скажет, что это AI-мусор. Но давайте посмотрим на структуру: ~30% — это сложный фронтенд на React с визуальным редактором, ~20% — это 1100+ тестов, еще ~25% занимают 2 бэктестера и реализация того же визуального редактора.

Но я признаю, в платформе есть серьезный технический долг. Это предел текущих возможностей ИИ (если его не контролировать жестко), который я осознанно оставил:

  1. “God Object” на 13 000 строк. Откройте controller.py. Это памятник тому, как нейросеть превращает код в монолит. Он весит 670 КБ. Я специально не стал его рефакторить перед релизом. Посмотрите, как машина пытается удерживать контекст такого объема.

  2. Отсутствие CI/CD Pipelines. В ближайшее время будет исправлено.

  3. Frontend Coupling. В React тоже есть “толстые” компоненты, например, CommunityHub.tsx на 120 КБ.

Скептик скажет, что это не production-ready. Я скажу: это цена скорости. Если кто-то из профессионалов готов зайти в GitHub, открыть Issue и показать, как правильно распилить этот контроллер по паттернам SOLID — я приму это с благодарностью. Потому что если бы я потратил еще пару месяцев на идеальный рефакторинг, проект бы никогда не увидел свет. Perfect is the enemy of good. Базовая архитектура правильная(?), безопасность (Fernet шифрование ключей, JWT) — на высоком(?) уровне. А рефакторинг 13 000 строк controller.py — это отличная задача на ближайшее будущее или если кто-то проявит желание помочь.

Заключение

Я прошел путь от не-разработчика до создателя инфраструктурного Enterprise-продукта. И всё это благодаря диалогам с Большими Языковыми Моделями. Мы живем в эпоху сингулярности соло-разработчиков, где один человек с правильной ментальной моделью и ИИ может создавать то, что раньше требовало отдела из 20 человек и миллионов венчурных инвестиций.

Если вы хотите запустить своего бота без абонентских плат — деплойте DepthSight (установка в одну команду).

А если вам понравилась архитектура, подход или вы просто поддерживаете идею децентрализации и Open-Source — переходите на GitHub и, пожалуйста, поставьте проекту звезду (Star) ⭐️.

Для одиночного разработчика это лучшая мотивация не бросать начатое.

🔗 GitHub: https://github.com/DepthSight-Pro/DepthSight

🔗 Официальный сайт: https://depthsight.pro

🔗 Telegram-канал проекта: https://t.me/depthsight

P.S. Проект в опенсорсе. Я обращаюсь к тем, кто занимается Highload и HFT. Я не профессиональный разработчик, и нейронки — не панацея от архитектурных уязвимостей. Меня волнуют две вещи: 1. Безопасность хранения ключей (насколько адекватно реализовано Fernet-шифрование в связке с текущей базой). 2. Эффективность Market Data Fan-out (выдержит ли текущая связка Redis Pub/Sub + CCXT одновременную работу 100 ботов в рамках одного сервера). Если вы видите дыры — заведите Issue на GitHub или разнесите меня в комментариях. Я готов учиться.