Di akhir panduan ini, Claude Code berjalan di satu panel terminal, Codex di panel lain, dan beberapa chat serta agen berjalan di sampingnya. Satu board di osFoundry menampilkan semuanya. Saat Claude Code berhenti di "Do you want to make this edit?", kartunya pindah ke kolom Needs you (butuh kamu) dalam waktu kurang dari satu detik. Satu klik membuka panel tepat di prompt itu. Kamu menjawab, dan kartunya kembali ke Running (berjalan).
Siapa mengerjakan apa
| Claude Code | Aplikasi desktop osFoundry | |
|---|---|---|
| Login | Login Claude miliknya sendiri, di prosesnya sendiri | Tidak menyimpan apa pun dari itu. Untuk agen yang dijalankannya sendiri, aplikasi ini menghapus ANTHROPIC_API_KEY warisan supaya eksekusi lewat langganan tidak ditagih sebagai API |
| Tempat berjalan | PTY sungguhan di layar Terminal, di folder proyekmu | Memiliki PTY dan menyimpan salinan layar yang diemulasikan |
| Siapa yang menyetujui | Kamu, di prompt izin milik Claude Code sendiri | Tidak pernah menjawab untukmu. Hanya memindahkan kartu dan membuka panel |
| Cara status diketahui | Claude Code menampilkan UI-nya seperti biasa | Membaca layar setiap 700 ms berdasarkan aturan yang dipublikasikan, dan menerima laporan hook jika agen dijalankan olehnya |
| Tempat data tersimpan | File-mu, terminalmu | Teks layar tetap di memori aplikasi di Mac-mu. Mengakhiri sesi agen akan menulis ringkasan ke file pengetahuanmu |
Persiapan
- Buka layar Terminal (sidebar Main → Terminal,
/terminal) dan jalankan agen seperti biasa. Setiap panel adalah PTY tersendiri.
~/code/shop-api (fix/checkout-retry) $ claude
~/code/shop-web $ codex
osFoundry mengenali Claude Code dari program yang memegang terminal, atau dari layarnya jika kamu menjalankannya lewat skrip wrapper. Tidak ada yang perlu dikonfigurasi.
- Buka Sessions (sidebar Main → Sessions,
/sessions). Setiap chat, agen tunggal, tim, loop, dan sesi terminal adalah satu kartu. Kolomnya adalah Running, Needs you, Paused (dijeda), Idle (diam), Done (selesai), dan Failed (gagal). Kamu tidak bisa menyeret kartu ke sebuah kolom untuk menetapkan statusnya; kolomnya ditentukan oleh apa yang dilaporkan runtime.
- Klik Filter (tulisannya berubah menjadi Filtered saat filter aktif) lalu centang Needs me only (hanya yang butuh saya). Jenis (Chat, Agent, Team, Loop, Terminal) dan rentang waktu tetap seperti sebelumnya.
Tersisa dua kartu: sebuah chat yang mengajukan pertanyaan, dan terminal Claude Code di shop-api.
Sebuah chat masuk ke sini saat pesan terbarunya diakhiri pertanyaan yang masih menunggu jawaban. Sebuah terminal masuk ke sini saat statusnya blocked, dan itulah yang ditunjukkan langkah berikutnya.
- Klik kartu
shop-api. Layar Terminal terbuka di panel itu dengan prompt yang masih tampil. Rail di sebelah kiri menandai Claude Code sebagai "Needs you · shop-api" dan Codex sebagai "Working · shop-web".
Jika ada beberapa panel terbuka, Mod+. (⌘. di Mac) melompat ke agen berikutnya yang membutuhkanmu. Status bar juga menuliskannya: "⌘. to jump to what needs you".
- Jawab di panel seperti di tempat lain: Enter di
1. Yes. Claude Code melanjutkan pekerjaannya, dan pada sweep berikutnya rail dan board kembali menampilkannya sebagai Working / Running.
- Saat sesi agen sudah selesai dan berada di Idle, seret kartunya ke Done. Aplikasi akan bertanya dulu.
Konfirmasi akan menulis ringkasan, lalu mengakhiri sesi. Jika ringkasan gagal, sesi tetap di tempatnya. Sesi yang sedang berjalan sama sekali tidak bisa dijatuhkan ke Done: "This session is still running. Pause it first, then end it." (jeda dulu, baru akhiri).
Contoh eksekusi nyata
Contoh. Panel dari screenshot tadi, dan apa yang disimpulkan osFoundry dari setiap layar. Keputusannya berasal dari file aturan Claude Code, claude.toml, yang dibundel bersama aplikasi dan juga tersedia di osfoundry.io/agent-detection/claude.toml.
~/code/shop-api (fix/checkout-retry) $ claude
● Retry now reuses the first charge. Updating the payment code.
Edit file src/payments/charge.ts
41 - const intent = await stripe.paymentIntents.create(params)
41 + const intent = await stripe.paymentIntents.create(params, {
42 + idempotencyKey: `charge-${order.id}`,
43 + })
Do you want to make this edit to charge.ts?
❯ 1. Yes
2. Yes, allow all edits during this session
3. No, and tell Claude what to do differently
di layar state aturan yang terpicu kartu
spinner, "esc to interrupt" working esc to interrupt Running
prompt di atas blocked Do you want to (proceed|continue|make this edit|create) Needs you
... kamu menekan Enter di "1. Yes"
spinner lagi working esc to interrupt Running
● Update(src/payments/charge.ts)
⎿ Updated src/payments/charge.ts with 3 additions and 1 removal
● Bash(npm test -- payments)
⎿ Tests: 42 passed, 42 total
● Fixed. A second press of Pay now reuses the first charge.
Aturan blocked sengaja diletakkan di atas aturan working. Selama prompt tampil, footer Claude Code masih bisa bertuliskan "esc to interrupt", dan aturan pertama yang cocok yang menang.
Di mana batasnya
osFoundry tidak pernah menjawab prompt untukmu. Agen lain bisa mengetik ke sebuah panel lewat tool runtime_send milik aplikasi, tetapi tool itu menolak panel yang sedang menunggu keputusan. Menjawab harus lewat tool dengan nama terpisah, runtime_answer, dan kamu mengonfirmasi setiap jawaban. Pengecekannya dilakukan dengan membaca ulang layar pada saat mengetik, bukan dari sweep terakhir, sehingga prompt yang baru saja muncul tidak bisa menangkap ketikan yang dimaksudkan sebagai teks biasa.
Layar yang tidak bisa dibaca osFoundry dilaporkan sebagai Idle, tidak pernah sebagai Needs you. Komentar di detect.rs menjelaskan alasannya: satu alarm palsu saja dan orang berhenti memercayai badge-nya, dan setelah itu alarm yang benar pun ikut sia-sia. Jadi saat sebuah aturan ragu, aplikasi melaporkan lebih sedikit, bukan lebih banyak.
Aturan adalah data, bukan kode. File aturan yang diunduh bisa mengubah pola mana yang cocok, dan tidak lebih. File itu tidak bisa mengubah program mana yang dijalankan. Override milikmu sendiri diletakkan di ~/.osfoundry/agent-detection/claude.toml.
Teks terminal tetap berada di memori aplikasi desktop. Hanya sesi yang kamu akhiri yang meninggalkan jejak di luar panel: ringkasannya di file pengetahuanmu, ditulis sebelum apa pun diarsipkan.
Selanjutnya
Jalankan Claude Code kedua di folder lain, beri keduanya tugas yang membutuhkan perubahan, lalu biarkan board Sessions terfilter ke Needs me only sementara kamu mengerjakan hal lain. Jika belum punya aplikasi desktopnya, kamu bisa mendapatkannya di halaman unduhan.






Top comments (0)