Agen AI tidak membaca GUI. Agen menjalankan perintah, membaca stdout, memeriksa kode keluar, lalu menentukan langkah berikutnya. Pola ini hanya andal jika CLI bersifat dapat diprediksi: tidak mencetak tabel dekoratif, tidak berhenti pada prompt Anda yakin? (y/n), dan tidak mengembalikan kode keluar 0 saat pekerjaan sebenarnya gagal.
Untuk workflow agentic, jangan hanya memilih CLI yang “paling kuat”. Pilih CLI yang output-nya dapat langsung dipakai agen untuk mengambil keputusan:
- JSON terstruktur, bukan prosa atau tabel untuk manusia.
- Mode non-interaktif yang tidak memblokir pipeline.
- Kode keluar deterministik untuk logika percabangan.
- Idealnya, petunjuk langkah berikutnya yang dapat dibaca mesin.
Artikel ini membagi CLI menjadi dua kelompok:
- Runtime agen: CLI yang menjalankan agen pengkodean, seperti Claude Code, Codex CLI, Gemini CLI, dan Cursor CLI.
-
CLI alat: alat yang dipanggil agen untuk melakukan pekerjaan, seperti
gh, ripgrep, jq, HTTPie, dan apidog-cli.
Jika agen Anda terhubung ke workflow API, gunakan panduan lengkap Apidog CLI untuk menyiapkan instalasi, autentikasi, dan alur kerja API.
Apa yang membuat CLI cocok untuk agen AI
Evaluasi setiap CLI dengan tiga kriteria berikut sebelum memasukkannya ke pipeline agen.
1. Keluaran terstruktur
Agen jauh lebih andal mengurai JSON dibandingkan tabel terminal atau teks bebas. Cari flag seperti:
--json
--output-format json
--format json
Dengan JSON, agen dapat mengambil nilai berdasarkan nama bidang, bukan menebak posisi kolom.
Contoh:
gh pr list --json number,title,author
2. Mode non-interaktif
Perintah yang berhenti untuk meminta konfirmasi dapat membuat proses tanpa kepala macet selamanya. Pastikan CLI mendukung mode seperti:
--non-interactive
--yes
--print
-p
Mode ini harus menerima seluruh input di awal dan selesai tanpa intervensi manusia.
3. Kode keluar deterministik
Agen membutuhkan sinyal sederhana untuk menentukan apakah harus melanjutkan, mencoba ulang, atau menghentikan workflow:
-
0: berhasil - non-nol: gagal
Contoh pola shell untuk pipeline:
if apidog run; then
echo "Semua pengujian lulus"
else
echo "Pengujian gagal; hentikan deployment"
exit 1
fi
Nilai tambah: CLI yang menyertakan informasi tindakan berikutnya dalam respons JSON. Ini masih jarang ditemukan, dan menjadi salah satu pembeda apidog-cli.
Claude Code
Claude Code adalah agen pengkodean Anthropic yang berjalan di terminal. Gunakan -p untuk menjalankan prompt secara non-interaktif, mencetak hasil, lalu keluar.
npm install -g @anthropic-ai/claude-code
claude -p "summarize the failing tests in this repo" --output-format json
Gunakan --output-format json saat hasil akan dikonsumsi skrip atau agen lain. Payload dapat memuat hasil, session_id, dan total_cost_usd, sehingga Anda dapat melacak sesi serta biaya per pemanggilan.
Untuk event real-time, gunakan output streaming:
claude -p "periksa kegagalan build" --verbose --output-format stream-json
Anda juga dapat memasukkan konteks melalui stdin:
cat build-error.txt | claude -p "jelaskan kesalahan ini"
Terbaik untuk: tugas pengkodean multi-langkah ketika satu agen perlu merencanakan, mengeksekusi, lalu mengembalikan hasil yang dapat dibaca mesin.
Batasan: menggunakan model berbayar dan tertutup di belakang API. Biaya dapat bertambah pada proses otonom yang panjang.
Codex CLI
Codex CLI adalah agen terminal open-source dari OpenAI. Gunakan codex exec atau alias codex e untuk mode non-interaktif.
npm install -g @openai/codex
codex exec --json "add input validation to the signup handler"
Flag --json mengubah stdout menjadi JSONL. Setiap event—eksekusi perintah, perubahan file, dan pesan agen—dikeluarkan sebagai objek JSON terpisah.
Jika pipeline Anda membutuhkan kontrak output yang stabil, gunakan --output-schema:
codex exec \
--json \
--output-schema ./result-schema.json \
"tambahkan validasi input pada handler signup"
Contoh skema hasil sederhana:
{
"type": "object",
"properties": {
"summary": { "type": "string" },
"filesChanged": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["summary", "filesChanged"]
}
Terbaik untuk: perubahan kode di CI yang membutuhkan output bertipe dan tervalidasi skema.
Batasan: stream JSONL cukup bertele-tele. Anda kemungkinan perlu jq untuk mengekstrak event atau hasil akhir yang relevan.
Gemini CLI
Gemini CLI adalah agen terminal open-source dari Google. CLI ini otomatis menggunakan mode tanpa kepala pada lingkungan non-TTY, atau saat Anda memberikan prompt dengan -p / --prompt.
npm install -g @google/gemini-cli
gemini --non-interactive --output-format json \
-p "list the public endpoints in this service"
Gunakan --non-interactive untuk memastikan pipeline tidak berhenti pada prompt. Untuk mengambil respons secara bersih, salurkan output ke jq:
gemini --non-interactive --output-format json \
-p "ringkas struktur repository ini" \
| jq -r '.response'
Terbaik untuk: workflow yang sudah menggunakan ekosistem Google dan tugas berat baca, seperti inspeksi atau peringkasan basis kode.
Batasan: output JSON terstruktur dapat berubah atau tiba lebih lambat dibanding beberapa alternatif. Kunci versi CLI dan uji flag pada environment target sebelum mengandalkannya di CI.
Cursor CLI
cursor-agent membawa agen pengkodean Cursor ke terminal tanpa bergantung pada editor. Gunakan -p atau --print untuk mode tanpa kepala.
curl https://cursor.com/install -fsS | bash
cursor-agent -p "refactor utils/date.js to use date-fns" \
--output-format json
--output-format mendukung:
textjsonstream-json
Untuk agentic workflow, pilih json jika Anda hanya membutuhkan hasil akhir, atau stream-json jika orchestrator perlu memantau event saat proses berjalan.
Pada lingkungan tanpa kepala, gunakan --trust hanya jika agen memang perlu menjalankan shell atau menulis file tanpa konfirmasi:
cursor-agent -p "perbarui dependency yang rentan" \
--trust \
--output-format json
Terbaik untuk: tim yang sudah menstandardisasi Cursor dan ingin memakai agen yang sama pada editor, CI, atau git hooks.
Batasan: mode -p tanpa kepala pernah dilaporkan macet pada build dan platform tertentu. Uji pada OS target, gunakan versi yang terbukti stabil, dan tetap gunakan token dengan hak akses minimum.
gh (GitHub CLI)
gh adalah CLI utama untuk workflow agen yang berhubungan dengan repository, issue, pull request, atau rilis GitHub.
brew install gh
gh pr list --json number,title,author --jq '.[].author.login'
Berikan daftar bidang pada --json agar output hanya memuat data yang diperlukan:
gh issue list --json number,title,state,labels
Untuk melihat bidang yang tersedia pada subperintah tertentu, gunakan --json tanpa daftar nilai:
gh pr list --json
Untuk endpoint yang tidak tersedia sebagai subperintah, gunakan gh api:
gh api repos/cli/cli/issues --jq '.[].title'
Terbaik untuk: semua operasi GitHub dalam workflow agen, dari membaca status PR hingga membuat issue.
Batasan: hanya berlaku untuk GitHub. Bidang yang tersedia pada --json juga berbeda antar-subperintah, jadi agen perlu memeriksa skema per command.
ripgrep
ripgrep (rg) membantu agen menemukan kode dengan cepat. Gunakan --json agar hasil pencarian tidak perlu diurai dari format file:line:text.
brew install ripgrep
rg --json "TODO" src/ \
| jq 'select(.type == "match") | .data.path.text'
Setiap kecocokan memuat data bertipe, seperti:
- jalur file
- nomor baris
- teks yang cocok
- ringkasan pencarian
Contoh mengambil lokasi kecocokan:
rg --json "deprecatedFunction" src/ \
| jq -r '
select(.type == "match")
| "\(.data.path.text):\(.data.line_number)"
'
Terbaik untuk: pencarian kode terstruktur dan cepat di repository besar sebelum agen memutuskan file yang perlu diubah.
Batasan: output --json cukup berisik dan biasanya membutuhkan jq. Untuk pencarian manual satu kali, mode teks biasa lebih sederhana.
jq
jq adalah perekat untuk pipeline JSON. Hampir semua CLI dalam daftar ini dapat menghasilkan JSON, dan jq membantu Anda memilih, memfilter, atau membentuk ulang data sebelum diteruskan ke langkah berikutnya.
brew install jq
curl -s https://api.github.com/repos/cli/cli \
| jq '{name, stars: .stargazers_count}'
Contoh pipeline agen sederhana:
gh pr list --json number,title \
| jq -r '.[] | select(.title | test("bug"; "i")) | .number'
Gunakan -e jika Anda ingin jq mengembalikan status gagal ketika filter tidak menemukan nilai yang valid:
gh pr list --json number,title \
| jq -e '.[] | select(.title == "Release blocker")'
Terbaik untuk: mengubah output JSON dari satu alat menjadi input yang dibutuhkan langkah berikutnya.
Batasan: bahasa query-nya memiliki kurva belajar dan hanya bekerja untuk JSON. Jangan mengarahkannya ke log mentah tanpa normalisasi terlebih dahulu.
HTTPie
Saat agen perlu memanggil API HTTP secara langsung, HTTPie (http) sering lebih mudah digunakan dibandingkan curl mentah karena mendukung JSON secara default.
brew install httpie
http --print=b POST httpbin.org/post name=apidog role=cli
Gunakan --print=b agar stdout hanya berisi body respons. Ini membantu agen mengurai JSON tanpa harus menghapus header lebih dulu.
Contoh POST JSON:
http --print=b POST https://api.example.com/users \
name="Wanda" \
role="developer" \
active:=true
Lalu ekstrak respons:
http --print=b GET https://api.example.com/users \
| jq '.data[] | {id, name}'
Terbaik untuk: panggilan API JSON yang cepat dan dapat diskrip.
Batasan: menambah dependensi ketika curl sudah tersedia hampir di semua environment. Untuk streaming atau protokol yang lebih khusus, curl tetap lebih fleksibel.
apidog-cli
Sebagian besar CLI dalam daftar ini awalnya dibuat untuk manusia, lalu menambahkan flag --json. apidog-cli berbeda: output terstruktur adalah bagian inti dari desainnya. Responsnya juga dapat menyertakan agentHints.nextSteps, yaitu petunjuk langkah berikutnya yang dapat langsung digunakan agen pemanggil.
apidog-cli adalah CLI proyek API lengkap, bukan hanya test runner. Satu biner dapat menangani endpoint, skema atau model data, mock, environment, impor, ekspor, dokumentasi, skenario pengujian, dan branch.
Instal lalu autentikasi:
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --help
Jalankan pengujian dari pipeline:
apidog run
Gunakan kode keluar untuk keputusan otomatis:
if apidog run; then
echo "API tests passed"
else
echo "API tests failed"
exit 1
fi
apidog run keluar dengan kode 0 jika semua pengujian lulus dan non-nol jika ada kegagalan. Ini memungkinkan agen atau CI bercabang berdasarkan exit code tanpa harus mengurai output terlebih dahulu.
Untuk integrasi dengan runtime agen, lihat:
Gunakan AI Branch untuk perubahan yang aman
Agen dengan akses tulis dapat menimpa atau menghapus endpoint dan skema yang nyata. Untuk mengisolasi perubahan agen, gunakan AI Branch:
apidog branch --type ai
Dengan branch AI, agen bekerja pada cabang terpisah. Branch sumber tetap tidak berubah sampai Anda meninjau dan menyetujui permintaan penggabungan.
Pelajari polanya lebih lanjut melalui:
Terbaik untuk: agen yang membutuhkan satu CLI JSON-native untuk siklus hidup API, termasuk pengujian, dokumentasi, mock, dan editing yang terisolasi.
Batasan: Apidog bukan open source. Ini adalah produk komersial dengan tingkatan gratis. Apidog juga bukan linter OpenAPI, jadi pasangkan dengan Spectral atau Redocly jika workflow Anda membutuhkan penegakan style API.
Cara memilih
Tidak ada satu pemenang untuk semua kasus. Runtime menjalankan penalaran agen; CLI alat menjalankan operasi spesifik. Pilih kombinasi berdasarkan pekerjaan yang perlu dilakukan.
| Alat | Terbaik untuk | Instalasi | Sumber terbuka? | Catatan kesesuaian agen |
|---|---|---|---|---|
| Claude Code | Pengkodean multi-langkah, perencanaan | npm i -g @anthropic-ai/claude-code |
Tidak |
-p + --output-format json, biaya tersedia di output |
| Codex CLI | Perubahan kode CI bertipe skema | npm i -g @openai/codex |
Ya |
codex exec --json, --output-schema
|
| Gemini CLI | Google stack, tugas berat baca | npm i -g @google/gemini-cli |
Ya | --non-interactive --output-format json |
| Cursor CLI | Tim Cursor, paritas editor-ke-CI | `curl cursor.com/install \ | bash` | Tidak |
| gh | Semua operasi GitHub | brew install gh |
Ya | Bidang --json dan --jq bawaan |
| ripgrep | Pencarian kode terstruktur cepat | brew install ripgrep |
Ya | Event kecocokan bertipe melalui --json
|
| jq | Membentuk ulang JSON dari alat apa pun | brew install jq |
Ya | Deterministik, cocok untuk pipeline |
| HTTPie | Panggilan API JSON yang dapat diskrip | brew install httpie |
Ya | JSON-first dan kontrol --print
|
| apidog-cli | Siklus hidup API penuh untuk agen | npm i -g apidog-cli |
Tidak, tersedia tingkatan gratis | JSON native dan agentHints.nextSteps
|
Untuk implementasi praktis, mulai dengan satu runtime agen dan sedikit CLI alat:
# Contoh toolkit minimal untuk agen yang bekerja di repo GitHub dan API
brew install gh ripgrep jq httpie
npm install -g @openai/codex apidog-cli
Lalu susun pipeline sederhana:
# 1. Temukan kode terkait endpoint.
rg --json "/users" src/ | jq -r 'select(.type == "match") | .data.path.text'
# 2. Jalankan agen untuk menganalisis atau mengubah kode.
codex exec --json "perbaiki validasi endpoint /users"
# 3. Jalankan pengujian API.
apidog run
# 4. Buka PR jika semua langkah berhasil.
gh pr create --title "Perbaiki validasi endpoint /users" --body "Dibuat melalui workflow agen"
Untuk workflow API, menggabungkan curl, mock server, dan test runner memang dapat bekerja. Namun, CLI JSON-native yang sudah mengenali konteks API dan dapat memberikan langkah berikutnya akan mengurangi kode perekat dalam orchestrator Anda.
Ringkasan
CLI yang cocok untuk agen AI memiliki tiga sifat konkret:
- Output terstruktur yang dapat diurai agen.
- Mode non-interaktif yang tidak pernah macet pada prompt.
- Kode keluar deterministik yang dapat dipakai untuk percabangan.
Runtime seperti Claude Code, Codex CLI, Gemini CLI, dan Cursor CLI membawa kemampuan penalaran serta eksekusi agen. CLI alat seperti gh, rg, jq, HTTPie, dan apidog-cli menjalankan operasi spesifik secara dapat diprediksi.
apidog-cli menonjol untuk workflow API karena menyediakan JSON secara default, kode keluar yang dapat diandalkan, serta petunjuk langkah berikutnya untuk agen. Jika pekerjaan agen Anda menyentuh API, unduh Apidog dan coba CLI-nya, atau mulai dari panduan lengkap Apidog CLI. Setelah itu, hubungkan ke CI agar output yang ramah agen benar-benar memberi dampak pada pipeline.
Top comments (0)