Architecture
HostApi — 플러그인이 호스트와 대화하는 단일 통로
LVIS의 모든 플러그인은 호스트의 내부 코드를 직접 만지지 않고, 호스트가 제공하는 한 줄짜리 통로 (HostApi) 만 통해 동작합니다. 이 통로가 있어서 호스트와 플러그인이 깔끔하게 격리되고, 플러그인은 언제든 교체 / 정지 / 검증할 수 있습니다.
단일 통로
정적 manifest 기반
프로세스 경계 도입 중
이 페이지의 톤
이 문서는 일반 사용자 가이드입니다. 호출 가능한 기능을 큰 분류로만 소개하고, 실제 시그니처 / 파라미터 / 코드 위치는 따로 다루지 않습니다.
호스트가 플러그인에 제공하는 능력
안전한 저장소
플러그인은 자기 영역 안에서만 파일을 읽고 쓸 수 있습니다. 다른 플러그인의 영역에는 접근할 수 없습니다.
사용자 설정 읽기 / 쓰기
각 플러그인은 자신만의 설정 키를 가질 수 있고, 사용자가 호스트 설정 화면에서 그 값을 직접 바꿀 수 있습니다.
Skill 키워드 등록
“회의록 정리”, “주차 신청” 같은 자연어 표현을 키워드로 등록해 두면, 사용자가 이런 말을 하면 자동으로 해당 플러그인이 추천됩니다.
이벤트 주고받기
플러그인끼리 “회의 끝났음”, “새 메일 도착” 같은 신호를 보내고 받을 수 있습니다. 호스트가 중간에서 전달합니다.
다른 플러그인 도구 호출
업무도우미가 캘린더 플러그인의 도구를 호출하는 등, 한 플러그인이 다른 플러그인의 능력을 빌릴 수 있습니다.
호스트 LLM 호출
플러그인이 자체 LLM 키를 가지지 않고도 호스트의 LLM 을 사용할 수 있습니다. 비용과 모델 선택은 호스트가 일괄 관리합니다.
외부 인증 창 열기
로그인 / OAuth 가 필요한 플러그인은 호스트의 별도 인증 창을 띄워 안전하게 토큰을 수령합니다.
사용자 확인 다이얼로그
위험한 작업을 수행하기 전, 호스트가 표준 형식의 확인 다이얼로그를 띄워 사용자 동의를 받습니다.
대화 띄우기
업무 진행 상황을 채팅 본문에 카드로 띄워 사용자가 다른 일을 막지 않게 합니다. 플러그인이 직접 그리는 오버레이 창은 없고, 호스트의 대화 본문이 유일한 표시 자리입니다.
비밀값 조회
API 키 같은 비밀값은 OS 보안 저장소에서 안전하게 가져옵니다. 디스크에 평문으로 저장되지 않습니다. 이 조회는 프로세스 경계를 넘을 수 있어야 하므로 비동기입니다 — 플러그인이 비밀값 묶음을 미리 받아 들고 있는 형태가 아니라, 필요할 때 한 건씩 호스트에 물어보는 형태입니다.
플러그인은 어디에서 실행되나
예전에는 모든 플러그인이 호스트와 같은 프로세스 안에서 실행됐습니다. 지금은 플러그인을 별도의 자식 프로세스에 가두는 경로 가 만들어져 있고, 그 경로로 실제로 실행되는 플러그인이 하나씩 늘어나는 중입니다. 오늘 시점에 이 경로를 타는 것은 work-assistant 한 개입니다 (src/plugins/isolation/out-of-process-plugins.ts).
- 어느 플러그인이 격리되는지는 플러그인이 정하지 않습니다. 설정 값도, 환경 변수도, 매니페스트 필드도 이 목록을 읽지 않습니다. 목록은 소스에 고정되어 있고, 바뀌려면 코드 변경이 리뷰를 통과해야 합니다.
- 자식이 실패하면 호출도 실패합니다. 같은 호출을 호스트 프로세스 안에서 다시 시도하는 우회 경로는 없습니다.
- 통로의 모양은 그대로입니다. 저장소 · 설정 · 이벤트 구독 · LLM 호출 · 인증 창 · 비밀값 조회 모두 경계 너머로 전달됩니다. 플러그인 입장에서 달라지는 것은 위 “비밀값 조회” 처럼 응답을 기다려야 하는 호출이 있다는 점입니다.
아직 전부는 아닙니다
나머지 플러그인은 여전히 호스트와 같은 프로세스에서 실행됩니다. 이 페이지는 “모든 플러그인이 격리되어 있다” 고 말하지 않습니다 — 경계가 만들어져 있고, 그 위로 플러그인을 한 개씩 옮기는 중이라는 뜻입니다.
단일 통로의 효과
- 플러그인은 호스트의 내부 구현을 알지 못합니다. 호스트가 내부를 바꿔도 플러그인은 영향을 받지 않습니다.
- 위험한 동작 (메일 발송, 외부 호출, 파일 삭제) 은 모두 같은 권한 흐름을 거치므로 사용자 입장에서 일관된 경험을 받습니다.
- 새 플러그인이 들어와도 호스트 코드를 고치지 않습니다. 플러그인 자체에 자기 능력을 선언해 두면 됩니다.
- 플러그인이 만들어내는 모든 작업은 호스트의 감사 기록에 남습니다.
호스트 내부에 직접 접근 금지
플러그인 코드가 호스트의 내부 모듈을 직접 가져다 쓰는 것은 LVIS 의 빌드 단계에서 차단됩니다. 모든 통합은 단일 통로 (HostApi) 호출 + 플러그인 매니페스트 선언으로만 가능합니다.