Claude Architect · Pelajaran

Protokol Serah Terima Terstruktur

Lakukan serah terima dengan ID, ringkasan, tindakan, dan rekomendasi.

Pelajaran 4 dari 413 langkah

Protokol Serah Terima Terstruktur adalah pelajaran Claude Architect gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Claude Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Claude Architect mencakup 4 pelajaran total.

Mengapa Handoff Memerlukan Struktur

Dalam sistem multi-agen hub-and-spoke, koordinator terus menerus menyerahkan pekerjaan kepada subagen dan menerima kembali hasilnya. Fakta yang CRITICAL: subagen NOT mewarisi riwayat percakapan koordinator — model tidak menyimpan keadaan, sehingga riwayat permintaan FULL dikirim dalam messages pada setiap giliran.

Artinya, setiap handoff harus membawa konteksnya sendiri secara eksplisit. Perintah tidak terstruktur seperti "perbaiki bug autentikasi" akan kehilangan ID kasus, hal-hal yang sudah dicoba, dan keputusan yang perlu dikembalikan kepada koordinator. Protokol handoff terstruktur mengatasi hal ini: setiap transfer membawa pengenal, ringkasan, tindakan yang telah dilakukan, dan rekomendasi.

Handoff Empat Bagian

Muatan handoff yang andal memiliki empat bidang, dan masing-masing mengatasi mode kegagalan tertentu:

  • ID — kunci korelasi yang stabil (case_id, custom_id) agar hasil dapat dicocokkan dengan permintaan, bahkan pada pemanggilan paralel.
  • Ringkasan — fakta transaksional secara verbatim yang diperlukan penerima (ID pelanggan terverifikasi, nomor pesanan, jumlah).
  • Tindakan — hal-hal yang sudah dicoba, beserta hasilnya, agar pekerjaan tidak diulang.
  • Rekomendasi — langkah atau keputusan berikutnya yang diusulkan dan harus dikonfirmasi atau ditolak oleh penerima.

Hal ini secara langsung sesuai dengan cara koordinator menguraikan, mendelegasikan, menggabungkan, dan merutekan pekerjaan.

Teruskan Konteks Secara Eksplisit

Karena subagen dimulai dengan riwayat kosong, Anda tidak dapat mengandalkan asumsi "subagen sudah mengetahuinya". Masukkan handoff ke dalam prompt subagen itu sendiri. Perhatikan bahwa ID, ringkasan, dan tindakan sebelumnya dijelaskan secara terperinci — tidak ada yang diasumsikan.

subagent_prompt = f"""
HANDOFF
id: {case_id}
summary: Verified customer C-4821 (id confirmed via get_customer).
  Order O-9930, refund requested: $420.
actions_taken:
  - get_customer -> identity verified
  - lookup_order(O-9930) -> status DELIVERED, eligible
recommendation: Approve refund of $420; confirm against policy before process_refund.

Proceed with the recommendation or override it with justification.
"""

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system="You are the refund-processing subagent.",
    messages=[{"role": "user", "content": subagent_prompt}],
    tools=refund_tools,
)

Tegakkan Bentuk dengan Keluaran Terstruktur

Handoff berupa teks bebas mudah salah format. Untuk menjamin keempat bidang selalu ada, jadikan handoff sebagai alat dengan JSON Schema dan gunakan tool_choice untuk memaksa keluaran terstruktur. tool_use + JSON Schema menghilangkan kesalahan sintaks dan menegakkan bidang yang wajib.

Aturan utama dari lembar fakta: tandai suatu bidang sebagai required ONLY jika bidang tersebut selalu ada. id, summary, actions, dan recommendation selalu ada dalam handoff yang valid — jadi bidang-bidang tersebut memang wajib. Bidang opsional seperti escalation_reason MUST NOT diwajibkan, atau model akan mengarangnya.

handoff_tool = {
    "name": "emit_handoff",
    "description": "Emit a structured handoff to the coordinator.",
    "input_schema": {
        "type": "object",
        "properties": {
            "id": {"type": "string"},
            "summary": {"type": "string"},
            "actions": {"type": "array", "items": {"type": "string"}},
            "recommendation": {"type": "string"},
            "escalation_reason": {"type": "string"}
        },
        "required": ["id", "summary", "actions", "recommendation"]
    }
}

Paksa Handoff dengan tool_choice

