跳到正文
GitHub·· 9 天前AI 评分34

CanvasDesk:用无限画布做可执行数学建模,实时计算 IT 服务与单位经济

danku13/CanvasDesk

AI 导读

CanvasDesk 是一个可视化数学建模环境,在无限画布上用计算节点搭建可执行模型,节点间连接传递数值并实时重算,内置排队论(mm1、mmc、erlang_c、Little 定律)与财务函数(npv、irr、cagr、cohort_ltv),支持单位自动换算和 45+ 模板。

正文

License: AGPL v3 CLA Web demo

Бесконечный канвас, на котором ИТ-сервисы, продукты и юнит-экономика считаются, а не рисуются. Соединяете ноды связями — значения проливаются по графу и пересчитываются на лету. Меняете один параметр — видите, что произойдёт с P&L, runway или пропускной способностью сервиса.

Это инструмент для тех, кто должен одновременно спроектировать систему, посчитать её и защитить расчёт перед командой, C-level или инвесторами — в одном месте, без раскидывания по Miro + Excel + Google Docs + PowerPoint.

→ Попробовать в браузере без установки: danku13.github.io/CanvasDesk/app/


Что это такое

CanvasDesk — это визуальная среда математического моделирования. На бесконечном зумируемом канвасе вы строите исполняемые модели из расчётных нод: текстовые заметки с формулами «человеческим языком» и готовые шаблоны (балансировщик нагрузки, кэш, очередь, CAC, LTV, runway, retention…).

Связи между нодами передают не просто «стрелочку», а значение. Подставили rps = 1000 в одну ноду — во всех связанных пересчитаются латентность, утилизация, потребность в репликах. Изменили churn на 1 процентный пункт — увидите дельту по LTV, runway и burn rate в таблице сравнения сценариев. Граф — направленный ацикличный (DAG), циклы блокируются, живой пересчёт — мгновенный.

В ядро встроена доменная математика: единицы измерения конвертируются автоматически (50 ms, 1000 rps, $10k/mo), есть формулы теории очередей (mm1, mmc, erlang_c, закон Литтла), финансовые функции (npv, irr, cagr, cohort_ltv). Не нужно писать формулы в Excel и синхронизировать их с диаграммой — диаграмма и есть формула.

ИИ-агент через MCP собирает модели по текстовому описанию и проверяет числа: «спроектируй сервис на 10k rps с кэшем и очередью» — агент раскладывает граф, подставляет эталонные значения, показывает узкие места.

Кому это нужно

Solution / Technical-архитектору — спроектировать сервис и понять, выдержит ли он нагрузку. Сколько реплик и воркеров нужно под 10k rps? Где узкое место при ×2? Что будет с P99-латентностью, если добавить кэш?

Продакт-аналитику и финансисту — посчитать юнит-экономику и понять, куда двигать метрики. Какой LTV при таком CAC? Что с runway, если churn упадёт на 1 пп? Когда ARPU окупит привлечение?

Продакт-оунеру и менеджеру — защитить бюджет и решения перед стейкхолдерами. Что если нагрузка удвоится? Где сломается P&L? Какой сценарий выбрать, если горизонт — 18 месяцев до profitability?

ИИ-ассистенту в петле с человеком — собрать модель по описанию за минуты, чтобы человек потом её исследовал и доработал. Агент строит граф, проставляет связи, проверяет корректность и подсвечивает риски.

Что можно сделать прямо сейчас

  • Открыть веб-версию без установки — danku13.github.io/CanvasDesk/app/. Тот же движок в браузере (нужен Chrome или Edge), загрузка около секунды.
  • Скачать готовый бинарь — GitHub Actions → CI → артефакты сборки (Windows x64, Linux, macOS universal). Не нужно ничего компилировать.
  • Открыть эталонную схему — галерея в приложении и в репозитории: unit economics, capacity service, project budget, what-if сценарии. Покрутить параметры и посмотреть, как пересчитывается downstream.
  • Использовать 45+ встроенных шаблонов — палитра слева или кольцевое меню: инфраструктура, юнит-экономика, продуктовая аналитика.
  • Запустить what-if — подмените строку расчёта и увидите дельты по всему графу; сравните до 3 сценариев таблицей.
  • Подключить ИИ-агента — canvasdesk mcp в конфиге AI-клиента, и агент собирает модели, проверяет числа, ищет узкие места.

