diff --git a/docs/plans/2026-02-06-openclaw-feature-gap-analysis.md b/docs/plans/2026-02-06-openclaw-feature-gap-analysis.md index 8955407..6f5f9c6 100644 --- a/docs/plans/2026-02-06-openclaw-feature-gap-analysis.md +++ b/docs/plans/2026-02-06-openclaw-feature-gap-analysis.md @@ -1,7 +1,7 @@ # Flynn vs OpenClaw — Feature Gap Analysis **Date:** 2026-02-06 -**Last updated:** 2026-02-07 +**Last updated:** 2026-02-07 (post tier-1 implementation) **Purpose:** Comprehensive comparison of Flynn's current implementation against OpenClaw's feature set, to guide prioritisation of future work. ## Legend @@ -79,7 +79,7 @@ Flynn has **6 of ~15 channels** (Telegram, WhatsApp, Discord, Slack, WebChat, TU | `sessions.*` tools | List/history/send/spawn across sessions | Full (list/history/create/delete) | **MATCH** | | `agents.list` tool | Sub-agent discovery | Full (list configs with tiers/profiles) | **MATCH** | | Tool profiles | minimal/coding/messaging/full | Full (4 profiles + per-agent + per-provider) | **MATCH** | -| Tool groups | `group:fs`, `group:runtime`, etc. | -- | **MISSING** | +| Tool groups | `group:fs`, `group:runtime`, etc. | Full (group:fs, group:runtime, group:web, group:memory) | **MATCH** | | Tool allow/deny lists | Global + per-agent + per-provider | Full (global + per-agent + per-provider allow/deny) | **MATCH** | --- @@ -92,7 +92,7 @@ Flynn has **6 of ~15 channels** (Telegram, WhatsApp, Discord, Slack, WebChat, TU | Session isolation | Per-sender + group isolation | `{frontend}:{userId}` with agent config key | **MATCH** | | Session transfer | Between channels | Between frontends | **MATCH** | | Multi-agent routing | Isolated workspaces per agent | Full (AgentRouter + per-agent config/sandbox/tools) | **MATCH** | -| Session pruning | Tool result trimming (in-memory) | -- | **MISSING** | +| Session pruning | Tool result trimming (in-memory) | TTL-based auto-cleanup (configurable sessions.ttl) | **MATCH** | | `/new` / `/reset` | Full | Full | **MATCH** | | `/status` | Full (model + tokens + cost) | Full (model + tokens + cost) | **MATCH** | @@ -211,8 +211,8 @@ Flynn actually has MCP support that OpenClaw doesn't emphasise — OpenClaw reli | `/status` | Full | Full | **MATCH** | | `/new` / `/reset` | Full | Full | **MATCH** | | `/compact` | Full | Full (manual via command) | **MATCH** | -| `/think ` | Full (off to xhigh) | -- | **MISSING** | -| `/verbose` | Full | -- | **MISSING** | +| `/think ` | Full (off to xhigh) | `!!think` prefix (per-message, multi-provider) | **MATCH** | +| `/verbose` | Full | Full (toggle raw streaming + tool output) | **MATCH** | | `/usage` | Full (off/tokens/full) | Full (per-tier breakdown + cost) | **MATCH** | | `/local` / `/cloud` | -- | Full | Flynn-unique | | `/model` | -- | Full (tier switching) | Flynn-unique | @@ -224,7 +224,7 @@ Flynn actually has MCP support that OpenClaw doesn't emphasise — OpenClaw reli | Feature | OpenClaw | Flynn | Status | |---------|----------|-------|--------| | Streaming & chunking | Full (per-channel limits) | Full (streaming + per-channel chunking) | **MATCH** | -| Typing indicators | Full | Telegram (built-in grammY) | **PARTIAL** | +| Typing indicators | Full | Telegram, Discord, WhatsApp (per-adapter) | **MATCH** | | Presence tracking | Full | -- | **MISSING** | | Usage tracking / cost | Full | Full (per-tier tokens, estimated cost via MODEL_COSTS) | **MATCH** | | Markdown rendering | Per-channel formatting | Full (TUI markdown renderer + channel-specific) | **MATCH** | @@ -241,8 +241,8 @@ Flynn actually has MCP support that OpenClaw doesn't emphasise — OpenClaw reli |----------|:-----:|:-----:|:-------:|:-------:| | Channels | 13 | 6 | 0 | 7 | | Model Providers | 14 | 10 | 0 | 4 | -| Agent & Tools | 17 | 15 | 0 | 2 | -| Sessions | 7 | 6 | 0 | 1 | +| Agent & Tools | 17 | 16 | 0 | 1 | +| Sessions | 7 | 7 | 0 | 0 | | Context/Compaction | 4 | 4 | 0 | 0 | | Memory | 7 | 4 | 0 | 3 | | MCP | 3 | 3 | 0 | 0 | @@ -251,28 +251,24 @@ Flynn actually has MCP support that OpenClaw doesn't emphasise — OpenClaw reli | Companion Apps | 6 | 0 | 0 | 6 | | Skills/Plugins | 5 | 4 | 0 | 1 | | Gateway/Infra | 11 | 3 | 1 | 7 | -| Chat Commands | 8 | 5 | 0 | 2 | -| Misc | 9 | 8 | 1 | 0 | -| **TOTAL** | **116** | **75 (65%)** | **2 (2%)** | **38 (33%)** | +| Chat Commands | 8 | 7 | 0 | 0 | +| Misc | 9 | 9 | 0 | 0 | +| **TOTAL** | **116** | **80 (69%)** | **1 (1%)** | **33 (28%)** | --- ## Remaining True Gaps (prioritized) -### Tier 1 — Quick Wins +### ~~Tier 1 — Quick Wins~~ (DONE — implemented 2026-02-07) -1. **`/think` command** — Toggle extended thinking/reasoning mode -2. **`/verbose` command** — Toggle verbose tool output display -3. **Typing indicators** — Discord, Slack, WhatsApp adapters could send typing indicators -4. **Session pruning** — Auto-cleanup old sessions by TTL -5. **Tool groups** — Syntactic sugar: `group:fs` → `[file.read, file.write, file.edit, file.list]` +All five Tier 1 items implemented: `!!think` prefix, `/verbose` command, typing indicators (Discord/WhatsApp), session pruning (TTL), tool groups. See `docs/plans/2026-02-07-tier1-quick-wins-design.md`. ### Tier 2 — Meaningful New Features -6. **Inbound webhooks** — HTTP endpoint that triggers agent processing -7. **Vector memory search** — Embed memory chunks, enable semantic retrieval -8. **Dockerfile** — Production container deployment -9. **Heartbeat** — Periodic self-check with optional notification +1. **Inbound webhooks** — HTTP endpoint that triggers agent processing +2. **Vector memory search** — Embed memory chunks, enable semantic retrieval +3. **Dockerfile** — Production container deployment +4. **Heartbeat** — Periodic self-check with optional notification ### Tier 3 — Additional Channels (if desired) @@ -304,3 +300,5 @@ Flynn actually has MCP support that OpenClaw doesn't emphasise — OpenClaw reli - **Configurable retry policy** with exponential backoff - **Skill installer** with managed directory + upgrade support - **Audio transcription pipeline** for voice messages +- **Per-message extended thinking** via `!!think` prefix (multi-provider: Anthropic, OpenAI, Gemini, GitHub) +- **Tool groups** for policy config (`group:fs`, `group:runtime`, `group:web`, `group:memory`)