mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-08-05 23:41:31 +08:00
87 lines
5.1 KiB
Markdown
87 lines
5.1 KiB
Markdown
# Patterns by Requirement
|
|
|
|
Use this guide to choose patterns based on product requirements, not topology labels.
|
|
|
|
Default shape:
|
|
|
|
- One `start_agent <domain>:` execution block and zero `subagent` blocks unless
|
|
a boundary changes objective, instructions, actions, authority, or escalation
|
|
behavior and cannot remain coherent in the current scope
|
|
- Router-first architecture only when multiple genuine domains require
|
|
current-intent classification
|
|
- Subagent-specific posture (scripted, mixed, agentic)
|
|
- Deterministic controls only where justified
|
|
|
|
Read this file first when deciding architecture and flow patterns. Then use:
|
|
|
|
- `references/architecture-patterns.md` for architecture mechanics and migration guidance
|
|
- `assets/patterns/` for concrete pattern snippets
|
|
|
|
## Quick Selection Table
|
|
|
|
| Requirement / Scenario | Recommended Pattern | Why | Reference Assets |
|
|
|---|---|---|---|
|
|
| Multiple genuine domains need different instructions, actions, authority, or escalation | Router-first architecture | Separates incompatible domain scopes and classifies current intent | `references/architecture-patterns.md`, `assets/agents/router-first.agent`, `assets/agents/template-multi-subagent.agent` |
|
|
| Identity/trust gate before protected operations | Verification gate | Enforces trusted action output before sensitive actions; does not require a generic focus lock | `references/architecture-patterns.md` |
|
|
| Need deterministic follow-up after action | Action callbacks (`run`) | Guarantees ordered post-action execution | `assets/patterns/action-callbacks.agent` |
|
|
| Need deterministic setup/cleanup around a turn | Lifecycle events | Runs once before and once after the turn's reasoning loop | `assets/patterns/lifecycle-events.agent` |
|
|
| Need specialist consultation and return | Bidirectional routing/delegation | Keeps workflow continuity across subagents | `assets/patterns/bidirectional-routing.agent`, `assets/patterns/delegation-routing.agent` |
|
|
| Complex action input strategy required | Advanced input bindings | Mixes slot filling, variable binding, output chaining | `assets/patterns/advanced-input-bindings.agent`, `assets/patterns/critical-input-collection.agent` |
|
|
| Controlled output changes the prompt | Context-aware instruction layering | Resolves a branch from trusted action output or a named invariant | `assets/patterns/system-instruction-overrides.agent`, `assets/patterns/procedural-instructions.agent` |
|
|
| External process requires ordered successful actions | Outcome-driven gates | Makes the next action available only after the prior external action succeeds | `references/architecture-patterns.md`, `assets/patterns/multi-step-workflow.agent` |
|
|
| Prefer LLM-led flexibility with minimal pinning | LLM-controlled actions | Keeps implementation agentic by default | `assets/patterns/llm-controlled-actions.agent` |
|
|
| Prompt-template-backed action usage | Prompt template action pattern | Standardized prompt action wiring | `assets/patterns/prompt-template-action.agent` |
|
|
|
|
## Decision Rules
|
|
|
|
1. **Choose posture first (per subagent).**
|
|
- Start agentic.
|
|
- Move scripted only when required by regulation, authorization, confirmed
|
|
consequence, external ordering, or observed failure.
|
|
- See `references/posture-and-determinism.md`.
|
|
|
|
2. **Choose architecture second.**
|
|
- Start with one domain `start_agent` and zero `subagent` blocks.
|
|
- Never add a router that only transitions to that one domain.
|
|
- Add a router only for multiple genuine domains.
|
|
- Add verification gates for protected operations.
|
|
- Add workflow-local sequencing only for externally ordered outcomes.
|
|
|
|
3. **Choose implementation patterns third.**
|
|
- Add lifecycle/callback/input-binding patterns to solve concrete behavior gaps.
|
|
- Prefer the smallest pattern that satisfies the requirement.
|
|
|
|
## Common Compositions
|
|
|
|
### Multi-Domain Protected Service
|
|
|
|
- Router-first architecture
|
|
- Verification gate for protected actions
|
|
- Input pinning only for trusted values consumed by protected actions
|
|
|
|
### Regulated Flow
|
|
|
|
- One subagent unless the regulated work contains genuine additional domains
|
|
- Verification gate
|
|
- Scripted controls only for regulated decisions
|
|
- Action callbacks for deterministic post-action chain
|
|
|
|
### Open-Ended Assistant
|
|
|
|
- One agentic subagent unless genuine domain boundaries require more
|
|
- Minimal deterministic controls
|
|
- LLM-controlled actions and selective input pinning
|
|
|
|
## Anti-Patterns
|
|
|
|
- Modeling the entire agent as linear when only one workflow needs sequencing
|
|
- Creating a separate router subagent instead of using `start_agent agent_router`
|
|
- Creating greeting, cancellation, completion, off-topic, or ambiguity
|
|
subagents when one existing scope can handle those branches coherently
|
|
- Routing every turn back to router by default instead of using direct subagent transitions when workflow intent is clear
|
|
- Overusing deterministic controls without requirement or observed failure
|
|
- Pinning all action inputs by default instead of using `...` where safe
|
|
- Persisting names, preferences, questions asked, or dialogue stages that
|
|
surviving conversation history already contains
|
|
- Adding a variable without a trusted writer, named consumer, and lifecycle
|