플러그인
플러그인이 하는 일, 설치, 격리, 기본 플러그인.
플러그인이란
플러그인은 plugin.json 매니페스트가 있는 패키지입니다. 도구(MCP와 같은 모양), 화면 패널, 설정, 알림, 스킬, 이벤트를 선언합니다. 실행 방식은 둘 중 하나입니다.
- entry
- JavaScript 모듈입니다.
- process
- 어떤 언어로든 만든 프로그램이 표준 입출력의 JSON-RPC로 호스트와 대화합니다. OS 샌드박스가 켜져 있어야 실행되고, Windows에서는 지원하지 않습니다.
플러그인은 호스트 프로토콜 3을 요구한다고 선언합니다. 설치된 플러그인은 ~/.ave/plugins/<id>/ 에 있고, 켜진 목록은 registry.json 이 정합니다.
설치
마켓플레이스 탭이나 링크로 설치합니다. 링크는 확인 화면만 열고, 설치는 내가 확인한 다음에 일어납니다.
ave://install/<kind>/<name>@<source>
ave://uninstall/<kind>/<name>@<source>
ave://marketplace/add?url=<repository>개발 중인 플러그인은 패키징하지 않은 빌드를 AVE_DEV=1 로 실행한 뒤 설정 → 확장 설정 → 개발자 도구 → 로컬 폴더에서 설치로 올립니다.
격리와 네트워크
- 플러그인은 앱 밖의 별도 프로세스에서 돌고, 샌드박스가 켜져 있으면 그 안에서 돕니다.
- 위험도는 호출마다 호스트가 매기고, 플러그인이 낮출 수 없습니다.
- 네트워크는 networkAccess.allowedDomains 에 선언한 도메인(최대 16개)으로만 나갑니다. 호스트가 한 번에 한 홉씩 보내고 리디렉션마다 다시 검사합니다.
- 하나가 시작에 실패해도 나머지 플러그인은 계속 일하고, 실패한 플러그인을 부르면 실제 이유를 돌려줍니다.
기본 플러그인
- 로컬 인덱서
- 문서를 색인하고, 키워드(BM25)와 벡터 검색 결과를 순위 융합(RRF)으로 합쳐 대화에 가져옵니다. 플러그인 데이터는 ~/.ave/plugins/<id>/data 에 있습니다.
- 회의
- 마이크와 시스템 소리는 호스트가 받아 넘기고, 플러그인이 회의, 받아쓰기, 요약을 맡습니다.
알림과 제안
플러그인 알림은 내가 켠 것만 오고, 재알림 간격과 횟수 제한이 있습니다. 카드나 OS 알림으로 나타납니다. host:overlay 권한이 있는 플러그인은 대화를 제안할 수 있지만, 제안은 내가 받아들일 때까지 시작되지 않습니다.