Mga Sub-Agent¶
Pinapayagan ka ng mga sub-agent na magpatakbo ng mga background task nang hindi hinaharangan ang pangunahing usapan. Kapag nag-spawn ka ng isang sub-agent, tatakbo ito sa sarili nitong hiwalay na session, gagawin ang trabaho nito, at iaanunsyo ang resulta pabalik sa chat kapag tapos na.
Mga use case:
- Mag-research ng isang paksa habang ang pangunahing agent ay patuloy na sumasagot ng mga tanong
- Magpatakbo ng maraming mahahabang gawain nang sabay-sabay (web scraping, pagsusuri ng code, pagproseso ng file)
- I-delegate ang mga gawain sa mga espesyalisadong agent sa isang multi-agent na setup
Mabilis na pagsisimula¶
Ang pinakasimpleng paraan para gumamit ng mga sub-agent ay ang natural na paghingi sa iyong agent:
"Mag-spawn ng isang sub-agent para i-research ang pinakabagong Node.js release notes"
Tatawagin ng agent ang sessions_spawn tool sa likod ng mga eksena. Kapag natapos ang sub-agent, iaanunsyo nito ang mga natuklasan pabalik sa iyong chat.
Maaari ka ring maging tahasan tungkol sa mga opsyon:
"Mag-spawn ng isang sub-agent para suriin ang mga server log mula ngayong araw. Gumamit ng gpt-5.2 at magtakda ng 5-minutong timeout."
Paano Ito Gumagana¶
sessions_spawn na may paglalarawan ng gawain. Ang tawag ay non-blocking — agad na babalik sa pangunahing agent ang { status: "accepted", runId, childSessionKey }.
agent:<agentId>Isang bagong hiwalay na session ang nililikha (agent:) sa dedikadongsubagent` queue lane. The main agent posts a natural-language summary.
Konpigurasyon¶
Ang bawat sub-agent ay may sarili nitong context at paggamit ng token. Mga default:
- Magtakda ng mas murang modelo para sa mga sub-agent upang makatipid sa gastos — tingnan ang Setting a Default Model sa ibaba.
- Gumagana ang mga sub-agent agad nang walang anumang configuration.
- Model: karaniwang pagpili ng modelo ng target agent (maliban kung nakatakda ang
subagents.model) - Thinking: walang override para sa sub-agent (maliban kung nakatakda ang
subagents.thinking)
Max na sabay-sabay: 8¶
Auto-archive: pagkalipas ng 60 minuto
Setting a Default Model
Gumamit ng mas murang modelo para sa mga sub-agent upang makatipid sa gastos sa token:¶
{
agents: {
defaults: {
subagents: {
thinking: "low",
},
},
},
}
Mga Override bawat Agent¶
Sa isang multi-agent na setup, maaari mong itakda ang mga default ng sub-agent para sa bawat agent:
{
agents: {
list: [
{
id: "researcher",
subagents: {
model: "anthropic/claude-sonnet-4",
},
},
{
id: "assistant",
subagents: {
model: "minimax/MiniMax-M2.1",
},
},
],
},
}
Concurrency¶
Kontrolin kung ilang sub-agent ang maaaring tumakbo nang sabay-sabay:
{
agents: {
defaults: {
subagents: {
maxConcurrent: 4, // default: 8
},
},
},
}
Gumagamit ang mga sub-agent ng isang nakalaang queue lane (subagent) na hiwalay sa pangunahing agent queue, kaya hindi hinaharangan ng mga run ng sub-agent ang mga papasok na sagot.
Auto-Archive¶
Ang mga session ng sub-agent ay awtomatikong ina-archive pagkatapos ng panahong maaaring i-configure:
{
agents: {
defaults: {
subagents: {
archiveAfterMinutes: 120, // default: 60
},
},
},
}
*.deleted.<timestamp> (parehong folder) — pinapanatili ang mga transcript, hindi sila binubura. Ang mga auto-archive timer ay best-effort; nawawala ang mga nakabinbing timer kapag nag-restart ang gateway.
Ang sessions_spawn Tool¶
Ito ang tool na tinatawag ng agent para lumikha ng mga sub-agent.
Parameters¶
| Parameter | Uri | Default | Description |
|---|---|---|---|
task |
string | (kinakailangan) | Kung ano ang dapat gawin ng sub-agent |
label |
string | — | Maikling label para sa pagkakakilanlan |
agentId |
string | (agent ng tumatawag) | Mag-spawn sa ilalim ng ibang agent id (dapat pinapayagan) |
model |
string | (opsyonal) | I-override ang model para sa sub-agent na ito |
thinking |
string | (opsyonal) | I-override ang antas ng pag-iisip (off, low, medium, high, atbp.) |
runTimeoutSeconds |
numero | 0 (walang limitasyon) |
I-abort ang sub-agent pagkatapos ng N segundo |
cleanup |
"delete" \ | "keep" | "keep" |
Ayos ng Pagresolba ng Model¶
Nireresolba ang model ng sub-agent sa ganitong pagkakasunod-sunod (unang tumugma ang nananalo):
- Tahasang
modelna parameter sa tawag nasessions_spawn - Config kada agent:
agents.list[].subagents.model - Pangkalahatang default:
agents.defaults.subagents.model - Karaniwang resolusyon ng model ng target na agent para sa bagong session na iyon
Ang antas ng pag-iisip ay nireresolba sa ganitong pagkakasunod-sunod:
- Tahasang
thinkingna parameter sa tawag nasessions_spawn - Config kada agent:
agents.list[].subagents.thinking - Pangkalahatang default:
agents.defaults.subagents.thinking - Kung hindi, walang inilalapat na sub-agent–specific na override sa pag-iisip
Pag-spawn sa Iba’t Ibang Agent¶
Bilang default, maaari lamang mag-spawn ang mga sub-agent sa ilalim ng sarili nilang agent id. 1. Upang pahintulutan ang isang agent na lumikha ng mga sub-agent sa ilalim ng ibang agent ids:
2. {
agents: {
list: [
{
id: "orchestrator",
subagents: {
allowAgents: ["researcher", "coder"], // or ["*"] to allow any
},
},
],
},
}
agents_list tool upang matuklasan kung aling mga agent id ang kasalukuyang pinapayagan para sa sessions_spawn.
4. Pamamahala ng mga Sub-Agent (/subagents)¶
- Gamitin ang
/subagentsslash command upang siyasatin at kontrolin ang mga sub-agent run para sa kasalukuyang session:
| Command | Description |
|---|---|
/subagents list |
6. Ilista ang lahat ng sub-agent run (aktibo at natapos) |
/subagents stop <id\\|#\\|all> |
7. Ihinto ang isang tumatakbong sub-agent |
/subagents log <id\\|#> [limit] [tools] |
8. Tingnan ang transcript ng sub-agent |
/subagents info <id\\|#> |
9. Ipakita ang detalyadong metadata ng run |
/subagents send <id\\|#> <message> |
10. Magpadala ng mensahe sa isang tumatakbong sub-agent |
- Maaari mong tukuyin ang mga sub-agent gamit ang list index (
1,2), run id prefix, buong session key, olast.
/subagents list
````
13. ```
🧭 Subagents (current session)
Active: 1 · Done: 2
1) ✅ · research logs · 2m31s · run a1b2c3d4 · agent:main:subagent:...
2) ✅ · check deps · 45s · run e5f6g7h8 · agent:main:subagent:...
3) 🔄 · deploy staging · 1m12s · run i9j0k1l2 · agent:main:subagent:...
```
```
/subagents stop 3
```
```
⚙️ Stop requested for deploy staging.
```
````
/subagents info 1
````
15. ```
ℹ️ Subagent info
Status: ✅
Label: research logs
Task: Research the latest server error logs and summarize findings
Run: a1b2c3d4-...
Session: agent:main:subagent:...
Runtime: 2m31s
Cleanup: keep
Outcome: ok
```
````
/subagents log 1 10
````
17. Ipinapakita ang huling 10 mensahe mula sa transcript ng sub-agent. Idagdag ang `tools` upang isama ang mga mensahe ng tool call:
```
/subagents log 1 10 tools
```
````
/subagents send 3 "Also check the staging environment"
```
19. Nagpapadala ng mensahe sa tumatakbong session ng sub-agent at naghihintay ng hanggang 30 segundo para sa tugon.
```
20. Anunsyo (Paano Bumabalik ang mga Resulta)¶
-
Kapag natapos ang isang sub-agent, dumadaan ito sa isang hakbang na announce:
-
- Kinukuha ang huling tugon ng sub-agent
-
- Isang buod na mensahe ang ipinapadala sa session ng pangunahing agent na may resulta, status, at mga estadistika
-
- Nagpo-post ang pangunahing agent ng buod sa natural na wika sa iyong chat
Pinapanatili ng mga announce reply ang thread/topic routing kapag available (Slack threads, Telegram topics, Matrix threads).
25. Mga Estadistika ng Anunsyo¶
- Bawat anunsyo ay may kasamang linya ng estadistika na may:
-
- Tagal ng runtime
- Paggamit ng token (input/output/kabuuan)
-
- Tinatayang gastos (kapag ang pagpepresyo ng modelo ay naka-configure sa pamamagitan ng
models.providers.*.models[].cost)
- Tinatayang gastos (kapag ang pagpepresyo ng modelo ay naka-configure sa pamamagitan ng
-
- Session key, session id, at path ng transcript
30. Status ng Anunsyo¶
- Kasama sa mensahe ng anunsyo ang isang status na hinango mula sa kinalabasan ng runtime (hindi mula sa output ng modelo):
-
- matagumpay na pagkumpleto (
ok) — normal na natapos ang gawain
- matagumpay na pagkumpleto (
-
- error — nabigo ang gawain (mga detalye ng error ay nasa notes)
-
- timeout — lumampas ang gawain sa
runTimeoutSeconds
- timeout — lumampas ang gawain sa
-
- unknown — hindi matukoy ang status
NO_REPLY at walang ipo-post.
37. Iba ito sa ANNOUNCE_SKIP, na ginagamit sa daloy ng anunsyo ng agent-sa-agent (sessions_send).
38. Patakaran sa Tool¶
- Bilang default, nakakakuha ang mga sub-agent ng lahat ng tool maliban sa isang set ng mga ipinagbabawal na tool na hindi ligtas o hindi kailangan para sa mga background task:
sessions_list | Pamamahala ng session — ang pangunahing agent ang nag-o-orchestrate |
| sessions_history | Pamamahala ng session — ang pangunahing agent ang nag-o-orchestrate |
| sessions_send | Pamamahala ng session — ang pangunahing agent ang nag-o-orchestrate |
| sessions_spawn | Walang nested fan-out (hindi maaaring lumikha ng sub-agent ang mga sub-agent) |
| gateway | System admin — mapanganib mula sa sub-agent |
| agents_list | System admin |
| whatsapp_login | Interactive setup — hindi isang gawain |
| session_status | Status/iskedyul — ang pangunahing agent ang nagko-coordinate |
| cron | Status/iskedyul — ang pangunahing agent ang nagko-coordinate |
| memory_search | Ipasa na lang ang kaugnay na impormasyon sa spawn prompt |
| memory_get | Ipasa na lang ang kaugnay na impormasyon sa spawn prompt |
41. Pag-customize ng Mga Tool ng Sub-Agent¶
- Maaari mo pang higpitan ang mga tool ng sub-agent:
43. {
tools: {
subagents: {
tools: {
// deny always wins over allow
deny: ["browser", "firecrawl"],
},
},
},
}
- Upang higpitan ang mga sub-agent sa tanging mga partikular na tool:
45. {
tools: {
subagents: {
tools: {
allow: ["read", "exec", "process", "write", "edit", "apply_patch"],
// deny still wins if set
},
},
},
}
allow, tanging ang mga tool na iyon lamang ang magagamit (patuloy na nalalapat ang default na deny list sa ibabaw nito).
Pagpapatunay ng Pagkakakilanlan¶
Ang auth ng sub-agent ay nireresolba ayon sa agent id, hindi ayon sa uri ng session:
-
- Ang auth store ay nilo-load mula sa
agentDirng target agent
- Ang auth store ay nilo-load mula sa
-
- Ang mga auth profile ng pangunahing agent ay isinasama bilang isang fallback (nangunguna ang mga profile ng agent kapag may conflict)
-
- Ang pagsasanib ay additive — ang mga pangunahing profile ay laging magagamit bilang mga fallback
Context and System Prompt¶
Sub-agents receive a reduced system prompt compared to the main agent:
- Included: Tooling, Workspace, Runtime sections, plus
AGENTS.mdandTOOLS.md - Not included:
SOUL.md,IDENTITY.md,USER.md,HEARTBEAT.md,BOOTSTRAP.md
The sub-agent also receives a task-focused system prompt that instructs it to stay focused on the assigned task, complete it, and not act as the main agent.
Stopping Sub-Agents¶
| Method | Effect |
|---|---|
/stop in the chat |
Aborts the main session and all active sub-agent runs spawned from it |
/subagents stop <id> |
Stops a specific sub-agent without affecting the main session |
runTimeoutSeconds |
Automatically aborts the sub-agent run after the specified time |
runTimeoutSeconds does not auto-archive the session. The session remains until the normal archive timer fires.
Full Configuration Example¶
{
agents: {
defaults: {
model: { primary: "anthropic/claude-sonnet-4" },
subagents: {
model: "minimax/MiniMax-M2.1",
thinking: "low",
maxConcurrent: 4,
archiveAfterMinutes: 30,
},
},
list: [
{
id: "main",
default: true,
name: "Personal Assistant",
},
{
id: "ops",
name: "Ops Agent",
subagents: {
model: "anthropic/claude-sonnet-4",
allowAgents: ["main"], // ops can spawn sub-agents under "main"
},
},
],
},
tools: {
subagents: {
tools: {
deny: ["browser"], // sub-agents can't use the browser
},
},
},
}
Mga Limitasyon¶
maxConcurrent as a safety valve.
- Auto-archive is best-effort: Pending archive timers are lost on gateway restart.
Tingnan Din¶
- Session Tools — details on
sessions_spawnand other session tools - Multi-Agent Sandbox and Tools — per-agent tool restrictions and sandboxing
- Configuration —
agents.defaults.subagentsreference - Queue — how the
subagentlane works