Ponytail: ejen kod AI tulis kod paling sikit
Ponytail ialah set peraturan untuk ejen kod AI menulis kod paling sedikit yang berfungsi. Ketahui cara ejen AI berfikir seperti pembangun senior paling malas dan kurangkan kod yang
Apa itu Ponytail
Ponytail ialah satu set peraturan yang menjadikan ejen kod AI menulis kod yang lebih sedikit. Projek ini menerangkannya dalam satu baris: "Menjadikan ejen AI anda berfikir seperti pembangun senior paling malas di dalam bilik. Kod terbaik ialah kod yang tidak pernah anda tulis." Ia dilesenkan di bawah MIT. Ia tidak mempunyai masa jalan sendiri, dan tiada apa di dalamnya yang dilaksanakan. Ia adalah teks yang masuk ke dalam arahan ejen, dibungkus sebagai kemahiran untuk hos yang memuatkan kemahiran dan sebagai fail peraturan biasa untuk hos yang tidak berbuat demikian.
Repositori ini ialah DietrichGebert/ponytail. Ia dicipta pada 12 Jun 2026 dan melepasi 90,000 bintang menjelang 1 Ogos 2026. Keluaran bertanda terakhir pada 1 Ogos 2026 ialah v4.8.4, diterbitkan pada 29 Jun 2026, dan halaman keluaran menyenaraikan sepuluh tanda antara 14 dan 29 Jun sahaja. Projek yang bergerak pada kadar itu akan berubah pada masa anda membaca ini, jadi sematkan tanda sebelum anda membina apa-apa di atasnya.
Idea sebelum alatan: berhenti pada anak tangga pertama yang sesuai
Intipati Ponytail ialah tangga keputusan. Ejen memanjatnya sebelum menulis apa-apa dan berhenti pada anak tangga pertama yang sesuai.
- Perlukah ini wujud sama sekali? Ini ialah YAGNI (you are not going to need it). Jika jawapannya tidak, abaikan.
- Adakah ia sudah wujud dalam pangkalan kod ini? Guna semula pembantu atau corak yang sudah ada.
- Adakah pustaka standard melakukannya? Gunakannya.
- Adakah ciri platform asli melindunginya? Gunakannya.
- Adakah kebergantungan yang sudah dipasang menyelesaikannya? Gunakannya.
- Bolehkah ia satu baris? Jadikan ia satu baris.
- Hanya selepas itu, tulis kod minimum yang berfungsi.
Susunan melakukan kerja, bukan mana-mana anak tangga tunggal. Ejen yang diminta pemilih tarikh akan menulis pemilih tarikh, kerana menulisnya adalah apa yang diarahkan. Tangga itu menyuruhnya menyemak anak tangga 4 dahulu, dan anak tangga 4 menyatakan penyemak imbas sudah mempunyai <input type="date">. Penanda aras projek itu sendiri mencatat kes yang sama: pemilih tarikh yang keluar pada 404 baris tanpa peraturan keluar pada 23 baris dengannya, kerana ejen mencapai input asli dan bukannya membina komponen. Pemilih warna pergi dari 287 baris kepada 23 atas sebab yang sama.
Malas di sini tidak bermakna cuai, dan set peraturan menyatakan demikian secara langsung. Senarai "jangan pernah malas tentang"nya meliputi pemahaman masalah sebelum membuat keputusan, pengesahan input pada sempadan kepercayaan, pengendalian ralat yang menghalang kehilangan data, keselamatan, kebolehaksesan, dan apa sahaja yang anda minta mengikut nama. Ia juga meminta satu pemeriksaan kecil yang boleh dijalankan bagi setiap bahagian logik bukan remeh. Peraturan itu memotong ciptaan. Ia tidak memotong ketepatan.
Apa yang dihantar oleh repositori sebenarnya
AGENTS.md, set peraturan yang sentiasa aktif, yang merupakan keseluruhan idea dalam satu fail yang boleh anda baca dalam lima minit.skills/ponytail/SKILL.md, definisi kemahiran, dengan petunjuk hujahlite,fullatauultra.- Fail peraturan di bawah direktori khusus editor seperti
.cursor/rules/dan.windsurf/rules/, untuk hos yang membaca peraturan tetapi tidak memuatkan kemahiran. hooks/,benchmarks/,examples/danscripts/.
Hujah keamatan mengubah betapa kuat peraturan itu menolak. lite membina apa yang anda minta dan menamakan pilihan yang lebih santai dalam satu baris. full ialah lalai dan menguatkuasakan tangga. ultra ialah tetapan ekstremis YAGNI: ia lebih suka pemadaman daripada penambahan dan ia akan berdebat dengan keperluan itu sendiri.
Hos yang berkebolehan kemahiran juga mendapat arahan slash. /ponytail menetapkan tahap, /ponytail-review menyemak diff untuk kejuruteraan berlebihan, /ponytail-audit menyemak keseluruhan repositori, /ponytail-debt mengumpul pintasan yang anda tangguhkan, dan /ponytail-gain mencetak kad skor penanda aras. Hos yang hanya membaca fail peraturan mendapat set peraturan tanpa arahan.
Untuk membaca kod sumber sebelum anda mempercayainya, klon tag dan bukannya cawangan:
git clone --depth 1 --branch v4.8.4 https://github.com/DietrichGebert/ponytail.gitPada Claude Code, projek itu mendokumentasikan pemasangan plugin sebaliknya, dan kedua-dua baris ini adalah seperti yang didokumentasikan pada 1 Ogos 2026:
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytailJalur plugin mengikut cawangan lalai dan bukannya tag, jadi arahan yang mengemudi agen anda boleh berubah di bawah anda antara sesi. Itulah dagangan yang anda terima untuk kemudahan arahan kemas kini.
Mengapa ejen yang malas lebih murah pada VPS
Perubahan yang dihasilkan oleh ejen tidak meninggalkan perbualan. Pada giliran seterusnya, ia menjadi konteks yang dibaca semula oleh model, bersama-sama dengan setiap fail yang dibuka untuk menghasilkannya. Oleh itu, perubahan 500 baris membebankan setiap giliran seterusnya dalam sesi, bukan hanya giliran yang menghasilkannya. Inilah sebabnya mengapa refaktor yang tidak terkawal membuat ejen terasa lebih perlahan dan kurang pintar seiring berjalannya sesi: tetingkap dipenuhi dengan output ejen sendiri, jadi ruang yang tinggal untuk kod sebenar anda mengecil. Mengawal perkara ini adalah keseluruhan subjek menguruskan tetingkap konteks ejen pengekodan.
Token dikenakan caj masuk dan keluar, jadi perubahan yang separuh saiznya lebih murah dua kali ganda, sekali apabila ia ditulis dan sekali lagi pada setiap giliran yang membacanya semula. Jika anda memantau bil pada persediaan yang dihoskan sendiri, fail arahan adalah tuil yang tidak memerlukan kos untuk ditarik. Mengawal kos ejen AI anda bermula dengan jumlah output, dan bagaimana ejen pengekodan membelanjakan tokennya menerangkan mengapa pembacaan semula lebih penting daripada yang disangka orang.
Manusia masih membaca perubahan tersebut. Perubahan 400 baris yang sepatutnya 20 baris akan memakan perhatian pemeriksa, dan perhatian adalah sumber yang habis dahulu. Tiada siapa yang menyemak perubahan panjang keempat pada hari itu dengan penjagaan yang diberikan kepada yang pertama, jadi pembinaan berlebihan bukan sahaja membuang masa. Ia secara senyap mengurangkan kualiti semakan yang sepatutnya menangkap kesilapan.
Pada pelayan, pertaruhan berubah, kerana ejen sering berjalan tanpa ada yang memerhati. Ejen yang bekerja dalam sesi tmux atau mengikut masa mempunyai berjam-jam untuk membina keputusan yang buruk sebelum anda melihatnya. Itulah risiko praktikal dalam menjalankan ejen pengekodan pada VPS, dan itulah sebabnya orang yang melakukan kejuruteraan gelung meluangkan begitu banyak perhatian pada arahan yang sentiasa aktif berbanding dengan gesaan individu. Peraturan dalam fail yang sentiasa aktif terpakai pada giliran 200. Peraturan yang anda taipkan dalam sembang terpakai pada giliran 3.
Kebergantungan baharu adalah kos senyap yang lain. Rung 5 menyatakan gunakan apa yang dipasang. Setiap pakej yang ditambah oleh ejen atas inisiatifnya sendiri adalah sesuatu yang anda tampal kemudian dan sesuatu yang berakhir dalam setiap imej kontena yang anda bina daripada repositori itu.
Apa nombor penanda aras Ponytail sendiri katakan
Projek ini menerbitkan dua set keputusan, dan kedua-duanya berbeza dengan ketara. Kedua-duanya adalah angka yang diterbitkan oleh projek itu sendiri. Tiada satu pun ujian bebas.
The data behind this chart
[
{
"label": "Lines of code",
"single_shot_pct": 93,
"agentic_pct": 54
},
{
"label": "Cost per run",
"single_shot_pct": 63,
"agentic_pct": 20
},
{
"label": "Wall clock time",
"single_shot_pct": 74,
"agentic_pct": 27
}
]Lajur 'single shot' datang dari model asas yang menjawab satu set kecil gesaan dengan dan tanpa peraturan, diambil sebagai median ke atas beberapa larian berulang bertarikh 13 dan 17 Jun 2026. Lajur 'agentic' datang dari sesi Claude Code tanpa kepala yang mengedit full-stack-fastapi-template milik tiangolo, repositori FastAPI dan React sebenar, merentasi dua belas tiket ciri dengan empat larian setiap satu pada Haiku 4.5, dinilai berdasarkan perbezaan git yang ditinggalkan.
Baca lajur kedua. Hasil 'agentic' adalah 54 peratus lebih sedikit baris kod, 20 peratus kos lebih rendah dan 27 peratus kurang masa jam dinding, berbanding 93 peratus dan 74 peratus untuk ukuran yang sama dalam persediaan 'single shot'. README adalah jujur tentang sebabnya: garis dasar 'single shot' ialah model asas yang "menjawab dengan beberapa pilihan ditambah ulasan", yang mudah untuk dikalahkan. Ukur terhadap ejen sebenar yang melakukan kerja sebenar dan kemenangan itu mengecil. Ia juga kekal sebenar, yang merupakan fakta yang lebih berguna.
Satu peringatan adalah daripada projek itu sendiri, dan ia adalah yang menentukan sama ada ini membantu anda. Penjimatan adalah terbesar di mana terdapat perangkap binaan berlebihan yang tulen dan hampir sifar pada kod yang sudah minimum. Dua belas tiket dalam satu repositori Python dan TypeScript tidak meramalkan repositori anda. Jika nombor itu penting kepada anda, jalankan perbandingan pada tiket anda sendiri, dengan dan tanpa peraturan, dan kira sendiri barisnya.
Corak yang boleh anda salin hari ini tanpa memasang apa-apa
Tangga adalah teks, jadi anda tidak memerlukan plugin untuk menggunakan idea ini. Tampal blok seperti ini ke dalam fail arahan yang ejen anda sudah baca, sama ada itu AGENTS.md, CLAUDE.md atau fail peraturan editor anda.
## Before you write code
Climb this list in order. Stop at the first line that applies.
1. Does this need to exist? If not, say so and stop.
2. Does this repo already have it? Reuse the helper.
3. Does the standard library do it? Use it.
4. Does the platform do it natively? Use it.
5. Does an installed dependency do it? Use it.
6. Can it be one line? Write one line.
7. Otherwise write the minimum that works.
Never take the shortcut on: reading the code before changing it, validating
input that crosses a trust boundary, error handling that would otherwise lose
data, security, accessibility, or anything I asked for by name.
Do not add an abstraction I did not ask for. Do not add a dependency without
saying why in one line. Prefer deleting code to adding it.
Mark a deliberate simplification with a comment naming its ceiling and the
upgrade path.Peraturan terakhir itu berbaloi untuk diambil secara berasingan. Konvensyen Ponytail ialah komen yang ditandai dengan nama alatan:
# ponytail: global lock, per-account locks if throughput mattersKomen itu adalah dua baris kerja dan ia menyelesaikan persoalan yang sebaliknya akan memakan masa semakan. Ia memberitahu pembaca seterusnya bahawa versi ringkas adalah satu keputusan, dan ia menamakan keadaan di mana keputusan itu tidak lagi sah. Tanpanya, penyemak tidak dapat membezakan pintasan yang dipertimbangkan daripada sesuatu yang terlupa oleh ejen, jadi mereka terpaksa bertanya.
Tempat anda meletakkan blok itu sama pentingnya dengan apa yang dikatakannya. Fail yang dimuatkan oleh ejen pada setiap larian mengawal setiap larian, termasuk yang anda tidak pantau. Perbezaan itu adalah subjek menulis AGENTS.md yang ejen anda benar-benar ikuti, dan ia adalah sebab mengapa corak ini sesuai diletakkan dalam fail yang dikomit berbanding dalam sejarah shell anda.
Di mana peraturan tidak lagi betul
Tangga ini disesuaikan untuk kerja ciri dalam pangkalan kod yang sedia ada, di mana penggunaan semula biasanya tersedia dan biasanya betul. Ia tidak sesuai untuk projek baharu, kerana anak tangga 2 tiada apa untuk digunakan semula dan anak tangga 5 tiada apa yang dipasang, jadi ejen akan jatuh ke anak tangga 7 setiap kali. Ia juga tidak sesuai pada saat anda benar-benar menginginkan abstraksi. Jika anda akan menambah pemanggil keempat bagi blok yang sama yang disalin, "perbezaan terpendek" memberi anda salinan kelima.
Tahap ultra akan mencabar keperluan anda. Itulah tujuan tahap tersebut, dan ia merupakan kos sebenar apabila anda telah membuat keputusan dan mahukan kerja diselesaikan. Gunakan full untuk kerja biasa dan gunakan ultra apabila anda mengesyaki permintaan ciri adalah masalahnya.
Tiada blok arahan yang menyelamatkan anda daripada pembacaan masalah yang salah. Item pertama dalam set peraturan itu sendiri adalah memahami kod sebelum membuat keputusan, yang merupakan bahagian yang mahal dan bahagian yang tidak dapat dilakukan oleh teks untuk anda. Perbezaan minimum dalam fungsi yang salah masih merupakan pembaikan yang salah, dan kini ia adalah pembaikan kecil yang salah yang mudah untuk diluluskan.
Ringkasan jujur ialah Ponytail ialah gesaan yang ditulis dengan teliti, diedarkan dengan baik, dengan nombor yang dilampirkan. Tiada apa di dalamnya memerlukan pemalam. Apa yang diberikan oleh projek ini kepada anda ialah seseorang menulis senarai dengan betul, mengujinya terhadap repositori sebenar, dan menerbitkan kaedah di sebelah hasil.
FAQ
Adakah Ponytail berfungsi dengan agen selain Claude Code?
Ya. Ia dihantar sebagai kemahiran untuk hos yang memuatkan kemahiran, senarai yang termasuk Claude Code, Codex, OpenCode, Gemini dan beberapa lagi yang dinamakan dalam README. Editor yang membaca fail peraturan tetapi tidak memuatkan kemahiran, seperti Cursor, Windsurf, Cline dan Copilot, mengambil set peraturan sentiasa aktif daripada direktori peraturan yang sepadan dan tidak mendapat arahan slash. Teks adalah sama sama ada cara, jadi perbezaan sebenar ialah sama ada hos anda menyimpan teks itu dalam konteks pada setiap giliran atau hanya apabila kemahiran dicetuskan.
Adakah agen malas akan melangkau ujian, pengesahan atau keselamatan?
Tidak, dan set peraturan menyatakan ini secara langsung. Senarai "jangan pernah malas tentang" menamakan pengesahan input pada sempadan kepercayaan, pengendalian ralat yang menghalang kehilangan data, keselamatan dan kebolehcapaian, dan ia meminta satu pemeriksaan kecil yang boleh dijalankan untuk setiap bahagian logik bukan remeh. Apa yang dikeluarkan oleh peraturan ialah struktur yang dicipta: abstraksi yang tiada siapa minta dan kebergantungan yang tiada siapa perlukan. Jika agen anda mula menggugurkan ujian selepas anda memasangnya, puncanya ialah arahan lain dalam konfigurasi anda sendiri yang mengatasi arahan ini, jadi baca fail yang dimuatkan oleh agen terakhir.
Adakah nombor kelajuan dan kos yang diterbitkan boleh dipercayai?
Ia adalah ukuran projek itu sendiri, diterbitkan dengan kaedah mereka, dan ia harus dibaca sebagai itu. Angka pukulan tunggal membandingkan dengan model kosong yang membalas dengan pilihan dan ulasan, yang README sendiri tandakan sebagai garis dasar yang lemah. Angka agen datang dari sesi Claude Code tanpa kepala pada satu repositori FastAPI dan React, dua belas tiket, empat larian setiap satu, pada Haiku 4.5. Itu adalah nombor yang jujur untuk persediaan itu. Ia bukan ramalan untuk pangkalan kod anda, kerana projek itu juga mengatakan penjimatan jatuh kepada hampir sifar pada kod yang sudah pun minimum.
Adakah saya perlu memasang apa-apa untuk mendapat manfaat?
Tidak. Tangga ialah teks, dan blok yang setara yang dilekatkan ke dalam fail arahan yang agen anda sudah baca memberi anda kebanyakan kesannya. Plugin memberi anda perkataan yang diselenggara, tahap keamatan, arahan semakan dan laluan kemas kini. Mencuba blok yang disalin dahulu ialah jawapan anak tangga 1 kepada soalan sama ada pemasangan perlu wujud sama sekali.
Bagaimana saya menghentikan agen tanpa pengawasan daripada membina berlebihan semalaman?
Letakkan peraturan dalam fail arahan sentiasa aktif dan bukannya dalam mesej sembang, supaya ia terpakai pada giliran 200 bagi larian yang panjang dan bukan hanya pada giliran 3. Kemudian hadkan kerosakan secara berasingan: berikan agen checkout yang dibenarkan untuk merosakkannya dan bukannya salinan anda sahaja, dan perlukan semakan diff manusia sebelum apa-apa digabungkan. Peraturan diff minimum mengurangkan jumlah yang perlu anda baca. Ia tidak memutuskan apa yang mendarat, dan ia tidak sepatutnya.