Dapatkan AX Code · GratisDokumentasi

Halaman ini diterjemahkan dari dokumentasi bahasa Inggris. Perintah, pengenal, dan contoh tidak diubah. Runtime 7.24.4 · SDK 2.6.7. Sumber bahasa Inggris

Mengoperasikan AX Code untuk kerja berjalan lama

Status: Aktif Cakupan: keadaan saat ini Terakhir ditinjau: 2026-09-13 Pemilik: pengelola AX Code

AX Code membatasi satu eksekusi Super-Long interaktif pada 72 jam. Untuk operasi selama berhari-hari atau berminggu-minggu, jalankan proses ax-code serve yang diawasi dan bagi kerja menjadi kejadian terjadwal yang tahan lama. Pengawas memulai ulang server; basis data proyek mempertahankan jadwal dan keadaan antrean.

Workspace interaktif yang menetap

Untuk kerja lokal yang harus berlanjut setelah terminal ditutup, ikut serta pada runtime proyek:

ax-code runtime start --dir /absolute/path/project
ax-code runtime attach --dir /absolute/path/project --continue
ax-code runtime status --dir /absolute/path/project
ax-code runtime list                  # every managed runtime on this machine
ax-code runtime stop --dir /absolute/path/project

runtime attach juga memulai runtime ketika belum ada. Runtime dikunci oleh direktori proyek kanonik; mulai bersamaan memakai ulang satu proses. TUI menampilkan host eksekusinya dan tindakan Putuskan. Memutuskan menutup klien dan mempertahankan kerja yang sudah diterima tetap berjalan. runtime stop mematikan runtime proyek itu dan menyela kerja aktifnya. ax-code biasa mempertahankan siklus hidup latar depan yang sudah ada.

Tindak lanjut yang diterima dan dikirim saat sesi sibuk disimpan di server. Secara bawaan mereka mulai setelah giliran yang berjalan selesai, jadi permintaan yang tidak terkait tidak pernah menggagalkan kerja yang sedang berlangsung. Untuk mengoreksi giliran yang berjalan, tekan ctrl+s (input_submit_steer di keybinds) dengan draf hanya teks: teks diterima ke generasi yang aktif dan ditulis sebagai pesan pengguna pada batas langkah berikutnya dari loop, setelah panggilan alat yang sedang berjalan selesai dan sebelum permintaan model berikutnya. Koreksi yang diterima saat giliran hampir selesai memperpanjang eksekusi satu iterasi alih-alih dibuang. Pengarahan bersifat upaya terbaik: jika tidak ada generasi yang masih aktif, draf dikirim lewat jalur biasa; jika hook menolaknya, draf tetap di komposer beserta alasannya. Draf dengan lampiran dan perintah garis miring selalu memakai antrean tindak lanjut. Pengiriman yang sama tersedia bagi klien lain melalui API pengarahan yang dijelaskan di kendali harness. Tindak lanjut tersimpan juga dapat diarahkan setelahnya: menekan ctrl+s dengan komposer kosong mempromosikan awalan antrean yang dapat diarahkan secara berurutan dan berhenti pada baris pertama yang tidak dapat diarahkan, dan bagian Tindak lanjut di bilah sisi serta dialog /queue menawarkan tindakan arahkan-sekarang per baris yang sama. Baris yang dijeda dapat diarahkan di tempat — menyela giliran menjeda tindak lanjut yang menunggu, dan mengarahkan salah satunya mengirim teksnya tanpa melanjutkan sisa antrean. Hanya baris bukan tindak lanjut (perintah garis miring antrean, perintah shell), baris dengan lampiran, teks kosong atau terlalu besar, serta baris yang sudah berjalan atau selesai yang menjadi penghalang. Baris yang diarahkan dibatalkan dengan jejak audit steeredInto dan tetap terlihat di riwayat /queue. Ketika tidak ada generasi yang aktif, arahkan-sekarang kembali ke memprioritaskan baris ke depan antrean — ia tetap mulai hanya setelah giliran berakhir. Komposer hanya bersih setelah pengakuan. Sambungkan kembali ke sesi yang sama dan gunakan /queue untuk memeriksa, menjeda, menyunting, melanjutkan, atau membatalkannya. Menyunting terlebih dahulu menjeda item dan mempertahankan lampiran serta pemilihan model; menyimpan tidak melanjutkannya. Suntingan basi yang bersamaan ditolak. Di /queue, Ctrl+R mencakup riwayat yang selesai dan dibatalkan. Terminal sempit juga menampilkan judul Follow-ups yang dapat diklik. Tampilan yang terputus di-cache dan tidak dapat mengubah item. Menyela giliran aktif menjeda tindak lanjut yang tertunda agar mereka tidak segera memulai giliran lain. Lanjutkan secara eksplisit ketika siap.

