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.
Actualizado Publicado 8 min de lectura

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 GitHubQué Hace Este Bot
- Responde cuando lo
@mencionasen 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
git clone https://github.com/bitdoze/bitdoze_bot.git
cd bitdoze_bot
uv sync
python scripts/setup_bot.pyEl 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
- Ve a discord.com/developers
- Crea una aplicación y añade un bot
- Copia el token
- Activa Message Content Intent (obligatorio)
- Invítalo a tu servidor con los permisos adecuados
Estructura del Proyecto
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
DISCORD_BOT_TOKEN=your_discord_token
OPENAI_API_KEY=your_api_key
GITHUB_ACCESS_TOKEN=optional_github_tokenConfiguración Básica
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: agenticStreaming
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
knowledge:
enabled: true
backend: lancedb # or pgvector
embedder: text-embedding-3-small
lance_uri: data/lancedb
table_name: bitdoze_knowledgeEjecuta python scripts/setup_knowledge.py después de añadir documentos a workspace/knowledge/.
Memoria Cognee (Opcional)
memory:
cognee:
enabled: true
base_url: http://localhost:8000
auto_sync_conversations: true
auto_recall_enabled: true
auto_recall_limit: 5Inicia 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
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
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: 5Configuració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
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
# Product Manager Agent
Focus on scope, priorities, and delivery risk.Añádelo a un equipo en config.yaml:
teams:
definitions:
- name: delivery-team
members: [architect, software-engineer, product-manager]Uso en Discord
Mención normal:
@YourBot help me design a migration planForzar un agente o equipo concreto:
@YourBot agent:research find papers on distributed systems
@YourBot agent:delivery-team Build and validate this feature
@YourBot team: implement the API with testsHeartbeat y Cron
workspace/CRON.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: isolatedEl 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:
docker compose up -dEsto 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:
tool_permissions:
enabled: true
default_effect: deny
rules:
- effect: allow
tools: [shell]
role_ids: [123456789012345678]
audit:
enabled: true
path: logs/tool-audit.jsonlProducción (systemd)
~/.config/systemd/user/bitdoze-bot.service
[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.targetsystemctl --user daemon-reload
systemctl --user enable --now bitdoze-bot
journalctl --user -u bitdoze-bot -fScripts
| 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
uv run pytest -qRelacionados
- UV, el Gestor de Paquetes de Python
- Primeros Pasos con Agno
- Los mejores repos de IA en GitHub — Agno, Mastra, OpenClaw, Hermes, memoria y más
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.


