feat(v1.5.2): Execute database migrations and complete setup
- 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>
This commit is contained in:
286
commands/decision-trees.md
Normal file
286
commands/decision-trees.md
Normal file
@@ -0,0 +1,286 @@
|
||||
---
|
||||
name: decision-trees
|
||||
description: >
|
||||
Gestão das árvores de decisão para selecção automática de agentes.
|
||||
Listar, criar, ajustar confidence, testar e recalibrar.
|
||||
argument-hint: "[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:**
|
||||
```sql
|
||||
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:**
|
||||
```sql
|
||||
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:
|
||||
1. Nome da tree
|
||||
2. Agente a recomendar
|
||||
3. Keywords primárias
|
||||
4. Keywords secundárias (opcional)
|
||||
5. Keywords negativas (opcional)
|
||||
6. Confidence inicial (default: 0.75)
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
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:**
|
||||
```sql
|
||||
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:**
|
||||
1. Extrair keywords do input
|
||||
2. Comparar com todas as decision trees activas
|
||||
3. Calcular score para cada match
|
||||
4. Retornar agente com maior confidence
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
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:**
|
||||
```sql
|
||||
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:
|
||||
|
||||
1. Extrai keywords do prompt
|
||||
2. Query decision trees activas
|
||||
3. Calcula score: `confidence * keyword_match_ratio`
|
||||
4. Selecciona agente com maior score
|
||||
5. Regista em telemetria
|
||||
6. Incrementa usage_count
|
||||
|
||||
```python
|
||||
# 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 ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
Reference in New Issue
Block a user