Setelah backend mulai ulang, tindak lanjut menunggu yang sudah diterima dapat dilanjutkan. Prompt biasa yang sedang berjalan dan terputus oleh mulai ulang itu ditandai gagal dan memerlukan pemeriksaan sebelum dicoba ulang; memulihkan catatan antrean tidak memulihkan proses shell yang sedang dieksekusi. Pengakuan yang hilang dapat dicoba ulang dari komposer yang tidak berubah dengan identitas permintaan yang sama selama sesi klien itu. Draf yang belum disimpan bukan pekerjaan yang diterima, dan ini tidak menjamin efek eksternal tepat sekali.

Mode ini tidak memasang layanan login, tidak otomatis memulai ulang server yang mogok, atau mengeksekusi saat host tidur atau mati. Mulai atau sambungkan lagi setelah mogok; gunakan contoh layanan yang diawasi di bawah untuk mulai ulang server tanpa pengawasan. Pengguna SSH sebaiknya menjalankan runtime pada host jarak jauh yang terjaga dan menyambung di sana. Jangan mengekspos port HTTP secara publik.

Penemuan runtime menyimpan kapabilitas privat dan log di bawah folder runtime/ direktori keadaan AX Code. Keluaran status menghilangkan kapabilitas. Penghentian memerlukan identitas runtime yang cocok dan terautentikasi, bukan hanya PID tersimpan. Proses hidup yang tidak tersedia, catatan rusak, atau ketidakcocokan versi memerlukan pemeriksaan; CLI menolak membunuh proses yang tidak terverifikasi. Hentikan runtime yang sehat sebelum meningkatkan dan mulai ulang dengan berkas yang dapat dieksekusi yang baru.

Model keandalan

Peristiwa Perilaku
Backend keluar sebelum kejadian jatuh tempo dikomit Kejadian tetap jatuh tempo
Backend keluar setelah transaksi jadwal-ke-antrean dikomit Item antrean yang sama dilanjutkan saat bootstrap
Backend keluar setelah prompt mulai Item yang terputus ditandai gagal, bukan diputar ulang secara otomatis
Host melewatkan beberapa kejadian run_once menggabungkannya menjadi satu eksekusi; skip maju tanpa menjalankan
Eksekusi antrean melebihi tenggatnya Eksekutor membatalkan sesi dan mencatat item antrean yang gagal
Pengawas melihat server keluar Contoh di bawah memulai ulangnya setelah penundaan singkat

Ini pemulihan yang aman dari duplikat, bukan pengiriman tepat sekali untuk efek eksternal sembarang. Integrasi yang menulis ke sistem eksternal tetap harus memakai kunci idempotensi mereka sendiri.

Sebelum memasang layanan

  1. Pasang dan uji berkas yang dapat dieksekusi ax-code sebagai pengguna yang sama yang akan menjalankan layanan.
  2. Pilih satu jalur proyek absolut. Atur sebagai AX_CODE_PROJECT agar server saat mulai memanaskan proyek itu dan memulai penjadwalnya.
  3. Pertahankan server pada 127.0.0.1; server AX Code hanya lokal.
  4. Letakkan kredensial penyedia di lingkungan terlindungi pengawas, bukan di berkas layanan yang dikomit.
  5. Ganti setiap penampung /absolute/path/... pada contoh yang dipilih.

Contoh memakai port tetap agar klien Desktop atau SDK dapat menyambung kembali:

ax-code serve --hostname=127.0.0.1 --port=4096

Layanan pengguna systemd

Salin contoh systemd ke ~/.config/systemd/user/ax-code.service, ganti jalur absolutnya, dan opsional letakkan kredensial di ~/.config/ax-code/server.env.

chmod 600 ~/.config/ax-code/server.env
systemctl --user daemon-reload
systemctl --user enable --now ax-code.service
systemctl --user status ax-code.service
journalctl --user -u ax-code.service -f

Gunakan loginctl enable-linger "$USER" hanya jika kebijakan operasi Anda mengizinkan layanan pengguna berjalan saat pengguna keluar.

Agen launchd

Salin contoh launchd ke ~/Library/LaunchAgents/com.axcode.server.plist, ganti jalur absolutnya, lalu validasi dan muat:

plutil -lint ~/Library/LaunchAgents/com.axcode.server.plist
launchctl bootstrap "gui/$(id -u)" ~/Library/LaunchAgents/com.axcode.server.plist
launchctl kickstart -k "gui/$(id -u)/com.axcode.server"

launchd tidak memperluas variabel shell di ProgramArguments. Gunakan jalur absolut dan sediakan kredensial yang diperlukan melalui mekanisme yang dikelola operator.

