d05ec0bd57
Setear working_dir a /tmp/claude-agents/<agent-id> en assistant-bot y asistente-2, evitando que claude -p herede el CWD del launcher (raiz del repo). El directorio se crea automaticamente al arrancar gracias al MkdirAll añadido en el commit anterior. Se mantiene bypassPermissions ya que el aislamiento real viene del working_dir — sin acceso al repo, el bypass no expone codigo fuente. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
299 lines
7.0 KiB
YAML
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: "/tmp/claude-agents/assistant-bot"
|
|
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
|