Plugin manifest (openclaw.plugin.json)

모든 plugin은 plugin 루트openclaw.plugin.json 파일을 반드시 포함해야 합니다. OpenClaw는 이 manifest를 사용하여 plugin 코드를 실행하지 않고 설정을 검증합니다. 누락되거나 유효하지 않은 manifest는 plugin 오류로 처리되며 설정 검증을 차단합니다.

전체 plugin 시스템 가이드: Plugins.

필수 필드

{
  "id": "voice-call",
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {}
  }
}

필수 키:

  • id (string): 정식 plugin ID
  • configSchema (object): plugin 설정을 위한 JSON Schema (인라인)

선택적 키:

  • kind (string): plugin 종류 (예: "memory")
  • channels (array): 이 plugin이 등록하는 channel ID (예: ["matrix"])
  • providers (array): 이 plugin이 등록하는 provider ID
  • skills (array): 로드할 skill 디렉토리 (plugin 루트 기준 상대 경로)
  • name (string): plugin 표시 이름
  • description (string): 짧은 plugin 요약
  • uiHints (object): UI 렌더링을 위한 설정 필드 레이블/플레이스홀더/민감 플래그
  • version (string): plugin 버전 (정보용)

JSON Schema 요구 사항

  • 모든 plugin은 설정을 허용하지 않더라도 JSON Schema를 제공해야 합니다.
  • 빈 스키마도 허용됩니다(예: { "type": "object", "additionalProperties": false }).
  • 스키마는 런타임이 아닌 설정 읽기/쓰기 시점에 검증됩니다.

검증 동작

  • 알 수 없는 channels.* 키는 오류입니다. plugin manifest가 선언한 channel ID가 아닌 경우입니다.
  • plugins.entries.<id>, plugins.allow, plugins.deny, plugins.slots.*검색 가능한 plugin ID를 참조해야 합니다. 알 수 없는 ID는 오류입니다.
  • Plugin이 설치되었지만 manifest 또는 스키마가 손상되었거나 누락된 경우 검증이 실패하고 Doctor가 plugin 오류를 보고합니다.
  • Plugin 설정이 존재하지만 plugin이 비활성화된 경우 설정은 유지되고 Doctor + 로그에 경고가 표시됩니다.

참고 사항

  • Manifest는 로컬 파일 시스템 로드를 포함한 모든 plugin에 필수입니다.
  • 런타임은 여전히 plugin 모듈을 별도로 로드합니다; manifest는 발견 + 검증용입니다.
  • Plugin이 네이티브 모듈에 의존하는 경우 빌드 단계와 패키지 관리자 허용 목록 요구 사항을 문서화하세요(예: pnpm allow-build-scripts + pnpm rebuild <package>).