Pengawas PM2

Salin contoh PM2, ganti jalurnya, dan mulai:

pm2 start docs/examples/ax-code-ecosystem.config.cjs
pm2 save
pm2 logs ax-code-server

Ikuti instruksi mulai khusus platform PM2 jika proses harus kembali setelah host di-boot ulang.

Tenggat, pengejaran, dan pemulihan

Tugas terjadwal secara bawaan memakai catchUpPolicy: "run_once". Setelah waktu henti, AX Code menjalankan satu kejadian yang digabung alih-alih membuat tumpukan yang tidak terbatas. Pilih "skip" ketika kerja yang terlambat akan menyesatkan atau tidak aman.

Setiap tugas terjadwal dapat mengatur maxRunDurationMs dari 1 detik sampai 72 jam. Eksekusi antrean tugas selain itu memakai langit-langit 72 jam. Item aktif memperbarui stempel waktu detak setiap 30 detik, dan status terminal serta rincian kesalahan tetap di basis data proyek.

Titik akhir prompt, perintah, dan shell asinkron mengembalikan item antrean yang tahan lama dalam respons HTTP 202. Klien sebaiknya menyimpan id dan melakukan polling GET /task-queue/:id sampai completed, failed, atau cancelled; penerimaan saja bukan penyelesaian.

Saat mulai, backend AX Code yang menetap melanjutkan item antrean terjadwal dan item asinkron yang ditandai secara eksplisit yang sudah dikomit tetapi belum mulai. Perintah CLI sekali jalan tidak mengambil kepemilikan item itu. Kerja prompt yang sudah mulai digagalkan dengan penjelasan mulai ulang agar operator dapat memeriksa efek samping sebelum mencoba ulang.

Melihat apa yang dilakukan tugas terjadwal

Setiap kejadian tugas terjadwal terlihat saat terjadi dan dapat diaudit sesudahnya:

  • Memulai, menyelesaikan, gagal, melewatkan, dan jeda otomatis karena kegagalan menetap masing-masing menaikkan notifikasi di aplikasi yang menamai tugas.
  • Perintah TUI /schedule mencantumkan setiap tugas dengan status, jadwal, waktu eksekusi berikutnya, dan kesalahan terakhir, serta membuka riwayat eksekusi terbaru. Dari sana Anda dapat menjeda, melanjutkan, jalankan sekarang, menghapus (tekan ctrl+d dua kali untuk mengonfirmasi), dan melompat ke sesi yang dihasilkan suatu eksekusi. Alat agen list_scheduled_tasks dan list_scheduled_task_runs menjawab pertanyaan yang sama secara percakapan.
  • Setiap eksekusi berjalan di sesi baru yang berjudul sesuai judul tugas, jadi hasil tinggal satu entri daftar sesi meskipun notifikasi terlewat.
  • Jika eksekusi meminta izin atau jawaban pertanyaan saat Anda melihat percakapan lain, pemberitahuan peringatan menamai sesi yang membutuhkan Anda; /attention mencantumkan permintaan tertunda yang diketahui dan membuka sesi peminta. Permintaan dapat dijawab di sesi itu atau tampilan leluhur yang dimuat, termasuk sesi anak dan cucu. Membuka permintaan tidak pernah menyetujuinya secara otomatis.
  • Tugas sekali jalan hanya dinonaktifkan setelah eksekusi berhasil. Kejadian yang gagal mencoba ulang dengan penundaan yang dibatasi, dan kegagalan berulang menjeda tugas dengan notifikasi — pengingat tidak lagi dapat hilang diam-diam.

Pemeriksaan operasional

  • Amati jumlah mulai ulang pengawas dan log server.
  • Periksa item antrean tugas yang gagal dan kesalahan tugas terjadwal sebelum mencoba ulang.
  • Konfirmasi ruang disk yang cukup untuk basis data SQLite proyek dan log.
  • Lakukan jalankan sekarang manual setelah mengubah kredensial, model, atau jalur layanan.
  • Hentikan melalui pengawas agar AX Code menerima SIGTERM; contoh mengizinkan hingga 90 detik untuk penghentian yang anggun.

/loop sengaja bersifat lokal proses dan tidak bertahan melewati mulai ulang. Gunakan tugas terjadwal untuk kerja tanpa pengawasan yang tahan lama.

Pada 146 kolom terminal atau lebih lebar, bilah sisi navigasi kiri menampilkan sesi di workspace saat ini dan agen anak yang dimuat. Perluas baris dengan kendali + dan klik judul untuk membukanya. Sesi yang disematkan mempertahankan urutan dan nomor pintasan. Label aktivitas penuh membedakan bekerja, mencoba ulang, persetujuan, dan pertanyaan; induk juga mencerminkan permintaan dari keturunan. Label ini tidak berarti tugas lulus verifikasi. Bilah sisi kanan yang ada mempertahankan konteks dan kendali sesi saat ini.

