Files
agents_and_robots/agents/assistant-bot/config.yaml
T
egutierrez 7d4fa78569 feat: implementar unauthorized_response explicit en listener
Conectar el campo unauthorized_response de FiltersCfg al shouldHandle()
del listener. Cuando está configurado como "explicit", el bot responde
con un mensaje de permisos denegados en lugar de ignorar silenciosamente.

También se añaden los campos allowed_users y unauthorized_response
(comentados como ejemplo) a los configs de assistant-bot y asistente-2.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:02:06 +00:00

299 lines
7.0 KiB
YAML

# ============================================
# IDENTIDAD
# ============================================
agent:
id: assistant-bot
name: "Assistant"
version: "1.0.0"
enabled: true
description: "Asistente general con acceso a LLM. Responde preguntas, resume, redacta y ayuda con tareas cotidianas."
tags: [assistant, llm, general]
# ============================================
# PERSONALIDAD Y COMPORTAMIENTO
# ============================================
personality:
tone: friendly
verbosity: concise
language: es
languages_supported: [es, en]
emoji_style: minimal
prefix: "🤖"
error_style: helpful
templates:
greeting: "Hola, soy tu asistente. ¿En qué puedo ayudarte?"
unknown_command: "No entiendo ese comando. Escríbeme directamente lo que necesitas."
permission_denied: "No tengo permiso para hacer eso."
error: "Algo salió mal: {{.Error}}"
success: "{{.Summary}}"
busy: "Procesando tu solicitud anterior, dame un momento..."
behavior:
proactive: false
ask_confirmation: false
show_reasoning: false
thread_replies: true
typing_indicator: true
acknowledge_receipt: false # responde directo, sin "recibido"
# ============================================
# LLM — CONEXIÓN Y RAZONAMIENTO
# ============================================
llm:
primary:
provider: claude-code
model: ""
api_key_env: ""
base_url: ""
max_tokens: 4096
temperature: 0.7
claude_code:
binary: "claude"
timeout: 3m
disable_tools: true # no ejecuta herramientas internas de claude
allowed_tools: []
disallowed_tools: []
working_dir: ""
permission_mode: "bypassPermissions"
model: "sonnet" # modelo interno de claude -p
fallback_model: ""
session_id: ""
add_dirs: []
# Fallback desactivado — solo claude-code
fallback:
provider: ""
model: ""
api_key_env: ""
base_url: ""
max_tokens: 0
temperature: 0
reasoning:
system_prompt_file: "prompts/assistant-system.md"
context_window: 16384
memory_messages: 30 # mantiene 30 mensajes de historia por room/DM
tool_use:
enabled: true
max_iterations: 5
parallel_calls: false
rate_limit:
requests_per_minute: 60
tokens_per_minute: 200000
concurrent_requests: 5
# ============================================
# TOOLS — deshabilitadas para este bot
# ============================================
tools:
ssh:
enabled: false
allowed_targets: []
forbidden_commands: []
timeout: 0s
max_concurrent: 0
require_confirmation: []
http:
enabled: false
allowed_domains: []
timeout: 0s
max_retries: 0
scripts:
enabled: false
scripts_dir: ""
allowed: []
timeout: 0s
sandbox: false
file_ops:
enabled: false
allowed_paths: []
read_only: true
mcp:
enabled: false
servers: []
expose:
port: 0
tools: []
memory:
enabled: false
knowledge:
enabled: true
# ============================================
# MEMORIA — ventana de conversación + hechos
# ============================================
memory:
enabled: false
window_size: 30
# ============================================
# MATRIX — CONEXIÓN Y ROOMS
# ============================================
matrix:
homeserver: "https://matrix-af2f3d.organic-machine.com"
user_id: "@assistant-bot:matrix-af2f3d.organic-machine.com"
access_token_env: MATRIX_TOKEN_ASSISTANT_BOT
device_id: "WXAKFKILMR"
encryption:
enabled: true
store_path: "./agents/assistant-bot/data/crypto/"
pickle_key_env: PICKLE_KEY_ASSISTANT_BOT
trust_mode: tofu
recovery_key_env: SSSS_RECOVERY_KEY_ASSISTANT_BOT
rooms:
listen: [] # vacío = escucha en todos los rooms donde está invitado
respond: [] # vacío = responde en todos
admin: []
filters:
command_prefix: "!"
mention_respond: true # responde cuando lo mencionan en un room
dm_respond: true # responde en DMs (modo principal por ahora)
ignore_bots: true
ignore_users: []
allowed_users: [] # vacío = sin restricción (todos pueden hablar)
# allowed_users: # ejemplo con restricción:
# - "@admin:matrix-af2f3d.organic-machine.com"
# - "@enmanuel:matrix-af2f3d.organic-machine.com"
unauthorized_response: silent # silent | explicit
min_power_level: 0 # cualquiera puede hablar con el assistant
# ============================================
# COMUNICACIÓN INTER-AGENTES
# ============================================
agents:
peers: []
delegation:
enabled: false
can_delegate_to: []
can_receive_from: []
max_delegation_depth: 1
timeout: 30s
protocol:
format: json
channel: matrix
heartbeat_interval: 60s
# ============================================
# SSH — no aplica para este bot
# ============================================
ssh:
defaults:
user: ""
port: 22
key_file_env: ""
known_hosts: ""
keepalive_interval: 0s
timeout: 0s
targets: {}
# ============================================
# PERMISOS Y SEGURIDAD
# ============================================
security:
roles:
admin:
users: ["@admin:matrix-af2f3d.organic-machine.com"]
actions: ["*"]
user:
users: ["*"]
actions: ["ask", "help", "summarize"]
audit:
enabled: false
log_file: "./agents/assistant-bot/data/audit.log"
log_to_room: ""
include: []
secrets:
provider: env
# ============================================
# SCHEDULING — sin tareas automáticas
# ============================================
schedules: []
# ============================================
# OBSERVABILIDAD
# ============================================
observability:
logging:
level: info
format: json
output: stdout
file: "./agents/assistant-bot/data/assistant.log"
metrics:
enabled: false
port: 9091
path: /metrics
export: prometheus
health:
enabled: true
port: 8081
path: /healthz
tracing:
enabled: false
provider: ""
endpoint: ""
# ============================================
# RESILIENCIA
# ============================================
resilience:
circuit_breaker:
failure_threshold: 5
timeout: 30s
half_open_max: 2
retry:
max_attempts: 2
backoff: exponential
initial_delay: 1s
max_delay: 10s
shutdown:
timeout: 10s
drain_messages: true
save_state: false
state_file: ""
queue:
enabled: true
max_size: 100
priority_users: ["@admin:matrix-af2f3d.organic-machine.com"]
# ============================================
# ALMACENAMIENTO Y ESTADO
# ============================================
storage:
state:
backend: sqlite
path: "./agents/assistant-bot/data/assistant.db"
cache:
enabled: true
backend: memory
ttl: 5m
max_entries: 200
history:
backend: sqlite
path: "./agents/assistant-bot/data/history.db"
retention: 168h # 7 días