> ## Documentation Index
> Fetch the complete documentation index at: https://cli.fuxicode.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Kontainer pengembangan

> Jalankan Fuxi Code di dalam kontainer pengembangan untuk lingkungan yang konsisten dan terisolasi di seluruh tim Anda.

Sebuah [kontainer pengembangan](https://containers.dev/), atau dev container, memungkinkan Anda mendefinisikan lingkungan yang identik dan terisolasi yang dapat dijalankan oleh setiap insinyur di tim Anda. Dengan Fuxi Code yang diinstal di kontainer tersebut, perintah yang dijalankan Fuxi dieksekusi di dalamnya daripada di mesin host, sementara pengeditan file proyek Anda muncul di repositori lokal Anda saat Anda bekerja.

Halaman ini mencakup [menginstal Fuxi Code di dev container Anda](#add-fuxi-code-to-your-dev-container), kemudian serangkaian topik konfigurasi yang berdiri sendiri: mempertahankan autentikasi di seluruh rebuild, menerapkan kebijakan organisasi, membatasi egress jaringan, dan menjalankan tanpa permintaan izin. Baca topik-topik yang sesuai dengan pengaturan Anda.

<Warning>
  Meskipun dev container menyediakan perlindungan yang substansial, tidak ada sistem yang sepenuhnya kebal terhadap semua serangan.
  Ketika dijalankan dengan `--dangerously-skip-permissions`, dev container tidak mencegah proyek berbahaya dari mengekstraksi apa pun yang dapat diakses di dalam kontainer, termasuk kredensial Fuxi Code yang disimpan di [`~/.fuxi`](/id/fuxi-directory).
  Hanya gunakan dev container saat mengembangkan dengan repositori terpercaya, dan pantau aktivitas Fuxi.
  Hindari memasang rahasia host seperti `~/.ssh` atau file kredensial cloud ke dalam kontainer; lebih suka token yang dibatasi repositori atau token berumur pendek.
</Warning>

<Accordion title="Bagaimana dev container bekerja dengan editor Anda">
  <img src="https://mintcdn.com/fuxi-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagram menunjukkan editor di host yang terhubung ke Docker dev container. Fuxi Code, terminal, dan alat build berjalan di dalam kontainer. Repositori host di-bind-mount ke dalam kontainer sebagai workspace." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

  <img src="https://mintcdn.com/fuxi-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Diagram menunjukkan editor di host yang terhubung ke Docker dev container. Fuxi Code, terminal, dan alat build berjalan di dalam kontainer. Repositori host di-bind-mount ke dalam kontainer sebagai workspace." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

  Dev container berjalan sebagai Docker container, baik di mesin Anda atau di host cloud seperti GitHub Codespaces. Editor yang mendukung spesifikasi Dev Containers, seperti VS Code, GitHub Codespaces, JetBrains IDE, atau Cursor, terhubung ke kontainer tersebut: Anda menjelajahi dan mengedit file di editor seperti biasa, tetapi terminal terintegrasi, language server, dan alat build semuanya berjalan di dalam kontainer daripada di host Anda. Editor tanpa dukungan dev container, seperti Vim biasa, bukan bagian dari alur kerja ini.

  Fuxi Code berjalan di dalam kontainer, jadi ia melihat file, dependensi, dan alat yang sama seperti sisa toolchain proyek Anda. Di VS Code Anda dapat menggunakan [panel ekstensi Fuxi Code](/id/vs-code) atau menjalankan `fuxi` di terminal terintegrasi; keduanya berjalan di dalam kontainer dan berbagi konfigurasi `~/.fuxi` yang sama.
</Accordion>

<h2 id="add-fuxi-code-to-your-dev-container">
  Tambahkan Fuxi Code ke dev container Anda
</h2>

Fuxi Code diinstal ke dalam dev container apa pun melalui [Fuxi Code Dev Container Feature](https://github.com/anthropics/devcontainer-features/tree/main/src/fuxi-code).

Pengaturan bekerja dengan alat apa pun yang mendukung spesifikasi Dev Containers, seperti VS Code, GitHub Codespaces, atau JetBrains IDEs. Langkah-langkah di bawah menggunakan VS Code sebagai contoh.

Ketika Anda membuka kontainer di VS Code atau Codespaces, fitur juga menambahkan ekstensi VS Code Fuxi Code; editor lain mengabaikan bagian itu.

<Tip>
  Baru mengenal dev container? Tutorial [VS Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/tutorial) memandu Anda melalui penginstalan Docker, ekstensi, dan membuka kontainer pertama Anda. Untuk contoh yang lebih lengkap dan diperkuat dengan firewall dan volume persisten, lihat [Coba kontainer referensi](#try-the-reference-container).
</Tip>

<Steps>
  <Step title="Buat atau perbarui devcontainer.json">
    Simpan yang berikut sebagai `.devcontainer/devcontainer.json` di repositori Anda, atau tambahkan blok `features` ke file yang sudah ada.

    Tag versi di akhir, seperti `:1.0`, menentukan skrip instalasi fitur, bukan rilis Fuxi Code. Fitur menginstal Fuxi Code terbaru, dan Fuxi Code secara otomatis memperbarui dirinya sendiri di dalam kontainer secara default.

    Untuk menentukan versi CLI atau menonaktifkan auto-update, lihat [Terapkan kebijakan organisasi](#enforce-organization-policy).

    ```json .devcontainer/devcontainer.json theme={null}
    {
      "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
      "features": {
        "ghcr.io/anthropics/devcontainer-features/fuxi-code:1.0": {}
      }
    }
    ```

    Ganti baris `image` dengan citra dasar proyek Anda atau hapus jika file yang ada menggunakan Dockerfile.
  </Step>

  <Step title="Bangun kembali kontainer">
    Buka Command Palette VS Code dengan `Cmd+Shift+P` di Mac atau `Ctrl+Shift+P` di Windows dan Linux, dan jalankan **Dev Containers: Rebuild Container**.

    Untuk alat lain, ikuti tindakan rebuild alat tersebut: lihat [membangun kembali di GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), [Dev Containers CLI](https://github.com/devcontainers/cli), atau dokumentasi dev container IDE Anda.
  </Step>

  <Step title="Masuk ke Fuxi Code">
    Buka terminal di kontainer yang telah dibangun kembali dan jalankan `fuxi`, kemudian ikuti permintaan autentikasi.
  </Step>
</Steps>

Apa yang Anda lihat di permintaan autentikasi tergantung pada penyedia Anda:

* **Anthropic**: masuk melalui browser dengan akun Fuxi atau Anthropic Console Anda
* **[Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry](/id/third-party-integrations)**: Fuxi Code menggunakan kredensial penyedia cloud Anda, tanpa permintaan browser

Untuk penyedia cloud, teruskan kredensial ke dalam kontainer sebagai variabel lingkungan melalui `containerEnv`, rahasia Codespaces, atau identitas workload cloud Anda daripada memasang file kredensial dari host. Lihat [Amazon Bedrock](/id/amazon-bedrock), [Google Cloud's Agent Platform](/id/google-vertex-ai), atau [Microsoft Foundry](/id/microsoft-foundry) untuk rantai kredensial yang dibaca Fuxi Code.

Lihat [Pilih penyedia API Anda](/id/admin-setup#choose-your-api-provider) untuk memutuskan jalur mana yang sesuai dengan organisasi Anda.

<Note>
  Jika masuk browser selesai tetapi callback tidak pernah mencapai kontainer, salin kode yang ditampilkan di browser dan tempel di permintaan `Paste code here if prompted` di terminal. Ini dapat terjadi ketika port forwarding editor tidak merutekan callback localhost.
</Note>

<h2 id="persist-authentication-and-settings-across-rebuilds">
  Pertahankan autentikasi dan pengaturan di seluruh rebuild
</h2>

Secara default, direktori home kontainer dibuang saat rebuild, jadi insinyur harus masuk lagi setiap kali. Fuxi Code menyimpan token autentikasi, pengaturan pengguna, dan riwayat sesi di bawah [`~/.fuxi`](/id/fuxi-directory). Pasang volume bernama di jalur tersebut untuk menjaga status ini di seluruh rebuild.

Contoh berikut memasang volume di direktori home pengguna `node`:

```json devcontainer.json theme={null}
"mounts": [
  "source=fuxi-code-config,target=/home/node/.fuxi,type=volume"
]
```

Ganti `/home/node` dengan direktori home `remoteUser` kontainer Anda. Jika Anda memasang volume di tempat lain selain `~/.fuxi`, atur [`FUXI_CONFIG_DIR`](/id/env-vars) ke jalur mount sehingga Fuxi Code membaca dan menulis di sana.

Untuk mengisolasi status per proyek daripada berbagi satu volume di semua repositori, sertakan variabel `${devcontainerId}` dalam nama sumber. [Konfigurasi referensi](https://github.com/anthropics/fuxi-code/blob/main/.devcontainer/devcontainer.json) menggunakan `source=fuxi-code-config-${devcontainerId}` untuk tujuan ini.

Di GitHub Codespaces, `~/.fuxi` bertahan di seluruh penghentian dan memulai codespace, tetapi masih dihapus saat Anda membangun kembali kontainer, jadi pemasangan volume di atas juga berlaku di sana. Untuk membawa autentikasi di seluruh codespace, simpan `ANTHROPIC_API_KEY` atau `FUXI_CODE_OAUTH_TOKEN` dari [`fuxi setup-token`](/id/authentication#generate-a-long-lived-token) sebagai [rahasia Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces membuat rahasia tersedia sebagai variabel lingkungan di dalam kontainer secara otomatis.

<h2 id="enforce-organization-policy">
  Terapkan kebijakan organisasi
</h2>

Dev container adalah tempat yang nyaman untuk menerapkan kebijakan organisasi, karena citra dan konfigurasi yang sama berjalan di mesin setiap insinyur.

Fuxi Code membaca `/etc/fuxi-code/managed-settings.json` di Linux dan menerapkannya dengan prioritas tertinggi dalam [hierarki pengaturan](/id/settings#how-scopes-interact), jadi nilai di sana menggantikan apa pun yang ditetapkan insinyur di `~/.fuxi` atau direktori `.fuxi/` proyek. Salin file ke tempat dari Dockerfile Anda:

```dockerfile Dockerfile theme={null}
RUN mkdir -p /etc/fuxi-code
COPY managed-settings.json /etc/fuxi-code/managed-settings.json
```

Karena Dockerfile berada di repositori, siapa pun dengan akses tulis dapat mengubah atau menghapus langkah ini. Untuk kebijakan yang tidak dapat dilewati insinyur dengan mengedit file repositori, berikan pengaturan terkelola melalui [pengaturan yang dikelola server](/id/server-managed-settings) atau MDM Anda. Lihat [file pengaturan terkelola](/id/settings#settings-files) untuk kunci yang tersedia dan jalur pengiriman lainnya.

Untuk mengatur [variabel lingkungan](/id/env-vars) yang berlaku untuk setiap sesi Fuxi Code di kontainer, tambahkan ke `containerEnv` di `devcontainer.json` Anda. Contoh berikut memilih keluar dari telemetri dan pelaporan kesalahan dan mencegah Fuxi Code dari auto-update setelah instalasi:

```json devcontainer.json theme={null}
"containerEnv": {
  "FUXI_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
  "DISABLE_AUTOUPDATER": "1"
}
```

Dev Container Feature selalu menginstal rilis Fuxi Code terbaru. Untuk menentukan versi Fuxi Code tertentu untuk build yang dapat direproduksi, instal dari Dockerfile Anda dengan `npm install -g @anthropic-ai/fuxi-code@X.Y.Z` daripada menggunakan fitur, dan atur `DISABLE_AUTOUPDATER` seperti yang ditunjukkan di atas.

Untuk daftar lengkap kontrol kebijakan termasuk aturan izin, pembatasan alat, dan allowlist server MCP, lihat [Atur Fuxi Code untuk organisasi Anda](/id/admin-setup).

Untuk membuat [server MCP](/id/mcp) tersedia di dalam kontainer, tentukan di [cakupan proyek](/id/mcp#mcp-installation-scopes) dalam file `.mcp.json` di akar repositori sehingga diperiksa bersama konfigurasi dev container Anda. Instal binari apa pun yang bergantung pada server stdio lokal di Dockerfile Anda, dan tambahkan domain server jarak jauh ke allowlist jaringan Anda.

<h2 id="restrict-network-egress">
  Batasi egress jaringan
</h2>

Anda dapat membatasi lalu lintas keluar kontainer hanya ke domain yang dibutuhkan Fuxi Code. Lihat [Persyaratan akses jaringan](/id/network-config#network-access-requirements) untuk domain inferensi dan autentikasi, dan [Layanan telemetri](/id/data-usage#telemetry-services) untuk koneksi telemetri dan pelaporan kesalahan opsional dan cara menonaktifkannya.

Kontainer referensi mencakup skrip [`init-firewall.sh`](https://github.com/anthropics/fuxi-code/blob/main/.devcontainer/init-firewall.sh) yang memblokir semua lalu lintas keluar kecuali domain yang dibutuhkan Fuxi Code dan alat pengembangan Anda. Menjalankan firewall di dalam kontainer memerlukan izin ekstra, jadi referensi menambahkan kemampuan `NET_ADMIN` dan `NET_RAW` melalui `runArgs`. Skrip firewall dan kemampuan ini tidak diperlukan untuk Fuxi Code itu sendiri: Anda dapat meninggalkannya dan mengandalkan kontrol jaringan Anda sendiri.

<h2 id="run-without-permission-prompts">
  Jalankan tanpa permintaan izin
</h2>

Karena kontainer menjalankan Fuxi Code sebagai pengguna non-root dan membatasi eksekusi perintah ke kontainer, Anda dapat melewatkan `--dangerously-skip-permissions` untuk operasi tanpa pengawasan. CLI menolak flag ini saat diluncurkan sebagai root, jadi konfirmasi `remoteUser` diatur ke akun non-root.

Melewatkan permintaan izin menghilangkan kesempatan Anda untuk meninjau panggilan alat sebelum dijalankan. Fuxi masih dapat memodifikasi file apa pun di workspace yang di-bind-mount, yang muncul langsung di host Anda, dan menjangkau apa pun yang diizinkan kebijakan jaringan kontainer. Pasangkan flag ini dengan [pembatasan egress jaringan](#restrict-network-egress) di atas untuk membatasi apa yang dapat dijangkau sesi yang dilewati.

Jika Anda menginginkan lebih sedikit permintaan tanpa menonaktifkan pemeriksaan keamanan, pertimbangkan [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode), yang memiliki pengklasifikasi meninjau tindakan sebelum dijalankan. Untuk mencegah insinyur menggunakan `--dangerously-skip-permissions` sama sekali, atur `permissions.disableBypassPermissionsMode` ke `"disable"` dalam [pengaturan terkelola](/id/settings#permission-settings).

<h2 id="try-the-reference-container">
  Coba kontainer referensi
</h2>

Repositori [`anthropics/fuxi-code`](https://github.com/anthropics/fuxi-code/tree/main/.devcontainer) mencakup contoh dev container yang menggabungkan CLI, firewall egress, volume persisten, dan shell berbasis Zsh. Ini disediakan sebagai contoh kerja daripada citra dasar yang dipertahankan; gunakan untuk melihat bagaimana potongan-potongan cocok bersama sebelum menerapkannya ke konfigurasi Anda sendiri.

<Steps>
  <Step title="Instal prasyarat">
    Instal VS Code dan [ekstensi Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).
  </Step>

  <Step title="Kloning referensi">
    Kloning [repositori Fuxi Code](https://github.com/anthropics/fuxi-code) dan buka di VS Code.
  </Step>

  <Step title="Buka kembali di kontainer">
    Ketika diminta, klik **Reopen in Container**, atau jalankan **Dev Containers: Reopen in Container** dari Command Palette.
  </Step>

  <Step title="Mulai Fuxi Code">
    Setelah kontainer selesai dibangun, buka terminal dengan `` Ctrl+` `` dan jalankan `fuxi` untuk masuk dan mulai sesi pertama Anda.
  </Step>
</Steps>

Untuk menggunakan konfigurasi ini dengan proyek Anda sendiri, salin direktori `.devcontainer/` ke repositori Anda dan sesuaikan Dockerfile untuk toolchain Anda, atau kembali ke [Tambahkan Fuxi Code ke dev container Anda](#add-fuxi-code-to-your-dev-container) untuk menambahkan hanya fitur ke setup yang sudah Anda miliki.

Konfigurasi referensi terdiri dari tiga file. Tidak satupun dari mereka diperlukan saat Anda menambahkan Fuxi Code ke dev container Anda sendiri melalui fitur, tetapi mereka menunjukkan satu cara untuk menggabungkan potongan-potongan.

| File                                                                                                       | Tujuan                                                                       |
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| [`devcontainer.json`](https://github.com/anthropics/fuxi-code/blob/main/.devcontainer/devcontainer.json) | Pemasangan volume, kemampuan `runArgs`, ekstensi VS Code, dan `containerEnv` |
| [`Dockerfile`](https://github.com/anthropics/fuxi-code/blob/main/.devcontainer/Dockerfile)               | Citra dasar, alat pengembangan, dan instalasi Fuxi Code                    |
| [`init-firewall.sh`](https://github.com/anthropics/fuxi-code/blob/main/.devcontainer/init-firewall.sh)   | Memblokir semua lalu lintas jaringan keluar kecuali domain yang diizinkan    |

<h2 id="next-steps">
  Langkah berikutnya
</h2>

Setelah Fuxi Code berjalan di dev container Anda, halaman di bawah mencakup sisa peluncuran organisasi: memilih jalur autentikasi, memberikan kebijakan terkelola di luar repositori, memantau penggunaan, dan memahami apa yang disimpan dan dikirim Fuxi Code.

* [Atur Fuxi Code untuk organisasi Anda](/id/admin-setup): pilih penyedia autentikasi, putuskan bagaimana kebijakan mencapai perangkat, dan rencanakan peluncuran
* [Pengaturan yang dikelola server](/id/server-managed-settings): berikan kebijakan terkelola dari konsol admin Fuxi.ai sehingga insinyur tidak dapat melewatinya dengan mengedit file repositori
* [Pantau penggunaan dan aktivitas audit](/id/monitoring-usage): ekspor metrik OpenTelemetry dan tinjau apa yang dijalankan tim Anda
* [Persyaratan akses jaringan](/id/network-config#network-access-requirements): daftar domain lengkap untuk proxy dan firewall
* [Layanan telemetri dan opt-out](/id/data-usage#telemetry-services): apa yang dikirim Fuxi Code secara default dan variabel lingkungan yang menonaktifkannya
* [Jelajahi direktori `.fuxi`](/id/fuxi-directory): apa yang disimpan pemasangan volume, termasuk kredensial, pengaturan, dan riwayat sesi
* [Lingkungan sandbox](/id/sandbox-environments): bandingkan dev container dengan sandbox Bash bawaan, container khusus, dan VM
* [Model keamanan](/id/security): bagaimana sistem izin Fuxi Code, sandboxing, dan perlindungan injeksi prompt cocok bersama
* [Mode izin](/id/permission-modes): rentang lengkap dari mode rencana ke mode otomatis ke bypass, dan kapan menggunakan masing-masing
