Agent Library
AI Agent용: 이 페이지의 Markdown 버전은 https://ankole.agentbull.com/ko-KR/docs/agent-library/index.md에 있습니다. 문서 색인은 https://ankole.agentbull.com/ko-KR/llms.txt에 있습니다.
Agent Library는 한 가지 질문에 대한 답이다: 이 Agent는 실제로 무엇을 할 수 있는가? Agent Library는 배포 인스턴스가 제공하는 Skill과 Agent Plugin의 카탈로그에, 특정 Agent에서 어떤 것이 켜져 있는지를 결정하는 Agent별 상태를 더한 것입니다. 이 페이지는 그 모델을 Ankole.AIAgent.Library의 실제 코드에 대응시킵니다.
핵심 속성을 먼저 명시합니다: Skill과 Plugin 자체는 파일시스템 번들이지 데이터베이스 행이 아닙니다. PostgreSQL은 활성화 상태, 레지스트리 의미론, 파일 관찰을 보관합니다 — 인스턴스 전체 기본값 위의 희소한 Agent별 재정의. 바이트와 버전은 인스턴스 라이브러리에 남고, 데이터베이스는 누가 무엇을 켰는지만 기록합니다.
두 종류의 Capability
라이브러리는 서로 관련되지만 구별되는 두 가지를 보관합니다:
- A Skill은
SKILL.md로 식별되는 파일시스템 번들입니다. Skill 이름은 소문자로 시작하고 문자로 시작하며 문자, 숫자,_,-만 사용하고 최대 64자다. Skill은builtin(앱 이미지에 포함되어app/library/skills에서 동기화) 이거나installed(워커가 볼 수 있는 스토리지 아래에 Agent가 설치) 중 하나입니다.agent_skills행은 활성화 상태, 소스 종류, 콘텐츠 해시, 동기화 시간을 기록합니다 — 명시적으로 파일 콘텐츠 테이블이 아닙니다. - An Agent Plugin은 표준 Codex Plugin 패키지에 Ankole의 선택적
workspace-template/초기화 디렉터리를 더한 것입니다. 패키지 바이트와 버전은 인스턴스 라이브러리에 살고, PostgreSQL은 희소한 Agent별 활성화 재정의만 저장합니다. Plugin 식별자는 Skill 이름과 같은 형식 규칙을 따릅니다.
둘은 연결되어 있다: Agent Plugin은 Skill을 담을 수 있고, Skill 행은 부모 활성화와 카탈로그 표시를 위해 agent_plugin_id를 기록합니다. 하지만 Agent Plugin 소속은 독립적인 메타데이터입니다 — Skill이 로드되는 방식은 바꾸지 않습니다.
활성화: 기본값, 그다음 재정의
Agent의 유효 Capability는 두 계층으로 카탈로그를 훑어 해석된다:
- 인스턴스 전체 기본값 — 각 Skill의
default_enabled와 운영자가 설정하는 전역 Plugin 기본값. - Agent별 재정의 — Skill 행의
enabled_override또는 한 Agent에 범위가 한정된 Agent Plugin 재정의.
해석 결과는 Capability 엔드포인트가 반환하는 effective_enabled 필드다: 기본값을 취하고, 재정의가 있으면 적용합니다. 재정의가 없는 Capability는 기본값을 상속하고, 재정의가 있는 Capability는 재정의를 따릅니다. 카탈로그는 256개 Plugin으로 한정되므로 해석은 저렴하게 유지되고 표면은 읽기 쉽게 유지됩니다.
이것이 Console의 Agent Library capabilities 라우트가 노출하는 모델입니다: 전역 기본값을 설정한 다음 Agent별로 좁히거나 넓힙니다.
Brain에서만 검색하는 Skill 발견
배포되는 standalone Skill이나 Agent Plugin member는 brain-recall-only: true를 선언할 수 있습니다. 배포되는 Skill은 하나의 전역 이름 공간을 공유하므로 Plugin 소속이 Skill 이름을 바꾸지 않습니다. Agent가 설치한 Skill은 이 모드에 참여하지 않습니다.
Agent Library는 전체 유효 Skill 집합을 Worker에 전달합니다. 일반 Skill은 모델에 표시되는 Skill 카탈로그에 들어갑니다. Brain에서만 검색하는 Skill은 skill_view로 로드할 수 있는 집합에 남지만 카탈로그에서는 제외됩니다. Library sweep은 이름, 설명, 태그만 lazyload-agent-skills/<skill-name>의 가벼운 Brain 레코드로 projection합니다. Skill 본문, 리소스, Agent별 교훈은 각각을 소유하는 파일 및 데이터베이스 경로에 남습니다.
projection은 인스턴스에서 공유되며 한 Agent가 Skill을 비활성화해도 삭제되지 않습니다. Brain query와 skill_view는 모두 해당 Agent의 현재 Plugin 및 Skill 유효 상태를 적용합니다. 따라서 비활성화된 레코드는 검색 슬롯을 차지하지 않고 로드할 수도 없습니다. 기능을 다시 활성화하면 기존 projection을 그대로 사용할 수 있습니다.
영구 Agent 문서와 Skill 교훈
Capability와 함께 라이브러리는 Agent 자신이 쓰는 문서와 Agent별 Skill 지침도 보관합니다.
- Durable Agent 문서는
mission,soul,design,confidentiality_policy이며, 컨테이너 테이블이 받아들이는 네 가지source_kind값입니다. 처음 두 개는 책임과 행동을 정의합니다.design은 시각 작업용 디자인 시스템을 저장합니다.confidentiality_policy는 Agent가 Brain에 지식을 쓸 때 audience를 선택하는 방법을 안내합니다. 이 문서들은agent_library_container_entries에 살며 콘텐츠 해시를 사용합니다. - Skill 교훈은
agent_skill_lessons의 본문을 직접 변경할 수 없는 의미적 행입니다. 각 행은 Agent 하나와 Skill 하나에 속하며 작성자, 증거, 리스 상태, 폐기 이력을 기록합니다. Dreaming은 증거에 기반한 리스 교훈을 작성합니다. 운영자는 리스가 없는 사람의 교훈을 추가하고 모든 교훈을 폐기할 수 있습니다.
Skill view는 Skill 파일을 읽고 전달 조건을 충족하는 교훈을 Agent-specific additions 아래에 표시합니다. 기본 SKILL.md는 바뀌지 않습니다. 증거, 재검토, 전달 규칙은 Skill 교훈을 참고하십시오.
동기화: 레지스트리 정직성 유지
Skill은 파일시스템 번들이므로 데이터베이스 레지스트리는 파일시스템을 추적해야 한다. 두 동기화 경로가 그 일을 한다:
- **
sync_builtin_skills**는app/library/skills트리를 builtin Skill 행과 조정하고, 무엇이 바뀌었는지, 콘텐츠 해시, Skill과 파일 수를 반환합니다. 앱 이미지에서 실행되므로 새 이미지는 다음 동기화에서 builtin Skill을 추가하거나 갱신할 수 있다. - **
sync_agent_skills**는 한 Agent의 설치된 Skill을 워커가 볼 수 있는 스토리지가 실제로 보여주는 것과 조정하고,replace_installed_skill_observations가 관찰된 파일 집합을 기록합니다. 스토리지에서 사라진 Skill은 레지스트리에 반영되고, 나타난 Skill은 포착됩니다.
동기화는 읽고 조정하는 것이지 밀어 넣고 기도하는 것이 아닙니다. content_hash가 동기화를 멱등으로 만든다: 같은 트리는 같은 해시를 만들고 실제 변경만 행을 쓴다.
운영자 표면
Console 페이지에서 이미 다룬 Console 라우트가 이 모델을 구동합니다. 특히 Capability 라우트:
| 메서드 | 경로 | 용도 |
|---|---|---|
GET |
/agent-library/capabilities |
기본값이 있는 전역 카탈로그 |
PUT |
/agent-library/agent-plugins/:id |
Plugin의 전역 기본값 설정 |
PUT |
/agent-library/skills/:id |
Skill의 전역 기본값 설정 |
GET |
/agents/:agent_uid/library-capabilities |
한 Agent의 유효 Capability |
PUT |
/agents/:agent_uid/library-capabilities/agent-plugins/:id |
한 Agent에 대한 Plugin 재정의 |
PUT |
/agents/:agent_uid/library-capabilities/skills/:id |
한 Agent에 대한 Skill 재정의 |
GET |
/agents/:agent_uid/library-documents |
Agent의 mission/soul/design/confidentiality policy 나열 |
PUT |
/agents/:agent_uid/library-documents/:document_kind |
문서 하나 설정 |
GET |
/agents/:agent_uid/skill-lessons |
활성 및 폐기된 Skill 교훈 목록 |
POST |
/agents/:agent_uid/skill-lessons |
사람의 Skill 교훈 추가 |
POST |
/agents/:agent_uid/skill-lessons/:lesson_id/retire |
Skill 교훈 폐기 |
/agents/:agent_uid/library-capabilities를 읽으면 Agent Skill 동기화가 트리거되므로 운영자가 보는 것은 현재 스토리지와 조정된 레지스트리이지 오래된 스냅샷이 아닙니다.
Agent Library가 아닌 것
마켓플레이스가 아니고 핫 로드 시스템도 아닙니다. Skill과 Plugin은 배포 인스턴스와 함께 제공되거나 워커가 볼 수 있는 스토리지에 설치되는 신뢰된 퍼스트 파티 번들입니다. 서드 파티 발견은 없고, 워커가 이미 제공하는 것 이상의 격리 장치는 없다. 데이터베이스는 Skill 바이트의 원천이 아닙니다 — 그 바이트는 파일시스템에 있고 레지스트리는 보이는 것만 추적합니다. 그리고 라이브러리는 모델의 tool이 정의되는 곳이 아닙니다. 운영자가 Agent가 turn에 가져올 수 있는 Capability를 결정하는 곳입니다. “enabled”에서 “실제로 호출됨”으로 넘어가는 일은 turn 시점에 Agent Computer Worker의 몫입니다.
다음 단계
- 라이브러리를 구성하는 라우트는 Console 페이지를 읽으세요.
- Agent별 작업 지침은 Skill 교훈을 참고하세요.
- turn 중에 활성화된 Skill을 실행하는 Worker는 Actor Runtime 페이지를 읽으세요.
- 라이브러리가 범위로 삼는 Agent Principal은 Principal과 AuthZ를 읽으세요.