Cara Anda mengatur tool_choice menentukan apakah Anda benar-benar mendapatkan handoff terstruktur:

  • "auto" — model dapat menjawab dengan prosa, bukan handoff. Berisiko untuk protokol.
  • "any" — model MUST memanggil suatu alat, sehingga keluaran terstruktur terjamin.
  • {"type":"tool","name":"emit_handoff"} — memaksa penggunaan alat ini tepat. Gunakan ini saat tugas subagen adalah mengembalikan satu handoff yang terbentuk dengan baik.
response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system="Summarize your work as a single handoff.",
    messages=history,
    tools=[handoff_tool],
    tool_choice={"type": "tool", "name": "emit_handoff"},
)

handoff = response.content[0].input  # {id, summary, actions, recommendation}

Korelasikan dengan ID yang Stabil

ID memungkinkan koordinator menggabungkan hasil yang tiba tidak berurutan. Saat Anda mengeluarkan beberapa pemanggilan Task dalam satu respons, pemanggilan tersebut berjalan secara paralel — balasan tidak kembali dalam urutan saat dikirim. Tanpa kunci korelasi, Anda tidak dapat memetakan hasil ke permintaannya.

Ini adalah prinsip yang sama dengan custom_id milik Batch API, yang mengorelasikan permintaan sehingga Anda dapat mengirim ulang hanya yang gagal. Dalam alur multi-agen sinkron, id pada handoff Anda menjalankan peran tersebut.

results_by_id = {}
for handoff in subagent_handoffs:
    results_by_id[handoff["id"]] = handoff

# Aggregate deterministically by ID, not by arrival order
for case_id in dispatched_ids:
    h = results_by_id.get(case_id)
    if h is None:
        log.warning("missing handoff for %s", case_id)

Pertahankan Fakta Secara Verbatim dalam Ringkasan

Ringkasan adalah tempat handoff sering gagal tanpa disadari. Perangkuman progresif membuat angka, persentase, dan tanggal menjadi samar — padahal itulah bidang yang diperlukan penerima untuk bertindak ($420 berubah menjadi "beberapa ratus dolar"). Model juga lebih memperhatikan awal dan akhir konteks daripada bagian tengahnya (hilang di tengah).

Solusinya: pindahkan fakta transaksional ke dalam blok fakta kasus yang dipertahankan secara verbatim, di luar ringkasan prosa. Bidang summary pada handoff harus memuat fakta-fakta ini secara persis, bukan parafrasa yang menghilangkan rincian.

case_facts = {
    "customer_id": "C-4821",
    "order_id": "O-9930",
    "refund_amount_usd": 420.00,
    "delivered_on": "2026-06-02",
}

# Inject verbatim; do NOT let these pass through summarization
summary = (
    "Verified C-4821; order O-9930 delivered 2026-06-02; "
    "refund requested $420.00."
)

Tindakan: Bedakan FAILURE dari EMPTY

Bidang tindakan harus mencatat bukan hanya apa yang dijalankan, tetapi juga apa yang dikembalikan oleh setiap pemanggilan — dan harus membedakan FAILURE akses (mungkin dapat dicoba ulang) dari hasil EMPTY yang valid (tidak ada kecocokan, jangan coba ulang). Gunakan error terstruktur, bukan error generik.

Error terstruktur memuat isError, errorCategory (sementara / validasi / bisnis / izin), isRetryable, kueri yang dicoba, dan hasil sebagian. "Operasi gagal" yang generik menghambat pemulihan; konteks terstruktur memungkinkan penerima merutekan secara cerdas.

actions = [
    {"tool": "get_customer", "result": "verified C-4821"},
    {"tool": "lookup_order", "query": "O-9930",
     "isError": True, "errorCategory": "transient",
     "isRetryable": True,
     "message": "order service timeout",
     "partial_results": []},
]

Rekomendasi, Bukan Tindakan Final

Bidang keempat adalah rekomendasi yang dapat dikonfirmasi atau ditolak oleh penerima — bukan tindakan sepihak. Ini menjaga wewenang pengambilan keputusan pada pihak yang tepat dan mendukung eskalasi yang tertata.

Pemicu eskalasi yang baik harus tercantum dalam rekomendasi: permintaan manusia yang eksplisit (segera eskalasikan), celah kebijakan, tidak ada kemajuan setelah beberapa percobaan, atau pelanggaran ambang batas. Pemicu BAD MUST NOT mengarahkannya: analisis sentimen, skor keyakinan yang dinilai sendiri oleh model, atau pengklasifikasi yang belum dilatih. Rekomendasi seperti "pelanggan terdengar frustrasi, eskalasikan" adalah pola yang harus dihindari.

