본문으로 건너뛰기

미니 프로그램 개요

미니 프로그램은 AISCouncil 플랫폼 내에서 직접 실행되는 샌드박스 웹 앱입니다. 기기 동기화 도구부터 시각적 페이지 빌더까지 커스텀 기능으로 플랫폼을 확장하며, 모두 안전하고 권한이 제어되는 환경에서 실행됩니다.

미니 프로그램이란?

미니 프로그램은 플랫폼 내의 샌드박스 iframe에서 실행되는 표준 HTML/CSS/JS 웹 앱입니다. 별도의 웹사이트로 이동하는 대신, 사용자는 사이드바의 섹션에서 미니 프로그램을 실행합니다. 앱이 채팅 영역을 대체하며 window.ais SDK를 통해 플랫폼 API에 접근할 수 있습니다.

미니 프로그램은 다음을 할 수 있습니다:

  • 채팅 메시지 읽기 및 보내기 - AI 모델과 상호작용
  • 로컬에 데이터 저장 - 앱별 격리된 저장소 사용
  • 봇 설정 접근 - 활성 모델 확인
  • 알림 및 대화상자 표시 - 플랫폼 UI 통해
  • 사용자 정보 읽기 - 개인화를 위해
  • 훅 등록 - 플랫폼 동작 확장

작동 방식

+---------------------------+
| AISCouncil |
| (호스트 페이지) |
| |
| +---------------------+ |
| | 샌드박스 iframe | |
| | (null origin) | |
| | | |
| | window.ais SDK | |
| | | | |
| +---|------------------+ |
| | postMessage |
| v |
| 메시지 브리지 |
| (권한 확인) |
| (메서드 디스패치) |
+---------------------------+
  1. SDK 주입 -- 미니 프로그램이 실행되면 플랫폼은 샌드박스 iframe을 생성하고 앱 코드 이전에 window.ais SDK(~2 KB)를 <script> 프리앰블로 주입합니다.

  2. postMessage 브리지 -- 모든 SDK 호출(ais.storage.get(), ais.chat.send() 등)은 postMessage를 통해 호스트 페이지로 전송됩니다. 호스트는 호출 앱의 권한을 검증하고 적절한 플랫폼 모듈로 요청을 디스패치합니다.

  3. 응답 -- 결과는 postMessage를 통해 iframe으로 다시 전송되며, SDK가 해당 Promise를 해결합니다.

보안 모델

미니 프로그램은 엄격한 보안 샌드박스에서 실행됩니다:

보호 기능방식
Null originsandbox="allow-scripts allow-forms" -- allow-same-origin 없음, iframe이 null origin을 가짐
부모 DOM 접근 불가호스트 페이지의 DOM, localStorage, 쿠키를 읽거나 수정할 수 없음
호스트 origin으로 네트워크 접근 불가aiscouncil.net으로 동일 origin 요청을 할 수 없음
권한 게이팅 API저장소 외 모든 SDK 메서드는 사용자의 명시적 권한 승인 필요
앱별 저장소 격리저장소 키에 mp:{app-name}: 접두사 추가 -- 앱이 서로의 데이터를 읽을 수 없음
콘텐츠 주소 캐싱진입 HTML은 설치 시점에 가져와 캐시되며, 실행 시점에 네트워크에서 로드되지 않음
경고

미니 프로그램은 여전히 외부 origin(자체 CDN, 타사 API 등)으로 네트워크 요청을 할 수 있습니다. allow-scriptsfetch()XMLHttpRequest를 허용하기 때문입니다. network:fetch 권한은 향후 플랫폼을 통한 프록시 요청을 위한 것이며, 아웃바운드 네트워크 접근을 제한하기 위한 것이 아닙니다.

권한 대화상자

사용자가 미니 프로그램을 설치할 때 권한 대화상자가 앱 이름, 설명, 요청하는 권한 목록을 표시합니다. 설치가 진행되려면 사용자가 승인해야 합니다. storage만 요청하는 앱(항상 허용됨)도 투명성을 위해 대화상자를 표시합니다.

다른 플랫폼과의 비교

기능aiscouncil 미니 프로그램WeChat 미니 프로그램Chrome 확장PWA
런타임샌드박스 iframe커스텀 WebView격리된 월드 + 서비스 워커전체 브라우저 탭
최대 크기5 MB (HTML) / 50 MB (번들)2-20 MB하드 제한 없음제한 없음
검토 필요아니오 (직접 설치)예 (필수)예 (Chrome 웹 스토어)아니오
오프라인 지원예 (설치 시 캐시)예 (서비스 워커)
플랫폼 APIwindow.ais SDKwx APIchrome API웹 API만
보안 모델Null-origin iframe커스텀 샌드박스콘텐츠 보안 정책동일 origin
배포URL, 파일 업로드, 레지스트리WeChat 스토어만Chrome 웹 스토어URL만

앱 찾기 및 설치

앱 스토어에서

  1. 왼쪽 사이드바의 아이콘 클릭 (또는 모바일에서 헤더의 앱 그리드 아이콘)
  2. 앱 패널 하단의 앱 스토어 섹션 탐색
  3. 원하는 앱 카드에서 설치 클릭
  4. 대화상자에서 권한을 검토하고 허용 클릭

URL로 (사이드로딩)

  1. 앱 패널에서 사이드로드 섹션 찾기
  2. 매니페스트 URL을 텍스트 필드에 붙여넣기
  3. 설치 클릭
  4. 권한을 검토하고 승인

파일 업로드로

  1. 앱 패널에서 앱 업로드 클릭
  2. .html 파일(단일 파일 앱) 또는 .ais 번들(ZIP 아카이브) 선택
  3. 권한을 검토하고 승인

자세한 내용은 앱 사이드로딩을 참조하세요.

앱 실행 및 종료

실행: 설치된 앱 카드에서 열기 버튼을 클릭합니다. 앱이 채팅 영역을 대체하고 메인 콘텐츠 패널을 차지합니다.

종료: 앱은 ais.close()를 호출하여 스스로 종료할 수 있으며, 사용자는 앱 제목 표시줄의 X 버튼을 클릭하여 채팅 화면으로 돌아갈 수 있습니다.

앱이 종료되면:

  • iframe이 제거되고 메시지 핸들러가 제거됨
  • 채팅 영역이 복원됨
  • 앱의 저장되지 않은 상태는 손실됨 (앱은 데이터 유지를 위해 ais.storage를 사용해야 함)

기본 제공 앱

플랫폼은 두 개의 기본 제공 미니 프로그램과 함께 제공됩니다:

기기 동기화

프로필, API 키, 설정을 기기 간에 동기화합니다. 세 가지 전송 방법을 지원합니다:

  • LAN 동기화 -- 동일한 네트워크의 기기 간 직접 연결
  • QR 코드 -- 코드를 스캔하여 기기 페어링
  • 인터넷 릴레이 -- 다른 네트워크의 기기를 위해 API를 통한 WebRTC 시그널링

권한: storage, config:read, auth:read, ui:toast, secrets:sync

앱 빌더

AI 콘텐츠 생성으로 시각적으로 웹 페이지를 빌드합니다. 템플릿을 선택하고, 활성 AI 모델을 사용하여 섹션을 편집하고, URL 또는 HTML 파일로 내보냅니다. 커스텀 슬러그로 bcz.co에 직접 게시합니다.

권한: storage, chat:read, chat:write, ui:toast, auth:read, pages:publish

다음 단계