openpencil/README.ko.md
Kayshen Xu efaa56a9e4
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

13 KiB

OpenPencil

OpenPencil

세계 최초의 오픈소스 AI 네이티브 벡터 디자인 툴.
동시 에이전트 팀 • 디자인-애즈-코드 • 내장 MCP 서버 • 멀티 모델 인텔리전스

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

Stars License CI Discord


OpenPencil — click to watch demo

이미지를 클릭하여 데모 영상 보기


OpenPencil을 선택하는 이유

🎨 프롬프트 → 캔버스

자연어로 어떤 UI든 설명하세요. 무한 캔버스 위에 스트리밍 애니메이션과 함께 실시간으로 나타납니다. 요소를 선택하고 대화하여 기존 디자인을 수정할 수 있습니다.

🤖 동시 에이전트 팀

오케스트레이터가 복잡한 페이지를 공간적 서브태스크로 분해합니다. 여러 AI 에이전트가 히어로, 기능 소개, 푸터 등 각기 다른 섹션을 동시에 작업하며 모두 병렬로 스트리밍됩니다.

🧠 멀티 모델 인텔리전스

각 모델의 역량에 자동 적응합니다. Claude는 사고 모드가 포함된 전체 프롬프트를 받고, GPT-4o/Gemini는 사고 모드를 비활성화하며, 소형 모델(MiniMax, Qwen, Llama)은 안정적인 출력을 위해 단순화된 프롬프트를 받습니다.

🔌 MCP 서버

Claude Code, Codex, Gemini, OpenCode, Kiro 또는 Copilot CLI에 원클릭 설치. 터미널에서 디자인하세요 — MCP 호환 에이전트를 통해 .op 파일을 읽고, 생성하고, 편집할 수 있습니다.

📦 디자인-애즈-코드

.op 파일은 JSON입니다 — 사람이 읽을 수 있고, Git 친화적이며, diff가 가능합니다. 디자인 변수는 CSS 커스텀 프로퍼티를 생성합니다. React + Tailwind 또는 HTML + CSS로 코드 내보내기가 가능합니다.

🖥️ 어디서든 실행

웹 앱 + Electron을 통한 macOS, Windows, Linux 네이티브 데스크톱. GitHub Releases에서 자동 업데이트. .op 파일 연결 — 더블 클릭으로 열기.

빠른 시작

# 의존성 설치
bun install

# http://localhost:3000 에서 개발 서버 시작
bun --bun run dev

또는 데스크톱 앱으로 실행:

bun run electron:dev

필수 조건: Bun >= 1.0 및 Node.js >= 18

Docker 배포

여러 이미지 변형을 사용할 수 있습니다 — 필요에 맞는 것을 선택하세요:

이미지 크기 포함 내용
openpencil:latest ~226 MB 웹 앱만
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 GB 모든 CLI 도구

실행 (웹만):

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

AI CLI와 함께 실행 (예: Claude Code):

AI 채팅은 Claude CLI OAuth 로그인에 의존합니다. Docker 볼륨을 사용하여 로그인 세션을 유지하세요:

# 1단계 — 로그인 (최초 1회)
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

# 2단계 — 시작
docker run -d -p 3000:3000 \
  -v openpencil-claude-auth:/root/.claude \
  ghcr.io/zseven-w/openpencil-claude:latest

로컬 빌드:

# 기본 (웹만)
docker build --target base -t openpencil .

# 특정 CLI 포함
docker build --target with-claude -t openpencil-claude .

# 전체 (모든 CLI)
docker build --target full -t openpencil-full .

AI 네이티브 디자인

프롬프트에서 UI로

  • 텍스트-투-디자인 — 페이지를 설명하면 스트리밍 애니메이션으로 실시간으로 캔버스에 생성
  • 오케스트레이터 — 복잡한 페이지를 공간적 서브태스크로 분해하여 병렬 생성 지원
  • 디자인 수정 — 요소를 선택하고 자연어로 변경 내용을 설명
  • 비전 입력 — 스크린샷이나 목업을 참조로 첨부하여 디자인

멀티 에이전트 지원

에이전트 설정 방법
Claude Code 설정 불필요 — 로컬 OAuth로 Claude Agent SDK 사용
Codex CLI 에이전트 설정에서 연결 (Cmd+,)
OpenCode 에이전트 설정에서 연결 (Cmd+,)
GitHub Copilot copilot login 후 에이전트 설정에서 연결 (Cmd+,)

모델 역량 프로파일 — 모델 티어에 따라 프롬프트, 사고 모드, 타임아웃을 자동 조정합니다. 풀 티어 모델(Claude)은 완전한 프롬프트를 받고, 스탠다드 티어(GPT-4o, Gemini, DeepSeek)는 사고 모드를 비활성화하며, 베이직 티어(MiniMax, Qwen, Llama, Mistral)는 최대 안정성을 위해 단순화된 중첩 JSON 프롬프트를 받습니다.

MCP 서버

  • 내장 MCP 서버 — Claude Code / Codex / Gemini / OpenCode / Kiro / Copilot CLI에 원클릭 설치
  • Node.js 자동 감지 — 설치되지 않은 경우 HTTP 전송 모드로 자동 대체하고 MCP HTTP 서버를 자동 시작
  • 터미널에서 디자인 자동화: MCP 호환 에이전트를 통해 .op 파일 읽기, 생성, 편집 가능
  • 계층적 디자인 워크플로design_skeletondesign_contentdesign_refine으로 더 높은 충실도의 멀티 섹션 디자인
  • 세그먼트 프롬프트 검색 — 필요한 디자인 지식만 로드 (스키마, 레이아웃, 역할, 아이콘, 계획 등)
  • 멀티 페이지 지원 — MCP 도구를 통해 페이지 생성, 이름 변경, 순서 변경, 복제