Как это работает

Формулы как текст. В любой заметке пишете rps = 1000, latency = 50 ms, cost = rps * $0.01. Единицы конвертируются, переменные протекают сверху вниз, как в Numi.

Связи передают значения. Соединили ноду-источник с нодой-приёмником — значение выхода подставилось в параметр входа. Меняется источник — пересчитывается весь downstream.

Готовые шаблоны. Не нужно с нуля собирать балансировщик, кэш, очередь или формулу LTV — берёте из палитры, подставляете свои числа.

Доменная математика в ядре. Erlang-C для контакт-центров, теория очередей для сервисов, NPV/IRR/CAGR для финансов — встроено, не нужно тащить библиотеки.

Живой пересчёт и undo. Всё пересчитывается мгновенно, любая правка откатывается в один шаг. Что-if сценарии не портят базовую модель — сравнили, выбрали лучший, применили.

Примеры использования

«Выдержит ли сервис 10k rps?» — собираете граф из шаблонов: балансировщик → API-шлюз → очередь → воркеры → БД. Подставляете rps, видите утилизацию каждого узла, индикатор узкого места (ρ ≥ 1) подсвечивается красным. Добавляете кэш — пересчёт, видите, где разгрузилось.

«Что с runway, если churn упадёт на 1 пп?» — открываете эталонную схему unit economics, в what-if подменяете churn, видите дельту по LTV, MRR, runway в таблице сравнения. Экспортируете сценарий для инвесторов.

«Где сломается P&L при ×2 нагрузки?» — дублируете граф, удваиваете rps, видите, какие статьи раздуются (инфраструктура, поддержка), где маржа уходит в минус. Защищаете решение перед C-level таблицей «было → стало».

«Спроектируй MVP Instagram» — пишете агенту, он раскладывает граф: пользователи → retention → DAU → нагрузка на storage/CDN → cost. Проверяете числа, докручиваете, идёте к инвесторам с моделью, а не с презентацией.

Установка и запуск

Веб-версия — danku13.github.io/CanvasDesk/app/. Нужен Chrome или Edge (WebGPU). Firefox — экспериментально.

Готовый бинарь — на странице GitHub репозитория: Actions → CI → артефакты build-<os>. Windows x64, Linux, macOS universal2 (.app).

Сборка из исходников (нужен Rust 1.80+):

cargo build --workspace --release
cargo run -p canvas-app --release -- path/to/file.canvas
cargo run -p canvas-app --release -- --stress 5000    # нагрузочная сцена
canvasdesk mcp                                         # MCP-посредник для AI-клиентов

Инструкции по платформам — в документации.

Возможности канваса

  • Бесконечный канвас: панорамирование, зум к курсору, pinch, сетка
  • Текстовые заметки с markdown-форматированием (**жирный**, *курсив*, ==подсветка==) — совместимы с Obsidian
  • Файловые карточки с системными тамбнейлами
  • Миникарта, полнотекстовый поиск, undo/redo глубиной 50
  • Группировка нод, ручной resize, палитра цветов
  • 7 встроенных тем (tokyo-night, dracula, nord, gruvbox, catppuccin, solarized…)
  • Режим «вместо рабочего стола» на Windows
  • Автосейв с debounce и .bak-копией
  • Производительность: 5000 нод при 60 fps

Стек

