branch:
README.md
2519 bytesRaw
# Sub-Agents — Multi-Perspective Analysis
A coordinator agent that fans out questions to three specialist sub-agents running in parallel, each with its own LLM call and isolated SQLite storage, then synthesizes the results.
## How It Works
```
CoordinatorAgent (extends AIChatAgent)
│
├──▶ this.subAgent(PerspectiveAgent, "technical") ──▶ LLM ──▶ analysis
├──▶ this.subAgent(PerspectiveAgent, "business") ──▶ LLM ──▶ analysis
└──▶ this.subAgent(PerspectiveAgent, "skeptic") ──▶ LLM ──▶ analysis
│
synthesize()
│
Final response
```
## Key Pattern
```typescript
import { Agent } from "agents";
import { AIChatAgent } from "@cloudflare/ai-chat";
// Each sub-agent has its own SQLite and makes its own LLM calls
export class PerspectiveAgent extends Agent<Env> {
onStart() {
this.sql`CREATE TABLE IF NOT EXISTS analyses (...)`;
}
async analyze(perspectiveId: string, question: string): Promise<string> {
const result = await generateText({
model,
system: PERSPECTIVES[perspectiveId].system,
prompt: question
});
this.sql`INSERT INTO analyses ...`;
return result.text;
}
}
// Parent fans out to sub-agents in parallel
export class CoordinatorAgent extends AIChatAgent<Env, State> {
async analyzeQuestion(question: string) {
const results = await Promise.all(
["technical", "business", "skeptic"].map(async (pid) => {
const agent = await this.subAgent(PerspectiveAgent, pid);
return agent.analyze(pid, question);
})
);
// ... synthesize results
}
}
```
## Quick Start
```bash
npm start
```
## Try It
- "Should we rewrite our backend in Rust?"
- "Is AI going to replace software engineers?"
- "Should we build or buy our auth system?"
Watch the three perspective panels fill in as each sub-agent completes its LLM call independently.
## Related
- [gadgets-chat](../gadgets-chat) — multi-room chat via sub-agents
- [gadgets-gatekeeper](../gadgets-gatekeeper) — gated database access via sub-agent boundary
- [gadgets-sandbox](../gadgets-sandbox) — isolated database sub-agent with dynamic Worker isolates
- [design/rfc-sub-agents.md](../../design/rfc-sub-agents.md) — RFC for the sub-agent API