Secara default, Managed Agents mengeksekusi alat dan kode di dalam sandbox cloud yang dikelola Anthropic. Sandbox yang di-host sendiri menjaga orkestrasi tetap di sisi Anthropic tetapi memindahkan eksekusi alat ke infrastruktur yang Anda kendalikan, sehingga kode agen, filesystem, dan egress jaringan tidak pernah meninggalkan lingkungan Anda.
Eksekusi alat tetap berada di host Anda: filesystem yang dibaca dan ditulis agen, proses yang dijalankannya, dan jaringan yang dapat dijangkaunya semuanya berada di bawah kendali Anda. Input dan output alat tetap mengalir ke control plane Anthropic (tempat Claude berjalan) sehingga model dapat melihat hasil dan menentukan apa yang harus dilakukan selanjutnya. Lihat model keamanan untuk batasan aliran data lengkap.
| Lingkungan cloud | Sandbox yang di-host sendiri | |
|---|---|---|
| Tempat alat dijalankan | Sandbox yang dikelola Anthropic | Infrastruktur Anda |
| Jangkauan jaringan | Kontrol egress Anthropic | Kebijakan jaringan Anda |
| Pemasangan file dan repo GitHub | Dikelola oleh Anthropic | Dikelola oleh Anda |
| Siklus hidup | Dikelola oleh Anthropic | Dikelola oleh Anda |
Self-hosting cocok ketika agen perlu beroperasi pada data yang tidak boleh meninggalkan batas jaringan Anda, menjangkau layanan internal yang tidak dapat dirutekan secara publik, atau berjalan di bawah kontrol kepatuhan dan audit organisasi Anda sendiri.
Untuk kelayakan Zero Data Retention dan HIPAA BAA, lihat API dan retensi data.
Self-hosting mengontrol di mana kode agen dieksekusi. MCP tunnel mengontrol bagaimana Anthropic menjangkau server MCP di jaringan Anda. Keduanya independen: sesi yang berjalan di sandbox cloud Anthropic tetap dapat menjangkau server MCP privat melalui tunnel, dan sesi yang di-host sendiri dapat menggunakan server MCP yang di-tunnel maupun publik. Gunakan keduanya ketika Anda ingin eksekusi dan akses alat tetap berada di dalam batas Anda. Untuk memberikan agen alat dari server MCP di dalam jaringan Anda tanpa menjalankan tunnel, Anda juga dapat membungkus server sebagai alat kustom yang dilayani oleh worker Anda.
Environment worker adalah proses yang Anda jalankan di infrastruktur Anda sendiri. Worker ini menerima permintaan eksekusi alat dari Anthropic dan menjalankannya secara lokal. Lingkungan self_hosted bertindak sebagai antrean kerja: ketika sebuah sesi ditugaskan ke lingkungan tersebut, Anthropic memasukkan sesi itu ke antrean sebagai item kerja. Worker Anda mengklaim item kerja dari antrean tersebut, membuat konteks eksekusi untuk masing-masing item, mengunduh skill agen (sumber daya berbasis filesystem yang dapat digunakan kembali dan memberikan keahlian spesifik domain kepada agen), menjalankan panggilan alat, dan mengirimkan hasilnya kembali.
Item kerja diklaim dengan melakukan polling pada antrean lingkungan: baik oleh worker always-on yang melakukan polling terus-menerus, atau handler yang dipicu webhook yang aktif saat session.status_run_started dan mulai melakukan polling.
CLI dan SDK keduanya menyertakan worker yang sudah dibangun sebelumnya. CLI ant hanya mendukung pola always-on; SDK mendukung always-on dan yang dipicu webhook. Keduanya dapat dikonfigurasi: lihat Self-hosted worker di referensi untuk flag CLI, dan Helper SDK di halaman ini untuk opsi SDK. Untuk kontrol lebih lanjut, panggil endpoint Environments Work secara langsung dan implementasikan worker Anda sendiri.
/workspace: direktori kerja default sistem untuk eksekusi alat dan pengunduhan skill. Flag --workdir CLI secara default menggunakan direktori saat ini; berikan --workdir /workspace untuk mencocokkan default sistem. Skill diunduh ke <workdir>/skills/<name>/. Jika Anda menggunakan direktori kerja yang berbeda, perbarui prompt sistem agen Anda sehingga Claude dapat menemukan file skill./mnt/session/outputs yang digunakan pada sandbox yang dikelola Anthropic, sehingga hasil akhir berada di mana pun agen menulisnya di filesystem sandbox Anda, biasanya di bawah direktori kerja.Anda memerlukan:
/bin/bash di path yang tepat tersebut. Alat bash worker memanggilnya secara langsung, tanpa memeriksa PATH. SDK TypeScript juga memerlukan unzip dan tar pada PATH serta Node.js 22 atau lebih baru; SDK Python dan Go menggunakan pustaka standar mereka untuk ekstraksi arsip dan tidak memiliki persyaratan biner tambahan.ant atau SDK Anthropic (Python, TypeScript, atau Go) pada host worker.Buat lingkungan yang di-host sendiri
Di Console: Workspace > Environments > New > Self-hosted
Atau melalui API:
client = anthropic.Anthropic()
environment = client.beta.environments.create(
name="self-hosted", config={"type": "self_hosted"}
)
print(environment.id)Hasilkan environment key
Di Console, buka lingkungan dan klik Generate environment key. Pembuatan key hanya dapat dilakukan di Console, terlepas dari apakah Anda membuat lingkungan melalui Console atau API. Kemudian ekspor ID lingkungan dan key pada host worker:
export ANTHROPIC_ENVIRONMENT_KEY="sk-ant-oat01-..."
export ANTHROPIC_ENVIRONMENT_ID="env_..."Pilih always-on untuk pengaturan paling sederhana: proses yang berjalan lama melakukan polling antrean secara terus-menerus dan hanya memerlukan HTTPS keluar. Pilih dipicu webhook untuk menghindari menjalankan poller yang idle; ini memerlukan endpoint webhook yang dapat dijangkau Anthropic (lihat Webhook untuk pengaturan endpoint dan verifikasi signature).
Instal ant CLI
Jalankan ini pada host worker.
Untuk lingkungan Linux, unduh biner rilis secara langsung.
VERSION=1.22.1
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
case $(uname -m) in
x86_64) ARCH=amd64 ;;
aarch64) ARCH=arm64 ;;
esac
curl -fsSL "https://github.com/anthropics/anthropic-cli/releases/download/v${VERSION}/ant_${VERSION}_${OS}_${ARCH}.tar.gz" \
| sudo tar -xz -C /usr/local/bin antAnda dapat menemukan semua rilis di halaman rilis GitHub.
Jalankan worker
In-process
ant beta:worker poll mengklaim item kerja yang ditugaskan ke lingkungan, mengunduh skill, mengeksekusi panggilan alat di direktori kerja, dan mengirimkan hasilnya kembali. Perintah ini membaca ANTHROPIC_ENVIRONMENT_KEY dan ANTHROPIC_ENVIRONMENT_ID dari environment.
ant beta:worker poll \
--workdir "/workspace"Worker keluar dengan bersih saat menerima SIGTERM atau SIGINT: worker membatalkan panggilan alat yang sedang berjalan, mengirimkan hasil error-nya, dan melepaskan item kerja sebelum berhenti.
Sandbox per sesi
Jika Anda memerlukan isolasi yang lebih kuat (filesystem baru, batas sumber daya, atau kontrol jaringan per sesi), jalankan setiap sesi di sandbox-nya sendiri. Bangun image dengan ant terinstal dan ant beta:worker run sebagai entrypoint. Base image harus menyediakan /bin/bash; curl hanya digunakan saat build. Ketika sandbox dimulai, sandbox membaca detail sesi dari variabel lingkungan, menangani sesi tersebut, dan keluar:
FROM your-base-image
ARG ANT_VERSION=1.22.1
ARG TARGETARCH
RUN ARCH=$([ "$TARGETARCH" = "arm64" ] && echo arm64 || echo amd64) && \
curl -fsSL "https://github.com/anthropics/anthropic-cli/releases/download/v${ANT_VERSION}/ant_${ANT_VERSION}_linux_${ARCH}.tar.gz" \
| tar -xz -C /usr/local/bin ant
WORKDIR /workspace
VOLUME /workspace
ENTRYPOINT ["ant", "beta:worker", "run"]Kemudian tulis skrip spawn yang meneruskan detail sesi ke sandbox baru. Poller menyuntikkan ANTHROPIC_SESSION_ID, ANTHROPIC_WORK_ID, ANTHROPIC_ENVIRONMENT_ID, dan ANTHROPIC_ENVIRONMENT_KEY ke dalam environment skrip. ANTHROPIC_BASE_URL bersifat opsional dan diteruskan hanya jika diatur pada host poller; variabel ini menggantikan endpoint API default. Dalam contoh ini, /host/outputs adalah direktori host yang Anda pilih; direktori ini di-bind-mount ke direktori kerja sandbox (/workspace) sehingga Anda dapat mengambil hasil sesi setelah sandbox keluar. Pada lingkungan yang di-host sendiri, agen menulis hasil di bawah direktori kerja, bukan /mnt/session/outputs (lihat Filesystem sandbox), sehingga memasang direktori kerja adalah yang menangkap hasil tersebut; mount juga mengambil pohon skills/ yang diunduh dan file perantara apa pun yang dibuat agen.
#!/bin/bash
# spawn.sh: dipanggil sekali per item kerja yang diklaim
mkdir -p "/host/outputs/$ANTHROPIC_SESSION_ID"
exec docker run --rm \
-e ANTHROPIC_SESSION_ID -e ANTHROPIC_ENVIRONMENT_KEY \
-e ANTHROPIC_WORK_ID -e ANTHROPIC_ENVIRONMENT_ID -e ANTHROPIC_BASE_URL \
-v "/host/outputs/$ANTHROPIC_SESSION_ID":/workspace \
your-imageMulai poller dengan mengarahkannya ke skrip:
ant beta:worker poll \
--on-work ./spawn.shSDK menyediakan tiga helper pada tingkat kontrol yang berbeda. EnvironmentWorker mencakup sebagian besar kasus penggunaan; turun ke helper tingkat lebih rendah ketika Anda perlu meluncurkan proses per sesi Anda sendiri atau menjalankan alat terhadap sesi yang sudah diklaim.
EnvironmentWorker: worker siap pakai. Menangani polling, pengaturan, dan eksekusi dari awal hingga akhir.
.run(): berjalan tanpa batas waktu, mengambil sesi saat sesi tiba..handle_item(): menangani satu item kerja yang diklaim dan keluar. Berikan identifier work, session, dan environment secara eksplisit, atau biarkan membaca variabel ANTHROPIC_* yang diatur ant beta:worker poll --on-work untuk proses yang dijalankannya.work.poller(): melakukan polling antrean kerja atas nama Anda dan memberikan setiap sesi yang diklaim. Gunakan ini ketika Anda ingin memutuskan apa yang terjadi untuk setiap sesi, misalnya meluncurkan sandbox alih-alih menjalankan alat in-process.
drain: apakah berhenti melakukan polling setelah antrean kosong alih-alih menunggu pekerjaan baru.block_ms: berapa lama menunggu pekerjaan tiba sebelum kembali, dalam milidetik. Harus antara 1 dan 999 (waktu tunggu per poll; helper melakukan polling ulang secara otomatis). Berikan null (None di Python, param.Null[int64]() di Go) untuk pemeriksaan non-blocking; menghilangkan parameter menggunakan long-poll default 999 ms.reclaim_older_than_ms: klaim ulang item kerja yang diklaim tetapi tidak pernah di-acknowledge dalam jumlah milidetik ini.auto_stop: apakah mengirimkan sinyal stop untuk setiap item kerja setelah body loop Anda selesai dengannya. Poller Go tidak memiliki opsi opt-out dan selalu mengirimkan sinyal stop, jadi blokir di body loop sampai sesi selesai alih-alih melepaskannya.client.beta.sessions.events.tool_runner(): menjalankan panggilan alat untuk satu sesi, dengan ID sesi dan daftar alat. Gunakan ketika Anda sudah mengklaim pekerjaan dan hanya memerlukan lapisan eksekusi.Gunakan work poller secara langsung ketika Anda ingin meluncurkan proses per sesi Anda sendiri, misalnya menjalankan sandbox untuk setiap sesi yang diklaim:
import asyncio
import os
from anthropic import AsyncAnthropic
from anthropic.types.beta.environments import BetaSelfHostedWork
async def launch_container(work: BetaSelfHostedWork) -> None:
# Ganti dengan peluncur sandbox per-sesi milik Anda sendiri. Teruskan
# ANTHROPIC_ENVIRONMENT_KEY ke dalam sandbox yang diluncurkan, jangan pernah
# kunci API Anda.
print(f"claimed session {work.data.id}")
async def main() -> None:
environment_key = os.environ["ANTHROPIC_ENVIRONMENT_KEY"]
environment_id = os.environ["ANTHROPIC_ENVIRONMENT_ID"]
async with AsyncAnthropic(auth_token=environment_key) as client:
async for work in client.beta.environments.work.poller(
environment_id=environment_id,
environment_key=environment_key,
auto_stop=False, # the launched sandbox owns the stop call
):
await launch_container(work)
asyncio.run(main())AgentToolContext adalah konteks eksekusi untuk panggilan alat. Ini mendefinisikan direktori kerja dan kebijakan path, dan dapat mengunduh skill sesi. beta_agent_toolset_20260401(env) menerima AgentToolContext dan mengembalikan implementasi alat standar (bash, read, write, edit, glob, grep).
Dengan EnvironmentWorker: keduanya dikelola secara otomatis. Berikan factory tools untuk menyesuaikan daftar alat:
EnvironmentWorker(client, ..., tools=lambda env: [beta_bash_tool(env), my_custom_tool])Dengan work.poller() dan tool_runner(): berikan daftar alat sebagai tools ke client.beta.sessions.events.tool_runner(). Untuk membangun daftar tersebut, atur AgentToolContext sendiri dan panggil beta_agent_toolset_20260401(env):
from anthropic.lib.tools.agent_toolset import (
AgentToolContext,
beta_agent_toolset_20260401,
)
async with AgentToolContext(
workdir="/workspace", client=client, session_id=work.data.id
) as env:
# skills diunduh ke /workspace/skills/<name>/
tools = beta_agent_toolset_20260401(env)Dari shell terpisah, dengan ANTHROPIC_API_KEY diatur ke kunci API Claude Anda (bukan environment key), konfirmasi workers_polling setidaknya 1:
ant beta:environments:work stats --environment-id "$ANTHROPIC_ENVIRONMENT_ID"Jika workers_polling tetap 0, worker tidak mencapai antrean: konfirmasi ANTHROPIC_ENVIRONMENT_KEY dan ANTHROPIC_ENVIRONMENT_ID diatur pada host worker. Lihat Membaca kedalaman antrean untuk respons statistik lengkap dan contoh bahasa lainnya.
Setelah worker Anda berjalan, buat sesi yang menargetkan lingkungan tersebut. Atur AGENT_ID ke ID agen yang Anda catat di Sebelum Anda mulai. Sesi masuk ke antrean kerja lingkungan dan menunggu di sana sampai worker mengklaimnya; jika tidak ada worker yang terhubung, sesi tetap dalam antrean alih-alih gagal.
Anthropic tidak memasang file atau repositori GitHub ke dalam sandbox yang di-host sendiri. Untuk membuat file spesifik sesi tersedia, berikan referensi file (seperti path S3 atau commit SHA) di field metadata sesi. Item kerja yang diklaim tidak membawa metadata sesi, tetapi membawa ID sesi: skrip spawn atau handler --on-work Anda mengambil sesi (GET /v1/sessions/{session_id}) untuk membaca field metadata, kemudian menyiapkan file ke dalam direktori kerja sebelum eksekusi alat dimulai.
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
metadata={"input_file": "s3://my-bucket/data.csv"},
)Lihat Self-hosted worker di referensi untuk daftar lengkap flag CLI, dan Helper SDK untuk opsi helper SDK.
Alat kustom adalah alat yang dieksekusi oleh kode Anda sendiri: agen mengeluarkan event agent.custom_tool_use dan menunggu user.custom_tool_result yang sesuai. Worker dapat menjadi kode tersebut, dan karena berjalan di dalam sandbox Anda, alat tersebut menjangkau layanan internal, kredensial, dan egress jaringan yang Anda konfigurasikan untuk sandbox, dan tidak lebih dari itu. Environment key mengotorisasi pengiriman hasil alat kustom, sehingga kunci API Claude Anda tetap tidak berada di host worker.
Deklarasikan alat pada agen
Tambahkan entri custom ke tools agen yang name-nya cocok dengan alat yang didaftarkan worker Anda. Lihat Alat kustom untuk bentuk deklarasi lengkap.
{
"type": "custom",
"name": "get_order_status",
"description": "Look up an order in the internal fulfillment system by order ID.",
"input_schema": {
"type": "object",
"properties": {
"order_id": { "type": "string", "description": "The order ID" }
},
"required": ["order_id"]
}
}Daftarkan implementasi dengan worker
Berikan alat melalui factory tools worker (lihat Helper SDK), bersama dengan toolset bawaan:
import asyncio
import os
from anthropic import AsyncAnthropic, beta_async_tool
from anthropic.lib.environments import EnvironmentWorker
from anthropic.lib.tools.agent_toolset import beta_agent_toolset_20260401
@beta_async_tool
async def get_order_status(order_id: str) -> str:
"""Look up an order in the internal fulfillment system by order ID."""
# Berjalan di host worker: dapat memanggil apa pun yang bisa dijangkau sandbox.
return f"Order {order_id}: shipped"
async def main() -> None:
environment_key = os.environ["ANTHROPIC_ENVIRONMENT_KEY"]
environment_id = os.environ["ANTHROPIC_ENVIRONMENT_ID"]
async with AsyncAnthropic(auth_token=environment_key) as client:
await EnvironmentWorker(
client,
environment_id=environment_id,
environment_key=environment_key,
workdir="/workspace",
tools=lambda env: [*beta_agent_toolset_20260401(env), get_order_status],
).run()
asyncio.run(main())Worker hanya menjawab alat yang terdaftar padanya. Alat kustom yang dideklarasikan pada agen tetapi tidak terdaftar pada worker atau klien mana pun membuat sesi terjeda dengan stop reason requires_action sampai sesuatu mengirimkan hasilnya; lihat Menangani panggilan alat kustom untuk alur event.
MCP connector terhubung ke server MCP dari sisi Anthropic, sehingga server harus mengekspos endpoint HTTP yang dapat dijangkau Anthropic, secara langsung atau melalui MCP tunnel. Untuk menggunakan server yang hanya dapat dijangkau jaringan Anda, jadikan worker sebagai klien MCP dan deklarasikan alat server sebagai alat kustom. Server MCP tidak memerlukan konektivitas masuk dari luar jaringan Anda; Anthropic menerima definisi alat yang Anda deklarasikan pada agen, input setiap panggilan, dan hasil yang dikirimkan kembali oleh worker Anda. Saat runtime, model memanggil alat yang dibungkus seperti alat kustom lainnya:
agent.custom_tool_use.user.custom_tool_result.Helper MCP sisi klien SDK mengonversi alat server menjadi alat yang dapat dijalankan yang diterima worker; instal SDK MCP bersama SDK Anthropic (pip install "anthropic[mcp]" "mcp>=1.24", npm install @modelcontextprotocol/sdk, go get github.com/modelcontextprotocol/go-sdk). Contoh-contoh ini terhubung tanpa autentikasi; untuk mengirim kredensial, konfigurasikan klien HTTP atau opsi request yang Anda berikan ke transport MCP (http_client di Python, requestInit di TypeScript, HTTPClient di Go).
Deklarasikan alat server pada agen
Daftar alat server MCP dan deklarasikan masing-masing sebagai alat custom; name, description, dan inputSchema MCP dipetakan satu-ke-satu ke field alat kustom. Jika server mempaginasi daftar alatnya, deklarasikan setiap halaman; worker harus mendaftar halaman yang sama.
import asyncio
from typing import Any, cast
from anthropic import AsyncAnthropic
from anthropic.types.beta import BetaManagedAgentsCustomToolParams
from mcp import ClientSession, types
# Memerlukan mcp >= 1.24, yang mengganti nama streamablehttp_client menjadi streamable_http_client.
from mcp.client.streamable_http import streamable_http_client
MCP_SERVER_URL = "http://mcp.internal.example.com:8000/mcp"
def to_custom_tool(tool: types.Tool) -> BetaManagedAgentsCustomToolParams:
# Field MCP dipetakan satu-ke-satu ke deklarasi alat kustom. Cast ini
# meneruskan dictionary skema ke parameter bertipe milik SDK tanpa perubahan.
return {
"type": "custom",
"name": tool.name,
"description": tool.description or tool.name,
"input_schema": cast(Any, tool.inputSchema),
}
async def main() -> None:
# Jalankan ini di tempat Anda membuat agen, bukan di host worker: skrip ini
# melakukan autentikasi dengan kunci API Claude Anda (ANTHROPIC_API_KEY).
async with (
streamable_http_client(MCP_SERVER_URL) as (read, write, _),
ClientSession(read, write) as mcp_session,
AsyncAnthropic() as client,
):
await mcp_session.initialize()
listed = await mcp_session.list_tools()
agent = await client.beta.agents.create(
name="Internal tools agent",
model="claude-opus-5",
tools=[
{"type": "agent_toolset_20260401"},
*[to_custom_tool(tool) for tool in listed.tools],
],
)
print(agent.id)
asyncio.run(main())Layani alat dari worker
Hubungkan ke server MCP yang sama saat startup, konversi alatnya dengan helper MCP, dan daftarkan bersama toolset bawaan. Jaga satu sesi MCP tetap terbuka selama masa hidup worker.
import asyncio
import os
from datetime import timedelta
from anthropic import AsyncAnthropic
from anthropic.lib.environments import EnvironmentWorker
from anthropic.lib.tools.agent_toolset import beta_agent_toolset_20260401
from anthropic.lib.tools.mcp import async_mcp_tool
from mcp import ClientSession
# Memerlukan mcp >= 1.24, yang mengganti nama streamablehttp_client menjadi streamable_http_client.
from mcp.client.streamable_http import streamable_http_client
MCP_SERVER_URL = "http://mcp.internal.example.com:8000/mcp"
async def main() -> None:
environment_key = os.environ["ANTHROPIC_ENVIRONMENT_KEY"]
environment_id = os.environ["ANTHROPIC_ENVIRONMENT_ID"]
# Hubungkan ke server MCP sekali saat startup dan biarkan sesi tetap terbuka selama
# masa hidup worker. Timeout mengubah panggilan alat yang macet menjadi hasil
# error alih-alih panggilan yang terhenti.
async with (
streamable_http_client(MCP_SERVER_URL) as (read, write, _),
ClientSession(read, write, read_timeout_seconds=timedelta(seconds=60)) as mcp_session,
AsyncAnthropic(auth_token=environment_key) as client,
):
await mcp_session.initialize()
listed = await mcp_session.list_tools()
mcp_tools = [async_mcp_tool(tool, mcp_session) for tool in listed.tools]
await EnvironmentWorker(
client,
environment_id=environment_id,
environment_key=environment_key,
workdir="/workspace",
tools=lambda env: [*beta_agent_toolset_20260401(env), *mcp_tools],
).run()
asyncio.run(main())Perhatikan hal-hal berikut saat Anda membungkus server MCP:
tools agen menerima paling banyak 128 entri (setiap alat yang dibungkus adalah satu entri, dan toolset bawaan adalah satu lagi). API menolak deklarasi yang menggunakan kembali nama alat, menamai alat kustom dengan nama alat agen bawaan seperti bash atau read, atau menggunakan prefiks mcp__ yang dicadangkan. Helper MCP mempertahankan nama dan deskripsi server, jadi ganti nama atau pangkas jika diperlukan. Ketika dua server mengekspos nama alat yang sama, definisikan wrapper sendiri dengan nama yang diberi prefiks dan buat wrapper tersebut memanggil nama alat asli server.additionalProperties dan title. API menolak kata kunci referensi seperti $ref di mana pun dalam input_schema alat kustom, jadi inline skema yang difaktorkan generator seperti pydantic ke dalam $defs. API juga menolak oneOf, anyOf, dan allOf tingkat atas, serta nama properti di luar huruf, angka, garis bawah, titik, dan tanda hubung (1–64 karakter).read_timeout_seconds. Tanpa itu, panggilan yang menggantung menjadi hasil error hanya ketika timeout request default SDK MCP TypeScript terpicu (sekitar satu menit) atau ketika backstop worker sendiri terpicu: sekitar dua setengah menit di Python, dan dua menit di Go, di mana worker membatalkan panggilan alat yang melebihi default 120 detiknya dan mengirimkan hasil error.bash pada host worker. Deklarasikan hanya alat yang Anda maksudkan untuk digunakan agen.Panggilan ini dijalankan dari tooling pemantauan atau operasi Anda, diautentikasi dengan kunci API Claude Anda, untuk mengamati dan mengelola armada worker. Loop klaim dan keep-alive ditangani di dalam helper worker, jadi Anda tidak memanggil endpoint tersebut secara langsung.
work.stats mengembalikan status antrean untuk sebuah lingkungan:
depth adalah jumlah item yang menunggu untuk diklaim. Skalakan armada worker Anda atau beri peringatan pada backlog berdasarkan nilai ini.pending adalah jumlah item yang diklaim oleh worker tetapi belum di-acknowledge. Helper worker meng-acknowledge setiap item sebelum memprosesnya, sehingga nilai ini tetap mendekati nol dalam operasi normal; nilai non-nol yang berkelanjutan berarti worker terhenti antara mengklaim dan meng-acknowledge.oldest_queued_at adalah timestamp item tertua yang masih dalam antrean, menunggu untuk diklaim atau diklaim tetapi belum di-acknowledge, atau null ketika tidak ada.workers_polling adalah jumlah worker yang telah melakukan polling dalam 30 detik terakhir. Gunakan ini untuk peringatan liveness.import os
import anthropic
client = anthropic.Anthropic()
stats = client.beta.environments.work.stats(os.environ["ANTHROPIC_ENVIRONMENT_ID"])
print(f"depth={stats.depth} pending={stats.pending}"){
"type": "work_queue_stats",
"depth": 0,
"pending": 0,
"oldest_queued_at": null,
"workers_polling": 0
}Gunakan work.stop untuk meminta worker yang menangani sesi tertentu agar menutupnya. Secara default, work item berpindah ke status stopping: worker akan menyadarinya pada heartbeat lease berikutnya, membatalkan panggilan alat sesi yang sedang berjalan, dan mengonfirmasi penutupan, yang pada titik itu work item menjadi stopped. Sertakan force: true dalam body permintaan (dengan CLI, sertakan --force) untuk langsung menandai work item sebagai stopped tanpa menunggu konfirmasi dari worker.
Karena panggilan ini dijalankan dari perangkat operasional Anda dan bukan dari host worker, ANTHROPIC_WORK_ID tidak diatur secara otomatis. Atur variabel tersebut ke ID work item target sebelum menjalankan contoh berikut. Untuk menemukan ID work item, daftarkan work item environment melalui endpoint Environments Work.
import os
import anthropic
client = anthropic.Anthropic()
work = client.beta.environments.work.stop(
os.environ["ANTHROPIC_WORK_ID"],
environment_id=os.environ["ANTHROPIC_ENVIRONMENT_ID"],
)
print(work.state)Model tanggung jawab bersama untuk environment sandbox yang di-host sendiri.
Buat sesi untuk menjalankan agen Anda dan mulai mengeksekusi tugas.
Hubungkan Claude secara aman ke server MCP yang berjalan di jaringan privat Anda tanpa membuka port masuk atau mengekspos layanan ke internet publik.
Was this page helpful?