Lewati ke konten

Buat templat pipeline

Templat pipeline disusun di pengaturan ruang kerja. Entri Pipeline di bilah sisi ruang kerja adalah antrean eksekusi, bukan daftar templat — di sana tidak ada tindakan “buat templat”.

Untuk mengetahui arti setiap jenis langkah, kunci badan, dan kolom konfigurasi, lihat referensi langkah pipeline.

  1. Buka Pengaturan → Ruang kerja → Template pipeline (/workspaces/<workspace-id>/settings/pipelines).
  2. Tekan Template baru.

Tidak ada dialog id. Editor langsung terbuka pada kerangka yang telah disemai bernama Pipeline baru, dengan id yang dialokasikan otomatis (pipeline_1, lalu pipeline_2, …). Klik judul di header untuk mengganti namanya.

Kanvasnya tidak kosong: satu node entri Trigger, satu node agen prompt berlabel Step, dan satu sentin terminal yang mengakhiri eksekusi. Sentin itu tidak digambar. Editor menghubungkan ulang terminal tersembunyi tersebut ke setiap titik akhir yang dapat dijangkau, sehingga pekerjaan yang Anda lampirkan setelah Step tetap berjalan.

Bilah sisi Pustaka node selalu berada di kiri editor. Saring dengan kotak Cari node dan seret entri ke kanvas — node mendarat di tempat Anda melepasnya, tanpa koneksi masuk.

Node palet Jenis langkah Apa yang dilakukannya
Bash script listen Menjalankan skrip shell dengan substitusi {{state}}; tidak ada agen yang dikirim
Open conversation listen Membuka satu space yang terlihat untuk eksekusi ini beserta checkout-nya; node agen bergabung ke ruangan ini
Clone PR branch listen Menemukan branch head PR melalui gh pr view lalu mengkloningnya ke direktori eksekusi
Post PR comment listen Memposting temuan yang telah dikonsolidasikan ke PR sebagai komentar tinjauan GitHub
Reviewer (prompt) listen Mengirim agen peninjau spesialis; menangguhkan langkah sampai agen mengirimkan hasilnya
Consolidate (join) join Menunggu beberapa cabang hulu, lalu meminta agen mengonsolidasikan output mereka
Custom prompt listen Node generik berbasis prompt yang dirutekan melalui badan promptAgent
Post to space listen Mengirim pesan ke space perpesanan
Condition / switch (router) router Mencabangkan alur berdasarkan nilai state
If file exists (router) router Merutekan "true" saat sebuah path ada di bawah klon, jika tidak "false"
Any file exists (OR router) router Merutekan "true" saat salah satu path yang terdaftar ada
All conditions (AND router) router Merutekan "true" hanya saat semua path yang terdaftar ada
Team dispatch listen Mengirim satu tim penuh dan menangguhkan langkah sampai tim itu selesai
Approval gate listen Berhenti sejenak menunggu keputusan persetujuan
For each (map) forEach Merender prompt per item, lalu mengirim agen sekali dengan prompt-prompt itu digabungkan
Call sub-pipeline listen Menjalankan templat lain sebagai langkah bersarang
Clean up worktrees listen Menghapus worktree terisolasi yang sudah usang; deterministik, tidak ada agen yang dikirim

Pustaka ini mengelompokkannya dalam Alur & logika, Tinjauan PR, Agen, Pesan, dan Kode. Tidak ada grup Demo.

Setiap node kerja memiliki port output berbentuk lingkaran di tepi kanannya. Seret dari port itu ke node lain untuk menghubungkan keduanya. Pemicu awal juga sama: masing-masing memiliki portnya sendiri, sehingga kabel dari Jadwal tidak juga keluar dari Run manual. Tekan Tambah langkah (+) tepat setelah sebuah node untuk menyisipkan satu jenis langkah di belakangnya. Arahkan kursor ke titik tengah koneksi yang sudah ada dan tekan × untuk memutusnya.

Koneksi juga dapat diedit dari node yang menerimanya:

  1. Pilih node hilir. Panel konfigurasinya terbuka di sebelah kanan.
  2. Gulir ke Pemicu dari dan ketuk chip untuk setiap node hulu yang harus didengarkan node ini. Mengetuk chip yang sudah dipilih akan menghapus koneksinya.
  3. Jika node hulu adalah router, blok Kunci rute muncul di bawah chip dengan satu kolom Kunci rute dari <node> per koneksi router. Masukkan kunci yang memicu koneksi tersebut — true atau false untuk router file-exists, atau nama kasus untuk switch.

