Initial commit

This commit is contained in:
2026-05-05 09:40:28 +10:00
commit b865575511
116 changed files with 7290 additions and 0 deletions
@@ -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 agents 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.