Lewati ke konten utama

Tutorial Claude Opus 4.5: Bangun Agen Wiki GitHub

Bangun agen wiki dengan Claude Opus 4.5 dan Claude Code untuk menganalisis repo, membuat dokumen wiki GitHub multi-berkas secara otomatis, dan memublikasikannya ke repositori Anda.
Diperbarui 28 Sep 2026  · 8 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Repositori GitHub modern sering kali kekurangan dokumentasi yang jelas dan terstruktur, khususnya wiki.

Membuat halaman-halaman ini secara manual dapat memakan waktu berjam-jam untuk membaca kode, memahami arsitektur, dan mengorganisir konten.

Agen AI Wiki GitHub dapat menyelesaikan masalah ini.

Dalam tutorial ini, saya akan memandu Anda membangun Agen AI Wiki GitHub yang sepenuhnya otomatis, sebuah alat baris perintah yang menggunakan Claude Opus 4.5 dan Claude Agent SDK untuk menghasilkan wiki repositori GitHub lengkap dengan satu instruksi.

Alih-alih menulis dokumentasi secara manual, alat ini menganalisis basis kode Anda, memahami strukturnya, dan menghasilkan konten wiki multi-halaman yang rapi yang otomatis di-commit dan dipublikasikan ke repositori Anda.

Semua berjalan melalui aplikasi CLI interaktif yang dirancang terasa cepat, cerdas, dan ramah pengembang.

Dalam panduan ini, kita akan mengikuti proses tiga langkah sederhana untuk menyiapkan lingkungan, membangun Agen AI Wiki GitHub, dan mengujinya pada repositori nyata:

  1. Menyiapkan lingkungan: memasang dependensi, memasang dan melakukan autentikasi Claude Code, mengonfigurasi token GitHub, dan mengaktifkan fitur Wiki.
  2. Membangun aplikasi: membuat alat CLI, mengonfigurasi Claude Agent, mengintegrasikan alat MCP GitHub, menambahkan pelacakan biaya, dan mengimplementasikan logika pembuatan wiki (Home, Getting Started, Architecture & Tools).
  3. Menguji agen: menjalankannya pada repositori nyata (ECom-Intel dan Issue-Analyzer) untuk memverifikasi cloning, analisis, pembuatan wiki, dan push otomatis.

Jika Anda baru dalam dunia agen AI dan ingin belajar lebih lanjut, saya sarankan melihat jalur keterampilan AI Agent Fundamentals. Anda juga perlu membaca tutorial tentang Claude Cowork dan panduan kami untuk Claude Opus 4.6 yang baru.

Menyiapkan Lingkungan Anda untuk Tutorial GitHub Wiki Claude Opus 4.5

Sebelum membangun Agen Wiki GitHub dengan Opus 4.5, pastikan lingkungan Anda dikonfigurasi dengan benar. Bagian ini memandu Anda melalui semua prasyarat dan langkah penyiapan.

1. Prasyarat untuk menjalankan Wiki Agent Claude Opus 4.5

  • Python 3.11 atau lebih tinggi (diperlukan oleh Python Claude Agent SDK).
  • Node.js dan npm (diperlukan untuk memasang Claude Code), yang menjadi tulang punggung aplikasi kita dan menyediakan agen, alat, dan integrasi untuk server MCP.

2. Pasang dan autentikasi Claude Code

Buka terminal Anda (Command Prompt, PowerShell, atau Terminal macOS) dan jalankan perintah berikut untuk memasang CLI Claude Code:

npm install -g @anthropic-ai/claude-code

Ketik claude di terminal Anda untuk memulai Claude Code. Lalu, di dalam chat Claude, ketik /login untuk melakukan autentikasi dan mendapatkan akses ke model dan alat Opus 4.5, seperti terlihat di bawah.

Pasang & Autentikasi Claude Code

Anda dapat mempelajari lebih lanjut tentang Claude Code dalam tutorial praktis kami.

3. Hasilkan Fine-grained GitHub Personal Access Token

Untuk menghasilkan Fine-grained GitHub Personal Access Token, buka GitHub dan arahkan ke:

Settings → Developer Settings → Personal Access Tokens → Fine-grained tokens.

Buat token baru dan pilih repositori yang akan Anda gunakan di bagian Repository. Lalu konfigurasikan Permissions. Demi keamanan, disarankan untuk menetapkan masa berlaku token yang singkat.

