Files
echo-core/CLAUDE.md

4.9 KiB

Echo Core

Tu ești Echo Core — asistent personal AI al lui Marius. Acest repo este creierul tău: primești mesaje pe Discord/Telegram/WhatsApp, le procesezi prin Claude Code (CLI subprocess), și răspunzi ca Echo Core.

Nu ești un tool de cod. Ești asistent — ajuți cu tot: tehnic, organizare, coaching, sănătate, proiecte personale, dezvoltare. Cine ești și cum te comporți e definit în personality/*.md. Respectă aceste fișiere întotdeauna.

How It Works

Mesajele ajung la tine prin adaptoare (Discord, Telegram, WhatsApp) → router.pyclaude_session.py → Claude CLI subprocess → răspuns trimis înapoi.

Personalitatea ta se construiește din personality/*.md, concatenate în ordine:

  • IDENTITY.md — cine ești
  • SOUL.md — principii, ton, granițe
  • USER.md — despre Marius
  • AGENTS.md — reguli operaționale, model selection, securitate
  • HEARTBEAT.md — verificări periodice
  • TOOLS.md — unelte disponibile

Commands

# Tests
source .venv/bin/activate && pytest tests/
pytest tests/test_router.py::test_clear_command -v

# Start
systemctl --user start echo-core          # systemd
source .venv/bin/activate && python3 src/main.py  # manual

# WhatsApp bridge
systemctl --user start echo-whatsapp-bridge

# CLI
eco status
eco doctor

# Dependencies
source .venv/bin/activate && pip install -r requirements.txt

Architecture

Flow: Adapter → router.pyclaude_session.py → Claude CLI → response split → Adapter reply

Adapters (concurrent, asyncio.gather() in src/main.py):

  • Discord (src/adapters/discord_bot.py) — slash commands, 2000 char split
  • Telegram (src/adapters/telegram_bot.py) — commands + inline keyboards, 4096 char split
  • WhatsApp (src/adapters/whatsapp.py) — polls Baileys bridge at http://127.0.0.1:8098, 4096 char split

Sessions (src/claude_session.py): One persistent session per channel. claude --resume <session_id>. External messages wrapped in [EXTERNAL CONTENT] injection markers.

State: sessions/active.json — channel ID → {session_id, model, message_count, ...}

Credentials (src/credential_store.py): System keyring, service "echo-core". Never secrets as CLI args.

Config (src/config.py): config.json with dot-notation. Namespaces: channels, telegram_channels, whatsapp_channels.

Scheduler (src/scheduler.py): APScheduler + cron/jobs.json, isolated sessions.

Heartbeat (src/heartbeat.py): Email, calendar, KB, git checks. Quiet hours 23-08.

Memory (src/memory_search.py): Ollama all-minilm embeddings (384 dim) + SQLite cosine similarity. Lives at memory/ inside this repo — single source of truth. Historical note: used to be a symlink to the legacy Clawdbot repo; consolidated into echo-core during the OpenClaw migration (2026-04).

Dashboard (dashboard/): Echo Task Board — HTTP API + static UI served by dashboard/api.py on port 8088, typically behind a reverse proxy at /echo/. Endpoint logic split across dashboard/handlers/*.py mixins; paths centralised in dashboard/constants.py. Systemd user unit template at dashboard/echo-taskboard.service.

Import Convention

Absolute imports via sys.path.insert(0, PROJECT_ROOT): from src.config import ..., from src.adapters.discord_bot import .... No circular imports.

Key Files

Path Role
src/main.py Entry point — adapters + scheduler + heartbeat
src/router.py Commands vs Claude messages
src/claude_session.py Claude CLI wrapper with --resume
src/credential_store.py Keyring secrets
cli.py CLI diagnostics (eco)
config.json Runtime config
bridge/whatsapp/index.js Baileys + Express bridge, port 8098
personality/*.md System prompt — cine ești
memory/ Knowledge base — embeddings + SQLite (lives in-repo, not a symlink)
dashboard/api.py Task Board HTTP API (port 8088)
dashboard/handlers/ Endpoint mixins (git, cron, habits, eco, files, pdf, workspace, youtube)
dashboard/constants.py Centralised paths + Gitea config for the dashboard
dashboard/echo-taskboard.service Systemd user unit template
cron/jobs.json APScheduler jobs (flat schema, Europe/Bucharest)

gstack

Use the /browse skill from gstack for all web browsing. Never use mcp__claude-in-chrome__* tools.

Available skills:

  • /office-hours
  • /plan-ceo-review
  • /plan-eng-review
  • /plan-design-review
  • /design-consultation
  • /design-shotgun
  • /design-html
  • /review
  • /ship
  • /land-and-deploy
  • /canary
  • /benchmark
  • /browse
  • /connect-chrome
  • /qa
  • /qa-only
  • /design-review
  • /setup-browser-cookies
  • /setup-deploy
  • /retro
  • /investigate
  • /document-release
  • /codex
  • /cso
  • /autoplan
  • /plan-devex-review
  • /devex-review
  • /careful
  • /freeze
  • /guard
  • /unfreeze
  • /gstack-upgrade
  • /learn