Anda dah tahu asas Hermes Agent—boleh spawn agent, automasi tugas, dan ingat konteks merentasi sesi. Tapi bila sampai ke bahagian skills dan tools, kadang-kadang rasa macam terperangkap dalam jargon. Apa bezanya? Bila guna yang mana? Dan kenapa kadang-kadang agent anda gagal walaupun dah configure dengan betul? Artikel ini akan pecahkan konsep skills vs tools dalam Hermes Agent dengan contoh praktikal, konfigurasi asas, dan kesilapan biasa yang perlu dielakkan. Tiada teori berlebihan—hanya how-to yang boleh terus anda apply.
1. Definisi Ringkas: Skills vs Tools
Sebelum terjun dalam konfigurasi, mari kita sepakati definisi asas supaya tiada kekeliruan:
- Tools: Fungsi low-level yang boleh dipanggil oleh agent untuk berinteraksi dengan sistem atau perkhidmatan luaran. Contoh:
bash(untuk run command terminal),browser(untuk navigate web),http(untuk buat API call). Tools ini statik—anda perlu daftarkan secara manual dalam config, dan ia tidak belajar atau adapt. - Skills: Kebolehan high-level yang dibina di atas tools, sama ada dicipta secara manual oleh anda atau dijana secara automatik oleh Hermes Agent (terima kasih kepada Automated Skill Creation). Skills boleh mengandungi logik kompleks, seperti “book_flight” yang menggunakan tools
httpuntuk call API maskapai,bashuntuk simpan tiket dalam fail, danbrowseruntuk screenshot halaman pengesahan. Skills juga boleh dipanggil semula dalam sesi lain kerana disimpan dalam persistent memory Hermes.
Ringkasnya: Tools = blok binaan asas. Skills = resipi yang guna blok tersebut untuk selesaikan tugas.
2. Bila Guna Tools, Bila Guna Skills?
Kunci untuk guna Hermes Agent dengan berkesan ialah tahu bila untuk guna tools secara terus, dan bila untuk cipta atau panggil skills. Berikut panduan praktikal:
Guna Tools Jika:
- Tugas itu sederhana dan sekali guna. Contoh: Run command
ls -luntuk list fail dalam direktori. Tak perlu cipta skill untuk ini—panggil terus toolbash. - Anda perlu interaksi langsung dengan sistem. Contoh: Ambil screenshot halaman web menggunakan tool
browser. - Tugas itu tidak akan diulang dalam masa terdekat. Skills lebih sesuai untuk tugas yang berulang.
Guna Skills Jika:
- Tugas itu kompleks dan melibatkan beberapa tools. Contoh: “deploy_app_to_server” yang guna
bashuntuk build Docker image,sshuntuk push ke server, danhttpuntuk verify deployment. - Anda mahu agent ingat cara selesaikan tugas untuk kegunaan masa depan. Skills disimpan dalam persistent memory, jadi anda boleh panggil semula tanpa perlu tulis semula logik.
- Tugas itu berulang atau berjadual. Contoh: Skill “backup_database” yang dijadualkan untuk run setiap malam menggunakan Scheduled Automations Hermes.
3. Cara Daftar Tools dalam Hermes Agent
Tools perlu didaftarkan dalam fail config Hermes Agent (biasanya di ~/.hermes/config.yaml). Berikut contoh konfigurasi asas untuk beberapa tools popular:
tools:
- name: bash
description: "Run shell commands on the local machine."
parameters:
type: object
properties:
command:
type: string
description: "The shell command to execute."
required: ["command"]
- name: browser
description: "Control a headless browser for web automation."
parameters:
type: object
properties:
url:
type: string
description: "The URL to navigate to."
action:
type: string
enum: ["navigate", "click", "screenshot", "extract_text"]
description: "The action to perform."
selector:
type: string
description: "CSS selector for the element to interact with."
required: ["url", "action"]
Untuk daftar tool baru, tambah entri dalam tools array seperti di atas. Pastikan parameters dan required fields diisi dengan betul—ini penting untuk agent faham cara guna tool tersebut.
Contoh command untuk guna tool bash:
/tool bash command="df -h"
Contoh command untuk guna tool browser:
/tool browser url="https://example.com" action="screenshot" selector="body"
4. Cara Cipta dan Guna Skills
Skills boleh dicipta secara manual atau dijana secara automatik oleh Hermes Agent. Mari kita lihat kedua-duanya.
Cipta Skill Secara Manual
Untuk cipta skill secara manual, anda perlu define logik dalam format YAML atau JSON. Berikut contoh skill “check_disk_usage” yang guna tool bash untuk check penggunaan disk dan hantar notifikasi jika melebihi threshold:
skills:
- name: check_disk_usage
description: "Check disk usage and notify if it exceeds 90%."
steps:
- tool: bash
parameters:
command: "df -h"
save_to: disk_usage_output
- tool: bash
parameters:
command: "echo '{{ disk_usage_output }}' | grep -E '(/dev/sda1|9[0-9]%|100%)'"
condition: "{{ disk_usage_output.stdout }}"
on_success:
- tool: bash
parameters:
command: "echo '⚠️ Warning: Disk usage is above 90%!' | tee /dev/tty""
on_failure:
- tool: bash
parameters:
command: "echo '✅ Disk usage is normal.' | tee /dev/tty"
Untuk simpan skill ini, tambah dalam skills array dalam fail config atau simpan dalam fail berasingan (contoh: ~/.hermes/skills/check_disk_usage.yaml) dan daftarkan dalam config:
skills:
- name: check_disk_usage
path: "~/.hermes/skills/check_disk_usage.yaml"
Contoh command untuk panggil skill:
/skill check_disk_usage
Guna Automated Skill Creation
Hermes Agent boleh cipta skills secara automatik berdasarkan arahan anda. Contoh, jika anda mahu agent cipta skill untuk “book_flight”, berikan arahan seperti ini:
Cipta skill bernama "book_flight" yang boleh:
1. Cari penerbangan dari Kuala Lumpur ke Tokyo menggunakan API Skyscanner.
2. Pilih penerbangan paling murah.
3. Simpan butiran penerbangan dalam fail JSON.
4. Hantar notifikasi melalui Telegram.
Hermes Agent akan generate skill YAML secara automatik dan simpan dalam persistent memory. Anda boleh lihat skill yang dijana dengan command:
/list skills
Untuk panggil skill yang dijana:
/skill book_flight from="Kuala Lumpur" to="Tokyo" date="2024-12-25"
5. Kesilapan Biasa dan Cara Elakkannya
Walaupun Hermes Agent powerful, ada beberapa kesilapan biasa yang boleh menyebabkan agent gagal atau berjalan tidak seperti yang dijangka. Berikut adalah yang paling kerap berlaku dan cara elakkannya:
Kesilapan 1: Tools Tidak Didaftar dengan Betul
Gejala: Agent return error Tool not found atau Invalid parameters.
Punca: Anda lupa daftar tool dalam config, atau parameter yang didefine tidak match dengan apa yang dipanggil.
Penyelesaian:
- Pastikan tool didaftarkan dalam
~/.hermes/config.yamldenganname,description, danparametersyang betul. - Guna command
/list toolsuntuk verify tool telah didaftarkan. - Jika tool memerlukan parameter, pastikan semua
requiredfields diisi dalam command.
Kesilapan 2: Skills Tidak Disimpan dalam Persistent Memory
Gejala: Skill yang dicipta secara automatik tidak boleh dipanggil semula dalam sesi lain.
Punca: Automated Skill Creation memerlukan persistent memory diaktifkan, dan kadang-kadang skill tidak disimpan dengan betul.
Penyelesaian:
- Pastikan
persistent_memory: truedalam config. - Selepas skill dijana, guna command
/save skill <nama_skill>untuk simpan secara manual. - Guna
/list skillsuntuk verify skill telah disimpan.
Kesilapan 3: Overcomplicating dengan Skills untuk Tugas Sederhana
Gejala: Agent mengambil masa lama untuk selesaikan tugas mudah, atau gagal dengan error Skill execution timeout.
Punca: Anda cipta skill untuk tugas yang sepatutnya boleh selesai dengan tools sahaja.
Penyelesaian:
- Tanya diri sendiri: Adakah tugas ini akan diulang? Jika tidak, guna tools sahaja.
- Jika tugas melibatkan lebih daripada 3 steps, barulah pertimbangkan untuk cipta skill.
- Guna
/toolcommand untuk tugas sekali guna, dan/skilluntuk tugas berulang.
Kesilapan 4: Tidak Menggunakan Conditionals dalam Skills
Gejala: Skill berjalan sehingga habis walaupun ada step yang gagal, menyebabkan output tidak dijangka.
Punca: Anda tidak define condition atau on_success/on_failure dalam skill YAML.
Penyelesaian:
- Guna
conditionuntuk check output step sebelumnya sebelum proceed. Contoh:
steps:
- tool: bash
parameters:
command: "curl -s https://api.example.com/status"
save_to: api_status
- tool: bash
parameters:
command: "echo 'API is down!'"
condition: "{{ api_status.stdout == 'down' }}"
- Guna
on_successdanon_failureuntuk handle kesalahan. Contoh:
steps:
- tool: bash
parameters:
command: "docker build -t myapp ."
on_success:
- tool: bash
parameters:
command: "docker push myapp"
on_failure:
- tool: bash
parameters:
command: "echo '❌ Build failed!' | tee /dev/tty"
6. Contoh Praktikal: Deploy App dengan Skills dan Tools
Mari kita lihat contoh lengkap bagaimana guna skills dan tools untuk deploy aplikasi web ke server menggunakan Hermes Agent. Kita akan guna:
- Tools:
bash,ssh,http - Skills: “deploy_app_to_server” (dicipta secara manual)
Langkah 1: Daftar Tools
Pastikan tools berikut didaftarkan dalam config.yaml:
tools:
- name: bash
description: "Run shell commands."
parameters:
type: object
properties:
command:
type: string
required: ["command"]
- name: ssh
description: "Execute commands on a remote server via SSH."
parameters:
type: object
properties:
host:
type: string
command:
type: string
username:
type: string
password:
type: string
required: ["host", "command", "username"]
- name: http
description: "Make HTTP requests."
parameters:
type: object
properties:
url:
type: string
method:
type: string
enum: ["GET", "POST", "PUT", "DELETE"]
headers:
type: object
body:
type: object
required: ["url", "method"]
Langkah 2: Cipta Skill “deploy_app_to_server”
Simpan skill berikut dalam ~/.hermes/skills/deploy_app.yaml:
name: deploy_app_to_server
description: "Deploy a Dockerized app to a remote server and verify deployment."
parameters:
type: object
properties:
app_name:
type: string
description: "Name of the Docker image."
server_host:
type: string
description: "Remote server IP or hostname."
server_username:
type: string
description: "SSH username for the remote server."
health_check_url:
type: string
description: "URL to check if the app is running."
required: ["app_name", "server_host", "server_username", "health_check_url"]
steps:
- tool: bash
description: "Build Docker image locally."
parameters:
command: "docker build -t {{ app_name }} ."
on_failure:
- tool: bash
parameters:
command: "echo '❌ Docker build failed!' | tee /dev/tty"
exit: true
- tool: bash
description: "Tag and push Docker image to registry."
parameters:
command: "docker tag {{ app_name }} myregistry.com/{{ app_name }}:latest && docker push myregistry.com/{{ app_name }}:latest"
on_failure:
- tool: bash
parameters:
command: "echo '❌ Docker push failed!' | tee /dev/tty"
exit: true
- tool: ssh
description: "Pull and run Docker image on remote server."
parameters:
host: "{{ server_host }}"
username: "{{ server_username }}"
command: "docker pull myregistry.com/{{ app_name }}:latest && docker run -d -p 80:80 myregistry.com/{{ app_name }}:latest"
on_failure:
- tool: bash
parameters:
command: "echo '❌ Remote deployment failed!' | tee /dev/tty"
exit: true
- tool: http
description: "Verify deployment by checking health endpoint."
parameters:
url: "{{ health_check_url }}"
method: "GET"
condition: "{{ http_response.status_code == 200 }}"
on_success:
- tool: bash
parameters:
command: "echo '✅ Deployment successful! App is running at {{ health_check_url }}' | tee /dev/tty"
on_failure:
- tool: bash
parameters:
command: "echo '❌ Health check failed! App may not be running.' | tee /dev/tty"
exit: true
Daftarkan skill dalam config.yaml:
skills:
- name: deploy_app_to_server
path: "~/.hermes/skills/deploy_app.yaml"
Langkah 3: Panggil Skill untuk Deploy
Guna command berikut untuk deploy app:
/skill deploy_app_to_server app_name="my_web_app" server_host="123.45.67.89" server_username="ubuntu" health_check_url="http://123.45.67.89/health"
Hermes Agent akan execute setiap step dalam skill, dan hantar notifikasi jika ada step yang gagal.
7. Tips untuk Optimize Penggunaan Skills dan Tools
Berikut beberapa tips untuk guna skills dan tools dengan lebih berkesan:
1. Gunakan Parallel Sub-Agents untuk Tugas yang Boleh Dijalankan Secara Selari
Jika skill anda mempunyai steps yang tidak bergantung antara satu sama lain, gunakan Parallel Sub-Agents untuk speed up execution. Contoh:
steps:
- parallel:
- tool: bash
parameters:
command: "task1.sh"
- tool: bash
parameters:
command: "task2.sh"
- tool: bash
parameters:
command: "merge_results.sh"
2. Simpan Output Tools dalam Variables untuk Diguna dalam Steps Berikutnya
Guna save_to untuk simpan output tool dan rujuk semula dalam steps berikutnya. Contoh:
steps:
- tool: bash
parameters:
command: "curl -s https://api.example.com/data"
save_to: api_data
- tool: bash
parameters:
command: "echo '{{ api_data.stdout }}' | jq '.id'""
save_to: extracted_id
3. Gunakan Scheduled Automations untuk Skills Berulang
Jika anda ada skill yang perlu dijalankan secara berjadual (contoh: backup database setiap malam), gunakan Scheduled Automations. Tambah dalam config.yaml:
automations:
- name: nightly_backup
skill: backup_database
schedule: "0 3 * * *" # Run at 3 AM every day
parameters:
db_name: "production_db"
4. Debug Skills dengan Command /trace
Jika skill tidak berjalan seperti yang dijangka, guna command /trace untuk lihat execution log:
/trace skill deploy_app_to_server
Ini akan tunjukkan setiap step yang dijalankan, output, dan error jika ada.
Penutup: Skills dan Tools Adalah Pasangan Sempurna
Skills dan tools dalam Hermes Agent bukanlah dua konsep yang bersaing—mereka adalah pasangan yang saling melengkapi. Tools memberikan anda akses langsung kepada fungsi sistem, manakala skills membolehkan anda bina logik kompleks di atasnya untuk tugas yang berulang dan kompleks. Kunci untuk guna kedua-duanya dengan berkesan ialah:
- Guna tools untuk tugas sederhana dan sekali guna.
- Cipta skills untuk tugas kompleks yang melibatkan beberapa tools atau perlu diulang.
- Manfaatkan Automated Skill Creation untuk jana skills dengan cepat tanpa perlu tulis YAML secara manual.
- Elakkan kesilapan biasa seperti overcomplicating tugas atau tidak guna conditionals dalam skills.
Dengan memahami perbezaan dan kegunaan masing-masing, anda boleh unlock potensi penuh Hermes Agent untuk automasi tugas harian, deployment, monitoring, dan banyak lagi. Jangan takut untuk bereksperimen—cipta skills, uji tools, dan lihat bagaimana agent anda boleh bekerja untuk anda.
Cuba Hermes Agent hari ini dan mulakan perjalanan automasi anda: https://hermes-agent.org
Hermes Agent — open-source, MIT license, percuma untuk kegunaan peribadi dan komersial.