Motivation
In a thread with one or more agents, a human message only wakes an agent if it carries an explicit @mention. Natural follow-ups like "yes, go ahead" or "can you also check the tests?" are silently dropped, so every reply needs a fresh @.
This hits anyone working conversationally with agents in threads, and it gets worse with multiple agents. Some messages are meant for one specific agent, some for another, and some are human-to-human and shouldn't wake anyone. "Who is this message for?" is a judgment call, not something a mention-or-nothing rule can capture.
Proposed solution
Use a System One decision model to classify each human message in a thread that has agent participants:
- Input: the new message, the last N thread messages, and the participating agents (name + short role description).
- Decision: a
choice over {agent_1, ..., agent_n, none}, with a confidence score.
- Action: if the top choice is an agent and confidence exceeds a threshold, treat the message as if that agent were mentioned. Otherwise do nothing.
Candidate models:
- Jev (TypeSafe AI): hosted, typed decisions, low latency and cost.
- Laya (ConvAI Innovations): open weights, runs locally. Fits self-hosted relays.
- [My Go implementation of Laya: https://github.com/brennanMKE/laya-go], which could run alongside the harness without a Python dependency.
Preferred placement is composer-side: the client classifies before sending, adds the agent's p tag, and shows "Will go to @agent" in the composer, which the user can remove. No relay or protocol change. The routing is visible and correctable, and it compiles to exactly what typing the mention produces today.
Invariants to preserve:
Alternatives considered
These heuristics are a good baseline and could ship first. The classifier is a layer on top for multi-agent threads. At typical System One latency (tens to a few hundred ms), it adds little to a turn that will take an LLM seconds to answer.
Additional context
Duplicates: none found for intent classification. Closest is #2270 (thread-follow via participation tracking). Also related: #5867, #5096, #6938.
- Jev: TypeSafe AI's System One model, returns typed decisions with probabilities.
- Laya: open-source non-autoregressive System 1 decision engine from ConvAI Innovations.
- Go Laya implementation
Motivation
In a thread with one or more agents, a human message only wakes an agent if it carries an explicit @mention. Natural follow-ups like "yes, go ahead" or "can you also check the tests?" are silently dropped, so every reply needs a fresh
@.This hits anyone working conversationally with agents in threads, and it gets worse with multiple agents. Some messages are meant for one specific agent, some for another, and some are human-to-human and shouldn't wake anyone. "Who is this message for?" is a judgment call, not something a mention-or-nothing rule can capture.
Proposed solution
Use a System One decision model to classify each human message in a thread that has agent participants:
choiceover{agent_1, ..., agent_n, none}, with a confidence score.Candidate models:
Preferred placement is composer-side: the client classifies before sending, adds the agent's
ptag, and shows "Will go to @agent" in the composer, which the user can remove. No relay or protocol change. The routing is visible and correctable, and it compiles to exactly what typing the mention produces today.Invariants to preserve:
Alternatives considered
buzz-acp: extend the [Bug] buzz-acp agents go deaf in threads they've joined unless re-mentioned. #2270 gate to queue ifmentioned(agent)ORclassifier(agent) >= threshold. Works without client changes, but N agents means N classifications per message unless shared, and the routing decision is invisible to the user.These heuristics are a good baseline and could ship first. The classifier is a layer on top for multi-agent threads. At typical System One latency (tens to a few hundred ms), it adds little to a turn that will take an LLM seconds to answer.
Additional context
Duplicates: none found for intent classification. Closest is #2270 (thread-follow via participation tracking). Also related: #5867, #5096, #6938.