Skill Sync 객체 구조
개요
skillSync 객체를 사용하면 관리자가 외부 소스에서 Skills를 미러링할 수 있습니다. v1.3.13 버전에서는 GitHub가 지원되는 제공업체입니다.
GitHub Skill Sync는 구성된 저장소 경로에서 SKILL.md 파일과 해당 번들 파일을 읽어 source: "github"인 Skill로 저장하며, 이후 동기화 시 미러링된 행을 업스트림 저장소와 일치하도록 유지합니다.
예시
skillSync:
github:
enabled: true
intervalMinutes: 60
runOnStartup: true
sources:
- id: librechat-skills
owner: your-org
repo: your-skills-repo
ref: main
paths:
- skills
skillDiscoveryDepth: 2
token: '${GITHUB_SKILLS_TOKEN}'
# credentialKey: production-skills
# tenantId: your-tenant-id자격 증명
각 소스에 대해 token 또는 credentialKey 중 하나만 사용하고, 둘 다 사용하지 마십시오. token은 ${GITHUB_SKILLS_TOKEN}과 같은 환경 변수 참조여야 합니다. 선택한 리포지토리에 대해 읽기 전용 Contents 및 Metadata 권한이 부여된 GitHub fine-grained personal access token을 사용하십시오.
최상위 필드
skillSync.github
| Key | Type | Description | Example |
|---|---|---|---|
| github.enabled | Boolean | GitHub Skill Sync를 활성화하거나 비활성화합니다. | enabled: true |
| github.intervalMinutes | Number | scheduled GitHub Skill Sync가 실행되는 빈도입니다. 5분에서 35791분 사이여야 합니다. | intervalMinutes: 60 |
| github.runOnStartup | Boolean | 서버가 시작될 때 GitHub Skill Sync를 실행합니다. | runOnStartup: true |
| github.sources | Array of Objects | Skills를 스캔할 GitHub 저장소 및 경로입니다. GitHub Skill Sync가 활성화된 경우 필수입니다. |
기본값:
enabled:falseintervalMinutes:60runOnStartup:falsesources:[]
Source Fields
각 github.sources 항목은 하나의 저장소 소스를 구성합니다.
| Key | Type | Description | Example |
|---|---|---|---|
| id | String | 안정적인 고유 소스 ID입니다. 영문자나 숫자로 시작해야 하며, 영문자, 숫자, 밑줄 또는 하이픈만 포함할 수 있습니다. | id: librechat-skills |
| owner | String | GitHub 조직 또는 사용자 이름. | owner: your-org |
| repo | String | GitHub 저장소 이름. | repo: your-skills-repo |
| ref | String | 읽어올 Git ref, 브랜치, 태그 또는 커밋입니다. 기본값은 `main`입니다. | ref: main |
| paths | Array of Strings | 스캔할 저장소 경로입니다. 저장소 루트부터 스캔하려면 `.`을 사용하세요. | paths: ["skills"] |
| skillDiscoveryDepth | Number | `SKILL.md`를 검색할 각 구성된 경로 아래의 디렉터리 깊이입니다. 기본값은 `2`이며, 최대값은 `10`입니다. | skillDiscoveryDepth: 2 |
| token | String | GitHub 토큰을 포함하는 환경 변수 참조입니다. `credentialKey`와 상호 배타적입니다. | token: '${GITHUB_SKILLS_TOKEN}' |
| credentialKey | String | 관리자 Skill Sync 자격 증명 엔드포인트를 통해 관리되는 저장된 GitHub 자격 증명 키입니다. `token`과는 상호 배타적입니다. | credentialKey: production-skills |
| tenantId | String | 테넌트 격리가 활성화되었을 때 미러링된 Skills를 소유하는 선택적 테넌트 ID입니다. | tenantId: tenant-a |
Source Identity
id 필드는 미러 ID의 일부입니다. 이를 안정적으로 유지하세요. 소스를 이름이 변경된 저장소나 새로운 참조(ref)로 다시 지정하면 미러링된 Skill은 동일한 소스 ID에 계속 연결되지만, 소스 ID를 변경하면 새로운 미러가 생성됩니다.
tenantId가 설정되면, 동기화 읽기 및 쓰기는 해당 테넌트의 격리 컨텍스트 내에서 실행됩니다. tenantId는 소스 ID에 대해 불변(immutable)으로 취급해야 합니다. 나중에 이를 변경, 추가 또는 제거하면 이전에 미러링된 Skill이 이전 테넌트에 그대로 남게 됩니다.
동기화 동작
GitHub Skill Sync:
- 각 구성된 경로 아래의
SKILL.md파일을 검색합니다. SKILL.md본문, frontmatter 및 번들 파일을 가져옵니다.- source id, owner, repo, ref, skill path, commit SHA, blob SHA와 같은 소스 메타데이터를 저장합니다.
- 업스트림 파일이 변경될 때 미러링된 Skills를 업데이트합니다.
- 구성된 소스에서 제거된 미러링된 Skills 및 파일을 삭제합니다.
- GitHub 동기화가 한 번에 하나씩만 실행되도록 동기화 잠금(sync lock)을 사용합니다.
관리자 엔드포인트 (Admin Endpoints)
관리자 API는 GitHub Skill Sync 상태, 수동 실행 및 저장된 자격 증명 관리를 노출합니다:
| Key | Type | Description | Example |
|---|---|---|---|
| GET /api/admin/skills/sync/status | Endpoint | 활성화 상태, 일정 설정, 소스 상태, 자격 증명 존재 여부 및 최근 동기화 횟수를 반환합니다. | |
| POST /api/admin/skills/sync/run | Endpoint | 호출자가 필요한 관리자 Skills 권한을 가지고 있을 때 수동 동기화 실행을 시작합니다. | |
| PUT /api/admin/skills/sync/credentials/:credentialKey | Endpoint | 자격 증명 키에 대한 GitHub 토큰을 저장하거나 교체합니다. | |
| DELETE /api/admin/skills/sync/credentials/:credentialKey | Endpoint | 자격 증명 키에 저장된 GitHub 토큰을 삭제합니다. |
상태 읽기에는 관리자 액세스 권한과 Skills 읽기 권한이 필요합니다. 수동 실행 및 자격 증명 쓰기에는 플랫폼 수준의 Skills 관리 권한이 필요합니다.
이 가이드는 어떤가요?