Setiap node pemicu adalah titik masuk. Sebuah node dapat mendengarkan beberapa hulu (fan-in) dan memberi masukan ke beberapa hilir (fan-out), dan graf harus tetap asiklik — tidak ada apa pun di editor yang mencegah Anda membuat siklus, jadi periksa pekerjaan Anda.

Sentin terminal disaring keluar dari kanvas, sehingga tidak dapat dipilih. Editor menghubungkan ulang sentin itu ke setiap titik akhir yang dapat dijangkau setiap kali graf berubah, sehingga pekerjaan yang Anda lampirkan setelah Step yang telah disemai tetap berjalan. Graf kosong (pemicu tanpa penerus kerja) mencantumkan pemicunya sendiri agar eksekusi selesai seketika.

Pilih sebuah node untuk membuka panel konfigurasinya. Kolom yang muncul bergantung pada badan node tersebut.

Setiap node memiliki Label, Kunci input (kunci state yang dipisahkan koma, dibaca saat eksekusi) dan, di bawah Lanjutan, Reducer, Batas waktu (ms), Percobaan ulang, Lanjutkan jika langkah ini gagal, dan Skema output (JSON). Node listen dan join juga dapat mengalihkan Jenis-nya antara keduanya.

Menambahkan pemilih cakupan repo (repo ruang kerja mana yang akan di-checkout; kosong berarti tidak ada), Nama space, dan kotak centang Buka percakapan di dalamnya. Saat kotak centang itu aktif, kolom Nama percakapan memberi nama stream yang dibuka ruangan tersebut. Node agen bergabung ke ruangan ini — node agen tidak membuka ruangannya sendiri.

Menambahkan Agen (agen mana yang dikirim), Prompt (gunakan {{key}} untuk merujuk input atau output hulu), dan Kunci output.

Batas waktu (ms) dinyatakan dalam milidetik, bukan detik — 900000 berarti 15 menit. Memasukkan 900 memberi langkah itu 0,9 detik.

Mode percakapan yang dijalankan oleh node agen prompt tidak memiliki kolom di editor pada node agen. Mode itu dibawa melalui extras['mode'] (chat, plan, atau review) pada node Open conversation yang membuat ruangan tersebut (default review). Menyetelnya pada langkah agen akan diabaikan. Kunci tersebut dicocokkan secara persis: ejaan lain apa pun diabaikan secara diam-diam.

Menambahkan Skrip. Tidak ada kolom direktori kerja maupun lingkungan, karena keduanya tidak dapat dikonfigurasi:

  • Setiap langkah bash dalam satu eksekusi berbagi cwd <cc_root>/pipelines/<runId>/.
  • GITHUB_TOKEN disuntikkan dari penyimpanan kredensial, sehingga gh dan git clone https://x-access-token:$GITHUB_TOKEN@… berfungsi tanpa penyiapan.
  • Skrip dijalankan sebagai executable literal bash, sehingga bash harus ada di PATH host server. Hal ini perlu diperhatikan di Windows.

Router mengevaluasi suatu kondisi dan mengembalikan kunci rute; mesin hanya memicu koneksi hilir yang kunci rutenya cocok dan menandai cabang lainnya sebagai dilewati.

Memilih router akan menggantikan kolom Kunci output dengan editor kondisi. Pilih salah satu dari empat modenya:

  • File ada — salah satu — merutekan "true" saat salah satu path yang terdaftar ada.
  • File ada — semua — merutekan "true" hanya saat semua path yang terdaftar ada.
  • Perbandingan — membandingkan nilai state dengan literal.
  • Alih — merutekan berdasarkan nilai kunci state, dengan kasus default.

Lalu setel kunci rute yang sesuai pada koneksi keluaran (lihat Hubungkan node).

Grup boolean and / or / not didukung oleh badan langkah tetapi tidak dapat dibuat dari formulir ini — grup itu memerlukan pohon predikat yang ditulis tangan di bawah extras.predicate. Kosakata lengkap predikat dan operator ada di referensi langkah pipeline.

Tidak ada konfigurasi tersendiri: node ini menunggu semua langkah hulunya.

