|
### 🎨 Запрос → Холст
Опишите любой интерфейс на естественном языке. Наблюдайте, как он появляется на бесконечном холсте в реальном времени со стриминговой анимацией. Изменяйте существующие дизайны, выбирая элементы и общаясь в чате.
|
### 🤖 Параллельные команды агентов
Оркестратор декомпозирует сложные страницы на пространственные подзадачи. Несколько AI-агентов работают над разными секциями одновременно — hero, features, footer — всё стримится параллельно.
|
|
### 🧠 Мультимодельный интеллект
Автоматически адаптируется к возможностям каждой модели. Claude получает полные промпты с thinking; GPT-4o/Gemini — без thinking; маленькие модели (MiniMax, Qwen, Llama) получают упрощённые промпты для надёжного вывода.
|
### 🔌 MCP-сервер
Установка в один клик в Claude Code, Codex, OpenCode, Kiro или Copilot CLI. Дизайн из терминала — чтение, создание и изменение файлов `.op` через любой MCP-совместимый агент.
|
|
### 📦 Дизайн как код
Файлы `.op` — это JSON: удобочитаемые, дружественные к Git, поддерживают diff. Переменные дизайна генерируют CSS custom properties. Экспорт кода в React + Tailwind или HTML + CSS.
|
### 🖥️ Работает везде
Веб-приложение + нативный десктоп на macOS, Windows и Linux — единое Rust-ядро, один самодостаточный бинарный файл, без браузерного движка. Ассоциация файлов `.op` — двойной клик для открытия.
|
|
### ⌨️ CLI — `op`
Управляйте инструментом дизайна из терминала. `op design`, `op insert` — пакетный DSL дизайна, манипуляция узлами. Ввод через pipe из файлов или stdin. Работает с десктопным приложением или веб-сервером.
|
### 🎯 Мультиплатформенный экспорт кода
Экспорт из одного файла `.op` в React + Tailwind, HTML + CSS, Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native. Переменные дизайна превращаются в пользовательские свойства CSS.
|
## Установка
**macOS (Homebrew):**
```bash
brew tap zseven-w/openpencil
brew install --cask openpencil
```
**Windows (Scoop):**
```powershell
scoop bucket add openpencil https://github.com/zseven-w/scoop-openpencil
scoop install openpencil
```
**Прямая загрузка для Linux / Windows:** [GitHub Releases](https://github.com/ZSeven-W/openpencil/releases) — `.exe` (Windows), `.AppImage` / `.deb` (Linux)
**Nix (Linux x86_64):**
```bash
nix develop
nix run . # запустить десктопное приложение
nix build .#openpencil # нативный web host + CanvasKit web bundle
nix build .#op-cli # CLI `op`
nix build .#prebuilt # использовать соответствующий upstream-архив десктопа
nix build .#prebuilt-cli # использовать соответствующий upstream-архив CLI
nix build .#web-server # нативный web server без GL + web bundle
nix build .#runtime-prebuilt # готовый runtime десктопа + CLI `op`
nix build .#web-sdk-packages # npm-архивы для web SDK
nix build .#appimage # переносимый десктопный AppImage
```
Flake использует закреплённый в `rust-toolchain.toml` Rust toolchain и сейчас
публикуется для `x86_64-linux`. Flake пока не создаёт пакет Debian; если нужен
`.deb`, используйте артефакты upstream-релиза. Выходы `prebuilt` используют
версию релиза и хеши, закреплённые в `nix/release-manifest.json`, независимо от
версии исходников workspace. После публикации релиза release workflow открывает
PR для обновления этого манифеста. До слияния PR готовые выходы продолжают
использовать предыдущий опубликованный релиз, а выходы, собираемые из исходников,
всегда используют текущий checkout.
**CLI (`op`):**
```bash
brew install zseven-w/openpencil/op
```
Или используйте скрипт установки (macOS / Linux):
```bash
curl -fsSL https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.sh | bash
```
Чтобы разрешить последнюю предварительную версию:
```bash
curl -fsSL https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.sh | OP_PRERELEASE=1 bash
```
Windows PowerShell:
```powershell
irm https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.ps1 | iex
```
Чтобы разрешить последнюю предварительную версию:
```powershell
$env:OP_PRERELEASE = "1"; irm https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.ps1 | iex
```
## Клонирование (с подмодулями)
```bash
git clone --recurse-submodules https://github.com/ZSeven-W/openpencil.git
# Уже клонировали? Сначала синхронизируйте, чтобы старые URL подмодулей получили изменения .gitmodules:
git submodule sync --recursive && git submodule update --init --recursive
```
В `vendor/` находятся три подмодуля. Все они публичны и загружаются по HTTPS (SSH-ключ не требуется): `jian` (GPU-Skia UI framework — widget/render/event), `casement` (форк winit) и `agent` (`agent-rs` — общий для OP и Zode межпродуктовый Rust agent runtime). `vendor/anthropic-agent-sdk` отслеживается непосредственно в репозитории и не является подмодулем.
## Быстрый старт
```bash
# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host)
bash scripts/start-web-rust.sh
```
Или запустить как десктопное приложение:
```bash
cargo run -p op-host-desktop
```
> **Требования:** [Rust](https://www.rust-lang.org/) (stable) для сборки продукта. [Bun](https://bun.sh/) >= 1.0 и [Node.js](https://nodejs.org/) >= 18 нужны только для веб-SDK в `packages/`.
### Docker
Тегированные Rust-релизы публикуют один образ web host. Устаревшие TypeScript-образы со встроенными AI CLI больше не публикуются.
| Образ | Содержит |
| --- | --- |
| `ghcr.io/zseven-w/openpencil-web:vX.Y.Z` | Rust web host, wasm bundle и ресурсы CanvasKit |
Веб-интерфейс показывает только встроенные профили агентов; инструменты Claude/Codex/OpenCode/Copilot CLI не входят в Docker-образы.
**Запуск:**
```bash
VERSION="$(scripts/workspace-version.sh)"
docker run -d -p 3100:3100 "ghcr.io/zseven-w/openpencil-web:v${VERSION}"
```
Затем откройте `http://localhost:3100/`.
**Локальная сборка:**
```bash
docker build -f Dockerfile.web-rust -t openpencil-web-rust .
docker run -p 3100:3100 openpencil-web-rust
```
## AI-нативный дизайн
**От запроса к UI**
- **Текст в дизайн** — опишите страницу и получите её на холсте в реальном времени со стриминговой анимацией
- **Оркестратор** — разбивает сложные страницы на пространственные подзадачи для параллельной генерации
- **Изменение дизайна** — выберите элементы и опишите изменения на естественном языке
- **Визуальный ввод** — прикрепляйте скриншоты или макеты в качестве референса для дизайна
**Поддержка нескольких агентов**
| Агент | Настройка |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| **Встроенный (9+ провайдеров)** | Выбор из предустановленных провайдеров с переключателем региона — Anthropic, OpenAI, Google, DeepSeek и другие |
| **Claude Code** | Без настройки — использует Claude Agent SDK с локальным OAuth |
| **Codex CLI** | Подключить в настройках агента (`Cmd+,`) |
| **OpenCode** | Подключить в настройках агента (`Cmd+,`) |
| **GitHub Copilot** | `copilot login`, затем подключить в настройках агента (`Cmd+,`) |
**Профили возможностей моделей** — автоматически адаптирует промпты, режим thinking и таймауты для каждого уровня моделей. Модели полного уровня (Claude) получают полные промпты; стандартного уровня (GPT-4o, Gemini, DeepSeek) — с отключённым thinking; базового уровня (MiniMax, Qwen, Llama, Mistral) — упрощённые промпты с вложенным JSON для максимальной надёжности.
**i18n** — Полная локализация интерфейса на 15 языках: English, 简体中文, 繁體中文, 日本語, 한국어, Français, Español, Deutsch, Português, Русский, हिन्दी, Türkçe, ไทย, Tiếng Việt, Bahasa Indonesia.
**MCP-сервер**
- Встроенный MCP-сервер (крейт `op-mcp`) — установка в один клик в Claude Code / Codex / OpenCode / Kiro / Copilot CLI
- Node.js не требуется — stdio-транспорт через десктопный бинарный файл (`--mcp