Host · Chat
채팅 안 플러그인 패널
활성 플러그인이 사이드바에 노출됩니다. 각 플러그인은 하나의 검증된 manifest 로 UI 슬롯, 지침 Skill, 호출 가능한 Tool을 제공합니다. 호스트 코어는 plugin specific 코드를 직접 import 하지 않습니다.
번들 Skill
manifest
skills[] 항목이 검증된 SKILL.md 지침 번들을 설치합니다. 자연어 입력만으로 Tool을 암묵 호출하거나 preload하지 않습니다.ui[] 슬롯
plugin.json 의
ui[] 가 slot(sidebar/chat/popover/embedded)·kind(embedded-module/url)·entry·exportName·window 를 선언.Tools list
도구는 manifest
tools[] 에 정적 선언. 핸들러는 RuntimePlugin.handlers map. 도구 이름 정규식 ^[a-zA-Z_][a-zA-Z0-9_]*$.이름 규약 — 세 가지 namespace
- LLM 도구 이름:
^[a-zA-Z_][a-zA-Z0-9_]*$(src/plugins/runtime/manifest-validation.ts). 선두 숫자 / dash 불가. vendor 요구 사항 (OpenAI / Gemini / Claude 공통). - Skill / agent / session id: 별도 —
^[a-zA-Z0-9_-]+$(src/main/skill-store.ts). dash 허용. - 플러그인 id: 보통 kebab-case (예:
local-indexer,ms-graph). manifestid필드.
플러그인 도구는 매니페스트에서 옵니다
호스트는 각 플러그인을 자기 프로세스 안의 MCP 서버 로 띄우고, 그 서버가 내놓는 도구 목록을 읽어 Tool Registry 에 넣습니다. 서버는 플러그인 매니페스트를 그대로 투영해서 만들어지고 (
src/mcp/plugin-server-projection.ts), 배선은 부팅 단계에서 이뤄집니다 (src/mcp/plugin-loopback-manager.ts · src/boot/steps/plugin-runtime.ts).그 목록은 서버 세대 단위로 고정입니다
플러그인이 띄우는 서버는 목록이 바뀌면 알려주겠다 고 광고하지 않습니다 — 알림을 보낼 통로가 없어서
listChanged: false 로 내보냅니다 (src/mcp/plugin-server-projection.ts). 도구를 바꾸려면 플러그인을 다시 배포하고 서버를 다시 띄워야 합니다.외부 MCP 서버는 다릅니다 — 외부 서버는 목록 변경 알림을 보낼 수 있고, 받으면 호스트가 도구 목록을 다시 가져옵니다 (src/mcp/mcp-client.ts).