Logotipo de Bitdoze

Crea un Bot de IA para Discord con Agno (Equipos, Memoria, Base de Conocimiento)

Un bot de IA para Discord listo para producción con respuestas en streaming, base de conocimiento vectorial, memoria Cognee, orquestación de equipos y herramientas de automejora.

Dragos

Actualizado Publicado 8 min de lectura

Crea un Bot de IA para Discord con Agno (Equipos, Memoria, Base de Conocimiento)

Esta guía muestra cómo construir un bot de IA para Discord usando Agno. El bot transmite las respuestas en tiempo real, recuerda conversaciones, busca en una base de conocimiento y puede delegar trabajo a agentes especializados.

Ver en GitHub

Qué Hace Este Bot

  • Responde cuando lo @mencionas en Discord
  • Transmite las respuestas (ves cómo el mensaje se actualiza mientras se genera)
  • Guarda recuerdos y aprende tus preferencias con el tiempo
  • Busca en una base de conocimiento (LanceDb o PgVector)
  • Ejecuta tareas programadas mediante cron
  • Delega trabajo complejo a equipos de agentes

Requisitos Previos

  • Python 3.12+
  • Token de bot de Discord
  • Clave de API del modelo (cualquier proveedor compatible con OpenAI)
  • Opcional: token de GitHub para las herramientas de GitHub

Si eres nuevo en el empaquetado de Python, consulta UV.

Inicio Rápido

bash
git clone https://github.com/bitdoze/bitdoze_bot.git
cd bitdoze_bot
uv sync
python scripts/setup_bot.py

El asistente de configuración te pide el token de Discord, las claves de API y los ajustes opcionales. Crea ~/.bitdoze-bot/ con todo lo necesario.

Configuración del Bot de Discord

  1. Ve a discord.com/developers
  2. Crea una aplicación y añade un bot
  3. Copia el token
  4. Activa Message Content Intent (obligatorio)
  5. Invítalo a tu servidor con los permisos adecuados

Estructura del Proyecto

text
bitdoze-bot/
  main.py
  config.example.yaml
  docker-compose.yml
  bitdoze_bot/
    agents.py
    discord_bot.py
    cron.py
    heartbeat.py
    discovery_tools.py
    tool_permissions.py
    run_monitor.py
  scripts/
    setup_bot.py
    generate_soul.py
    setup_knowledge.py
  tests/

Funciones Principales

Streaming: Los mensajes se actualizan en Discord a medida que el agente genera contenido. Ves el progreso en lugar de esperar la respuesta completa.

Memoria: Almacenamiento con SQLite para las conversaciones. Integración opcional con Cognee para memoria a largo plazo con búsqueda semántica.

Base de conocimiento: Búsqueda vectorial con LanceDb (sin configuración) o PgVector (requiere PostgreSQL). Añade documentos a workspace/knowledge/ y el bot podrá referenciarlos.

Equipos: Varios agentes que pueden colaborar. El equipo de entrega podría tener un arquitecto que planifica y un ingeniero de software que implementa.

Automejora: Las herramientas de descubrimiento permiten al bot guardar y buscar sus propios aprendizajes. Combinado con learned_knowledge: agentic, decide cuándo almacenar nuevos conocimientos.

Automatización: Comprobación de heartbeat cada 30 minutos. Los trabajos cron se ejecutan según la programación definida en workspace/CRON.yaml.

Permisos de herramientas: Reglas de permitir/denegar en tiempo de ejecución con registro de auditoría. Bloquea el acceso al shell en canales públicos y permítelo en los privados.

Configuración

Variables de Entorno

text
DISCORD_BOT_TOKEN=your_discord_token
OPENAI_API_KEY=your_api_key
GITHUB_ACCESS_TOKEN=optional_github_token

Configuración Básica

yaml
model:
  provider: openai_like
  id: stepfun/step-3.5-flash:free
  base_url: https://openrouter.ai/api/v1
  api_key_env: OPENAI_API_KEY
  structured_outputs: false

discord:
  token_env: DISCORD_BOT_TOKEN

runtime:
  streaming_enabled: true
  streaming_edit_interval: 1.5
  agent_timeout: 600

memory:
  mode: automatic
  db_file: data/bitdoze.db
  enable_session_summaries: true

learning:
  enabled: true
  mode: always
  stores:
    user_profile: true
    user_memory: true
    learned_knowledge: agentic

Streaming

Define runtime.streaming_enabled: true para ver cómo las respuestas se actualizan en tiempo real. El bot edita el mensaje de Discord a medida que llega el contenido. Vuelve al modo sin streaming en las ejecuciones de equipo.

Base de Conocimiento