Gerbang ini mengirim agen penyetuju ke percakapan tersembunyi dengan prompt gerbang lalu menangguhkan langkah. Agen penyetuju meminta keputusan Anda di percakapan tersebut dan mengirimkannya dengan submit_output dalam bentuk { "decision": "approved" | "rejected", "reason": "..." }. Keputusan itu tersimpan di bawah kunci output (default approval_decision), sehingga router alih di hilir dapat bercabang berdasarkan keputusan tersebut.

Setel Agen ke agen penyetuju dan Prompt ke pertanyaan gerbang. Gerbang diselesaikan melalui submit_output dalam bentuk { "decision": "approved" | "rejected", "reason": "..." }. Node Reviewer (prompt) mengirimkan dengan cara yang sama.

Menambahkan ID tim dan Mode dispatch. Pemilihnya menawarkan tepat dua mode:

  • allParallel — satu tugas per anggota, menangguhkan langkah sampai semua selesai.
  • manager — mengirim pemimpin, yang kemudian mendelegasikan.

Nilai lain yang tersimpan berperilaku sebagai allParallel. Setel Reducer ke append untuk mengumpulkan hasil setiap anggota ke dalam daftar di bawah kunci output.

For each memetakan pada kunci state items secara default (extras.iterableKey / extras.itemKey pada node). Node ini merender promptnya sekali per item ({{item}} secara default) dan mengirim agen sekali dengan prompt-prompt tersebut digabungkan. Koleksi kosong selesai seketika dengan daftar kosong. Ini bukan satu pengiriman paralel per item.

Call sub-pipeline menangguhkan langkah sampai eksekusi anak mencapai status terminal, lalu menggabungkan state akhir anak di bawah kunci output (default subflow_result). Arahkan ke anak dengan extras.templateId. Templat tidak dapat memanggil dirinya sendiri; anak yang gagal atau dibatalkan menggagalkan langkah induk, yang kemudian meneruskan ke kebijakan percobaan ulang dan lanjut saat gagal langkah tersebut.

Deklarasikan input dan izinkan eksekusi manual

Bagian berjudul “Deklarasikan input dan izinkan eksekusi manual”

Keduanya berada di balik Eksekusi manual di header editor.

  1. Tekan Eksekusi manual.
  2. Aktifkan Izinkan eksekusi manual. Sakelar ini langsung tersimpan — ia membuat (atau menghapus) baris pemicu manual yang membuat templat muncul di pemilih eksekusi.
  3. Setel Maks. eksekusi paralel jika Anda ingin membatasi (biarkan kosong untuk tanpa batas). Eksekusi tambahan menunggu dalam status queued sampai ada slot yang bebas.
  4. Tekan Tambah input untuk setiap kolom formulir yang harus dikumpulkan oleh eksekusi manual:
Kolom Keterangan
Kunci Kunci state tempat nilai disimpan; rujuk sebagai {{key}}
Label Label tampilan (defaultnya adalah kunci)
Tipe Teks, Teks multi-baris, Angka, Sakelar, Pilihan, Repository
Opsi (dipisahkan koma) Pilihan yang dipisahkan koma, hanya untuk Pilihan
Nilai default Nilai yang telah diisi sebelumnya
Placeholder Teks petunjuk di dalam kolom yang kosong
Teks bantuan Teks bantuan di bawah kolom
Wajib Apakah formulir eksekusi memblokir nilai yang kosong

Input Repository merender pemilih atas repo ruang kerja dan mengisi repo_id, repo_local_path, repo_full_name dan — saat repo memiliki remote GitHub — repo_owner dan repo_name ke dalam payload eksekusi.

  1. Tekan Simpan di dialog. Perubahan input dilipat ke dalam draf; perubahan itu tersimpan saat Anda menyimpan templat.
  1. Tekan Simpan di header editor. Header menampilkan “Perubahan belum disimpan” sampai Anda melakukannya.
  2. Kembali ke Pengaturan → Ruang kerja → Template pipeline dan pastikan sakelar baris templat itu aktif. Mesin menolak memulai templat yang dinonaktifkan dan templat yang dinonaktifkan tidak pernah muncul di pemilih eksekusi.
  3. Untuk memulainya secara otomatis, seret pemicu dari pustaka node ke kanvas — lihat Siapkan pemicu pipeline.