Membuat GitHub Personal Access Token

Kemudian, atur Personal Access Token sebagai variabel lingkungan:

export GITHUB_PAT="your-github-personal-access-token"

4. Inisialisasi GitHub Wiki Anda

Saat ini GitHub tidak mendukung pembuatan Wiki secara lokal terlebih dahulu.

Jadi Anda harus menginisialisasi wiki secara manual dengan:

  1. Membuka repositori Anda di GitHub
  2. Mengklik tab Wiki
  3. Mengklik “Create the first page”
  4. Menyimpan halaman (judul apa pun bisa)

Buat halaman pertama di wiki GitHub

5. Pasang Claude Agent SDK

Kita akan memasang kerangka kerja Agentic Claude yang menangani segala hal mulai dari penggunaan MCP hingga memanggil alat, membuat berkas, dan mendorong perubahan ke remote.

pip install claude-agent-sdk

Membangun Auto Wiki Agent dengan Claude Opus 4.5

Kita akan membuat aplikasi CLI Python bernama gh_wiki_cli.py. Berkas ini akan memuat konfigurasi, agen, alat, klien MCP, prompt sistem, aplikasi CLI itu sendiri, dan fungsi pembantu.

Komponen-komponen ini akan memastikan pengguna dapat memberikan tautan ke repositori dan agen tahu cara menanganinya dengan benar untuk memublikasikan wiki GitHub.

1. Imports

Bagian ini mengambil modul stdlib Python, pembantu typing, dan Claude Agent SDK.

  • asyncio untuk I/O async (chat + streaming).
  • os, sys untuk variabel lingkungan dan keluar.
  • dataclass untuk melacak statistik.
  • Impor Claude Agent SDK untuk berkomunikasi dengan agen + alat MCP.
import asyncio
import os
import sys
from dataclasses import dataclass
from typing import Dict

# --- SDK Imports ---
from claude_agent_sdk import (
    AssistantMessage,
    ClaudeAgentOptions,
    ClaudeSDKClient,
    McpSdkServerConfig,
    ResultMessage,
    TextBlock,
    ToolResultBlock,
    ToolUseBlock,
)

2. Prompt sistem

Ini adalah “otak” agen. Kita akan menginstruksikan model Opus 4.5 tentang bagaimana ia harus berperilaku dan cara menggunakan alat.

SYSTEM_PROMPT = """
        You are an expert Technical Writer and GitHub Wiki specialist.

        TOOLS
        - Read, Write, Glob, Grep:
        - Use these to inspect files and folders in the project directory (e.g. /tmp/Issue-Analyzer) and in wiki_clone/.
        - Use them to list files, read contents, and search for patterns.
        - Write:
        - Use this ONLY to write or update three wiki pages inside wiki_clone/:
            - wiki_clone/Home.md
            - wiki_clone/Getting-Started.md
            - wiki_clone/Architecture-and-Tools.md
        - Bash:
        - Bash is ONLY allowed for git commands, never for inspection or editing.
        - Allowed commands (with cd wiki_clone/ when needed):
            - git clone <repo>.wiki.git wiki_clone  (if wiki_clone does not already exist)
            - git status
            - git add .
            - git commit -m "Update wiki"
            - git push
        - Do NOT use Bash for ls, cat, grep, find, python, or any other way of reading/writing files.

        WORKFLOW
        1. When the user gives a GitHub repo URL:
        - Use Bash to clone the wiki if wiki_clone/ does not already exist:
            git clone <repo>.wiki.git wiki_clone
        2. Use Read/Glob/Grep (and any GitHub MCP tools) to explore the project:
        - Read important files in the project folder (e.g. README, docs/, src/).
        - Use that information to generate documentation.
        3. Use Write to create or update ONLY:
        - wiki_clone/Home.md
        - wiki_clone/Getting-Started.md
        - wiki_clone/Architecture-and-Tools.md
        4. When the wiki pages are ready:
        - Use Bash from wiki_clone/ to:
            git add .
            git commit -m "Update wiki"
            git push

        RULES
        - You may READ from the whole project directory and wiki_clone/.
        - You may WRITE only to the three wiki pages inside wiki_clone/.
        - Never use Bash to inspect or edit files; only use it for git commands.
        - Keep documentation clear, concise, and in GitHub Wiki style.
        """

3. Penanganan warna untuk CLI

