Initial commit
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# OpenClaw session routing / two-agent proposal
|
||||
|
||||
## Problem observed
|
||||
Michael reported cross-channel bleed where parts of WebUI-originated conversation continuations were appearing in Telegram. This did not seem limited to heartbeat content; some leaked text looked like the tail end of a WebUI conversation.
|
||||
|
||||
## Diagnosis summary
|
||||
The issue appears more like shared main-agent/session routing bleed than a simple heartbeat-only bug.
|
||||
|
||||
Most suspicious current config factors:
|
||||
- heartbeat configured under `agents.defaults.heartbeat`
|
||||
- heartbeat target explicitly set to Telegram / `1411368290`
|
||||
- `tools.sessions.visibility` set to `all`
|
||||
- single shared `main` agent serving multiple surfaces
|
||||
|
||||
Less suspicious / probably correct:
|
||||
- `session.dmScope = "per-channel-peer"` looks like the right direction and should likely be kept.
|
||||
|
||||
## Docs/research conclusion
|
||||
OpenClaw docs indicate the official mechanism for channel-to-agent routing is:
|
||||
- `agents.list` for agent definitions
|
||||
- `bindings` for mapping inbound channels/accounts/peers to agents
|
||||
|
||||
Important doc takeaways:
|
||||
- routing chooses one agent deterministically
|
||||
- `bindings` can match by channel, account, peer, etc.
|
||||
- WebChat attaches to the selected agent and defaults to that agent’s main session
|
||||
|
||||
## Proposed separation model
|
||||
Use two agents with the same workspace but different channel roles:
|
||||
- `telegram-main`
|
||||
- `webui-main`
|
||||
|
||||
Keep `grok-cron` as-is.
|
||||
|
||||
### Intended behaviour
|
||||
- Telegram inbound traffic binds to `telegram-main`
|
||||
- WebUI/default interactive use binds to `webui-main`
|
||||
- heartbeat lives only on `telegram-main`
|
||||
- both agents may share the same workspace for files/projects
|
||||
|
||||
## Config proposal file created
|
||||
Saved comparison file:
|
||||
- `/home/openclaw/.openclaw/openclaw.two-agent-proposal.json`
|
||||
|
||||
Live config was not overwritten.
|
||||
|
||||
## Key proposed config changes
|
||||
### Remove heartbeat from defaults
|
||||
Remove:
|
||||
- `agents.defaults.heartbeat`
|
||||
|
||||
### Replace `main` with two agents
|
||||
New agent layout:
|
||||
- `telegram-main` with heartbeat block
|
||||
- `webui-main` marked `default: true`
|
||||
- existing `grok-cron` retained
|
||||
|
||||
### Add bindings
|
||||
Add top-level:
|
||||
```json
|
||||
"bindings": [
|
||||
{
|
||||
"agentId": "telegram-main",
|
||||
"match": {
|
||||
"channel": "telegram"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## Current confidence
|
||||
High confidence on the architectural direction:
|
||||
- separate agents + bindings is the right OpenClaw-native way to reduce cross-channel bleed
|
||||
|
||||
Lower confidence on exact final production syntax until validated live, because the proposal has not yet been tested/restarted.
|
||||
|
||||
## User preference / outcome
|
||||
Michael preferred a separate comparison config file rather than changing the live config immediately.
|
||||
The proposed two-agent config was written out for comparison and reviewed in short diff form.
|
||||
Reference in New Issue
Block a user