Hermes Workshop
Seluruh langkah teknis dari 27 slide, urut seperti di sesi. Tombol Copy di tiap blok perintah menyalin isinya apa adanya — satu karakter salah bisa membuat satu langkah gagal, jadi jangan diketik ulang.
Peta ini dipakai ulang sepanjang hari. Kalau Anda bingung sebuah perintah bekerja di lapisan mana, kembali ke sini.
Yang perlu dipegang
- Mengganti model tidak mengubah Hermes
- Mengganti profile tidak mengganti model
- Tool yang tidak diaktifkan tidak bisa dipakai agent
| Konsep | Fungsi | Dibahas di |
|---|---|---|
| Model | Otak — bisa ditukar, punya batas, bukan sumber kebenaran | |
| Agent | Memutuskan langkah, memilih tool, berhenti dan melapor | |
| Profile | Paket konteks + perilaku + tools + skills + constraints | Ch 06 |
| Skill | Prosedur on-demand, nol token sampai dipakai | Ch 07 |
| Tool | Izin — yang tidak aktif tidak bisa dipakai | Ch 05 |
| Workspace | VPS Anda — batas baca/tulis yang Anda tentukan | Ch 05 |
| Memory | Fakta antar sesi — ringkas, bukan prosedur | Ch 07 |
| Execution | Perintah nyata di VPS — ada hasil, log, kegagalan | Ch 05 |
Bedakan: 'Saya pakai Postgres' itu memory (fakta). 'Cara deploy ke staging' itu skill (prosedur). Tool = izin: terminal di mesin produksi dan file berisi secret pikir dua kali; pakai toolset safe untuk demo read-only.
Hermes sudah berjalan di VPS yang disiapkan trainer — supaya satu jam pertama tidak habis untuk perbedaan macOS, Windows, dan Linux.
Yang harus Anda pegang sekarang
- Host / IP VPS
- User SSH
- Kunci atau password SSH
- API key provider sudah diterima
- Tahu di mana API key itu nanti disimpan
# TODO(trainer): ganti dengan prosedur akses yang sebenarnya.
# Belum ditentukan dan TIDAK boleh dikarang:
# - host / IP VPS
# - pola nama user (per peserta atau shared)
# - cara distribusi kunci SSH
# Sumber: docs/hermes-training-blueprint.md §7 item 3
ssh <user>@<host-vps>API key tidak pernah disimpan di laptop peserta. Ia masuk ke ~/.hermes/.env di dalam VPS — chapter 03 menunjukkan caranya, dan hermes config set merutekannya otomatis.
# 1. SSH client ada dan bisa dipakai
ssh -V
# 2. Masuk ke VPS yang diberikan trainer
ssh <user>@<host-vps>
# 3. Di dalam VPS — Hermes hidup?
hermes versionLangkah 1 hanya membuktikan client-nya ada. Yang membuktikan kredensial Anda benar adalah langkah 2 — kalau gagal di situ, itu pekerjaan chapter ini, bukan chapter berikutnya.
Kalau langkah 2 gagal
- Periksa host dan user — bukan password dulu
- Coba tethering: sebagian jaringan kantor memblokir port 22
- Minta VPS cadangan ke trainer daripada menunggu
hermes version
hermes doctorhermes doctor adalah perintah diagnostik resmi: ia menyebut apa yang kurang sekaligus cara memperbaikinya. Kalau ada yang merah di situ, selesaikan sekarang — bukan di chapter berikutnya.
Sudah lulus? Bantu tetangga
- Angkat tangan supaya trainer tahu
- Dampingi satu peserta yang belum lulus
- Jangan membuka chapter berikutnya dulu
ssh <user>@<host-vps>Sejak baris ini, semua perintah dijalankan DI DALAM VPS. Kalau Anda ragu sedang di mana, jalankan hostname.
Kebiasaan yang menyelamatkan
- Perhatikan prompt shell Anda — berubah setelah SSH berhasil
- Satu terminal untuk Hermes, satu lagi untuk memeriksa file
- Jangan menutup terminal saat sesi chat masih jalan
hermes version # nomor versi tercetak
hermes doctor # laporan environment
hermes # masuk ke sesi chat
ls -la ~/.hermes/
cat ~/.hermes/config.yamlDi bawah ini cara installer resmi memasang Hermes. Dipakai TRAINER saat menyiapkan VPS — peserta tidak menjalankannya hari ini. Disertakan supaya Anda bisa mengulang di mesin lain.
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# VPS headless tanpa browser: lewati langkah Playwright
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser
# setelah instalasi
source ~/.bashrc # atau: source ~/.zshrc
hermes# dijalankan admin lebih dulu
sudo npx playwright install-deps chromium
# lalu installer dijalankan sebagai user biasa, arahkan PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
# bila gateway perlu hidup setelah logout
sudo loginctl enable-linger <service-user># TODO(trainer): sebutkan satu versi/tag Hermes sebagai acuan
# training, supaya perintah di deck ini bisa ditelusuri.
# Sumber: docs/hermes-training-blueprint.md §7 item 5Kalau Hermes dipasang sebagai root, layout-nya berbeda: kode di /usr/local/lib/hermes-agent/, binary di /usr/local/bin/hermes, data di /root/.hermes/ (atau $HERMES_HOME).
| Perintah | Fungsi |
|---|---|
| hermes config | Lihat konfigurasi sekarang |
| hermes config edit | Buka config.yaml di editor |
| hermes config get KEY | Cetak satu nilai |
| hermes config set KEY VAL | Set satu nilai |
| hermes config unset KEY | Hapus nilai yang di-set user |
| hermes config check | Cek opsi yang hilang setelah update |
| hermes config migrate | Tambahkan opsi yang hilang |
hermes config get model
hermes config set model anthropic/claude-opus-4
hermes config set terminal.backend docker
hermes config unset terminal.backend
# API key: otomatis dirutekan ke .env, bukan config.yaml
hermes config set OPENROUTER_API_KEY sk-or-...Urutan prioritas — tertinggi dulu
- Argumen CLI
- config.yaml
- .env
- Default bawaan
hermes model # pilih provider dan model
hermes tools # atur tool mana yang aktif
hermes gateway setup # atur platform messaging
hermes config set # set satu nilai
hermes config get # baca satu nilai
hermes setup # wizard lengkapKenapa bukan edit YAML
- Indentasi YAML salah = Hermes tidak mau start
- Wizard memvalidasi nilai; editor tidak
- Secret bisa salah tempat dan ikut ter-commit
hermes version
hermes doctor
hermes chat -q "Balas dengan satu kata: siap"hermes chat -q adalah mode satu-query: ia menjawab lalu keluar. Cocok untuk checkpoint karena tidak meninggalkan sesi interaktif menggantung.
Kalau belum lulus
- Model belum dipilih → tunggu chapter 04, itu normal
- hermes doctor merah → selesaikan itu dulu
- SSH putus-putus → pindah ke tethering
| hermes model | /model | |
|---|---|---|
| Dijalankan dari | terminal, di luar sesi | di dalam sesi chat |
| Bisa | tambah provider, OAuth, API key, custom endpoint | hanya berpindah antar yang sudah ada |
| Tidak bisa | — | menambah provider, OAuth, minta API key |
/model custom:qwen-2.5 # model di custom endpoint
/model custom # deteksi model dari endpoint
/model openrouter:claude-sonnet-4 # kembali ke provider cloud/model custom:local:qwen-2.5
/model custom:work:llama3Untuk menambah provider baru: keluar sesi (Ctrl+C atau /quit), jalankan hermes model, lalu buka sesi baru. Satu provider bisa membawa banyak model — mengganti model di dalam satu provider berbeda dari menambah provider baru.
hermes model
# pilih: Custom endpoint (self-hosted / VLLM / etc.)model:
default: your-model-name
provider: custom
base_url: http://localhost:8000/v1
api_key: your-key-or-leave-empty-for-local# TODO(trainer): base URL OpenAI-compatible Sumopod,
# nama env var API key, daftar model, extra_body/headers.
# Sumber: docs/hermes-training-blueprint.md section 7 item 1
providers:
sumopod:
api: <TODO base URL>
key_env: <TODO nama env var>
transport: chat_completionshermes config set model anthropic/claude-opus-4
hermes chat --model anthropic/claude-sonnet-4 # override sekali jalan
hermes config get modelLatihan yang dinilai di checkpoint
- Ganti ke model lain
- Kirim satu prompt
- Ganti kembali ke model semula
- Ulangi sekali lagi tanpa melihat slide ini
hermes fallback # memakai ulang picker dari hermes model
hermes fallback add
hermes fallback list # atau: ls
hermes fallback remove # atau: rm
hermes fallback clearfallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4fallback_providers:
- provider: custom
model: my-local-model
base_url: http://localhost:8000/v1
key_env: MY_LOCAL_KEY # nama env var berisi API keyTiap entry WAJIB punya provider dan model. Entry yang kehilangan salah satunya diabaikan tanpa peringatan.
Dua fakta yang mengubah keputusan Anda
- Fallback itu per-turn, bukan per-session — tiap pesan baru mulai dari model utama lagi
- Dalam satu turn, fallback menyala paling banyak sekali
- Fallback menghapus prompt cache — permintaan berikutnya membaca ulang seluruh riwayat dengan harga input penuh
- Sesi panjang yang bolak-balik antar provider bisa jauh lebih mahal
hermes config get model
hermes config get fallback_providers --json
hermes chat -q "Model apa kamu?"Uji ganti model yang benar: ganti ke model lain, kirim satu prompt, ganti kembali. Yang dinilai bukan hasil prompt-nya, tapi bahwa Anda bisa mengulangnya tanpa membuka slide.
| Toolset | Tool | Kegunaan |
|---|---|---|
| web | web_extract, web_search | Cari dan baca halaman web |
| search | web_search | Hanya cari, tanpa extract |
| file | patch, read_file, search_files, write_file | Baca / tulis / cari file |
| terminal | process, terminal | Jalankan perintah shell |
| skills | skill_manage, skill_view, skills_list | Kelola skill |
| memory | memory | Memory antar-sesi |
| browser | browser_*, web_search | Otomasi browser |
| safe | image_generate, vision_analyze, web_extract, web_search | Riset read-only |
| coding | file + terminal + search + web + skills + browser + todo + memory + … | Bundel untuk kerja software |
hermes chat --toolsets web,file,terminal
hermes chat --toolsets debugging # composite — melebar jadi file + terminal + web
hermes chat --toolsets all # semuanya
hermes toolshermes tools # UI curses, atur per platform/tools list
/tools disable browser
/tools enable homeassistanttoolsets:
- hermes-cli # default untuk CLIKebijakan minimum untuk hari ini
- Aktifkan yang dibutuhkan tugas itu saja
- Pakai toolset safe untuk demo yang tidak boleh mengubah data
- Periksa hasil sebelum mempercayainya
# 1. tanpa tool — jawaban dari ingatan model
hermes chat -q "Cari informasi <X> dan buat summary dengan sumbernya"
# 2. dengan web — agent mencari dulu
hermes chat --toolsets web -q "Cari informasi <X> dan buat summary dengan sumbernya"Yang harus Anda perhatikan
- Apakah ada URL di jawaban kedua
- Berapa lama selisih waktunya
- Apakah isinya berbeda — dan mana yang benar
Pilih topik yang Anda tahu jawabannya dan yang berubah belakangan ini. Topik yang stabil membuat kedua jawaban terlihat sama dan pelajarannya hilang.
hermes chat --toolsets web -q "Cari berita terbaru soal <X> dan sebutkan URL sumbernya"Yang dinilai satu hal: sumber dikembalikan. Jawaban bagus tanpa URL tetap tidak lulus checkpoint ini.
Definisi resminya: profile adalah home directory Hermes yang terpisah. Storage-nya di ~/.hermes/profiles/<name>/. Bukan setting, bukan model baru.
| Yang terisolasi per profile | Artinya |
|---|---|
| config.yaml | model dan setting bisa berbeda |
| .env | API key bisa berbeda |
| memories/ | yang diingat tidak tercampur |
| skills/ | kemampuan tidak saling bocor |
| sessions/ | riwayat percakapan terpisah |
| state gateway | platform messaging terpisah |
Jebakan yang sering kena
- Membuat profile TIDAK mengubah working directory perintah terminal
- Kalau ingin profile mulai di proyek tertentu, set terminal.cwd di config.yaml profile itu
# Profile kosong — perlu setup penuh
hermes profile create mybot
# Clone config saja dari profile sekarang
hermes profile create work --clone
# Clone semuanya dari profile sekarang
hermes profile create backup --clone-all
# Clone config dari profile tertentu
hermes profile create work2 --clone-from work| Opsi | Efek |
|---|---|
| --clone | Salin config.yaml, .env, SOUL.md, dan skills dari profile sekarang |
| --clone-all | Salin semuanya (config, memories, skills, cron, plugins). TIDAK menyalin sessions, state.db, backups, state-snapshots, checkpoints |
| --clone-from <profile> | Clone dari profile tertentu, bukan yang sekarang |
| --description "<text>" | Deskripsi 1–2 kalimat tentang keahlian profile ini |
| --no-skills | Profile kosong tanpa skill bawaan |
| --no-alias | Lewati pembuatan wrapper script |
hermes profile list # profile aktif ditandai *
hermes profile use work # jadikan aktif
hermes profile use default # kembali ke base
hermes profile show work # detail lengkap
hermes profile delete mybot --yeshermes -p work chat -q "Check the server status"
hermes --profile dev gateway start
hermes -p personal skills listSaran untuk latihan hari ini
- Buat profile pertama dengan --clone supaya model dan key tidak perlu diatur ulang
- Beri --description supaya nanti Anda ingat gunanya
- Jangan pakai --clone-all dulu — memory bercampur membingungkan saat membandingkan
hermes -p developer chat -q "<prompt identik>"
hermes -p researcher chat -q "<prompt identik>"Pilih prompt yang cukup ambigu untuk ditafsirkan berbeda oleh dua peran. "Jelaskan repo ini" bekerja bagus: developer akan melihat struktur kode, researcher akan mencari konteks dan sumber.
Kalau hasilnya sama
- Periksa SOUL.md tiap profile — di situ perilakunya ditentukan
- Periksa toolset yang aktif: hermes -p <nama> tools
- Prompt-nya mungkin terlalu spesifik sehingga hanya ada satu cara menjawab
hermes profile list
hermes profile show <nama>
hermes -p <nama> chat -q "<prompt identik>"Untuk lulus, tunjukkan dua keluaran dari prompt yang sama di dua profile, dan sebutkan satu perbedaan yang bisa ditunjuk.
hermes skills list/skills
/skills search docker
/skills browsehermes skills install official/research/arxiv
/skills install official/creative/songwriting-and-ai-music---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
metadata:
hermes:
tags: [my-tag, automation]
category: my-category
---
# My Skill
## When to Use
Use this skill when the user asks about [specific topic]
or needs to [specific task].
## Procedure
1. First, check if [prerequisite] is available
2. Run `command --with-flags`
3. Parse the output and present results
## Pitfalls
- Common failure: [description]. Fix: [solution]
- Watch out for [edge case]
## Verification
Run `check-command` to confirm the result is correct.Jebakan
- Skill yang baru dipasang berlaku di SESI BARU
- Untuk sesi sekarang: pakai /reset
- Atau tambahkan --now — biaya token lebih tinggi di turn berikutnya
Skill disimpan di ~/.hermes/skills/<kategori>/<nama>/SKILL.md. Yang wajib cuma SKILL.md. Empat bagian formula yang membuatnya berguna — yang paling sering dilupakan adalah Pitfalls (kegagalan yang sudah dialami) dan Verification (cara memeriksa benar). Tanpa dua itu skill hanya catatan langkah. Deskripsi frontmatter jangan seadanya: itu yang dibaca agent untuk memutuskan relevan.
mkdir -p ~/.hermes/skills/my-category/my-skill
# tulis SKILL.md
hermes chat -q "/my-skill bantu saya dengan hal itu"Skill muncul otomatis — tidak ada registrasi. Taruh di ~/.hermes/skills/ dan langsung hidup. Kalau tidak muncul di sesi yang sedang jalan, pakai /reset.
Jaga skill tetap fokus
- "Semua DevOps" → terlalu panjang dan kabur, tidak akan terpakai
- "Deploy aplikasi Python ke Fly.io" → cukup spesifik untuk benar-benar berguna
- Kalau ada dua tugas berbeda, buat dua skill
Kalau skill tidak terpanggil
- Periksa description di frontmatter — itu yang dibaca agent untuk memutuskan
- Periksa bagian When to Use
- Pastikan toolset skills aktif
- Coba di sesi baru
hermes skills list | grep my-skill
hermes chat -q "/my-skill <tugas>"Termuat dan tereksekusi itu dua hal berbeda: yang pertama berarti Hermes melihat skill Anda, yang kedua berarti ia benar-benar mengikuti prosedurnya.
Alur penuh
- Buat Google Cloud project dan aktifkan API yang diperlukan (Gmail, Calendar, Drive, Sheets, Docs, People)
- Buat kredensial OAuth 2.0 tipe Desktop app, unduh JSON client secret
- Otorisasi — Hermes membuat auth URL, Anda menyetujui di browser, menempelkan kembali URL redirect
- Selesai — token diperbarui otomatis sejak titik ini
Lima langkah di Console
- 1. Buat/pilih project — console.cloud.google.com/projectselector2/home/dashboard
- 2. Aktifkan enam API — console.cloud.google.com/apis/library (Gmail, Calendar, Drive, Sheets, Docs, People)
- 3. Buat OAuth client — console.cloud.google.com/apis/credentials → Create Credentials → OAuth 2.0 Client ID → Application type: Desktop app
- 4. Kalau app masih Testing, tambahkan akun Anda sebagai test user — console.cloud.google.com/auth/audience → Audience → Test users → Add users
- 5. Unduh JSON client secret, catat path-nya
'GSETUP="python ${HERMES_HOME:-$HOME/.hermes}/skills/productivity/google-workspace/scripts/setup.py"'
# 0. Cek dulu — kalau mencetak AUTHENTICATED, lewati ke pemakaian
$GSETUP --check
# 1. Daftarkan client secret yang sudah diunduh
$GSETUP --client-secret /path/to/client_secret.json
# 2. Minta auth URL
$GSETUP --auth-url
# 3. Tukar kode dengan token
'$GSETUP --auth-code "URL_YANG_ANDA_TEMPEL"'
# 4. Verifikasi
$GSETUP --checkTiga hal yang akan terjadi — jangan panik
- Setelah menyetujui, browser GAGAL membuka http://localhost:1 — ini normal dan diharapkan
- Yang dibutuhkan adalah SELURUH URL dari address bar, bukan halaman yang tampil
- Error 403 access_denied berarti akun belum jadi test user → console.cloud.google.com/auth/audience
Kesalahan yang paling sering
- Memilih "Web application" — alur paste-the-code tidak akan bekerja
- Melewati langkah test-user → Error 403: access_denied saat otorisasi
- Mengaktifkan hanya Gmail API lalu kaget Drive gagal
- Lupa di project mana OAuth client dibuat
https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/gmail.send
https://www.googleapis.com/auth/gmail.modify
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/contacts.readonly
https://www.googleapis.com/auth/spreadsheets
https://www.googleapis.com/auth/documentsTidak ada presentations — Slides memang tidak tercakup. drive adalah Drive PENUH, bukan drive.file: agent bisa menyentuh file apa pun yang bisa Anda sentuh, termasuk yang dibagikan kepada Anda. Versi setup.py ini tidak bisa mempersempit scope — kalau tidak bisa diterima, pakai akun terpisah. Flag --services dan --format di dokumentasi TIDAK ADA di setup.py terpasang; jalankan $GSETUP --help di VPS sebelum sesi.
| Setelah selesai | Lokasi |
|---|---|
| Token, diperbarui otomatis | ~/.hermes/google_token.json |
| State OAuth sementara | ~/.hermes/google_oauth_pending.json |
| Mencabut izin | $GSETUP --revoke |
# TODO(trainer): konfirmasi ke IT sebelum hari-H
# - apakah domain memakai Google Advanced Protection
# - akun mana yang boleh dipakai peserta (kerja atau pribadi)
# Peserta dengan Advanced Protection TIDAK bisa menyelesaikan
# alur ini sampai admin meng-allowlist OAuth client ID.
# Sumber: docs/hermes-training-blueprint.md §7 item 6'GAPI="python ${HERMES_HOME:-$HOME/.hermes}/skills/productivity/google-workspace/scripts/google_api.py"''$GAPI gmail search "is:unread" --max 10'
'$GAPI gmail search "from:boss@company.com newer_than:1d"'
'$GAPI gmail search "has:attachment filename:pdf newer_than:7d"'
$GAPI gmail get MESSAGE_ID
'$GAPI gmail send --to user@example.com --subject "Hello" --body "Message text"'
'$GAPI gmail send --to user@example.com --subject "Report" --body "<h1>Q4</h1>" --html'
'$GAPI gmail reply MESSAGE_ID --body "Thanks, that works for me."'
$GAPI gmail labels
$GAPI gmail modify MESSAGE_ID --add-labels LABEL_ID$GAPI calendar list
$GAPI calendar list --start 2026-03-01T00:00:00Z --end 2026-03-07T23:59:59Z
'$GAPI calendar create --summary "Team Standup" \'
--start 2026-03-01T10:00:00-07:00 --end 2026-03-01T10:30:00-07:00
'$GAPI calendar create --summary "Review" \'
--start 2026-03-01T14:00:00Z --end 2026-03-01T15:00:00Z \
' --attendees "alice@co.com,bob@co.com"'
$GAPI calendar delete EVENT_ID'$GAPI drive search "quarterly report" --max 10'
"$GAPI drive search \"mimeType='application/pdf'\" --raw-query --max 5"
$GAPI drive get FILE_ID
$GAPI drive upload /path/to/report.pdf
'$GAPI drive create-folder "Reports"'
$GAPI drive share FILE_ID --email alice@example.com --role reader
$GAPI drive download FILE_ID --output ~/doc.pdf
$GAPI drive delete FILE_ID # ke trash, bisa dibatalkan'$GAPI sheets create --title "Q4 Budget"'
'$GAPI sheets get SHEET_ID "Sheet1!A1:D10"'
'$GAPI sheets update SHEET_ID "Sheet1!A1:B2" --values \'[["Name","Score"],["Alice","95"]]\''
'$GAPI sheets append SHEET_ID "Sheet1!A:C" --values \'[["new","row","data"]]\''
$GAPI docs get DOC_ID
'$GAPI docs create --title "Meeting Notes"'
'$GAPI docs append DOC_ID --text "Additional content to append"'Sisa yang tersedia: contacts list --max 20, drive upload --parent FOLDER_ID, drive share --type anyone, dan drive delete --permanent (hati-hati — melewati trash). Display name pengirim bisa dikustomisasi, tapi --from dengan ALAMAT berbeda harus terdaftar sebagai Send As alias di Gmail Settings → Accounts.
| Skill bawaan Hermes | gws | |
|---|---|---|
| Cakupan | Gmail, Calendar, Drive, Contacts, Sheets, Docs | + Slides, Chat, Admin, Forms, Meet, Tasks, Keep |
| Slides | Tidak ada | Ada — gws slides |
| Status | Bagian dari Hermes | Bukan produk resmi Google |
gws slides presentations create
gws slides presentations get
gws slides presentations batchUpdate
gws slides --help # resource dan method yang tersedia
gws schema slides.presentations.create # params dan tipe sebuah method
gws schema drive.files.list # params, tipe, default
'gws drive files list --params \'{"pageSize": 100}\' --page-all | jq -r \'.files[].name\''
gws auth setup # sekali: siapkan Cloud project, aktifkan API, login
gws auth login # login berikutnya / pilih scopeKabar baiknya
- google_api.py Hermes memilih gws sebagai backend kalau gws terpasang
- Keduanya menunjuk ke token yang sama: ~/.hermes/google_token.json
- Jadi Anda tidak perlu login dua kali
- Binari gws bisa diarahkan manual lewat env HERMES_GWS_BIN
Aturan resmi, dikutip apa adanya: jangan mengirim email, membuat/menghapus event calendar, menghapus file Drive, membagikan file, atau mengubah Docs/Sheets tanpa mengonfirmasi ke user dulu. Tunjukkan apa yang akan dilakukan dan minta persetujuan.
Yang harus Anda ingat soal scope
- Scope drive di bundel ini adalah Drive PENUH, bukan drive.file
- Artinya agent bisa menyentuh file apa pun yang bisa Anda sentuh
- Termasuk file yang dibagikan KEPADA Anda oleh orang lain
- Versi setup.py ini tidak bisa mempersempit scope
- Kalau itu tidak bisa diterima, pakai akun terpisah untuk agent
| Masalah | Perbaikan |
|---|---|
| NOT_AUTHENTICATED | Jalankan setup (slide 08.3–08.4) |
| REFRESH_FAILED | Token dicabut/kedaluwarsa — ulangi otorisasi |
| 403 Insufficient Permission | Scope kurang — $GSETUP --revoke lalu otorisasi ulang |
| 403 Access Not Configured | API belum diaktifkan di Google Cloud Console |
| ModuleNotFoundError | Jalankan setup dengan --install-deps |
| AUTHENTICATED (partial) | Kemampuan tulis butuh otorisasi ulang |
| Advanced Protection memblokir auth | Admin Workspace harus meng-allowlist OAuth client ID |
$GSETUP --check # harus: AUTHENTICATED
$GAPI gmail search "is:unread" --max 3
$GAPI calendar list
$GAPI drive search "report" --max 3Ide artifact yang cukup kecil untuk 15 menit
- Sheet berisi daftar email belum dibaca hari ini
- Doc berisi ringkasan tiga dokumen Drive yang Anda cari
- Sheet berisi jadwal Anda minggu ini dari Calendar
Pilih yang read-heavy dan write-once: banyak membaca, satu kali menulis. Itu paling cepat selesai dan paling kecil risikonya.
A — Developer: cukup selesai kalau
- Satu perintah menghasilkan laporan tentang repo nyata
- Laporannya menyebut file dan baris, bukan generalisasi
- Anda bisa menjelaskan bagian mana yang dikerjakan skill dan mana oleh model
B — Research: cukup selesai kalau
- Tiap klaim punya sumbernya — bukan menerima hasil pertama
- Summary menyebut dari mana tiap klaim datang
C — Homelab: cukup selesai kalau
- Execute → inspect → report terhadap VPS sendiri
- Mulai dari yang hanya membaca: df, systemctl status, docker ps
- Jangan mulai dari yang mengubah — terminal aktif berarti agent bisa menjalankan apa pun
D — Workspace: cukup selesai kalau
- Satu prompt menyentuh minimal dua surface
- Hasilnya sebuah file baru di Drive Anda
- Agent meminta konfirmasi sebelum menulis — itu bagian dari 'selesai', bukan bonus
Contoh D yang bekerja bagus: baca email belum dibaca hari ini, kelompokkan per pengirim, tulis ke Sheet baru, tunjukkan link-nya. Untuk Case E (custom): cakupan harus disetujui trainer dalam 5 menit pertama.
hermes # mulai chat
hermes chat -q "..." # satu pertanyaan, lalu keluar
hermes chat --toolsets web # sesi dengan toolset tertentu
hermes doctor # diagnosa kalau ada yang aneh
hermes update # perbaruihermes model # pilih provider/model, tambah provider baru
hermes config get model
hermes config set model <provider>/<model>
hermes fallback # atur fallbackhermes profile list
hermes profile create <nama> --clone
hermes profile use <nama>
hermes profile show <nama>
hermes -p <nama> chat -q "..." # sekali jalan, tanpa mengubah defaulthermes skills list
hermes skills install official/<kategori>/<nama>
hermes tools
mkdir -p ~/.hermes/skills/<kategori>/<nama> # lalu tulis SKILL.mdGSETUP="python ${HERMES_HOME:-$HOME/.hermes}/skills/productivity/google-workspace/scripts/setup.py"
GAPI="python ${HERMES_HOME:-$HOME/.hermes}/skills/productivity/google-workspace/scripts/google_api.py"
$GSETUP --check
$GAPI gmail search "is:unread" --max 10
$GAPI calendar list
$GAPI drive search "report" --max 10
$GAPI sheets create --title "..."Kalau ada yang rusak
- hermes doctor lebih dulu — ia menyebut apa yang kurang
- Untuk Google: $GSETUP --check
- Log ada di ~/.hermes/logs/ — secret sudah diredaksi
- Skill baru tidak muncul? Pakai /reset atau buka sesi baru