openpencil/README.fr.md
Kayshen Xu 71c09b3342 V0.4.2 (#46)
* feat(docker): add Docker support with multi-stage build and CI workflow

- Introduced a `.dockerignore` file to exclude unnecessary files from the Docker context.
- Added a `Dockerfile` for multi-stage builds, optimizing the application for production with a slim runtime.
- Created a GitHub Actions workflow (`docker.yml`) to automate the building and pushing of Docker images on version tag pushes.
- Enhanced the `connect-agent.ts` and `install-agent.ts` files to improve OpenCode binary resolution and installation commands.
- Updated the canvas components to support new polygon shape and related functionalities, including UI adjustments for shape tools and appearance settings.

This update significantly enhances the deployment process and expands the application's capabilities with Docker integration.

* feat(docker): enhance Dockerfile with multi-stage builds and CLI variants

- Updated the Dockerfile to include multiple image variants for different CLI tools, including Claude, Codex, OpenCode, and Copilot, alongside the base web app.
- Improved the build process by separating the build stage and production stage, optimizing the final image size.
- Added environment variables and commands for each variant to ensure proper execution in production.
- Enhanced the README files in multiple languages to document the new Docker deployment options and usage instructions.

This update significantly expands the Docker deployment capabilities, allowing users to choose the appropriate image variant based on their needs.
2026-03-17 21:07:50 +08:00

14 KiB

OpenPencil

OpenPencil

Le premier outil de design vectoriel open-source natif IA au monde.
Equipes d'agents concurrents • Design-as-Code • Serveur MCP intégré • Intelligence multi-modèles

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Français · Español · Deutsch · Português · Русский · हिन्दी · Türkçe · ไทย · Tiếng Việt · Bahasa Indonesia

Stars License CI Discord


OpenPencil — cliquez pour regarder la démo

Cliquez sur l'image pour regarder la vidéo de démonstration


Pourquoi OpenPencil

🎨 Prompt → Canevas

Décrivez n'importe quelle interface en langage naturel. Regardez-la apparaître sur le canevas infini en temps réel avec une animation en streaming. Modifiez des designs existants en sélectionnant des éléments et en conversant.

🤖 Équipes d'agents concurrents

L'orchestrateur décompose les pages complexes en sous-tâches spatiales. Plusieurs agents IA travaillent simultanément sur différentes sections — hero, fonctionnalités, pied de page — le tout en streaming parallèle.

🧠 Intelligence multi-modèles

S'adapte automatiquement aux capacités de chaque modèle. Claude obtient des prompts complets avec réflexion ; GPT-4o/Gemini désactivent la réflexion ; les modèles plus petits (MiniMax, Qwen, Llama) reçoivent des prompts simplifiés pour une sortie fiable.

🔌 Serveur MCP

Installation en un clic dans les CLI Claude Code, Codex, Gemini, OpenCode, Kiro ou Copilot. Designez depuis votre terminal — lisez, créez et modifiez des fichiers .op via tout agent compatible MCP.

📦 Design-as-Code

Les fichiers .op sont du JSON — lisibles par l'humain, compatibles Git, comparables. Les variables de design génèrent des propriétés personnalisées CSS. Export de code vers React + Tailwind ou HTML + CSS.

🖥️ Fonctionne partout

Application web + bureau natif sur macOS, Windows et Linux via Electron. Mises à jour automatiques depuis GitHub Releases. Association de fichiers .op — double-cliquez pour ouvrir.

Démarrage rapide

# Installer les dépendances
bun install

# Démarrer le serveur de développement sur http://localhost:3000
bun --bun run dev

Ou lancer en tant qu'application de bureau :

bun run electron:dev

Prérequis : Bun >= 1.0 et Node.js >= 18

Déploiement Docker

Plusieurs variantes d'images sont disponibles — choisissez celle qui correspond à vos besoins :

Image Taille Contenu
openpencil:latest ~226 Mo Application web uniquement
openpencil-claude:latest + Claude Code CLI
openpencil-codex:latest + Codex CLI
openpencil-opencode:latest + OpenCode CLI
openpencil-copilot:latest + GitHub Copilot CLI
openpencil-full:latest ~1 Go Tous les outils CLI

Exécuter (web uniquement) :

docker run -d -p 3000:3000 ghcr.io/zseven-w/openpencil:latest

Exécuter avec un CLI IA (ex. Claude Code) :

Le chat IA repose sur la connexion OAuth de Claude CLI. Utilisez un volume Docker pour conserver la session de connexion :

# Étape 1 — Connexion (une seule fois)
docker volume create openpencil-claude-auth
docker run -it --rm \
  -v openpencil-claude-auth:/root/.claude \
  ghcr.io/zseven-w/openpencil-claude:latest claude login

# Étape 2 — Démarrer
docker run -d -p 3000:3000 \
  -v openpencil-claude-auth:/root/.claude \
  ghcr.io/zseven-w/openpencil-claude:latest

Compiler localement :

# Base (web uniquement)
docker build --target base -t openpencil .

# Avec un CLI spécifique
docker build --target with-claude -t openpencil-claude .

# Complet (tous les CLIs)
docker build --target full -t openpencil-full .

Design natif IA

Du prompt à l'interface

  • Texte vers design — décrivez une page, elle est générée en temps réel sur le canevas avec une animation en streaming
  • Orchestrateur — décompose les pages complexes en sous-tâches spatiales pour une génération parallèle
  • Modification de design — sélectionnez des éléments, puis décrivez les modifications en langage naturel
  • Entrée vision — joignez des captures d'écran ou des maquettes pour un design basé sur des références

Support multi-agents

Agent Configuration
Claude Code Aucune configuration — utilise le Claude Agent SDK avec OAuth local
Codex CLI Connecter dans les Paramètres de l'agent (Cmd+,)
OpenCode Connecter dans les Paramètres de l'agent (Cmd+,)
GitHub Copilot copilot login puis connecter dans les Paramètres de l'agent (Cmd+,)

Profils de capacités des modèles — adapte automatiquement les prompts, le mode de réflexion et les délais d'attente par niveau de modèle. Les modèles de niveau complet (Claude) reçoivent des prompts complets ; le niveau standard (GPT-4o, Gemini, DeepSeek) désactive la réflexion ; le niveau basique (MiniMax, Qwen, Llama, Mistral) reçoit des prompts JSON imbriqués simplifiés pour une fiabilité maximale.

Serveur MCP

  • Serveur MCP intégré — installation en un clic dans les CLI Claude Code / Codex / Gemini / OpenCode / Kiro / Copilot
  • Détection automatique de Node.js — si non installé, bascule automatiquement vers le transport HTTP et démarre le serveur MCP HTTP
  • Automatisation du design depuis le terminal : lire, créer et modifier des fichiers .op via tout agent compatible MCP
  • Workflow de design en couchesdesign_skeletondesign_contentdesign_refine pour des designs multi-sections de plus haute fidélité
  • Récupération segmentée des prompts — chargez uniquement les connaissances de design nécessaires (schéma, layout, rôles, icônes, planification, etc.)
  • Support multi-pages — créer, renommer, réordonner et dupliquer des pages via les outils MCP

Génération de code

  • React + Tailwind CSS, HTML + CSS, CSS Variables
  • Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native

Fonctionnalités

Canevas et dessin

  • Canevas infini avec panoramique, zoom, guides d'alignement intelligents et magnétisme
  • Rectangle, Ellipse, Ligne, Polygone, Plume (Bézier), Frame, Texte
  • Opérations booléennes — union, soustraction, intersection avec barre d'outils contextuelle
  • Sélecteur d'icônes (Iconify) et import d'images (PNG/JPEG/SVG/WebP/GIF)
  • Auto-layout — vertical/horizontal avec gap, padding, justify, align
  • Documents multi-pages avec navigation par onglets

Système de design

  • Variables de design — tokens de couleur, nombre et chaîne avec références $variable
  • Support multi-thèmes — plusieurs axes, chacun avec des variantes (Clair/Sombre, Compact/Confortable)
  • Système de composants — composants réutilisables avec instances et substitutions
  • Synchronisation CSS — propriétés personnalisées auto-générées, var(--name) dans la sortie de code

Import Figma

  • Importer des fichiers .fig en préservant la mise en page, les remplissages, les contours, les effets, le texte, les images et les vecteurs

Application de bureau

  • macOS, Windows et Linux natifs via Electron
  • Association de fichiers .op — double-cliquez pour ouvrir, verrouillage d'instance unique
  • Mise à jour automatique depuis GitHub Releases
  • Menu d'application natif et boîtes de dialogue de fichiers

Stack technique

Frontend React 19 · TanStack Start · Tailwind CSS v4 · shadcn/ui
Canevas CanvasKit/Skia (WASM, accélération GPU)
État Zustand v5
Serveur Nitro
Bureau Electron 35
IA Anthropic SDK · Claude Agent SDK · OpenCode SDK · Copilot SDK
Runtime Bun · Vite 7
Format de fichier .op — basé sur JSON, lisible par l'humain, compatible Git

Structure du projet

src/
  canvas/          Moteur CanvasKit/Skia — dessin, sync, mise en page, guides, outil plume
  components/      Interface React — éditeur, panneaux, boîtes de dialogue partagées, icônes
  services/ai/     Chat IA, orchestrateur, génération de design, streaming
  services/figma/  Pipeline d'import binaire Figma .fig
  services/codegen Générateurs de code React+Tailwind et HTML+CSS
  stores/          Zustand — canevas, document, pages, historique, IA, paramètres
  variables/       Résolution des tokens de design et gestion des références
  mcp/             Outils serveur MCP pour l'intégration CLI externe
  uikit/           Système de kits de composants réutilisables
server/
  api/ai/          API Nitro — chat en streaming, génération, validation
  utils/           Enveloppes client Claude CLI, OpenCode, Codex, Copilot
electron/
  main.ts          Fenêtre, fork Nitro, menu natif, mise à jour automatique
  preload.ts       Pont IPC

Raccourcis clavier

Touche Action Touche Action
V Sélectionner Cmd+S Enregistrer
R Rectangle Cmd+Z Annuler
O Ellipse Cmd+Shift+Z Rétablir
L Ligne Cmd+C/X/V/D Copier/Couper/Coller/Dupliquer
T Texte Cmd+G Grouper
F Frame Cmd+Shift+G Dégrouper
P Outil plume Cmd+Shift+E Exporter
H Main (panoramique) Cmd+Shift+C Panneau de code
Del Supprimer Cmd+Shift+V Panneau des variables
[ / ] Réordonner Cmd+J Chat IA
Flèches Déplacer de 1px Cmd+, Paramètres de l'agent
Cmd+Alt+U Union booléenne Cmd+Alt+S Soustraction booléenne
Cmd+Alt+I Intersection booléenne

Scripts

bun --bun run dev          # Serveur de développement (port 3000)
bun --bun run build        # Build de production
bun --bun run test         # Lancer les tests (Vitest)
npx tsc --noEmit           # Vérification des types
bun run electron:dev       # Développement Electron
bun run electron:build     # Packaging Electron

Contribuer

Les contributions sont les bienvenues ! Consultez CLAUDE.md pour les détails d'architecture et le style de code.

  1. Forker et cloner
  2. Créer une branche : git checkout -b feat/my-feature
  3. Exécuter les vérifications : npx tsc --noEmit && bun --bun run test
  4. Commiter avec Conventional Commits : feat(canvas): add rotation snapping
  5. Ouvrir une PR contre main

Feuille de route

  • Variables de design & tokens avec synchronisation CSS
  • Système de composants (instances & substitutions)
  • Génération de design IA avec orchestrateur
  • Intégration du serveur MCP avec workflow de design en couches
  • Support multi-pages
  • Import Figma .fig
  • Opérations booléennes (union, soustraction, intersection)
  • Profils de capacités multi-modèles
  • Édition collaborative
  • Système de plugins

Contributeurs

Contributors

Star History

Star History Chart

Communauté

Discord Rejoindre notre Discord — Posez des questions, partagez vos designs, suggérez des fonctionnalités.