GenOffice: 원본 파일을 바이트 단위로 보존하며 AI로 편집하는 오픈소스 오피스 스위트

GenOffice 소개

문서 작업에 AI를 붙이려 할 때 실무에서 가장 자주 부딪히는 벽은 모델 성능이 아니라 파일 그 자체입니다. .docx 를 다른 도구로 열어 고치고 저장하면 스타일 정의나 각주, 추적된 변경 이력 같은 정보가 조용히 사라지고, 같은 파일을 Word에서 다시 열었을 때 줄바꿈 위치가 틀어집니다. 협업 상대가 Microsoft Office를 쓰는 한 이 왕복은 피할 수 없고, 결국 "AI로 초안을 만들되 최종본은 원래 프로그램에서 다시 손보는" 이중 작업이 남습니다. 문서를 통째로 다시 그려서 저장하는 구조에서는 이 문제를 근본적으로 피하기 어렵습니다.

GenOffice는 이 지점을 파일 저장 방식으로 푸는 데스크톱 오피스 스위트입니다. 문서를 열면 원본을 해시로 보관해 두고, 편집기에서 실제로 손댄 문단만 OOXML 조각으로 다시 만들어 원본 document.xml 에 끼워 넣습니다. 건드리지 않은 블록은 원본 바이트 그대로 유지되고, 압축 파일의 나머지 항목도 그대로 복사되므로 Word에서 열었을 때 서식이 어긋날 여지가 줄어듭니다. 같은 원칙은 스프레드시트와 프레젠테이션에도 적용됩니다. 만든 곳은 Genspark를 서비스하는 Mainfunc이며, 개발팀은 이 프로젝트를 "세계 최초의 완전한 기능을 갖춘 오픈소스 AI 오피스" 라고 소개하고 있습니다.

구성은 워드프로세서, 스프레드시트, 프레젠테이션 편집기, PDF 편집기, 마크다운 편집기와 이들을 탭으로 감싸는 셸까지 여섯 개의 Electron 앱이며, 엔진 계층을 공유합니다. macOS와 Windows, Linux용 설치 파일이 모두 제공되고 최신 릴리즈는 2026년 8월 10일 공개된 v0.6.101 입니다. 본 게시물에서는 GenOffice가 파일을 다루는 방식, 앱별 구성과 AI 편집이 붙는 지점, 그리고 설치와 사용 시 확인해야 할 조건을 정리합니다.

AI를 나중에 붙인 편집기와 GenOffice의 차이

개발팀은 GenOffice를 "덧붙인 채팅 상자가 아니라 AI 편집을 일급 워크플로로 두고 만든" 도구로 설명합니다. 문서 편집기에 AI 패널을 붙이는 일반적인 구성과 비교하면 차이가 드러납니다.

항목 GenOffice AI 패널을 덧붙인 편집기
AI 편집 단위 블록 단위 편집에 스냅샷과 diff 제공 대화 결과를 통째로 붙여넣기
저장 방식 수정한 문단만 재생성, 나머지는 원본 바이트 유지 문서 전체를 다시 생성
파일 포맷 .docx, .xlsx, .pptx 원본 포맷을 직접 읽고 씀 자체 포맷을 거쳐 내보내기
PDF 편집 페이지 콘텐츠 스트림을 다시 써서 원본 글꼴 유지 가림용 주석을 덧씌우는 방식
에이전트 문서·워크북·슬라이드 상태를 대상으로 도구 호출 문서 맥락 없이 텍스트만 처리

표의 오른쪽 열은 개발팀이 문제로 지목한 구성이며, 실제 제품마다 구현은 다릅니다. 중요한 것은 GenOffice가 선택한 쪽입니다. 편집 결과를 문서에 반영할 때 diff와 스냅샷을 남기므로, AI가 고친 부분을 문단 단위로 확인하고 되돌릴 수 있습니다.

GenOffice는 누구에게 유용한가

Microsoft Office 파일을 주고받아야 하지만 라이선스 비용이나 클라우드 업로드가 부담스러운 환경에 가장 잘 맞습니다. 문서 편집 자체는 완전히 로컬에서 돌아가 파일이 기기를 떠나지 않으므로, 계약서나 내부 보고서를 다루는 작업에도 검토해 볼 만합니다. 다만 AI 기능은 Genspark 계정 로그인과 네트워크 연결을 전제로 하며, 사용자가 자기 모델 API 키를 넣는 구조가 아니라는 점은 미리 확인해야 합니다. 사내 모델만 쓰도록 강제된 환경이라면 현재 구성으로는 AI 기능을 그대로 쓰기 어렵습니다. 공식 홈페이지가 아직 알파 단계라고 밝히고 있으므로, 중요한 문서는 사본으로 먼저 시험해 보는 편이 안전합니다.

GenOffice를 구성하는 여섯 개의 앱

각 앱은 담당 포맷의 엔진을 따로 가지고 있고, 셸이 이들을 탭으로 묶습니다.

담당 구현
GenOffice Docs .docx 워드프로세서 문단 패치 방식의 왕복 처리, Word 배치를 재현하는 페이지 뷰, 추적된 변경·주석·스타일·수식·잉크 지원
GenOffice Sheets .xlsx 스프레드시트 Univer 코어 위에 자체 확장, Rust 사이드카(calamine + IronCalc)로 가져오기·내보내기, 피벗 테이블과 슬라이서
GenOffice Slides .pptx 프레젠테이션 자체 파싱·렌더링 엔진, 마스터와 레이아웃, HarfBuzz 기반 텍스트 셰이핑
GenOffice PDF .pdf 뷰어 겸 편집기 pdf.jspdf-lib 로 렌더링, PDFium wasm으로 콘텐츠 스트림 재작성
GenOffice Markdown .md 편집기 Tiptap 블록 편집기, 저장은 일반 마크다운 그대로
GenOffice 셸 스위트 셸 홈 화면, 다섯 편집기의 탭 호스팅, 테마와 자동 업데이트