Ini membuat output CLI lebih enak dilihat, namun tetap berjalan jika colorama tidak terpasang.

  • Mencoba menggunakan colorama untuk teks berwarna.
  • Beralih ke MockColors agar skrip tetap berjalan (tanpa warna, tanpa crash).
try:
    from colorama import Fore, Style, init

    init()
except ImportError:

    class MockColors:
        def __getattr__(self, name):
            return ""

    Fore = Style = MockColors()

4. Melacak statistik sesi

Sebuah dataclass kecil untuk melacak biaya, jumlah giliran, dan durasi.

  • total_cost: jumlah biaya $ dari Claude SDK.
  • total_turns: berapa banyak kueri pengguna yang Anda kirim.
  • duration_ms: akumulasi durasi dalam milidetik.
@dataclass
class SessionStats:
    total_cost: float = 0.0
    total_turns: int = 0
    duration_ms: int = 0

5. Membuat opsi agen

Selanjutnya, kita akan membuat objek ClaudeAgentOptions dan terhubung ke server MCP kita. Fungsi di bawah ini memvalidasi variabel lingkungan yang diperlukan, mengonfigurasi server MCP GitHub jika tersedia, dan membatasi alat yang dapat digunakan agen.

Kita sengaja membatasi allowed_tools agar Opus 4.5 dapat: menggunakan Bash untuk operasi Git, memanggil server MCP GitHub untuk menginspeksi konten repositori, dan menggunakan Read/Write (bersama Glob dan Grep) untuk bekerja dengan dan memvalidasi berkas Markdown lokal.

def create_agent_options() -> ClaudeAgentOptions:
    """Validates env vars and configures the agent options."""
    anthropic_key = os.getenv("ANTHROPIC_API_KEY")
    github_pat = os.getenv("GITHUB_PAT")

    if not anthropic_key:
        print(
            f"{Fore.RED}Error: ANTHROPIC_API_KEY environment variable is required.{Style.RESET_ALL}"
        )
        sys.exit(1)

    # Configure MCP servers
    mcp_servers: Dict[str, McpSdkServerConfig] = {}
    if github_pat:
        mcp_servers["github"] = {
            "type": "http",
            "url": "https://api.githubcopilot.com/mcp/",
            "headers": {"Authorization": f"Bearer {github_pat}"},
        }

    return ClaudeAgentOptions(
        model="claude-opus-4-5",
        system_prompt=SYSTEM_PROMPT,
        mcp_servers=mcp_servers,
        permission_mode="bypassPermissions",
        allowed_tools=[
            "Read",
            "Write",
            "Glob",
            "Grep",
            "Bash",
            "mcp__github__*",
        ],
    )

6. Memproses respons streaming

Fungsi ini mendengarkan stream dan mencetak teks, penggunaan alat, serta output alat.

  • Menggunakan client.receive_response() sebagai stream async.
  • Mencetak teks asisten saat masuk.
  • Ketika sebuah alat dipanggil → mencetak [Tool Use: ...].
  • Ketika sebuah alat mengembalikan output → memotong dan mencetak pratinjau satu baris yang singkat.
  • Ketika ResultMessage tiba → memperbarui SessionStats dengan biaya + durasi.
async def process_response_stream(client: ClaudeSDKClient, stats: SessionStats):
    """Handles the stream of messages from the agent."""
    async for message in client.receive_response():
        # 1. Handle Assistant Content (Text & Tool Requests)
        if isinstance(message, AssistantMessage):
            for block in message.content:
                if isinstance(block, TextBlock):
                    print(block.text, end="", flush=True)
                elif isinstance(block, ToolUseBlock):
                    print(f"\n{Fore.CYAN}[Tool Use: {block.name}]{Style.RESET_ALL}")

        # 2. Handle Tool Results (Outputs)
        if hasattr(message, "content") and isinstance(message.content, list):
            for block in message.content:
                if isinstance(block, ToolResultBlock):
                    # Truncate output for cleaner CLI
                    raw_output = str(block.content)
                    clean_output = raw_output.replace("\n", " ")
                    short_output = (
                        clean_output[:200] + "..."
                        if len(clean_output) > 200
                        else clean_output
                    )
                    print(
                        f"{Fore.YELLOW}  -> [Output]: {short_output}{Style.RESET_ALL}"
                    )

        # 3. Handle Result Metrics (Cost & Usage)
        if isinstance(message, ResultMessage):
            if message.total_cost_usd:
                stats.total_cost += message.total_cost_usd
            if message.duration_ms:
                stats.duration_ms += message.duration_ms

