7d4fa78569
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>
299 lines
6.5 KiB
YAML
299 lines
6.5 KiB
YAML
# ============================================
|
|
# IDENTIDAD
|
|
# ============================================
|
|
agent:
|
|
id: asistente-2
|
|
name: "Asistente 2"
|
|
version: "1.0.0"
|
|
enabled: true
|
|
description: "Asistente con herramientas. Puede responder preguntas y consultar la hora actual."
|
|
tags: [assistant, llm, tools]
|
|
|
|
# ============================================
|
|
# 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 asistente-2. ¿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
|
|
|
|
# ============================================
|
|
# 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"
|
|
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/system.md"
|
|
context_window: 16384
|
|
memory_messages: 30
|
|
|
|
tool_use:
|
|
enabled: true # herramientas HABILITADAS
|
|
max_iterations: 5
|
|
parallel_calls: false
|
|
|
|
rate_limit:
|
|
requests_per_minute: 60
|
|
tokens_per_minute: 200000
|
|
concurrent_requests: 5
|
|
|
|
# ============================================
|
|
# TOOLS — current_time habilitada
|
|
# ============================================
|
|
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: true
|
|
|
|
knowledge:
|
|
enabled: true
|
|
|
|
# ============================================
|
|
# MEMORIA — ventana de conversación + hechos
|
|
# ============================================
|
|
memory:
|
|
enabled: true
|
|
window_size: 30
|
|
|
|
# ============================================
|
|
# MATRIX — CONEXIÓN Y ROOMS
|
|
# ============================================
|
|
matrix:
|
|
homeserver: "https://matrix-af2f3d.organic-machine.com"
|
|
user_id: "@asistente-2:matrix-af2f3d.organic-machine.com"
|
|
access_token_env: MATRIX_TOKEN_ASISTENTE_2
|
|
device_id: "IVECMVQWNZ"
|
|
|
|
encryption:
|
|
enabled: true
|
|
store_path: "./agents/asistente-2/data/crypto/"
|
|
pickle_key_env: PICKLE_KEY_ASISTENTE_2
|
|
trust_mode: tofu
|
|
recovery_key_env: SSSS_RECOVERY_KEY_ASISTENTE_2
|
|
|
|
rooms:
|
|
listen: []
|
|
respond: []
|
|
admin: []
|
|
|
|
filters:
|
|
command_prefix: "!"
|
|
mention_respond: true
|
|
dm_respond: true
|
|
ignore_bots: true
|
|
ignore_users: []
|
|
allowed_users: [] # vacío = sin restricción (todos pueden hablar)
|
|
unauthorized_response: silent # silent | explicit
|
|
min_power_level: 0
|
|
|
|
# ============================================
|
|
# COMUNICACIÓN INTER-AGENTES
|
|
# ============================================
|
|
agents:
|
|
peers:
|
|
- id: assistant-bot
|
|
capabilities: [general, llm]
|
|
room: ""
|
|
|
|
delegation:
|
|
enabled: false
|
|
can_delegate_to: []
|
|
can_receive_from: [assistant-bot]
|
|
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/asistente-2/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/asistente-2/data/asistente-2.log"
|
|
|
|
metrics:
|
|
enabled: false
|
|
port: 9092
|
|
path: /metrics
|
|
export: prometheus
|
|
|
|
health:
|
|
enabled: true
|
|
port: 8082
|
|
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/asistente-2/data/asistente-2.db"
|
|
|
|
cache:
|
|
enabled: true
|
|
backend: memory
|
|
ttl: 5m
|
|
max_entries: 200
|
|
|
|
history:
|
|
backend: sqlite
|
|
path: "./agents/asistente-2/data/history.db"
|
|
retention: 168h # 7 días
|