Cara Memecah Prompt Besar untuk Mengurangi Pemborosan Token Agen
Struktur monolitik yang menggabungkan segala jenis panduan dan alat ke dalam satu prompt sistem akan segera kehilangan efektivitasnya. Begitu percakapan sedikit lebih panjang, agen akan lupa instruksi yang tertulis di tengah-tengah prompt. Biaya inferensi meroket karena harus mengirim ulang puluhan ribu token di setiap permintaan, dan pengguna harus menunggu lama sebelum token pertama muncul.
Dalam praktiknya, masalah ini diselesaikan dengan struktur pemuatan konteks bertahap berdasarkan spesifikasi terbuka agentskills.io. Ini adalah metode untuk menghemat token dengan memanggil skill yang sesuai hanya pada saat dibutuhkan.
Kriteria Pemisahan ke dalam File Markdown Skill Independen
Prompt sistem monolitik harus dipecah berdasarkan batas domain, hak eksekusi alat, dan frekuensi eksekusi. Anda harus mempertahankan maksimal 3 skill yang aktif secara bersamaan dalam satu sesi untuk mencegah konflik antar-skill selama pencarian kemiripan penyematan (embedding).
Di bagian atas file skill yang dipisahkan, tuliskan YAML front matter yang menentukan identifier (hanya menggunakan tanda hubung, huruf kecil bahasa Inggris, dan angka) serta tujuan pengoperasian.
`yaml
name: backend-api-generator
description: Generates Spring Boot REST API controller and service boilerplate code. Use when the user asks to create API endpoints, build REST controllers, or define DTO mappings for backend services.
when_to_use:
- User requests new REST API endpoint creation
- User provides database schema and asks for controller layer implementation
- Do NOT use for: database migration SQL, frontend component generation
allowed-tools:
- read_file
- write_file
- list_directory
effort: medium
`
Proses pembuatan struktur pemuatan bertahap sangatlah sederhana:
- Saat inisialisasi agen, hanya metadata YAML front matter dari semua skill di dalam direktori (sekitar 100 token per skill) yang dimuat ke dalam prompt.
- Saat permintaan pengguna masuk, sistem membandingkan kemiripan semantik dengan deskripsi skill dan hanya memuat isi skill yang diperlukan secara dinamis.
- Pada tahap eksekusi, skrip pendukung yang diperlukan dijalankan sesuai dengan panduan isi, dan hanya nilai hasilnya yang dimasukkan ke dalam konteks.
Mengubah struktur monolitik yang tadinya selalu memakan 15.000 hingga 30.000 token menjadi struktur pemuatan lambat SKILL.md akan mengurangi overhead token awal hingga lebih dari 90%. Berdasarkan data uji internal Anthropic, waktu latensi p95 dapat dipangkas dari 12% menjadi 40% dan rata-rata konsumsi token per percakapan dapat dihemat sebesar 29.6%.
Batasan Internal untuk Mencegah Kontaminasi Konteks
Ketika beberapa skill dimuat secara berantai, instruksi dari skill sebelumnya sering kali tertinggal dalam sesi dan mendistorsi tugas berikutnya. Untuk pemeriksaan berisiko tinggi atau tugas yang meninggalkan banyak log, Anda harus mengatur pemisahan konteks anak (context: fork) di YAML front matter untuk mengisolasinya pada tingkat proses.
`yaml
name: security-vulnerability-auditor
description: Audits backend source code for OWASP top 10 security flaws. Use when auditing code security or checking for SQL injection vulnerabilities.
context: fork
model: claude-sonnet-4-20250514
effort: high
`
Pekerjaan untuk mendefinisikan kontrak data masukan/keluaran (Data Contract) dengan jelas juga tidak boleh dilewatkan.
- Deklarasikan struktur argumen dan daftar alat yang diizinkan (
allowed-tools) dalam metadata YAML untuk mencegah eksekusi Bash arbitrer atau panggilan jaringan yang sembarangan.
- Tentukan aturan skema keluaran dalam bentuk JSON murni tanpa pembungkus markdown di dalam isi dokumen.
- Batasi instruksi agar hanya mengembalikan hasil akhir ke sesi percakapan.
`markdown
Output Schema Contract
All responses must strictly adhere to the following JSON structure without markdown wrapping:
{
"status": "SUCCESS" | "FAILED",
"generated_files": [
{
"path": "string",
"content": "string"
}
],
"error_message": "string | null"
}
`
Mengisolasinya ke dalam sub-proses dapat mencegah log pemanggilan alat tumpah ke sesi utama. Karena sesi percakapan utama tetap bersih, probabilitas terjadinya kesalahan saat mengirim dan menerima data antar sub-agen juga berkurang.
Perancangan Kode Pertahanan untuk Mencegah Infinite Loop
Jika persyaratannya ambigu atau kesalahan pemanggilan alat berulang kali terjadi, agen akan terjebak dalam perulangan percobaan ulang tanpa batas (infinite retry loop). Ini adalah momen di mana biaya API puluhan dolar melayang hanya dalam beberapa menit. Menambahkan Checklist Verifikasi Statis langkah demi langkah di dalam isi file skill memungkinkan agen untuk melakukan verifikasi sendiri sebelum menyelesaikan tugas.
`markdown
Execution & Self-Testing Protocol
Before declaring the task finished, you MUST sequentially execute the following verification checklist:
- [Pre-check] Verify that all required input parameters are present. If mandatory arguments are missing, STOP immediately and ask the developer for input.
- [Generation] Write the requested implementation code.
- [Syntax Verification] Check the written code for missing imports, unresolved symbols, and syntax errors.
- [Self-Correction] If a syntax error is identified, attempt correction ONCE. Do not re-run the file write tool more than twice for the same error.
`
Cara menulis pemutus sirkuit (Circuit Breaker) untuk menghentikan perulangan secara fisik juga sangat sederhana.
- Tentukan jumlah maksimum pemanggilan alat (
MAXIMUM_TOOL_CALL_LIMIT: 3) di bagian atas skill.
- Tuliskan ketentuan pembatasan untuk menghentikan panggilan alat tambahan jika kode error yang sama muncul 2 kali berturut-turut.
- Instruksikan untuk segera menghentikan eksekusi dan mencetak format pemberitahuan jika kondisi berhenti terpenuhi.
`markdown
[SKILL EXECUTION HALTED]
Skill Name: backend-api-generator
Failure Reason: [Brief error description]
Attempts Made: [Number of retries]
Suggested Action: [Action required by backend developer]
`
Untuk tugas berbahaya seperti penghapusan file atau penjatuhan database (drop DB), lebih aman untuk mengatur opsi disable-model-invocation: true. Ini mencegah agen memanggilnya sendiri dan membatasinya agar hanya dapat dieksekusi ketika pengembang memasukkan perintah slash (/skill-name) secara langsung.
Manajemen Versi Repositori Bersama Tim dan Deployment
Saat anggota tim menulis skill bersama-sama, Anda harus mengikuti arsitektur direktori standar agentskills.io agar tidak kesulitan menghadapi konflik file Markdown. Bagilah isi, skrip CLI, dokumen referensi, dan aset templat statis secara jelas di dalam folder induk.
| Jalur Direktori dan File |
Peran |
Panduan Penulisan |
| skills/api-generator/SKILL.md |
Dokumen titik masuk wajib |
Berisi YAML front matter dan instruksi prosedur inti (dalam 500 baris) |
| skills/api-generator/scripts/ |
Folder kode yang dapat dieksekusi |
Lokasi skrip Python/Bash CLI yang dipanggil agen saat diperlukan |
| skills/api-generator/references/ |
Folder dokumen referensi pendukung |
Tempat spesifikasi API skala besar, skema DB, dokumen panduan gaya |
| skills/api-generator/assets/ |
Folder templat sumber daya statis |
Menyimpan boilerplate kode yang dihasilkan, sampel file konfigurasi |
Saat memverifikasi kualitas skill, manfaatkan kerangka kerja evaluasi promptfoo.
- Tentukan jalur SKILL.md target pengujian dan model LLM di dalam file
promptfooconfig.yaml.
- Tuliskan kasus uji yang memverifikasi pencocokan niat dan kepatuhan terhadap format JSON.
- Jalankan perintah
npx promptfoo@latest eval di terminal untuk mengukur tingkat kepatuhan terhadap instruksi.
`yaml
description: "Backend Agent Skills Validation Suite"
prompts:
- "file://skills/api-generator/SKILL.md"
providers:
- id: "anthropic:messages:claude-3-5-sonnet-20241022"
tests:
- description: "Test automatic skill activation for REST API generation query"
vars:
user_query: "Create a Spring Boot REST Controller for User Management."
assert:
- type: icontains
value: "backend-api-generator"
- type: javascript
value: "output.includes('@RestController') && output.includes('ResponseEntity')"
`
Saat melakukan deployment, kombinasikan strategi pengembangan berbasis trunk yang menggunakan branch berumur pendek dengan Git tag (v1.2.0). Jika agen bertindak tidak menentu di production, Anda dapat langsung melakukan rollback ke titik tag sebelumnya dengan perintah git checkout tags/v1.1.0 -b hotfix/rollback.