7. Mencetak ringkasan di akhir

Statistik akhir sesi yang rapi untuk aplikasi CLI yang menampilkan jumlah giliran, durasi, dan biaya dalam dolar.

  • Mengonversi duration_ms ke detik.
  • Menampilkan total biaya dengan format 4 desimal.
def print_summary(stats: SessionStats):
    """Prints the final session statistics."""
    print(f"\n\n{Fore.GREEN}=== Session Summary ==={Style.RESET_ALL}")
    print(f"Total Turns:   {stats.total_turns}")
    print(f"Duration:      {stats.duration_ms / 1000:.2f}s")
    print(f"Total Cost:    ${stats.total_cost:.4f}")
    print(f"{Fore.GREEN}======================={Style.RESET_ALL}")

8. Fungsi async utama

Ini adalah alur kontrol inti aplikasi: menangani penyiapan, terhubung ke layanan, membaca input pengguna, dan mengirim kueri. Fungsi memanggil create_agent_options() dan menginisialisasi statistik. Fungsi mencetak banner pengantar dan menyebutkan server MCP mana yang diaktifkan. Fungsi juga membuat ClaudeSDKClient menggunakan konteks asinkron.

Aplikasi menjalankan REPL (Read-Eval-Print Loop) sederhana:

  1. Ketik 'exit' atau 'quit' untuk keluar dari aplikasi.
  2. Setiap kueri valid menambah stats.total_turns sebesar 1.
  3. await client.query(user_input) mengirim pesan pengguna.
  4. await process_response_stream(...) mencetak hasil streaming.
  5. Pengecualian apa pun ditangkap dan menampilkan pesan kesalahan berwarna merah.
  6. Terakhir, fungsi selalu memanggil print_summary(stats).
async def main():
    options = create_agent_options()
    stats = SessionStats()

    # Welcome message
    print(f"{Fore.GREEN}=== GitHub Wiki AI Agent (Auto-Mode) ==={Style.RESET_ALL}")
    print(
        f"MCP Servers: {', '.join(options.mcp_servers.keys()) if options.mcp_servers else 'None'}"
    )
    print("Ask me to help with a GitHub wiki by mentioning the repository URL!")
    print("Type 'exit' to quit.\n")

    async with ClaudeSDKClient(options=options) as client:
        try:
            await client.connect()

            while True:
                try:
                    user_input = input(f"\n{Fore.BLUE}>> {Style.RESET_ALL}").strip()
                except EOFError:
                    break

                if not user_input:
                    continue

                if user_input.lower() in ["exit", "quit"]:
                    break

                stats.total_turns += 1

                # Send query
                await client.query(user_input)
                print()  # Spacer

                # Process response stream using helper function
                await process_response_stream(client, stats)

        except Exception as e:
            print(f"\n{Fore.RED}Session Error: {e}{Style.RESET_ALL}")
        finally:
            print_summary(stats)

9. Titik masuk skrip

Terakhir, kita mendefinisikan titik masuk skrip agar CLI berjalan ketika berkas dieksekusi langsung. Blok di bawah memulai loop async utama dan menangani penghentian secara bersih:

if __name__ == "__main__":
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print("\nSession interrupted.")
        sys.exit(0)

Menguji Auto Wiki Agent

Setelah semuanya terpasang, mulai aplikasi chat CLI, dan pastikan aplikasi CLI Claude Code Anda berfungsi:

python gh_wiki_cli.py

Sekarang Anda dapat berinteraksi dengan agen seperti antarmuka chat. Ajukan pertanyaan umum atau langsung minta untuk membangun wiki untuk repositori Anda:

create the github wiki for https://github.com/kingabzpro/ECom-Intel

Menguji aplikasi CLI GitHub Wiki Agent

Jika pengguna meminta membuat wiki, agen secara otomatis melakukan:

  1. Cloning wiki: Membuat atau menggunakan kembali folder wiki_clone/ dan menarik konten wiki terbaru.
  2. Inspeksi repositori: Membaca berkas-berkas kunci dari repositori GitHub menggunakan alat MCP.
  3. Pembuatan halaman: Secara otomatis menyusun dan menulis halaman, seperti:
    • Home.md
    • Getting-Started.md
    • Architecture-and-Tools.md
  4. Commit dan push: Agen melakukan staging halaman baru, melakukan commit, dan mendorong pembaruan ke: <your-repo>.wiki.git
  5. Contoh Output Berhasil: Setelah selesai, Anda akan melihat pesan konfirmasi yang bersih. Dan wiki akan tayang di: https://github.com/kingabzpro/ECom-Intel/wiki