yaml
knowledge:
  enabled: true
  backend: lancedb  # or pgvector
  embedder: text-embedding-3-small
  lance_uri: data/lancedb
  table_name: bitdoze_knowledge

Ejecuta python scripts/setup_knowledge.py después de añadir documentos a workspace/knowledge/.

Memoria Cognee (Opcional)

yaml
memory:
  cognee:
    enabled: true
    base_url: http://localhost:8000
    auto_sync_conversations: true
    auto_recall_enabled: true
    auto_recall_limit: 5

Inicia Cognee con docker compose up -d.

Alternativa: Hindsight

Si quieres un sistema de memoria más capaz, Hindsight tiene una integración directa con Agno. Sustituye a Cognee por una memoria basada en vectores que incluye extracción de entidades, modelos mentales y cuatro estrategias de búsqueda en paralelo. Mejor para agentes que necesitan aprender y mejorar con el tiempo.

Agentes y Enrutamiento

yaml
agents:
  default: main
  workspace_dir: workspace/agents
  definitions:
    - name: main
      tools: [web_search, website, github, file, discoveries]
    - name: research
      tools: [web_search, website, github]
      skills: [web-research]
  routing:
    rules:
      - agent: delivery-team
        starts_with: ["team:"]
      - agent: research
        contains: ["research:"]

Equipos

yaml
teams:
  definitions:
    - name: delivery-team
      members: [architect, software-engineer]
      respond_directly: true
      determine_input_for_members: true
      delegate_to_all_members: false
      add_team_history_to_members: true
      num_team_history_runs: 5

Configuración de Equipos

Evita definir a la vez delegate_to_all_members: true y respond_directly: true, salvo que quieras un comportamiento de difusión. El bot te avisará.

Añadir Nuevos Agentes

Crea una carpeta en workspace/agents/<nombre>/:

agent.yaml

yaml
name: product-manager
enabled: true
model:
  id: glm-4.7
  base_url: https://api.z.ai/api/coding/paas/v4
  api_key_env: GLM_API_KEY
tools: []
skills: []

AGENTS.md

md
# Product Manager Agent

Focus on scope, priorities, and delivery risk.

Añádelo a un equipo en config.yaml:

yaml
teams:
  definitions:
    - name: delivery-team
      members: [architect, software-engineer, product-manager]

Uso en Discord

Mención normal:

text
@YourBot help me design a migration plan

Forzar un agente o equipo concreto:

text
@YourBot agent:research find papers on distributed systems
@YourBot agent:delivery-team Build and validate this feature
@YourBot team: implement the API with tests

Heartbeat y Cron

workspace/CRON.yaml

yaml
enabled: true
timezone: Europe/Bucharest
channel_id: 123456789012345678
jobs:
  - name: daily-status
    cron: "0 9 * * *"
    agent: main
    message: "Send a daily status update."
    session_scope: isolated

El heartbeat se ejecuta cada 30 minutos usando workspace/HEARTBEAT.md. Si devuelve HEARTBEAT_OK, el mensaje se suprime.

Docker (PgVector + Cognee)

PostgreSQL opcional con pgvector y la API de Cognee:

bash
docker compose up -d

Esto inicia PostgreSQL en el puerto 5532 y Cognee en 127.0.0.1:8000.

Permisos de Herramientas

Controla qué herramientas pueden ejecutarse y dónde:

yaml
tool_permissions:
  enabled: true
  default_effect: deny
  rules:
    - effect: allow
      tools: [shell]
      role_ids: [123456789012345678]
  audit:
    enabled: true
    path: logs/tool-audit.jsonl

Producción (systemd)

~/.config/systemd/user/bitdoze-bot.service

ini
[Unit]
Description=Bitdoze Bot
After=network.target

[Service]
WorkingDirectory=/home/you/.bitdoze-bot
ExecStart=/home/you/.local/bin/uv run main.py
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1
EnvironmentFile=/home/you/.bitdoze-bot/.env

[Install]
WantedBy=default.target
bash
systemctl --user daemon-reload
systemctl --user enable --now bitdoze-bot
journalctl --user -u bitdoze-bot -f

Scripts

Script Propósito
scripts/setup_bot.py Asistente de configuración interactivo
scripts/generate_soul.py Genera la personalidad SOUL.md
scripts/setup_knowledge.py Inicializa la base de conocimiento

Pruebas

bash
uv run pytest -q

Relacionados

Listo para Funcionar

Ahora tienes un bot de IA para Discord con memoria, búsqueda en la base de conocimiento, orquestación de equipos y tareas programadas. Clona el repositorio, ejecuta el asistente de configuración y empieza a chatear.