moving
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled

This commit is contained in:
Oleg Maslov
2026-09-02 10:10:29 +02:00
commit 0c3e2ead3b
3841 changed files with 970576 additions and 0 deletions

View File

@@ -0,0 +1,138 @@
# CowAgent vs Waggle OS — Competitive Teardown & Steal List
**Date:** 2026-07-09 · **Method:** 4 parallel Opus deep-read agents over a fresh clone of
[`zhayujie/CowAgent`](https://github.com/zhayujie/CowAgent) (commit 2026-07-08) + comparison against this repo.
All CowAgent claims below are code-verified with file:line by the analysts.
---
## 0. What CowAgent is
**CowAgent = `chatgpt-on-wechat` rebranded in place.** Same repo (created Aug 2022), so its "super AI
assistant" pivot launched with **45.9k stars / 10.3k forks** already attached; last push was yesterday,
release cadence ~2-3 weeks (v2.0.0 Feb → v2.1.3 Jul 2026). Python monolith (~73k LOC / 292 files), MIT.
Commercial parent: **LinkAI** (link-ai.tech) — the open-core-funnel structure is *identical* to
Waggle→KVARK: OSS demand-gen → hosted cloud + enterprise (workspaces/RBAC/audit all cloud-only, none in OSS).
Feature surface is a near-mirror of Waggle: 3-tier memory + nightly distillation, hybrid keyword+vector
retrieval, markdown knowledge wiki + graph, self-evolution, skill hub with one-click install, MCP,
multi-model routing, Electron desktop + web console + CLI, 13 IM/chat channels.
---
## 1. Head-to-head verdict
| Axis | Winner | Evidence |
|---|---|---|
| **Memory substrate** | **Waggle, decisively** | CowAgent: brute-force O(N) vector scan (no ANN/sqlite-vec), no reranker, naive 0.7/0.3 linear fusion on mismatched score scales, LLM-prompt-only dedup/contradiction handling, nightly **lossy whole-file rewrite** of MEMORY.md with zero provenance, no GDPR erasure, no identity/awareness layers, no entity extraction (its "knowledge graph" is just markdown links), **zero benchmarks**. Waggle: sqlite-vec + cross-encoder reranker, FrameStore provenance, sticky erasure, LoCoMo 86.49% SOTA. |
| **Security** | **Waggle, decisively** | CowAgent has **no prompt-injection defense at all**, no trust model, no permission tiers, no cost tracker; SSRF guard is opt-in and OFF by default; bash tool has only a minimal catastrophic-command blocklist; web console is single-user shared-password. Waggle: injection-scanner (mandated), trust-model, permissions, Tauri IPC allowlist, vault, cost-tracker. |
| **Multi-agent / personas** | **Waggle** | CowAgent is explicitly single-agent, one AGENT.md, no persona layer, no orchestration. Waggle: 22 personas, subagent-orchestrator, coordinator, workflow-composer, WaggleDance. |
| **Engineering rigor** | **Waggle** | CowAgent grade **C+/B**: only 9 of 217 tests gated in CI, no lint/typecheck/coverage gates, ~41% typing, 5,028-line god file (`web_channel.py`), unpinned heavy deps. Waggle: ~8k gated Vitest tests, Playwright E2E, strict tsc, CI gates, production signoff. |
| **Team / governance / billing** | **Waggle** | CowAgent OSS has none (all punted to LinkAI cloud). Waggle has tiers+Stripe+governance in-product. |
| **Distribution & reach** | **CowAgent, decisively** | 13 channels incl. the entire WeChat/WeCom/QQ ecosystem + Telegram/Slack/Discord (Waggle: **0** IM channels). One-line `curl \| bash` installer with China-network resilience (Gitee/pip-mirror fallbacks) and zero-key boot. 45.9k-star inherited brand, trending, 4-language docs (246 .mdx — best-in-class). |
| **Online self-evolution** | **CowAgent** | Runtime, conversation-driven evolution loop (see steal #1). Waggle's evolution is offline/eval-gated only. |
| **Docs** | **CowAgent** | 246 .mdx, trilingual, per-channel guides. Genuinely excellent. |
**Net:** CowAgent out-distributes us (channels, installer, brand gravity, docs) but is a shallower,
single-user, security-weak product with a hobbyist-grade memory engine and no proof. Waggle's moat
(benchmarked substrate, security, teams, rigor) is real. The asymmetric move: **graft their funnel
mechanics onto our core** — their moat (WeChat ecosystem + 45k stars) is the only thing we can't copy.
---
## 2. Steal list (consolidated, ranked by value/effort)
### Tier 1 — high value, low-to-medium effort
1. **"Dream Diary" — user-facing nightly consolidation narrative.** Their Deep Dream distillation
(`agent/memory/summarizer.py:414`, prompt :55-141, diary write :585) emits a second `[DREAM]` section: a
short narrative of what was merged/conflicted/cleaned, saved to `memory/dreams/YYYY-MM-DD.md` and surfaced
in a Self-Evolution UI tab. Waggle already *does* the substance (reconcile, contradiction-detector,
dedup) but shows the user nothing. One extra LLM output section + one UI surface = observability,
delight, and a retention mechanic. **Cheapest high-impact steal.**
2. **Anti-nag file-change gate + "fix the source, not the symptom."** Their evolution reviewer may only
notify the user if a watched file *actually changed* (mtime/size snapshot diff, `evolution/executor.py:459`);
the prompt forbids logging a symptom to memory when the root cause is an editable skill
(`evolution/prompts.py:63-68`). Portable discipline for our evolution + memory writes.
3. **Online idle-triggered self-evolution.** Daemon scans sessions every 60s; fires on idle ≥ N sec AND
(enough turns OR context >80% of budget) (`evolution/trigger.py:38-53`). Spawns an isolated reviewer
agent with a restricted toolset and workspace-confinement guards (`executor.py:117-228, 409-444`),
default-`[SILENT]`, with backup_id + `evolution_undo`. It patches skills, **completes promised-but-unfinished
deliverables**, and rarely writes memory. Waggle has all the pieces (subagent-orchestrator,
evolution-orchestrator, cron-store) but no runtime conversation-driven loop. **Highest strategic value.**
4. **IM channels as distribution surface.** Their `channel_factory.py` + `ChatChannel` base +
per-platform `*_message.py` normalization is a clean ~2-file-per-platform adapter pattern. Waggle has
zero IM reach; "your Waggle workspace agent, live in Slack/Telegram/Discord" is a reach multiplier and
fits the Teams tier perfectly (Slack first — it's the Teams buyer's habitat). Port the pattern over the
Fastify sidecar; skip the China stack.
5. **One-line installer + interactive setup wizard.** `run.sh` (1,362 lines): dep detection → clone with
mirror fallback → venv/pip with proxy handling → interactive model+channel wizard writing config →
start → CLI handoff. Zero-key boot (config works before any API key; keys added in UI). Waggle has no
`curl | bash` self-host story for the sidecar.
### Tier 2 — solid, medium effort
6. **Embedding-based on-demand MCP tool retrieval.** Above a threshold (20), tool descriptions are
embedded and only top-k relevant tools are injected per turn, union-only within a run so schemas never
vanish mid-run (`tool_manager.py:606-676`). Direct upgrade path for our MCP + tool-filter as catalogs grow.
7. **MCP hot-reload.** `(mtime, sha256)` signature diff on mcp.json → add/remove/restart only changed
servers, no process restart (`tool_manager.py:378-439`). Plus background async MCP boot so the agent
serves traffic while `npx`/`uvx` servers start.
8. **Hard-capped always-injected core digest.** `MEMORY.md` ≤50 items / 200 lines / 25KB, LLM-maintained
dense, always in prompt, with "spillover → memory_search" pointer (`workspace.py:110,186`). A clean
token-budget pattern to layer on top of recallMemory/IdentityLayer.
9. **Tiered consecutive-failure loop breaker.** 5 identical-arg calls → stop; 3 identical-arg failures →
stop; 6 same-tool diff-arg failures → stop; 8 same-tool failures → hard abort with user-facing give-up
copy (`agent_stream.py:269-330`). More granular than our boolean loop-guard.
10. **Per-capability model routing UI.** Chat/vision/image-gen/ASR/TTS/embedding each routed to a
different vendor with one click in the web console. We have LiteLLM underneath; we lack the picker UX.
11. **Multi-source skill install grammar + SKILL.md interop.** One resolver accepts Hub name,
`owner/repo`, git URL/SSH, local path, direct SKILL.md URL, zip/tar URL, `clawhub:`/`github:` prefixes —
with SHA-256 checksums and zip-slip guards (`cli/commands/skill.py`). They use Anthropic's SKILL.md
frontmatter convention, making skills cross-tool with Claude Code/OpenClaw — a marketplace-liquidity
play our marketplace should join.
### Tier 3 — nice-to-have / situational
12. **`context_summary_callback` dual-use** — one summarization LLM call both persists trimmed turns to
daily memory and re-injects the summary into live context (`summarizer.py:352`). Saves a call in compaction.
13. **Scheduler/cron-pair stripping before long-term memory flush** (`summarizer.py:770`) — keeps
automated noise out of long-term memory; directly relevant to WaggleDance signals.
14. **Retrieval-time temporal decay** — exp half-life 30d multiplier at fusion time (`manager.py:472`).
~~Complementary to our write-time dating; trivial add.~~ **ALREADY SHIPPED (verified 2026-07-11
Tier 3 recon): `packages/hive-mind-core/src/mind/scoring.ts:52-63` has exact 30d-half-life
exponential decay, write-time anchored, default ON via 'balanced' profile. Do not re-recon.**
15. **Skill auto-enable by requirement satisfaction** — skills gate on `requires.env/bins` presence and
surface "setup needed" hints (`agent/skills/config.py`). Nice marketplace UX.
16. **Trigram FTS5 cascade for CJK keyword search** (`storage.py:952`) — only if we target non-Latin markets.
17. **Scheduler as agent tool with `ai_task` mode** — cron/interval/once tasks that re-invoke the agent
and push results to the originating channel (`scheduler_tool.py`). We have cron-store; theirs is a
cleaner agent-facing proactivity surface.
### Explicitly NOT worth stealing
- Their retrieval engine (we're strictly better), their knowledge graph (link-parsing only), their
security model (worse on every axis), Electron+PyInstaller packaging (Tauri is superior), voice-provider
breadth (18 ASR/TTS vendors — off-positioning for us).
---
## 3. Strategic read
1. **They validated our exact business model** — MIT OSS assistant → cloud/enterprise funnel (LinkAI ≈ KVARK).
They're running it with a 45.9k-star head start and daily commits. This raises urgency on our OSS
launch (hive-mind sits at 0 stars) — the SOTA-gated launch strategy now has a fast-moving reference competitor.
2. **Their moat is distribution, not tech.** WeChat-ecosystem channels + inherited brand + one-line
install. Nothing in their core survives contact with our substrate on quality, but none of our quality
is *visible* the way "works in your WeChat/Slack in 2 minutes" is.
3. **Differentiation story writes itself:** benchmarked memory (86.49 LoCoMo vs their zero evidence),
security (injection scanning vs none), teams/governance in-product (vs cloud-only), test rigor
(8k gated tests vs 9). Useful ammunition for waggle-os.ai comparison copy.
4. **Their one genuine capability lead** — runtime self-evolution that finishes unfinished tasks and
patches its own skills from live conversations — is buildable on infrastructure we already have, and
would neutralize their best demo.
## 4. Source reports
Full per-domain analyst reports (memory/knowledge, agent core, distribution, code quality) were produced
2026-07-09; key findings are consolidated above. Clone analyzed at commit `2026-07-08 fix(desktop):
support web_password auth`.