코드 생성

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

기능

캔버스 & 드로잉

  • 팬, 줌, 스마트 정렬 가이드, 스냅 지원의 무한 캔버스
  • 사각형, 타원, 직선, 다각형, 펜(베지어), Frame, 텍스트
  • 불리언 연산 — 합치기, 빼기, 교차 (컨텍스트 도구 모음)
  • 아이콘 피커(Iconify)와 이미지 가져오기(PNG/JPEG/SVG/WebP/GIF)
  • 오토 레이아웃 — 수직/수평 방향, 갭·패딩·justify·align 지원
  • 탭 내비게이션이 있는 멀티 페이지 문서

디자인 시스템

  • 디자인 변수 — 컬러·숫자·문자열 토큰, $variable 참조 지원
  • 멀티 테마 지원 — 여러 테마 축, 각 축에 여러 변형(라이트/다크, 컴팩트/컴포터블)
  • 컴포넌트 시스템 — 인스턴스와 오버라이드를 가진 재사용 가능한 컴포넌트
  • CSS 동기화 — 커스텀 프로퍼티 자동 생성, 코드 출력에 var(--name) 사용

Figma 가져오기

  • 레이아웃, 채우기, 선, 효과, 텍스트, 이미지, 벡터를 유지하며 .fig 파일 가져오기

데스크톱 앱

  • Electron을 통한 네이티브 macOS·Windows·Linux 지원
  • .op 파일 연결 — 더블 클릭으로 열기, 단일 인스턴스 잠금
  • GitHub Releases에서 자동 업데이트
  • 네이티브 애플리케이션 메뉴와 파일 다이얼로그

기술 스택

프론트엔드 React 19 · TanStack Start · Tailwind CSS v4 · shadcn/ui
캔버스 CanvasKit/Skia (WASM, GPU 가속)
상태 관리 Zustand v5
서버 Nitro
데스크톱 Electron 35
AI Anthropic SDK · Claude Agent SDK · OpenCode SDK · Copilot SDK
런타임 Bun · Vite 7
파일 형식 .op — JSON 기반, 사람이 읽을 수 있는, Git 친화적

프로젝트 구조

src/
  canvas/          CanvasKit/Skia 엔진 — 드로잉, 동기화, 레이아웃, 가이드, 펜 툴
  components/      React UI — 에디터, 패널, 공유 다이얼로그, 아이콘
  services/ai/     AI 채팅, 오케스트레이터, 디자인 생성, 스트리밍
  services/figma/  Figma .fig 바이너리 가져오기 파이프라인
  services/codegen React+Tailwind 및 HTML+CSS 코드 생성기
  stores/          Zustand — 캔버스, 문서, 페이지, 히스토리, AI, 설정
  variables/       디자인 토큰 해석 및 참조 관리
  mcp/             외부 CLI 통합용 MCP 서버 툴
  uikit/           재사용 가능한 컴포넌트 킷 시스템
server/
  api/ai/          Nitro API — 스트리밍 채팅, 생성, 유효성 검사
  utils/           Claude CLI, OpenCode, Codex, Copilot 클라이언트 래퍼
electron/
  main.ts          윈도우, Nitro 포크, 네이티브 메뉴, 자동 업데이터
  preload.ts       IPC 브리지

키보드 단축키

동작 동작
V 선택 Cmd+S 저장
R 사각형 Cmd+Z 실행 취소
O 타원 Cmd+Shift+Z 다시 실행
L 직선 Cmd+C/X/V/D 복사/잘라내기/붙여넣기/복제
T 텍스트 Cmd+G 그룹화
F Frame Cmd+Shift+G 그룹 해제
P 펜 툴 Cmd+Shift+E 내보내기
H 핸드(팬) Cmd+Shift+C 코드 패널
Del 삭제 Cmd+Shift+V 변수 패널
[ / ] 순서 변경 Cmd+J AI 채팅
화살표 키 1px 이동 Cmd+, 에이전트 설정
Cmd+Alt+U 불리언 합치기 Cmd+Alt+S 불리언 빼기
Cmd+Alt+I 불리언 교차

스크립트

bun --bun run dev          # 개발 서버 (포트 3000)
bun --bun run build        # 프로덕션 빌드
bun --bun run test         # 테스트 실행 (Vitest)
npx tsc --noEmit           # 타입 검사
bun run electron:dev       # Electron 개발 모드
bun run electron:build     # Electron 패키징

기여하기

기여를 환영합니다! 아키텍처 세부 정보와 코드 스타일은 CLAUDE.md를 참고하세요.

  1. 포크 후 클론
  2. 브랜치 생성: git checkout -b feat/my-feature
  3. 검사 실행: npx tsc --noEmit && bun --bun run test
  4. Conventional Commits 형식으로 커밋: feat(canvas): add rotation snapping
  5. main 브랜치에 PR 생성

로드맵

  • CSS 동기화가 있는 디자인 변수 & 토큰
  • 컴포넌트 시스템(인스턴스 & 오버라이드)
  • 오케스트레이터를 통한 AI 디자인 생성
  • 계층적 디자인 워크플로가 포함된 MCP 서버 통합
  • 멀티 페이지 지원
  • Figma .fig 가져오기
  • 불리언 연산(결합, 빼기, 교차)
  • 멀티 모델 역량 프로파일
  • 공동 편집
  • 플러그인 시스템

기여자

Contributors

커뮤니티

Discord Discord에 참여하기 — 질문하기, 디자인 공유, 기능 제안.

Star History

Star History Chart

라이선스

MIT — Copyright (c) 2026 ZSeven-W