Judul Proyek mengidentifikasi direktori saat ini. Klik atau gunakan /navigation-info untuk melihat jalur proyek penuh dan judul sesi saat ini. Terkini menampilkan sesi yang dimuat; Aktif mempertahankan pohon sesi yang bekerja atau menunggu dan pohon sesi saat ini. Filter dipakai bersama pemilih navigasi dan diingat. Gunakan /navigation-filter untuk mengalihkannya dari papan ketik. Selama pemutusan, ia menampilkan sesi ter-cache alih-alih menyimpulkan sesi mana yang aktif. Bersihkan (atau /navigation-clear) meminta konfirmasi, lalu menyembunyikan baris historis hanya dari rel kiri dan pemilih navigasi. Ia tidak menghapus sesi; /sessions tetap mencantumkannya. Pohon sesi saat ini, sesi tersemat, dan pohon yang diamati bekerja atau menunggu tetap di rel. Membuka sesi dari /sessions membawanya kembali ke daftar.

Gunakan /navigation-width atau tindakan Lebar navigasi untuk memilih 20, 24, 28, 30, 32, 36, atau 40 kolom (bawaan 28). Bilah sisi sesi kanan punya tindakan Lebar yang sama dan /sidebar-width (bawaan 32). Kedua preferensi diingat dan menyusut otomatis bila perlu untuk mempertahankan konten utama. Gunakan /navigation untuk menyembunyikan atau memulihkan rel navigasi kiri pada terminal lebar. /sidebar menyembunyikan atau memulihkan bilah sisi sesi kanan dengan cara yang sama. Pada terminal yang lebih sempit /navigation membuka pemilih sesi dan agen sebagai gantinya. Bilah Sesi yang terlihat menyediakan tindakan yang sama setiap kali rel navigasi tidak ada. Tindakannya Tertunda muncul ketika permintaan yang diketahui perlu masukan; tanda bintang menandai jumlah ter-cache selama pemutusan. /sessions tetap membuka pemilih sesi biasa. /attention tersedia pada setiap lebar. Selama pemutusan, daftarnya diberi label sebagai ter-cache; membuka entri ter-cache tetap mungkin, tetapi permintaan mungkin sudah dijawab di tempat lain. Tindakan Permintaan yang diketahui pada bilah sisi membuka permintaan tertunda di seluruh workspace yang diketahui, sementara pohon sesinya tetap terbatas pada proyek saat ini. Semua tampilan ini dibatasi oleh instans yang terhubung dan data sesi yang dimuat; jumlah ini bukan inventaris lengkap server lain atau workspace yang belum dimuat.

Draf yang belum terkirim diisolasi menurut proyek dan sesi di dalam TUI yang berjalan. Berganti sesi mempertahankan teks, lampiran, posisi kursor, dan mode shell; kembali memulihkan draf yang cocok. Draf ini hanya di memori dan tidak bertahan saat TUI ditutup.

Notifikasi penyelesaian opsional kini mengatakan Session idle. Ia mengikuti kerja yang diamati di subpohon sesi yang dilihat dan menunggu keturunan aktif yang diamati menjadi menganggur secara eksplisit, tanpa permintaan tertunda. Pemutusan, sinkronisasi ulang, keadaan yang hilang, kesalahan, dan pembatalan dapat menekan pemberitahuan. Ini notifikasi siklus hidup, bukan bukti bahwa tes lulus atau tujuan selesai.

Tugas baru dan penyiapan

Mulai biasa membuka permukaan kerja Tugas baru dengan komposer di bawah dan navigasi sesi. Membukanya atau mengetik draf tidak membuat sesi tersimpan; sesi dibuat ketika Anda mengirim. Gunakan /sessions atau navigasi kiri untuk melanjutkan kerja yang ada. Perilaku eksplisit --session, --continue, dan --prompt tetap tersedia; mulai tidak mengaktifkan lanjut-otomatis.

Penyiapan penyedia tidak terbuka secara otomatis. Gunakan tindakan /connect yang terlihat di area kerja ketika tidak ada penyedia yang dikonfigurasi. Dengan penyedia terkonfigurasi tetapi tidak ada model valid yang dipilih, tindakan berubah menjadi /models. Penemuan penyedia yang gagal menunjuk ke /status; /connect dan /providers tetap tersedia untuk memperbaiki konfigurasi. Model yang dipilih adalah pilihan konfigurasi, bukan pemeriksaan kredensial atau kesiapan runtime. Petunjuk juga muncul bagi pengguna yang kembali yang konfigurasinya perlu perhatian.