스프레드시트와 프레젠테이션, PDF에서도 AI 패널이 같은 자리에 붙습니다. 문서 편집기가 블록 단위 편집과 diff를 제공한다면, 나머지 앱에서는 워크북이나 슬라이드, PDF의 상태를 대상으로 도구를 호출하는 에이전트로 동작합니다.

GenOffice의 docx 왕복 처리 구조

앞서 언급한 저장 방식을 개발팀은 저장소 문서에서 다음 흐름으로 정리하고 있습니다.

open docx ─► archive original by hash (never touched)
          ─► docx-engine parses word/document.xml top-level elements (w:p / w:tbl / …)
          ─► Block tree, each block anchored by docxIndex + original XML slice
          ─► Tiptap streaming editor (manual + AI editing, dirty tracking)
save      ─► dirty blocks → OOXML fragments (referencing existing styles only)
          ─► splice into original document.xml (untouched blocks keep original bytes)
          ─► repack zip; all other entries copied byte-for-byte

핵심은 블록마다 docxIndex 앵커와 원본 XML 조각을 함께 들고 있다는 점입니다. 편집기는 어떤 블록이 더러워졌는지(dirty) 추적하고, 저장 시점에 그 블록만 OOXML 조각으로 만들어 넣습니다. 이때 새 스타일을 정의하지 않고 원본에 있던 스타일만 참조하므로 스타일 목록이 오염되지 않습니다.

관련 엔진은 Electron에 의존하지 않는 순수 TypeScript 패키지로 분리되어 있습니다. packages/docx-engine 이 파싱과 바이트 단위 패치를 맡고, packages/pptx-enginepackages/pptx-render 가 프레젠테이션을, packages/agent-core 가 모든 앱이 공유하는 에이전트 루프와 스킬 조합을 담당합니다.

GenOffice의 AI 백엔드 구성

앱은 기기 코드(device code) 흐름으로 Genspark 계정에 로그인하며, 사용자가 모델 API 키를 직접 입력하거나 저장하지 않습니다. 모델 호출은 Genspark 프록시를 거쳐 Claude, GPT, Gemini 계열로 전달됩니다. 같은 계정이 웹·이미지 검색, 이미지 생성과 편집, 이미지·오디오·영상 분석, 음성 전사 같은 도구 엔드포인트도 함께 열어 주며, 에이전트 계층을 직접 확장하려는 경우 packages/ai-search 를 통해 접근할 수 있습니다.

문서 편집과 AI 기능의 경계는 분명합니다. 파일을 열고 고치고 저장하는 과정은 네트워크 없이 동작하지만, 에이전트와 검색, 이미지 도구는 로그인과 연결을 필요로 합니다.

GenOffice 설치 방법

macOS는 11 이상, Windows는 10 이상, Linux는 glibc 2.34 이상(Ubuntu 22.04, Fedora 35, RHEL 9 이후)을 요구합니다. 릴리즈 페이지에서 플랫폼에 맞는 파일을 내려받으면 되고, macOS와 Windows 설치 파일에는 서명이 되어 있습니다.

Linux는 배포판에 따라 방식이 갈립니다.

# Debian / Ubuntu 계열
sudo apt install ./genoffice_0.6.101_amd64.deb

# Fedora / RHEL 계열
sudo dnf install ./genoffice-0.6.101.x86_64.rpm

# openSUSE
sudo zypper install ./genoffice-0.6.101.x86_64.rpm

AppImage는 설치 없이 그 자리에서 실행합니다. FUSE 2 런타임이 필요하며 Ubuntu 24.04에서는 패키지 이름이 libfuse2t64 입니다.

chmod +x GenOffice-0.6.101.AppImage
./GenOffice-0.6.101.AppImage

소스에서 직접 빌드하거나 기여하려면 워크스페이스 스크립트를 사용합니다. Sheets 앱은 xlsx 사이드카를 컴파일하기 위해 Rust 툴체인(cargo)이 PATH에 있어야 합니다.

npm install
npm run fixtures     # 테스트용 .docx 픽스처 생성
npm test             # 엔진 + 앱 단위 테스트
npm run typecheck    # 전체 워크스페이스 tsc --noEmit
npm run dev          # 다섯 편집기와 셸을 Vite 개발 서버로 실행
npm run dev:docs     # 앱 하나만 실행

GenOffice의 라이선스

GenOffice는 Apache License 2.0으로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다. 예외가 하나 있는데, 향후 엔터프라이즈 모듈을 위해 비워 둔 ee/ 디렉토리는 별도의 GenOffice Enterprise License 를 따릅니다. 또한 GenOffice와 Genspark 이름과 로고는 Mainfunc, Inc.의 상표이며 Apache 2.0 라이선스가 상표 사용 권한까지 주지는 않으므로, 포크해서 배포한다면 자체 브랜딩을 사용해야 합니다.

번들된 런타임 의존성은 MIT, Apache-2.0, BSD-3-Clause, OFL 계열이고, 함께 들어가는 Liberation·Carlito·Caladea·Noto CJK 글꼴은 OFL 또는 Apache 라이선스를 따릅니다.

:framed_picture: GenOffice 데모 영상

:house: GenOffice 공식 홈페이지

:github: GenOffice 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

이 도구를 직접 설치해 사용해보셨다면, :pytorch:파이토치 한국 사용자 모임:south_korea: 회원들을 위해 경험이나 팁을 댓글로 남겨주세요! :folded_hands: