Dokümantasyon / Skill'ler
Skill'ler nasıl çalışır
Skill, bir işin nasıl iyi yapılacağını anlatan, markdown dosyalarından oluşan bir klasördür. Bu sayfada skill'lerin nerede tutulduğu, ajanlara nasıl ulaştığı ve hangisinin kime ait olduğu anlatılıyor.
Skill nedir
ivralo üç şeyi birbirinden ayrı tutar. Ajanlar incedir: her biri bir preset'ten kurulur. Preset bir anahtar, bir yetki kümesi ve tek cümlelik bir ipucundan ibarettir; kendine ait bir prompt'u yoktur. Yetenek, ajanların çağırdığı bir Python kütüphanesinde bulunur. Uzmanlık ise skill'lerde birikir: bir incident'ın nasıl okunacağı, bir çalışma kitabının nasıl kurulacağı ya da kırılan bir testin nasıl düzeltileceği.
Skill, içinde bir SKILL.md bulunan bir klasördür; isterseniz script'ler ve başvuru notları da ekleyebilirsiniz:
my-skill/
SKILL.md frontmatter (name, description) ve gövde
scripts/*.py ajanın run_skill_script ile çalıştırdığı script'ler
references/*.md yalnızca gerektiğinde okunan uzun notlar
Yalnızca SKILL.md içeren klasörler skill sayılır. Dosyanın biçimi Skill yazmak sayfasında anlatılıyor.
Ajan skill'i nasıl kullanır
Ajan bütün skill'leri baştan okumaz; yalnızca bir dizin görür: her skill'in adı ve açıklaması. Bir iş bir açıklamaya uyduğunda ajan o skill'in gövdesini açar. Başvuru dosyalarını ise yalnızca gövde onları gösteriyorsa okur. Yani bir skill'in kullanılıp kullanılmayacağını açıklaması belirler.
Her ajan bir skill'in talimatlarını ve başvuru notlarını okuyabilir. Ama hiçbiri skill'in script'ini doğrudan çalıştıramaz: script'ler yalnızca run_skill_script ile, Python worker'ında, ajanın çalıştırdığı diğer bütün Python kodlarıyla aynı korumalar altında çalışır.
İki raf
Skill'ler iki rafta tutulur ama tek bir raf gibi sunulur:
| Raf | Nerede | Neler bulunur |
|---|---|---|
| shipped | ana dizindeki skills/ | ivralo ile gelen ve test paketiyle kontrol edilen skill'ler |
| local | ana dizindeki skills.local/ | kurduğunuz ya da oluşturduğunuz skill'ler, yanlarında da assignments.json |
Rafların yerini IVRALO_SKILLS_DIR ve IVRALO_SKILLS_LOCAL_DIR ile değiştirebilirsiniz. İki raf tek bir ad alanını paylaşır: local bir skill shipped bir skill'le aynı adı taşıyorsa shipped olan geçerli olur; ivralo skills ve ivralo doctor local kopyanın gölgede kaldığını bildirir. O kopya hiç yüklenmez.
ivralo skills
komutu iki rafı ve her skill'in doğrulamadan geçip geçmediğini listeler.
Her uzman bütün rafı görür
Bir skill'in sahibi olmak, onu kimin yükleyebileceğini belirlemez. Her uzman bütün rafla birlikte kurulur: önce kendi skill'leri tam açıklamalarıyla, ardından diğer bütün skill'ler ilk cümleleriyle listelenir. Kurduğunuz bir skill'i, ekip bir sonraki kurulumunda her ajan kullanabilir.
Sahiplik ise uzmanın ne iş için olduğunu belirler:
- oturumda
/skill <ad> <istek>işi kime gönderir; ivralo agentsher uzmanın kendi skill'leri altında neleri listeler;- tamamen o skill'in alanına giren bir istek hangi uzmana gider.
Ekip skill'leri kurulum sırasında bağlar. Çalışan bir oturum değişiklikleri bir sonraki kurulumda alır: /new, yeniden başlatma ya da /skill install'dan sonraki yeniden kurulum.
Sahiplik
Bir skill'in sahibi her zaman bir preset'in anahtarıdır: analyst, coder, investigator gibi. Sahiplik iki yolla belirlenir.
- Shipped skill'lerin sahibini roster'daki preset'in
skills=listesi belirler.xlsx,analystvespreadsheet'e;incident,investigator'a aittir. Tam liste Hazır gelen skill'ler sayfasında. - Local skill'lerin sahibini
skills.local/assignments.jsonbelirler. Bu dosyayıivralo skills assignya dainstallvecreatekomutlarındaki--agentyazar. Preset anahtarı olmayan bir ad verirseniz hiçbir şey yazılmadan reddedilir ve hata mesajında bütün preset'ler sıralanır.
not a preset: analist - a skill's owner is a preset's key; presets: analyst, spreadsheet, ...
Ana ajanın hiç skill'i yoktur. O da bütün rafı herkes gibi görür.
Sahibi olmayan local skill
Hiçbir preset'e ait olmayan local bir skill boşta kalmaz. Ekibe kendine ait bir uzman olarak, yani skill'den üretilmiş bir preset olarak katılır:
- anahtarı skill'in adıdır;
- ipucu, açıklamanın ilk cümlesi ve varsa "Do NOT load" cümlesidir;
- skill'in sahibi bu uzmandır;
- yetkileri, temel yetkilerle skill'in
metadata.ivralo.capabilitiesaltında istediklerinin toplamıdır.
Skill, frontmatter'ında temel yetkilerden fazlasını isteyebilir:
metadata:
ivralo:
capabilities: [network.web, shell.full]
Bu istek yalnızca skill'in kendi uzmanı için ve her yetkinin kendi koşulları sağlanıyorsa karşılanır; kapılar diğer preset'lerdekiyle aynıdır. Skill'i başka bir uzman yüklerse skill'in istedikleriyle değil, o uzmanın kendi yetkileriyle çalışır. Bunun yerine skill'i mevcut bir preset'e bağlamak isterseniz ivralo skills assign <ad> --agent <anahtar> kullanın. Yetki adları ve her birinin koşulları Yetenekler sayfasında.
Doğrulamadan geçemeyen local bir skill, atanmadığı her raftan çıkarılır; böylece bozuk bir skill ekibin kurulmasını engellemez. Sorunun ne olduğunu ivralo doctor söyler.
Framework'ünüz sizin skill'iniz
ivralo herhangi bir uygulama framework'ü ya da katmanı için skill getirmez: web framework'ü, UI kütüphanesi ya da ORM için hiçbir şey yoktur. Shipped bir skill böyle bir framework'ün adını geçirirse bir test build'i kırar. Gelen skill'ler yöntemi öğretir (kodu oku, hatayı yeniden üret, tek bir şeyi değiştir, projenin kendi kontrollerini çalıştır); projeye özel komutlar ise IVRALO.md'de yazar.
Ekibinizin framework'ü için kuralları varsa bunları kendi skill'iniz olarak yazın ve local rafa kurun. Böylece bilgi sizde kalır, istediğiniz yerde sürümlenir ve anlattığı kodun yanında durur.
Oturumda
| Komut | Ne yapar |
|---|---|
/skills | iki raftaki skill'leri listeler |
/skill <ad> <istek> | isteği skill'in sahibi olan uzmana gönderir |
/skill show <ad> | skill'i gösterir |
/skill install <kaynak> | skill'i GitHub'dan kurar, ardından ekibi yeniden kurar |
Kurma, güncelleme ve kaldırma Skill kurmak sayfasında anlatılıyor.