- Execute all 6 migrations on Desk CRM production database - Create missing tables: cr_lsps, cr_agent_lsps, cr_lsp_usage - Create archive tables: cr_*_usage_archive (4 tables) - Create system tables: cr_migrations, cr_maintenance_log - Make all scripts executable (chmod +x) - Total cr_* tables: 38 Migration files: - 001_initial_schema.sql - 002_add_lsps.sql - 003_add_relationships.sql - 004_add_telemetry.sql - 005_add_archive_tables.sql - 006_add_maintenance_log.sql Scripts: - session-init.sh, session-end.sh - inject-context.sh, inject-agent-context.sh - record-usage.sh, db-backup.sh, sync-to-mysql.sh Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
12 KiB
12 KiB
name, description, argument-hint
| name | description | argument-hint |
|---|---|---|
| decision-trees | Gestão das árvores de decisão para selecção automática de agentes. Listar, criar, ajustar confidence, testar e recalibrar. | [list|show|create|adjust|test|recalibrate] [tree-name] [args] |
/descomplicar:decision-trees
Gestão das árvores de decisão para selecção automática de agentes.
Objectivo
Visualizar, criar e ajustar as decision trees que determinam qual agente usar para cada tipo de tarefa.
Sintaxe
/descomplicar:decision-trees [action] [args]
Acções Disponíveis
1. Listar Decision Trees
/descomplicar:decision-trees list
Query:
SELECT
dt.id,
dt.name,
a.slug as agent,
dt.trigger_keywords,
dt.confidence_score,
dt.usage_count,
dt.status
FROM cr_decision_trees dt
JOIN cr_agents a ON dt.agent_id = a.id
ORDER BY dt.usage_count DESC;
Output:
╔══════════════════════════════════════════════════════════════════════╗
║ DECISION TREES (5 activas) ║
╠══════════════════════════════════════════════════════════════════════╣
║ ID │ Nome │ Agent │ Conf │ Uses ║
║ ─────────────────────────────────────────────────────────────────── ║
║ 1 │ wordpress-tasks │ wordpress-plugin-dev │ 0.92 │ 156 ║
║ 2 │ marketing-campaigns │ marketing-planning-exp │ 0.88 │ 134 ║
║ 3 │ seo-optimization │ seo-specialist │ 0.85 │ 87 ║
║ 4 │ php-development │ php-fullstack-engineer │ 0.90 │ 98 ║
║ 5 │ infrastructure-tasks │ easypanel-specialist │ 0.82 │ 38 ║
╚══════════════════════════════════════════════════════════════════════╝
2. Ver Detalhes
/descomplicar:decision-trees show wordpress-tasks
Query:
SELECT
dt.*,
a.slug as agent_slug,
a.name as agent_name,
a.category as agent_category
FROM cr_decision_trees dt
JOIN cr_agents a ON dt.agent_id = a.id
WHERE dt.name = 'wordpress-tasks';
Output:
╔══════════════════════════════════════════════════════════════════════╗
║ DECISION TREE: wordpress-tasks ║
╠══════════════════════════════════════════════════════════════════════╣
║ Agent: wordpress-plugin-developer ║
║ Category: dev ║
║ Confidence: 0.92 ║
║ Usage Count: 156 ║
║ Status: active ║
╠══════════════════════════════════════════════════════════════════════╣
║ TRIGGER KEYWORDS ║
║ ├── Primary: wordpress, wp, plugin, tema, theme ║
║ ├── Secondary: woocommerce, elementor, gutenberg ║
║ └── Negative: performance (→ wordpress-performance-specialist) ║
╠══════════════════════════════════════════════════════════════════════╣
║ TRIGGER CONDITIONS ║
║ { ║
║ "keywords": ["wordpress", "wp", "plugin", "tema"], ║
║ "exclude_keywords": ["performance", "speed", "cache"], ║
║ "min_confidence": 0.7, ║
║ "fallback_agent": "dev-helper" ║
║ } ║
╠══════════════════════════════════════════════════════════════════════╣
║ PERFORMANCE (30 dias) ║
║ ├── Invocações: 156 ║
║ ├── Success Rate: 96% ║
║ └── Avg Duration: 52s ║
╚══════════════════════════════════════════════════════════════════════╝
3. Criar Decision Tree
/descomplicar:decision-trees create
Modo interactivo:
- Nome da tree
- Agente a recomendar
- Keywords primárias
- Keywords secundárias (opcional)
- Keywords negativas (opcional)
- Confidence inicial (default: 0.75)
Query:
INSERT INTO cr_decision_trees
(name, agent_id, trigger_keywords, trigger_condition, confidence_score, status, created_at)
VALUES (
'new-tree-name',
(SELECT id FROM cr_agents WHERE slug = 'target-agent'),
'keyword1, keyword2, keyword3',
'{"keywords": ["keyword1", "keyword2"], "min_confidence": 0.7}',
0.75,
'active',
NOW()
);
4. Ajustar Confidence
/descomplicar:decision-trees adjust wordpress-tasks +0.05
/descomplicar:decision-trees adjust wordpress-tasks 0.95
Query:
UPDATE cr_decision_trees
SET confidence_score = 0.95, updated_at = NOW()
WHERE name = 'wordpress-tasks';
5. Testar Selecção
/descomplicar:decision-trees test "criar plugin wordpress para formulários"
Processo:
- Extrair keywords do input
- Comparar com todas as decision trees activas
- Calcular score para cada match
- Retornar agente com maior confidence
Query:
SELECT
dt.name as tree,
a.slug as agent,
dt.confidence_score,
-- Simular match score
(
LENGTH(dt.trigger_keywords) -
LENGTH(REPLACE(LOWER(dt.trigger_keywords), 'wordpress', ''))
) / LENGTH('wordpress') as keyword_matches
FROM cr_decision_trees dt
JOIN cr_agents a ON dt.agent_id = a.id
WHERE dt.status = 'active'
AND (
LOWER(dt.trigger_keywords) LIKE '%wordpress%'
OR LOWER(dt.trigger_keywords) LIKE '%plugin%'
OR LOWER(dt.trigger_keywords) LIKE '%formulário%'
)
ORDER BY dt.confidence_score * keyword_matches DESC
LIMIT 3;
Output:
╔══════════════════════════════════════════════════════════════════════╗
║ TEST: "criar plugin wordpress para formulários" ║
╠══════════════════════════════════════════════════════════════════════╣
║ MATCHES ║
║ ─────────────────────────────────────────────────────────────────── ║
║ #1 │ wordpress-tasks │ wordpress-plugin-dev │ 0.92 │ ████ ║
║ #2 │ php-development │ php-fullstack-engineer │ 0.65 │ ██░░ ║
║ #3 │ (fallback) │ dev-helper │ 0.50 │ █░░░ ║
╠══════════════════════════════════════════════════════════════════════╣
║ RECOMENDAÇÃO: wordpress-plugin-developer (confidence: 0.92) ║
╚══════════════════════════════════════════════════════════════════════╝
6. Actualizar Baseado em Telemetria
/descomplicar:decision-trees recalibrate
Actualiza confidence scores baseado no success rate real:
Query:
UPDATE cr_decision_trees dt
SET
confidence_score = GREATEST(0.5, LEAST(0.99,
(SELECT
AVG(CASE WHEN au.success = 1 THEN 1.0 ELSE 0.3 END) *
(1 + LOG10(COUNT(*) + 1) / 10)
FROM cr_agent_usage au
WHERE au.agent_id = dt.agent_id
AND au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY))
)),
updated_at = NOW()
WHERE dt.status = 'active';
7. Desactivar/Activar
/descomplicar:decision-trees disable wordpress-tasks
/descomplicar:decision-trees enable wordpress-tasks
Integração com Selecção de Agentes
Quando o Claude recebe uma tarefa, o sistema:
- Extrai keywords do prompt
- Query decision trees activas
- Calcula score:
confidence * keyword_match_ratio - Selecciona agente com maior score
- Regista em telemetria
- Incrementa usage_count
# Pseudo-código do context-builder.py
def select_agent(task_description):
keywords = extract_keywords(task_description)
query = """
SELECT a.slug, dt.confidence_score, dt.trigger_keywords
FROM cr_decision_trees dt
JOIN cr_agents a ON dt.agent_id = a.id
WHERE dt.status = 'active'
"""
trees = db.execute(query)
best_match = None
best_score = 0
for tree in trees:
match_ratio = calculate_keyword_match(keywords, tree.trigger_keywords)
score = tree.confidence_score * match_ratio
if score > best_score:
best_score = score
best_match = tree.agent_slug
return best_match or 'dev-helper' # fallback
Output Esperado
╔══════════════════════════════════════════════════════════════════════╗
║ DECISION TREES (5 activas) ║
╠══════════════════════════════════════════════════════════════════════╣
║ ID │ Nome │ Agent │ Conf │ Uses ║
║ 1 │ wordpress-tasks │ wordpress-plugin-dev │ 0.92 │ 156 ║
║ 2 │ marketing-campaigns │ marketing-planning-exp │ 0.88 │ 134 ║
║ 3 │ seo-optimization │ seo-specialist │ 0.85 │ 87 ║
╠══════════════════════════════════════════════════════════════════════╣
║ Telemetria-based confidence recalibration: ON ║
╚══════════════════════════════════════════════════════════════════════╝