recommendation = (
    "Refund $420 is within policy and order is eligible. "
    "RECOMMEND approve. NOTE: refunds over $500 require a "
    "hook-enforced check; this is under threshold."
)
# escalation_reason set ONLY on a real trigger, e.g.:
# "Customer explicitly asked for a manager."

Lindungi Langkah Kritis dengan Hook

Rekomendasi dalam handoff bersifat probabilistik — panduan prompt benar kira-kira 90% dari waktu. Jika tindakan berdasarkan handoff memiliki konsekuensi finansial, hukum, atau keselamatan, jaminannya harus deterministik, ditegakkan oleh hook, bukan oleh teks rekomendasi.

Hook panggilan keluar dapat memblokir tindakan yang melanggar kebijakan (misalnya pengembalian dana > $500), terlepas dari rekomendasi subagen. Prasyarat terprogram — memblokir process_refund sampai get_customer mengembalikan ID yang terverifikasi — memberikan jaminan yang tidak dapat diberikan prompt. Hook = 100% deterministik; prompt ≈ 90% probabilistik.

# settings.json — deterministic enforcement on the action,
# independent of the handoff recommendation
{
  "hooks": {
    "PreToolUse": [{
      "matcher": "process_refund",
      "command": "./hooks/block_refund_over_500.sh"
    }]
  }
}

Lanjutkan versus Ringkasan Baru

Terkadang handoff melanjutkan pekerjaan sebelumnya. --resume <name> melanjutkan sesi bernama, sedangkan fork_session membuat cabang dari titik bersama. Namun, berhati-hatilah: hasil alat yang dilanjutkan dapat bersifat STALE jika basis kode atau data berubah setelahnya.

Saat keadaan yang mendasarinya telah berubah, sesi baru yang diinisialisasi dengan handoff terstruktur (ID + fakta verbatim + tindakan + rekomendasi) sering kali lebih andal daripada melanjutkan sesi yang dipenuhi keluaran alat yang sudah usang. Handoff terstruktur membuat memulai ulang dengan bersih menjadi mudah.

# Continue named work...
claude --resume refund-C4821

# ...but if state changed, start fresh and inject the handoff:
claude -p "$(cat handoff_C4821.json)" \
  --system-prompt "Act on this structured handoff."

Pemeriksaan Singkat: Merancang Handoff

Seorang koordinator mengirimkan tiga kasus pengembalian dana kepada subagen dengan pemanggilan Task secara paralel. Anda sedang merancang handoff yang dikembalikan setiap subagen agar hasil dapat digabungkan dan ditindaklanjuti dengan aman. Desain mana yang benar?

Ringkasan: Protokol Handoff Terstruktur

Poin-poin penting:

  • Subagen tidak mewarisi riwayat — setiap handoff membawa konteksnya sendiri secara eksplisit.
  • Empat bidang: ID (mengorelasikan hasil paralel), ringkasan (fakta verbatim), tindakan (dengan error terstruktur), rekomendasi (konfirmasi/tolak).
  • Paksa bentuknya dengan alat handoff + JSON Schema dan tool_choice; wajibkan hanya bidang yang selalu ada.
  • Pertahankan angka dan tanggal secara verbatim dalam blok fakta kasus — perangkuman membuatnya samar.
  • Dalam tindakan, bedakan kegagalan akses dari hasil kosong yang valid melalui errorCategory dan isRetryable.
  • Gunakan hook deterministik untuk membatasi tindakan yang berkonsekuensi, jangan hanya mengandalkan rekomendasi.
  • Jika keluaran alat yang dilanjutkan mungkin sudah usang, mulai ulang dengan handoff terstruktur.
Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
26
Pelajaran
104

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Protokol Serah Terima Terstruktur” gratis?

Ya — teks lengkap “Protokol Serah Terima Terstruktur” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Claude Architect, upgrade ke CoddyKit PRO. Kursus Claude Architect mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Protokol Serah Terima Terstruktur”?

Lakukan serah terima dengan ID, ringkasan, tindakan, dan rekomendasi. Kamu berlatih Claude Architect dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Claude Architect?

Tidak diperlukan pengalaman sebelumnya. Claude Architect di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Protokol Serah Terima Terstruktur” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Claude Architect ini?

Ya. Setiap pelajaran Claude Architect menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Hook PostToolUse dan Panggilan Keluar
  2. Penegakan Deterministik vs Perintah
  3. Prasyarat Programatik
  4. Protokol Serah Terima Terstruktur
← Kembali ke Claude Architect