Rust · wgpu (WebGPU) · winit · cosmic-text · rstar (spatial index) · rusqlite · serde · MCP-протокол. UI-стек — собственный: слои поверхностей, компонентный кит и layout-движок FlexLayoutEngine (подмножество CSS Flexbox/Grid: auto/minmax-треки, sticky, rotate, z-index) без внешних layout-зависимостей. Один бинарь — весь стек: GUI + MCP-посредник для AI-клиентов.

Статус

Канвас, рендер, заметки, связи, миникарта, поиск, undo, MCP, Numi-движок, поток значений, 45 шаблонов, what-if, ИИ-агент, веб-версия — работают и активно используются. Windows — полная функциональность; Linux и macOS — канвас и редактирование, платформенные фичи (drag-drop из файлового менеджера, MCP через Unix-сокеты) закрываются по плану. Проект в активной разработке, сейчас — этап проверки востребованности: ищем первые 5 внешних пользователей, которые сами построят модель и вернутся к ней второй раз.

Подробности — в спецификации, пользовательской документации и дорожной карте.


Лицензия и правила игры

Copyright © 2026 danku13. Проект распространяется под GNU AGPLv3. Модель простая: код бесплатный и открытый — навсегда; судьба проекта (включая лицензию) — в руках владельца.

💚 Код бесплатен Весь код — под GNU AGPLv3: свободно используйте, изучайте, изменяйте и распространяйте. Никаких «open core» хитростей — сообщество получает весь проект целиком.
🔒 Коммерческие права у владельца Исключительные права на проект и право изменять его лицензию в будущем сохраняет владелец (danku13): можно выпустить коммерческую или проприетарную редакцию, применить dual-licensing. Код, уже выпущенный под AGPLv3, для сообщества от этого не закроется.
✍️ PR = подписание CLA Отправляя Pull Request, вы автоматически принимаете CLA: авторство вашего кода остаётся за вами, но право лицензировать вклад в будущем переходит владельцу. Это защищает проект от юридических рисков при смене лицензии.

FAQ

Можно ли использовать CanvasDesk в коммерческих целях?

Да — на условиях AGPLv3: коммерческое использование законно, пока соблюдаются условия лицензии (исходники изменений открываются под AGPLv3; для сетевых сервисов действует §13 AGPL — исходники версии, доступной пользователям, должны быть открыты). Разрешения владельца для этого не требуется.

Yes — under AGPLv3 terms: commercial use is legal as long as you comply with the license (your modifications stay under AGPLv3; for network services §13 applies).

Условия AGPLv3 мне не подходят (закрытая интеграция, OEM, white-label, SaaS без открытия исходников)

Напишите владельцу — обсудим коммерческую лицензию под ваш сценарий: Telegram @danku13 или danku13@yandex.ru.

Contact the owner to discuss a commercial license: Telegram @danku13 or danku13@yandex.ru.

На каких ОС работает?

Windows 10/11 x64 — полная функциональность. Linux и macOS — канвас, редактирование, поиск; платформенные интеграции (drag-drop из файлового менеджера, MCP через Unix-сокеты) в работе. Веб-версия — в Chrome/Edge (WebGPU), Firefox — экспериментально.

Есть ли веб-версия?

Да — danku13.github.io/CanvasDesk/app/. Тот же движок, что в десктопе, работает в браузере: ввод, кириллица, поиск, браузерное хранение. Загрузка около секунды.

Что происходит с моим вкладом?

Авторство — ваше (git-история сохранит), но по CLA владелец получает право лицензировать вклад на любых условиях в будущем. Правила участия — в CONTRIBUTING.md.

Поддерживается ли русский язык?

Интерфейс — русский и английский (переключается в настройках). Формулы и единицы измерения — универсальные.

Инвестиции и партнёрство?

Свяжитесь любым способом: Telegram @danku13, danku13@yandex.ru.

Companies and investors: reach out via Telegram @danku13 or danku13@yandex.ru.

来源:GitHub · github.com