Практычныя прытамулі: Master Claude Code у Golang: 12 шаблонаў для агентных рашэнняў
Практычныя прыказкі: Как апрануцца з кодам Claude у Golang: 12 шаблонаў для агентных систем — кантракты, перакрыцця і готовыя фрагменты коду для команд, якія викорыстоўваюць гэтыя шаблоны.
Існавайце гэта як перапрацоўаны варыянт ідэй з кнігі “Master Claude Code in Golang: 12 Patterns for Agentic Developers”, адпрацаваны для аператараў: чыстыя этапы, арганізаваныя блакі коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы задання. Этап “Адгледжэнне” найкраща працюе, калі яго розглядаць як меркаваную плошчу. Запісаце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметкі з вярнення да пачатковага стану прычаму расшырэння масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіце, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны процес.
1. Запрос з акцэнтам на інтерфейс
Для першага стадіі «Інтэрфейс прыоритет» неабяцкова прадварыць апрацоўку вхідных дадзеных, выявіць абавесніка гэтага крока і задаць критэрыя завершэння, прычым перад зменай коду. Аператары должны магчымае запускіць гэты крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цій стадіі як даговору межа вхіднымі дадзенымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць критэрыя успеху і адмовіцца ад беззвучнага частковага завершэння. Калі наступны крок — це код або вызов інструмента, валідуйце структураваныя выходныя данні за дапамою схемы, а не простае тэкстовае выказванне.
# Terminal Command:
claude "Implement the PaymentGateway interface using Stripe in stripe.go. Ensure all methods return mapped domain errors, not raw stripe errors."
// Go Interface Contract:
type PaymentGateway interface {
Charge(ctx context.Context, amount int64) (string, error)
Refund(ctx context.Context, transactionID string) error
}
2. Генераванне на адной засадзе тэстаў (TDG)
Для 2-й стадіі Test-Driven Generation TDG неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры змяне коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы схованы стан. Запісваць час выконання і кост токенаў або запытаў праза функцыйнае рэзультат. Відкрытыя даны пра косцы запобегаюць неспакоўным рахункам, калі траекторыя пераходзіць з дэмавай версіі ў спяльныя среды. Пры кроках, якія витрачаюць грошы або зменяюць даны ў працоўнай среде, неабяжна ўключыць людскія апраўданні. Прыўязка на час компіляцыі не ўзначае повнайсткі адпаведнасці з бізнес-трыбуналамі.
# Terminal Command:
claude "Run `go test -v ./calc` and implement calculator.go to make these exact tests pass without changing the test assertions."
// Go Test File:
func TestCalculateDiscount(t *testing.T) {
result := CalculateDiscount(100, "VIP")
if result != 80 {
t.Errorf("Expected 80, got %d", result)
}
}
3. Адбавленне контэксту за дапамогою CLAUDE.md
Для адміністрацыі 3 контэкста праз стадзіі неабяжна перад зменым коду адначыць вхідныя даны, адпаведальнага за крок і крэтырыя для завершэння. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць праза код аплікацыі. Файлы сераўнавання, храненні секрэтных данных і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь граф. Пры выкананні дзеяння, якія купуюць грошы або зменяюць даны у працэйнай сістэме, неабяжна быць людскама затверджэнню. Підключэння ў час компіляцыі не є падтверджэнням полнай адпаведнасці да бізнес-трэбаў. Для адміністрацыі 3 контэкста праз стадзіі неабяжна перад зменым коду адначыць вхідныя даны, адпаведальнага за крок і крэтырыя для завершэння. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехарактернага рэзультата должна вказываць на адну адпаведальнасць, а не на заплутаны стан.
# Excerpt from CLAUDE.md:
## Go Conventions
Rule: Every exported I/O or database method MUST accept `context.Context` as its first parameter and pass it to the underlying driver (e.g., using `QueryRowContext`).
4. Явна абаратка паказанняяў
Калі працуеце з 4 стадзямі явнай абараткі паказанняяў, спачатку запішыце угоду: неабходныя вхідныя даны, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконтроўкаў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Спрыймайце гэтую стадзію як угоду межа вхіднымі данымі і перакананымі выходнымі данымі. Даць назву артыфактам, задаць перакананні успеху і адмовіцца ад тыхоўскага частковага завершэння. Пункт пераконтроўка пасля дорогіх крокаў. Функцыя адновлення не павінна занова ставіць рахунак за той самы вызыв LLM, калі аператар праканае пазнейшы вузел.
# Terminal Command:
claude "Refactor config.go. If os.Open fails, wrap the error with context using fmt.Errorf and the %w verb."
// Generated Go Code:
file, err := os.Open("config.json")
if err != nil {
return fmt.Errorf("failed to open config file: %w", err)
}
5. Конкурантная структура
Калі працуеце над 5 стадзяміями практыкі паралельнай роботы, спачатку запісаце кантракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі список контроля дапамагае заліцвачыць змяны ў кодзе адкрыта. Запісваце час выканання і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакою, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўры. Ствараце контрольны пункт пасля дорогіх крокаў. Система вярнення не должна зноў нарахоўваць кост той самай вызову LLM, калі аператар прабуюць зноў запрацаваць пазнейшы вузел.
# Terminal Command:
claude "Implement a worker pool for the Job slice in worker.go. Use a buffered channel of size 5 and a sync.WaitGroup. Ensure the WaitGroup is closed cleanly."
// Go Code Scaffold:
jobs := make(chan Job, 5)
var wg sync.WaitGroup
// Claude generates the exact worker loop here based on the constraints
6. Развіцце на адной основе типаў
Працюючы па 6 стадзіях развіццы на адміністрацыі типаў, спачатку запісуйце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць на частыя неудачы. Такі список контролю дапамагае заставіць пазнейшыя змены коду быць чыстымі. Зберагаюце настройкі праза код аплікацыі. Файлы сераўнавання, хранальнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можаюць адбавіць аудыт без неабяжнага чытання всіх элементаў. Стварайце контрольныя пункты пасля дорогіх крокаў. Система вярнення не должна занова ставіць плату за той самы вызыв LLM, калі аператар перапрыямляе роботу да наступнага элемента. Працюючы па 6 стадзіях развіццы на адміністрацыі типаў, спачатку запісуйце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць на частыя неудачы. Такі список контролю дапамагае заставіць пазнейшыя змены коду быць чыстымі. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач.
# Terminal Command:
claude "Refactor the User struct. Change all string IDs to a custom type UserID string, and ensure all functions accepting an ID use this new type."
// Generated Go Code:
type UserID string
type User struct {
ID UserID
Email string
}
7. Кантэнцыі пры вводзе незалежнасці
Этап 7 кантэнцыяў пры вводзе незалежнасці работае наяўней, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметку па абратанні рэшэнняя перад расширэннем масштаба. Спрыяйце гэты этап як кантракт межа вхіднымі дадзеннямі і перакананымі выходнымі рэшэннямі. Даўце назвы артыфактам, задаце перакананні на успех і адмовіцеся ад тыхоўскага частковага завершэння. Зберагачы стан графа плоскім і з адзінаковым типам. Вярсткаваныя блокі маскуюць, який вузел запісаў каторы поле, і спакойваюць працу пасля перарываў.
# Terminal Command:
claude "Rewrite NewOrderService. Do not initialize the logger inside. Pass a *zap.Logger and a PaymentGateway interface as dependencies."
// Generated Go Code:
func NewOrderService(logger *zap.Logger, gateway PaymentGateway) *OrderService {
return &OrderService{
logger: logger,
gateway: gateway,
}
}
8. ⏱ Наладка на адзінаках бенчмарку
Этап налагоджэння, які базуецца на 8 показніках, працюе найэфектывнейша, калі яго рассматрываць як вимерную плошчу. Запісайце адну ідеальную версію, адзін прыклад неудачы і прыметку па поверненні да пачатковага стану пры расширэнні масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмовай среды ў спяльныя сераўы. Храніце стан графа ў простам і типаваным формате. Вярнутыя структуры маскуюць інфармацію пра тое, який вузел запісаў канкрэтны поле, і спакшваюць продажчыку роботу пасля перерываў.
# Terminal command piping benchmark results directly to Claude Code:
go test -bench . -benchmem | claude "Our allocs/op is too high in the parser. Rewrite the parse function to use a sync.Pool for the byte slices."
// Generated Go Code:
var bufferPool = sync.Pool{
New: func() any {
b := make([]byte, 1024)
return &b
},
}
9. Ітератыўнае пазначэнне структураў
Этап 9 «Ітератыўнае структураванне тэгавання» працюе найкраща, калі яго розглядаць як мерыемую паверхню. Зберагучы адна ідеальная версія даных, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Храніце настройкі парадульна ад коду прыемліка. Файлы сераўнавання супакоў, хранілішча секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Храніце стан графа ў простам і типаваным формате. Вкладныя блокі маскуюць інфармацыю пра тое, який вузел запісаў якое поле, і спакоююць продаж чытання пасля перерываў. Этап 9 «Ітератыўнае структураванне тэгавання» працюе найкраща, калі яго розглядаць як мерыемую паверхню. Зберагучы адна ідеальная версія даных, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцуг задач.
# Terminal Command:
claude "Create a Go struct from this JSON payload. Add `json` tags, and include `validate` tags ensuring the email is valid and the age is >= 18."
// Generated Go Code:
type RegistrationRequest struct {
Email string `json:"email" validate:"required,email"`
Age int `json:"age" validate:"gte=18"`
}
10. Ідыяматычнае стварэнне запитоў у GoDoc
Для 10-го этапа Idiomatic GoDoc Prompting неабяжна прадзеўліванне вхідных дадзеных, адпаведнага адпаведальнага за шаг і крэтарыяў завершэння працы перад зменым коду. Аперацыйныя системы павінны магчымае перзапуск шагу з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Спрацавваць гэты этап як кантракт межа вхіднымі дадзенымі і паверканымі выходнымі рэзультатамі. Назваць кантэнты, прадзеўліванне успеху і адмовіцца ад беззвучнага частковага завершэння. Калі наступны шаг — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя рэзультаты з паверкай схемы, чым вольнападобны прозаічны тэкст.
# Terminal Command:
claude "Add GoDoc comments to all exported types and functions in user_repo.go. Start the comment with the name of the identifier."
// Generated Go Code:
// UserRepository handles database operations for the User entity.
type UserRepository struct {
db *sql.DB
}
11. Цыкл адметніх канфліктав коду
Для стадіі 11 «The Agentic Compile-Error» неабяцо практычна апранаванне інпутаў, власніка крока і крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі павінны магчымае перапрацаваць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выконання і кост токенаў або запытаў праза функцыйнае рэзультаты. Відкрытыя данні пра косцы з’являюцца раней, чым можа выйсці неспадзяваны рachунак, калі працэс пераходзіць з дамовай среды ў спадзеланую. Пры выконанні дзеяння, якія коштаюць грошы або зменяюць данні ў працоўной среде, неабяцо людскія апраўды. Прыўязка ў часе компілявання не значыць павноты бізнес-процэса.
# Terminal Command:
claude "Run `go build ./...`. If it fails with type conversion errors, fix the casts in handler.go and retry until it compiles cleanly."
// Claude correctly casts the primitive to the custom type to fix the build:
userID := UserID(user.ID)
err := repo.GetByID(ctx, userID)
12. Адбавленне архітэктурных меж (рэжым планування)
Для 12-го этапа адміністрацыі архітектурных меж неабяжна практычна ваказаць інпуты, адпаведальную особу за выкананне крока і крэтырыя для завершэння працы перад змінайом коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыемленае. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны быць аднароджаны ў аднам месца, якое аператары можаць пераглядаць, не чытаючы весь граф. Прызначайце людскія аправарэння для тых канектаў, якія витрачаюць грошы або зменяюць даны ў працэсе. Прыўязка на час компілявання не є падтверджэннем полной адпаведнасці да бізнес-трэбаванняў. Для 12-го этапа адміністрацыі архітектурных меж неабяжна практычна ваказаць інпуты, адпаведальную особу за выкананне крока і крэтырыя для завершэння працы перад змінайом коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Валіце маленькія, тэставальныя елементы над вялікімі скрыптамі. Калі крок не выйшоў, прычына неудачы должна вказываць на аднаго адпаведальнага.
це краща альтынатыва, чым заплутаная сістэма.# Terminal Command:
claude "Create a new Order handler. Rule: Do not import the 'database/sql' package in this file. You may only interact with the database via the OrderUseCase interface. Use plan mode to show me the approach first."
// Generated Go Code:
func (h *OrderHandler) Create(w http.ResponseWriter, r *http.Request) {
// Claude generates clean HTTP handling without leaking DB logic here
}
Што ж, на які шаблон вы найбольш апоўназіваецеся, калі працуеце з AI? Апішыце свой коментар адносова і пагаворым пра тое, як развіваецца гэта шаленая технологія агентав.
Калі працуеце на стадыі выбору шаблона, спачатку запісайце умовы: неабходныя даннэ, сігнал успеху і тое, што выканаецца у разы ўзельнага нявыпання. Такі чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрэтывайцеся да гэтай стадыі як да угоды межа даннемі і перакананымі выходамі. Дайце назву рэзультатам, задацьте критэрыя успеху і не падтрымвайце тыхія частковыя выпаннення. Зробіце чэкпоінт пасля дорогіх крокаў. Програма для продакцыі не должна зноў выклікаць той самы календар LLM, калі аператар пракушае пазнейшы вузел.
Чэк-ліст для эксплуатацыі
Калі працюеце над стадзіяй Кантрольнага списку, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абярэння. Такі кантрольны список дапамагае заліцьваваць чыстасць пазнейшых змян у кодзе.
Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе етапы контролю і обработка некоректных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.
Зробіце кантрольную паўзу пасля дорогіх крокаў. Система вярнення не павінна зноў нарахоўваць адпаведную плата за вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
Фіксавайце версіі залежнасцяў і запісвайце хэш адобраза, які выканаў дэманстрацыю. Возможнасць павторнага стварэння результата лепшая за традыцыйныя знаёмства.
Валічыце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок абярэння, абярэнне павінна вказваць на адну адпаведальнасць, а не на заплутаны процес.
Зробіце кантрольную паўзу пасля дорогіх крокаў. Система вярнення не павінна зноў нарахоўваць адпаведную плата за вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
Перш чым запускать стак, заморозьце версіі, зафіксавце «золаты» транскрыпты для критычнага шляху і паказвце способы абяроны. У спільных средах неабходны ліміты частоты запытоў, перакананні ў належнасці тэнантам і чысткі власнік для ротацыі секрэтных даных. Валіце простую надзейнасць працоўнікам, а не хітрыя едыноразовыя дэманстрацыі.
Прыметкі для 09e9b0c0b1cd: не кладзіце ключы прадаўцаў у репазітарый, задаце верхнюю межу токенаў на сесію і зберагачыце транскрыпты празаўседы ў фікстурах eval, каб пазнейшыя замены модэляў заставаліся пораўнанымі.