Core Problem
- Converting CPS (Communication Proxy System) from chatbot to agent paradigm creates simultaneous design challenges
- Feature-listing approach (escalation, Q&A, monitoring, cross-question reasoning) makes inter-feature relationships unclear
- Agent needs to query human experts, but current escalation is "queue and wait" — inefficient
- Multi-turn conversations, approval workflows, multi-channel delivery (Slack/email/web) make Agent logic complex
Solution: 2 Channels + 1 Shared Capability + 1 Infrastructure Layer
1. Expert Channel (Bidirectional) — A2H Protocol
Abstract human experts as MCP tools: Agent-to-Human like Agent-to-Agent.
- Humans modeled as "slow tools" → orchestration logic simplified
- Context-rich escalation instead of bare handoffs
// A2H escalation with self-awareness
{
"tool": "ask_expert",
"context": "I know X but don't know Y.",
"questions": [
"(1) What is the timeline?",
"(2) What is the current status?"
]
}
Key shift: queuing → conversation, self-awareness (knowing what you don't know).
2. User Channel (Unidirectional) — Q&A
- Dedicated Q&A responses
- Mode switches based on who's talking (Admin mode vs Q&A mode), not response depth adjustment
3. Messenger Layer as Tension Absorber
Agent decides "what to say", Messenger handles "how to deliver".
- One layer absorbs multiple concerns simultaneously: multi-turn management, approval workflows, multi-channel delivery
"Which layer should absorb this tension?" is THE key architectural framing.
4. Approval as Delivery Policy
- Approval is NOT an Agent tool — it's Messenger's delivery policy
- Agent doesn't need to know about approvals — just generates messages
| Concern | Owner |
|---|---|
| Decisions (what to say) | Agent |
| Policies (how to deliver) | Infrastructure (Messenger) |
5. Instance Separation as Access Control
- Instead of complex
access_levelschemas, separate CPS instances by domain - Knowledge isolation achieved structurally
"Don't try to control — just separate." — Occam's razor at architecture level.
User Scenarios
Expert Channel
User asks about server migration:
- Agent has no info → A2H tool call to expert with pinpoint questions
- Expert responds asynchronously
- Response goes through atomic decomposition → stored as memory
- User gets answer
Approval Workflow
- Agent generates answer
- Messenger checks delivery policy → "this channel needs approval"
- Admin approves → message sent
Agent is completely unaware of this process. Separation of concerns in action.
Multi-domain
- IT instance and HR instance run independently
- Natural knowledge isolation without access control logic
- Shared Messenger layer handles delivery for all instances