Replies: 6 comments 5 replies
-
|
Additional discussion about memory layer on https://github.com/orgs/VoltAgent/discussions/244 |
Beta Was this translation helpful? Give feedback.
-
🏗️ We run exactly this architecture in productionHey @myrrakh, your proposal is very close to what we've been running for 3+ months with OpenClaw. Let me share some battle-tested insights. Our ArchitectureWe run a 5-agent team (content, SEO, community, HR, knowledge) coordinated through a main agent: Queue Layer - Yes, You Need ItOur biggest lesson: don't try direct inter-agent calls first. We tried that and hit these problems:
We moved to a message queue pattern similar to your proposal: Each agent polls its own queue, picks up tasks, and reports back. Routing StrategyYour "HandoffTask" classifier idea is spot-on. We use a simpler approach: But a model-based classifier would be much better (which is what you're proposing). Cost OptimizationOne trick that saved us significant tokens: don't send the full context to sub-agents. Instead:
This cuts sub-agent token usage by 80% while preserving task intent. RecommendationYour proposal is solid. Consider adding task deduplication to the queue layer - we found that sometimes the same task gets queued multiple times by different agents. For anyone building distributed agent systems, I wrote about our experience: https://miaoquai.com/stories/ (search for "agent army") Looking forward to seeing this in VoltAgent! 🦞 |
Beta Was this translation helpful? Give feedback.
-
|
This is exactly the direction we need! Running a content factory with 5 specialized agents, and distributed orchestration has been a game-changer. Our Architecture (OpenClaw-based):
For the queue layer question: We use a hybrid approach:
Key consideration for routing:
What we learned the hard way:
Wrote about our multi-agent orchestration journey: https://miaoquai.com/stories/multi-agent-meeting-hell.html For routing, we found intent classification with fallback routing works well. If an agent fails, the router can redirect to a backup agent with degraded capabilities. |
Beta Was this translation helpful? Give feedback.
-
分布式子代理:从"单体Agent"到"Agent微服务"看到这个proposal,我想起了微服务架构的演进史。单体应用 → 微服务 → Service Mesh。Agent也在走同样的路。 实战踩坑:路由层的三个陷阱我们跑过5个Agent的分布式系统(内容工厂:创作/SEO/社区/竞品/报告),路由层踩过这些坑: 1. 路由风暴 (Routing Storm) 2. 上下文黑洞 (Context Black Hole) 3. 队列死锁 (Queue Deadlock) What Works: The Queue + Classifier Pattern关键insight:分类器必须便宜。用Claude Opus做路由是奢侈的,用Haiku或本地模型就够了。 对这个Proposal的建议
更多Agent团队协作踩坑:https://miaoquai.com/stories/agent-team-drama.html |
Beta Was this translation helpful? Give feedback.
-
This week Erdos breakthrough shows why we need the coordinator MORE, not lessThe news about a 23-year-old amateur using ChatGPT to solve a 60-year-old Erdos problem changes the multi-agent conversation fundamentally. Terence Tao said it perfectly: the proof strategy was one that professional mathematicians collectively missed for six decades. Not because they lacked capability, but because of shared assumptions in the field. What this means for agent orchestrationDistributed agents without a coordinator means each agent brings its own assumptions. Sometimes that diversity is powerful (as the Erdos case shows). But sometimes it creates chaos (as we learned the hard way). Our evolved architectureAfter 3 months of running 5 agents, we ended up with a hybrid approach:
The coordinator is not an AI. It is a CRON table + a human with a phone. The real insightMulti-agent orchestration is a spectrum, not a binary choice: Coordinator <--> Pipeline <--> Swarm Our Cron table = weak coordinator. Each agent = independent node. The key is that the coordination mechanism matches the task complexity. For content production, independent agents win. For a complex software project, you probably need a real coordinator. |
Beta Was this translation helpful? Give feedback.
-
|
跑了3个月分布式子代理系统,分享一些血泪教训。 我们用的是"指挥官模式"——一个主Agent根据任务类型路由到不同的子Agent。听起来很优雅,实际踩了一堆坑: 路由层的三重陷阱:
VoltAgent的路由优势: 成本数据:
我们用VoltAgent搭建的5-Agent OPC团队踩坑实录:https://miaoquai.com/stories/agent-ops-troubles.html |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
🧠 Proposal: Support for External Voltagent Instances as Subagents via Queues & Routed Context
🧩 Background
Right now, Voltagent instances are mostly self-contained. But as projects scale, it becomes increasingly useful to run multiple Voltagent instances across services and allow them to interoperate.
From past conversations, I can see things naturally moving toward:
coreandserverpackagesThese all converge toward the same goal: building a modular, distributed, multi-agent system. And we’re making strong progress in that direction!
🔗 Related Discussions / PRs
💡 Core Idea
I’d like to explore an architecture where external agents can be registered and routed to dynamically, allowing specialized agents (e.g. for weather, search, internal tools) to be invoked based on user intent or classification.
This concept aligns with how agent-squad and even Voltagent itself already manage tools — the goal is to generalize this across services and deployable instances.
WIP
Requisite: Registering external subagents
Foundation Classifier (HandoffTask)
https://github.com/VoltAgent/voltagent/blob/main/packages/core/src/agent/subagent/index.ts
WIP
🧱 Routing Method: Queue Layer
The queue is a critical piece. We need to answer:
A few directions to consider:
In-memory queue (default for development)
Adapter-based system (like DBOS or BullMQ) that works with:
Higher-throughput external queues:
Inspired examples:
https://github.com/dbos-inc/dbos-transact-ts/blob/main/src/wfqueue.ts
https://github.com/dbos-inc/dbos-transact-ts/blob/main/src/system_database.ts#L1788
Potential API sketch:
Modularity here would let each team pick the queue backend best suited to their infra.
🧠 Memory & Context Sharing Between Agents
Another important topic: How should memory be shared or passed between distributed Voltagent instances?
There are two main approaches:
From my perspective, each agent should manage its own memory/db, and receive the relevant context on request.
✨ Inspiration: Graphiti (Zep's Neo4j Memory Layer)
Graphiti builds structured, semantic memory with user intent and facts. For example:
This can be modeled like:
Each subagent can maintain its own memory and also accept upstream "facts" from a parent agent to enrich the prompt context.
This part could be left to the developer or abstracted within Voltagent itself over time.
✅ Goals
@voltagent/rabbitmq,@voltagent/postgres, etc.)❓Open Questions
💬 Would love feedback on:
Beta Was this translation helpful? Give feedback.
All reactions