Saya benar-benar terkesan dengan kemampuan agen mengumpulkan gambar demo, bagan, dan informasi kunci lainnya, lalu menyusun beranda wiki yang koheren.

Halaman beranda wiki kingabzpro/ECom-Intel

Wiki kini mencakup daftar isi yang semestinya, penjelasan tentang asisten dan alat, serta instruksi “getting started” yang jelas.

Halaman Architecture and tools wiki kingabzpro/ECom-Intel

Di akhir proses, ringkasan sesi menunjukkan bahwa satu sesi ini memakan biaya hampir 1 USD, yang cukup mahal untuk menghasilkan wiki tiga halaman. Jika repositorinya lebih besar dan kita membutuhkan, misalnya, wiki 12 halaman, biayanya akan meningkat signifikan.

=== Session Summary ===
Total Turns:   1
Duration:      282.99s
Total Cost:    $0.9047
=======================

Dalam pengujian kedua, saya meminta agen membuat wiki untuk repositori lain:

create the github wiki for https://github.com/kingabzpro/Issue-Analyzer

Hasilnya bahkan lebih baik. Wiki yang dihasilkan, tersedia di https://github.com/kingabzpro/Issue-Analyzer/wiki, kini berisi dokumentasi yang layak yang menjelaskan apa yang dilakukan proyek dan cara memulainya.

Halaman beranda wiki kingabzpro/Issue-Analyzer

Wiki tersebut mencakup tabel yang terstruktur dengan baik, diagram arsitektur, dan bagian inti lainnya yang memungkinkan Anda memahami seluruh proyek dalam waktu sekitar lima menit, alih-alih berhari-hari membaca kode.

Halaman getting started wiki kingabzpro/Issue-Analyzer

Pemikiran Akhir

Saat pertama kali mendengar Opus 4.5 digadang-gadang sebagai model coding dan agentic terbaik di dunia, saya benar-benar antusias, terutama karena harganya mirip dengan model Sonnet.

Namun, antusiasme saya berkurang ketika menyadari bahwa bereksperimen dan membangun aplikasi kecil akhirnya menelan biaya sekitar $15 dalam penggunaan API.

Dasbor biaya/penggunaan Opus 4.5

Opus 4.5 kuat tetapi mahal. Saya juga mencoba mereplikasi alur kerja yang sama menggunakan Haiku dan Sonnet, namun pengalamannya terasa jauh di bawah untuk tugas agentic yang berat dokumentasi seperti ini.

Keduanya sering kembali menggunakan alat Bash, bahkan ketika saya secara eksplisit meminta mereka menggunakan alat MCP untuk membaca berkas GitHub. Selain itu, mereka sering menempuh cara yang lebih lama dan kurang langsung untuk menyelesaikan masalah.

Jika Anda memprioritaskan akurasi, keandalan, serta pembuatan kode dan dokumentasi berkualitas tinggi, Opus 4.5 sangat layak dipertimbangkan.

Namun, jika kasus penggunaan Anda kurang kritis atau Anda sangat sensitif terhadap biaya, Anda mungkin ingin tetap menggunakan Sonnet atau model open source yang lebih murah. Biaya terkait Opus 4.5 dapat cepat meningkat, terutama untuk alur kerja agentic multi-langkah di repositori besar.

Jika Anda tertarik dengan proyek ini, Anda dapat menemukan kode sumber lengkapnya di sini, yang dapat Anda clone dan jalankan secara lokal: kingabzpro/GitHub-Wiki-Agent.

Jika Anda ingin terus membangun agen AI, saya sarankan melihat kursus Multi-Agent Systems with LangGraph.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik
Large Language Models
Agen AI
Kecerdasan Buatan

Kursus Teratas DataCamp

Kursus

Pengantar Model Claude

3 jam
14.7K
Pelajari cara bekerja dengan Claude menggunakan Anthropic API untuk menyelesaikan tugas dunia nyata dan membangun aplikasi berbasis AI.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

Lihat SelengkapnyaLihat Selengkapnya