Практычныя прытамкі: Чаму навыкі AI-агентаў выключваюцца, калі іх складаем у ланцоўку, і ўсё.
Практычныя прыказкі: чаму навыкі AI-агентаў перестаюць працаваць, калі іх складаем у ланцюг, а таксама контракты, перакрытчыкі і слоты для коду для команд, якія викорыстоўваюць гэты патэрн.
Наступныя прыміткі паказваюць практычны падход да разумэння таго, чаму навыкі AI-агентаў перестаюць працаваць, калі іх складае ў ланцоўку, а таксама трывышэвага спосабу яго вылечэння. Акцэнт ставіцца на контракты, перакрычанняя і месца для коду, які можна легка адразу застаўіць, а не на мотывацыйныя аспекты. Калі працуеце на стадзіі агледжэння, спачатку запісайце контракт: неабходныя даны, сігнал успеху і тое, што выходзіць, калі адбываецца частковая нявыплата. Такі список контроля дапамагае заставаць пазнейшыя змены коду чыстымі. Запісвайце час выконання і кост токеноў або запытаў праза функцыйнае рэзультат. Відразувая візуабілізацыя костаў запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.
Тры вышэў, якія адпаведаюць таму, як насправе складаюцца агенты
Тры ўзлёты, якія падходзяць для стадыі роботы, найэфектывней працуюць, калі іх розглядаць як вимерную паверхню. Запісаўце адна «золатая» транскрыпцыя, адин прыклад неудачы і прыметку па вярнэнню да поперадньага стану, прычым расшырюючы сферу дзеяння. Зберагаўце настройкі праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Зберагаўце стан графа ў простам і типаваным формате. Вярнутыя блокі маскуюць інфармацыю пра тое, який вузел запісаў які поле, і спакшуюць возз'яданне пасля перерываў.
Атамы: адзінкавыя навыки, якія выкааняюць адну задачу
У режыме «Атамы» адзінаковыя навыкі працуюць наўлучней, калі іх спрыяваць як вимерлую паверхню. Запісаце адзін ідеальны прыклад, адзін прыклад неудачы і прыметку па адвярненню роботы, прычым расшырваючы сферу дзеяння. Дакументаваце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольны пункты і обработка некоректных паведамленняў є часткай продукту, а не наступным этапам дорабачання. Храніце стан графаў у простам і типаваным формате. Вярнутыя структуры маскуюць інфармацыю пра тое, який вузел запісаў канкрэтны поле, і спакшуюць продовжэнне роботы пасля перарываў.
---
name: verify-email
description: Verify an email address using Hunter.io API.
Use when validating email deliverability before outreach.
allowed-tools: Bash
---
## Verify Email
1. Read the Hunter API key from $HUNTER_API_KEY
2. Call the Hunter email-verifier endpoint
3. Return: status (deliverable/risky/undeliverable), score, smtp_check
4. If the API errors, report the error. Do not guess.
Малекулы: явныя ланцюгі атамаў
Molecules Explicit Chains of stage работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прыклад, адзін кейс неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісьць кроку не выходзіць, неудача должна адносіцца да конкрэтнай адпаведальнасці, а не да заплутанага ланцуга задач. Рэзультаты графа трэба зберагаць у простаму, типаваным формате. Вярнутыя структуры маскуюць інфармацію пра тое, який вузел запісаў канкрэтны поле, і спакшуюць продовжэнне роботы пасля перерываў. Molecules Explicit Chains of stage работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прыклад, адзін кейс неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Запісвайце часы виконання і косты токеноў або запытак праза функцыйнае рэзультаты. Відкрытасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўы.
---
name: qualify-lead
description: Research a company, find the right contact, verify
their email, output a qualified lead card.
allowed-tools: Bash Read Write
---
## Qualify Lead
Execute these steps IN ORDER.
### Step 1: Company Research
Use /research-company. Capture: size, industry, funding, tech stack.
### Step 2: Find Contact
Use /find-contact. Target: VP Eng, CTO, Head of Platform.
### Step 3: Find & Verify Email
Use /find-email, then /verify-email.
If undeliverable, return to Step 2 (max 3 attempts).
### Step 4: Output Lead Card
Write structured markdown to leads/{company-slug}.md
Спалучанні: Коардынацыя падзеяў
Для стадіі каналізацыі дзейнасця падразделакоў неабходна перад зменым коду адзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння. Аператары должны магчымае перадзванаць крок з вядомай точкі контролю, не падозрываючы схованы стан. Конфігурацыю трэба залічыць парад у коде прыкладнага програма. Файлы серавэра, хранільнікі секретных дадзеных і флагі функцыяй павінны знаходзіцца ў адном месцы, якое аператары можаць пераглядаць, не чытаяўшы весь лянцуг задач. Пры выкананні дзеянасцей, якія выкалічваюць грошы або зменяюць даны ў працэсе, неабходна атрымваць пашчаткованне ад чалавека. Підключэння падчас компіляцыі не ўзроўнаўваецца з повнай адпаведнасцю бізнес-процэсаў.
---
name: outbound-playbook
description: Run the full outbound playbook for a target segment.
Spawns parallel agents to qualify leads and draft emails.
disable-model-invocation: true
allowed-tools: Bash Read Write Task Teammate
---
## Outbound Playbook
### Phase 1: Build Lead List
Ask the user for: target segment, company size range, geography.
Use /scrape-directory to pull matching companies.
### Phase 2: Parallel Lead Qualification (Task tool)
For each company (batch of 5):
- Spawn a subagent with qualify-lead preloaded
- Each subagent qualifies one company independently
### Phase 3: Draft Emails (Task tool)
For each qualified lead:
- Spawn a subagent with draft-email preloaded
### Phase 4: Human Review Checkpoint
STOP. Present sample drafts. Ask: "Review these. Adjust or proceed?"
Do NOT proceed without explicit user approval.
### Phase 5: Campaign Summary
Compile results to outbound/{segment}/campaign-summary.md
Структура папак
У стадії «Структура папак» неабяцо з’явіць вхідныя даны, адміністратара крока і крэтырыя для завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы з’ясаваць схованы стан. Неабяцо задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе пераказы і обробка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Неабяцо апавесціць людзкую згоду для тых крокаў, якіе выкарыстоўваюць грошы або зміняюць даны праўдзівай роботы. Працэс кампіляцыі не ўзроўнаваны з повнасцю бізнес-функцый.
.claude/skills/
# ATOMS — single purpose, near-deterministic
verify-email/SKILL.md
find-email/SKILL.md
find-contact/SKILL.md
research-company/SKILL.md
scrape-url/SKILL.md
# MOLECULES - explicit chains of atoms
qualify-lead/SKILL.md
review-and-test/SKILL.md
draft-blog-post/SKILL.md
# COMPOUNDS - subagent orchestration, human-driven
outbound-playbook/SKILL.md
feature-build-ship/SKILL.md
Той самы патэрн у іншых фреймворках
Для таго ж патэрна на даннай стадыі неабходна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выконваецца, прычына неудачы должна вказываць на адну конкрэтную прычыну, а не на заплутаную структуру процеса. Заставіце людзкія апраўленні для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Компіляцыйныя налаштаванні не ўзначаюць повнасці бізнес-процэса. Для таго ж патэрна на даннай стадыі неабходна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісвайце час выконання і вартасьць токенаў аб запытоў разам з функцыйнальнымі рэзультатамі. Відразлівасьць вартасцей з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмовай среды ў спяльныя сераўеры.
LangGraph: Адзінкты → Ланцюгі → Падграфы
Калі працуеце з этапам «Ланцюгі адзінктаў» і «Падграфы» ў адзінктах LangGraph, спачатку запісайце умовы викорыстоўвання: неабходныя данні, сігнал успеху і тое, што выканаецца у разе частковага нявыпання. Такі список дапамагае заліцьваты змяны ў кодзе пазнейша. Храніце настройкі за межамі коду прыемліка. Файлы сераўнавання сяродовысі, базы секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць пераглядаць іх без неабходнасці чытання всего графа. Зявляйце логі з назвай адзінкта, хэшам параметраў, часам адпаведзі і рынку кожнага вызову. Без такога следу дэбагаванне агента, які циклізуе, губіць гады часу.
from langgraph.graph import StateGraph
from langchain_core.tools import tool
# ATOM: a single tool
@tool
def verify_email(email: str) -> dict:
"""Verify email deliverability via Hunter.io."""
response = requests.get(f"https://api.hunter.io/v2/email-verifier?email={email}")
return response.json()
# MOLECULE: explicit sequential graph
workflow = StateGraph(LeadState)
workflow.add_node("research", research_company)
workflow.add_node("find_contact", find_contact)
workflow.add_node("verify", verify_email)
workflow.add_edge("research", "find_contact")
workflow.add_edge("find_contact", "verify")
graph = workflow.compile()
# COMPOUND: subgraph composition
parent = StateGraph(CampaignState)
parent.add_node("qualify", qualify_subgraph) # each is a compiled graph
parent.add_node("draft", email_subgraph) # with its own state
parent.add_node("review", human_review_node)
CrewAI: Адзінкты → Заданні → Каманды ў праймах
Калі працуеце над этапамі заданняў CrewAI Tools Tasks Crews, спачатку запішыце угоду: неабходныя даны, сигнал успеху і тое, што выканаецца у разы частковага невяскання. Такі список пераконтроўкаў дапамагае заліцьваты змяны ў кодзе.
from crewai import Agent, Task, Crew, Flow
from crewai.tools import tool
# ATOM: a tool
@tool
def verify_email(email: str) -> str:
"""Verify email deliverability."""
return requests.get(f"https://api.hunter.io/v2/email-verifier?email={email}").text
# MOLECULE: tasks chained via context
researcher = Agent(role="Researcher", goal="Find company info", tools=[search_tool])
verifier = Agent(role="Verifier", goal="Verify contacts", tools=[verify_email])
research_task = Task(description="Research {company}", agent=researcher)
verify_task = Task(description="Verify the contact", agent=verifier, context=[research_task])
crew = Crew(agents=[researcher, verifier], tasks=[research_task, verify_task])
# COMPOUND: Crews inside a Flow
class OutboundFlow(Flow):
@start()
def qualify_leads(self):
return qualify_crew.kickoff(inputs={"segment": self.state.segment})
@listen(qualify_leads)
def draft_emails(self, qualified):
return email_crew.kickoff(inputs={"leads": qualified})
@listen(draft_emails)
def human_review(self, drafts):
return drafts # pause for human approval
Agno: @tool → Agent → Teams
Калі працуеце з стадіяй Agent Teams інструмента Agno, спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі список дапамагае залічыцца з пазнейшымі змянамі ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неудача павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш параметраў, час адпаведзі і рынак кожнага вызову. Без такога следу дэбаггін цыклаў агента губіць гадзіны. Калі працуеце з стадіяй Agent Teams інструмента Agno, спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі список дапамагае залічыцца з пазнейшымі змянамі ў кодзе. Запісвайце часы выконання і кост токенаў або запытаў разам з функцыйнальнымі рынакамі. Візуабілізація костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools import tool
# ATOM
@tool
def verify_email(email: str) -> str:
"""Verify email deliverability via Hunter.io."""
return requests.get(f"https://api.hunter.io/v2/email-verifier?email={email}").text
# MOLECULE: agent with ordered tools
qualify_agent = Agent(
model=Claude(id="claude-sonnet-4-6"),
description="Qualify a lead: research company, find contact, verify email. Execute in that order.",
tools=[research_company, find_contact, find_email, verify_email],
)
# COMPOUND: team of agents
from agno.team import Team
outbound_team = Team(
agents=[qualify_agent, email_drafter, campaign_reporter],
description="Run the full outbound playbook for a target segment.",
)
Шаблон застаецца тым жа
Шаблон застаецца наіболей эфектывным, калі яго спрыяваць як доўгачыннае паверхне. Запісаць адны ідеальны прыклад, адну справу з неудачай і прыметку пра вярнэнне да поперадньего стану перш чым расширваць сферу дзеяння. Конфігурацыю трэба зберагаць пазначынай ад коду прыемліка. Файлы сяродавішняе суперактывацыі, хранілішча секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Стан графа трэба зберагаць у простам і типаваным формате. Вярнутыя блокі дадзеных маскуюць інфармацыю пра тое, канференц-зал які поля запісаў, і спакоююць працэс пасля перерываў.
Дзе гэта ламаецца сёньня
Этап «Дзеяная прычына абяроны сёнь» работае наўзяй, калі яго спрыяваць як вимерную паверхню. Зафіксавайце адны ідеальны прыклад роботы, адзін прыклад абяроны і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану адночасна. Перапрыбуткі, людзкія контрольны пункты і обработка некоректных паведамленняў є часткай продукту, а не элементамі пазнейшага доўрабатвання. Храніце стан графаў у простам і типаваным формате. Вярнутыя структуры дакументаў маскуюць інфармацыю пра тое, канкрэтны вузел запісаў канкрэтнае поле, і спакойваюць працу пасля перарываў.
Атамы, якія няявляюцься твердымі, разбиваюць усё, што знаходзится над імі:
“Atoms that aren’t stage” працюе найкраща, калі яе расследжваць як меравальную паверхню. Зберагчыце адны ідеальны прыклад роботы, адну справу з бягамі і прыметку па адварцыю перш чым расширваць сферу дзеяння. Волійце маленькія, тэставальныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына бягу должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты графа трэба зберагчыць у простаму, типаванаму формате. Вярнутыя структуры маскуюць інфармацыю пра тое, канферны ўзел напісаў канкрэтнае поле, і спакойваюць працу пасля перарываў. “Atoms that aren’t stage” працюе найкраща, калі яе расследжваць як меравальную паверхню. Зберагчыце адны ідеальны прыклад роботы, адну справу з бягамі і прыметку па адварцыю перш чым расширваць сферу дзеяння. Запісвайце час выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразувая візуабельнасць костаў запобегае неспакойным рашчыткам, калі процес пераходзіць з дэмавайнага режыма ў спяльныя сераўы.
Молекулы з больш чым 10 атамамі становяцца ненадзеянымі:
Для малекул, які складаюцца з больш чым 10 атомаў, перад зменой коду неабходна задаць вхідныя даны, адпаведальнага за выкананне крока і крэтыяры завершэння. Аперацыяныя працавнікі должны магчымае перадзваначыць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічыць пазначкай ад околічных кодаў прыкладнення. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцый належыць у аднам месца, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Прыявленне людзкага аправалу трэба застосавляць да рэшткі, якія витрачаюць грошы або зменяюць даны працэсу. Падключэння ў час компілявання не є прамаравамым паказателем полнайсткі бізнес-процэсаў.
Спалучанні, якія складаюцца з больш чым 8–10 малекул, сталквуюцца з сае межай:
Для складных процэсаў, які перавышаюць 8-10 стадзеяў, перад зменым коду неабходна адзначыць вхідныя даны, адпаведальнага за стадзiju і крэтыры завершэння. Аперацыяныя працавнікі должны магчымае запускаць стадзiju з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Неабходна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія пераказы і обработка некоректных паведамленняў є часткай продукту, а не элементамі пазнейшага дапрацоўкі. Неабходна людзкая аправарэнне для тых крокаў, якія выкалічваюць грошы або зменяюць даны пра вырабніцтва. Працэс кампайлявання не є гарантыяй полнага адпаведнення продукту выклікам бізнесу.
Автаматычны запуск менш надзеяны, чым явны запуск:
У стадію, дзе аўтаматычны запуск ёсць менш надзеянным, перш чым зменіць код, неабходна визначыць параметры вводу, адпаведальнага за крок і критэрыі завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валіць кращэ маленькія, тэставаныя елементы за велікія скрыпты. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны процес. Неабходна людская апраўка для тых крокаў, якія выкорыстоўваюць грошы чы зменяюць даны варабочага прыемніка. Працэс кампайлявання не є гарантіяй полнага адпрацоўвання задачы. У стадію, дзе аўтаматычны запуск ёсць менш надзеянным, перш чым зменіць код, неабходна визначыць параметры вводу, адпаведальнага за крок і критэрыі завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Фіксаваць час выконання, а таксама кост токенаў чы запытаў, разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў режым працы.
спяльныя сэрэдзібы.Чаму гэта важна
Калі працюеце над этапам «Чаму гэта важна», спачатку запісайце умовы: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконтроўвае чыстасць пазнейшых змян у кодзе. Зберагаюце настройкі праза код аплікацыі. Файлы сэрэдзібы, хранальнікі секретных дадзеных і флагі функцый належыць у аднам месца, дзе аператары можаць аудытаваць іх без неабяжлівага чытання всей структуры. Стварайце контрольныя пункты пасля дорогіх крокаў. Система вярнення не должна зноў выклікаць той самы календар LLM, калі аператар перапрыяўляе пазнейшы вузел.
Чек-ліст для аператывання
Для этапу чек-ліста для аператывання перад змянай кодзе задаце данні, адпаведальную особу за крок і критэрыя завершэння. Аператары должны магчымае пераўстаць крок з вядомага контрольнага пункту, не спрабоўваючы здогадвацца пра схованы стан.
Спрытваце гэты ўражак як кантракт межа вхіднымі дадзеннямі і паверыжанымі выхіднымі. Дайце назву рэзультатам, задаце критэрыя успеху і не прымайце часткова завершэнне без падтверджэння.
Неабходна людская падтвердзення для тых процэсаў, якія витрачаюць грошы або зменяюць данні ў працэсе виробніцтва. Праця ў часе компілявання не абавязкова значыць повнае выпаленне бізнес-функцый.
Напісце кароткі посібнік: як зменяць канты, як спрачысці чергу, як анулюваць пярэдню імпортаваную інформацыю.
Зазначайце час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае відображэння костоў запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай среды ў спяльную.
Неабходна людская падтвердзення для тых процэсаў, якія витрачаюць грошы або зменяюць данні ў працэсе виробніцтва. Праця ў часе компілявання не абавязкова значыць повнае выпаленне бізнес-функцый.
Перш чым запускать стак, заморозьце версіі, зафіксавце «золаты» транскрыпты для критычнага шляху і паказвце способы абяроны. У спільных средах неабходны ліміты частоты, пераконтрольванне прав на выкарыстоўвання ресурсаў і чысткі власнік для змены секрэтных даных. Лепш выбіраць простую надзею на надзейнасць, чым хітрыя експерыментальныя дэманстрацыі.
Запіс для 373492c8b420: не кладзіце ключы прадаўцоў у репазітарый, задаце верхнюю межу токеноў на кожную сесію і зберагачыце транскрыпты празаўседы ў фіксаты для ацэнкі, каб пазнейшыя замены моделяў заставаліся пораўнанымі.