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:
249
commands/telemetry.md
Normal file
249
commands/telemetry.md
Normal file
@@ -0,0 +1,249 @@
|
||||
---
|
||||
name: telemetry
|
||||
description: >
|
||||
Visualização e gestão de telemetria de uso.
|
||||
Dashboard, top componentes, análise de erros, subutilização.
|
||||
argument-hint: "[dashboard|top|unused|errors] [period] [filter]"
|
||||
---
|
||||
|
||||
# /descomplicar:telemetry
|
||||
|
||||
Visualização e gestão de telemetria de uso.
|
||||
|
||||
## Objectivo
|
||||
|
||||
Mostrar métricas de uso de agentes, skills e MCPs. Identificar padrões, componentes subutilizados e oportunidades de optimização.
|
||||
|
||||
## Sintaxe
|
||||
|
||||
```
|
||||
/descomplicar:telemetry [action] [period] [filter]
|
||||
```
|
||||
|
||||
## Acções Disponíveis
|
||||
|
||||
### 1. Dashboard Geral
|
||||
|
||||
```
|
||||
/descomplicar:telemetry dashboard
|
||||
/descomplicar:telemetry dashboard 7d # Últimos 7 dias
|
||||
/descomplicar:telemetry dashboard 30d # Últimos 30 dias (default)
|
||||
```
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
SELECT
|
||||
'Agents' as component,
|
||||
COUNT(DISTINCT agent_id) as unique_used,
|
||||
COUNT(*) as total_invocations,
|
||||
AVG(duration_sec) as avg_duration,
|
||||
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
|
||||
FROM cr_agent_usage
|
||||
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'Skills' as component,
|
||||
COUNT(DISTINCT skill_id) as unique_used,
|
||||
COUNT(*) as total_invocations,
|
||||
AVG(duration_sec) as avg_duration,
|
||||
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
|
||||
FROM cr_skill_usage
|
||||
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
'MCP Tools' as component,
|
||||
COUNT(DISTINCT mcp_tool_id) as unique_used,
|
||||
COUNT(*) as total_invocations,
|
||||
AVG(response_time_ms) / 1000 as avg_duration,
|
||||
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
|
||||
FROM cr_mcp_tool_usage
|
||||
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY);
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ TELEMETRY DASHBOARD - Últimos 30 dias ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ Componente │ Únicos │ Invocações │ Avg Duration │ Success Rate ║
|
||||
║ ─────────────────────────────────────────────────────────────────── ║
|
||||
║ Agents │ 32 │ 1,234 │ 45.2s │ 94.5% ║
|
||||
║ Skills │ 28 │ 567 │ 12.8s │ 97.2% ║
|
||||
║ MCP Tools │ 156 │ 8,901 │ 0.8s │ 99.1% ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ TENDÊNCIA: ↑ 12% vs período anterior ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
### 2. Top Componentes
|
||||
|
||||
```
|
||||
/descomplicar:telemetry top agents 10
|
||||
/descomplicar:telemetry top skills 10
|
||||
/descomplicar:telemetry top mcps 10
|
||||
```
|
||||
|
||||
**Query (Agents):**
|
||||
```sql
|
||||
SELECT
|
||||
a.slug,
|
||||
a.name,
|
||||
COUNT(*) as invocations,
|
||||
AVG(au.duration_sec) as avg_duration,
|
||||
SUM(CASE WHEN au.success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
|
||||
FROM cr_agent_usage au
|
||||
JOIN cr_agents a ON au.agent_id = a.id
|
||||
WHERE au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||
GROUP BY a.id
|
||||
ORDER BY invocations DESC
|
||||
LIMIT 10;
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ TOP 10 AGENTS - Últimos 30 dias ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ # │ Agent │ Invocações │ Avg │ Success ║
|
||||
║ ─────────────────────────────────────────────────────────────────── ║
|
||||
║ 1 │ wordpress-plugin-developer │ 156 │ 52s │ 96% ║
|
||||
║ 2 │ marketing-planning-expert │ 134 │ 38s │ 94% ║
|
||||
║ 3 │ php-fullstack-engineer │ 98 │ 61s │ 92% ║
|
||||
║ 4 │ seo-specialist │ 87 │ 45s │ 98% ║
|
||||
║ 5 │ content-manager │ 76 │ 32s │ 97% ║
|
||||
║ 6 │ copywriter │ 65 │ 28s │ 99% ║
|
||||
║ 7 │ sales-manager │ 54 │ 41s │ 91% ║
|
||||
║ 8 │ dev-helper │ 48 │ 55s │ 89% ║
|
||||
║ 9 │ n8n-automation-expert │ 42 │ 67s │ 95% ║
|
||||
║ 10 │ easypanel-specialist │ 38 │ 72s │ 93% ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
### 3. Componentes Subutilizados
|
||||
|
||||
```
|
||||
/descomplicar:telemetry unused
|
||||
/descomplicar:telemetry unused 90d # Não usados há 90 dias
|
||||
```
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
-- Agentes nunca usados ou não usados há 30+ dias
|
||||
SELECT a.slug, a.name, a.category,
|
||||
COALESCE(MAX(au.created_at), 'Nunca') as last_used,
|
||||
DATEDIFF(NOW(), COALESCE(MAX(au.created_at), '2020-01-01')) as days_since
|
||||
FROM cr_agents a
|
||||
LEFT JOIN cr_agent_usage au ON a.id = au.agent_id
|
||||
WHERE a.status = 'active'
|
||||
GROUP BY a.id
|
||||
HAVING days_since > 30 OR last_used = 'Nunca'
|
||||
ORDER BY days_since DESC;
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ COMPONENTES SUBUTILIZADOS (>30 dias sem uso) ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ AGENTS (14 de 46) ║
|
||||
║ ├── backup-specialist │ Nunca usado │ Considerar arquivar ║
|
||||
║ ├── reflect-agent │ 45 dias │ Auto-trigger activo?║
|
||||
║ └── ... ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ SKILLS (26 de 54) ║
|
||||
║ ├── archive │ 60 dias │ Raramente necessária║
|
||||
║ └── ... ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ RECOMENDAÇÃO: Revisar componentes não usados há >90 dias ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
### 4. Análise de Erros
|
||||
|
||||
```
|
||||
/descomplicar:telemetry errors
|
||||
/descomplicar:telemetry errors agent wordpress-plugin-developer
|
||||
```
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
SELECT
|
||||
a.slug,
|
||||
COUNT(*) as total_errors,
|
||||
COUNT(*) * 100.0 / (SELECT COUNT(*) FROM cr_agent_usage WHERE agent_id = a.id) as error_rate,
|
||||
MAX(au.created_at) as last_error
|
||||
FROM cr_agent_usage au
|
||||
JOIN cr_agents a ON au.agent_id = a.id
|
||||
WHERE au.success = 0
|
||||
AND au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||
GROUP BY a.id
|
||||
ORDER BY total_errors DESC
|
||||
LIMIT 10;
|
||||
```
|
||||
|
||||
### 5. Registar Uso (automático via hooks)
|
||||
|
||||
```sql
|
||||
-- Registado automaticamente pelo hook PostToolUse
|
||||
INSERT INTO cr_agent_usage (agent_id, session_id, success, duration_sec, created_at)
|
||||
VALUES (
|
||||
(SELECT id FROM cr_agents WHERE slug = '{agent_slug}'),
|
||||
'{session_id}',
|
||||
{success},
|
||||
{duration},
|
||||
NOW()
|
||||
);
|
||||
|
||||
INSERT INTO cr_mcp_tool_usage (mcp_tool_id, agent_id, response_time_ms, success, created_at)
|
||||
VALUES (
|
||||
(SELECT id FROM cr_mcp_tools WHERE tool_name = '{tool_name}'),
|
||||
(SELECT id FROM cr_agents WHERE slug = '{agent_slug}'),
|
||||
{response_time},
|
||||
{success},
|
||||
NOW()
|
||||
);
|
||||
```
|
||||
|
||||
## Integração com Decision Trees
|
||||
|
||||
A telemetria alimenta as decision trees para melhorar a selecção de agentes:
|
||||
|
||||
```sql
|
||||
-- Actualizar confidence baseado em success rate
|
||||
UPDATE cr_decision_trees dt
|
||||
SET dt.confidence_score = (
|
||||
SELECT AVG(CASE WHEN au.success = 1 THEN 1.0 ELSE 0.5 END)
|
||||
FROM cr_agent_usage au
|
||||
WHERE au.agent_id = dt.agent_id
|
||||
AND au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||
)
|
||||
WHERE dt.status = 'active';
|
||||
```
|
||||
|
||||
## Métricas de Saúde
|
||||
|
||||
| Métrica | Threshold | Acção |
|
||||
|---------|-----------|-------|
|
||||
| Success Rate | < 90% | Investigar erros |
|
||||
| Avg Duration | > 120s | Optimizar agente |
|
||||
| Unused (dias) | > 90 | Considerar arquivar |
|
||||
| Error Spike | > 5 em 1h | Alerta imediato |
|
||||
|
||||
## Output Esperado
|
||||
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ TELEMETRY DASHBOARD - Últimos 30 dias ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ Componente │ Únicos │ Invocações │ Avg Duration │ Success Rate ║
|
||||
║ Agents │ 32 │ 1,234 │ 45.2s │ 94.5% ║
|
||||
║ Skills │ 28 │ 567 │ 12.8s │ 97.2% ║
|
||||
║ MCP Tools │ 156 │ 8,901 │ 0.8s │ 99.1% ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ TENDÊNCIA: ↑ 12% vs período anterior ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
Reference in New Issue
Block a user