- Persona reescrita: foco em design de sistemas multiagente, governança arquitetural, protocolos de colaboração e visão estratégica - Incluído mapa visual de agentes e tabela de protocolos - Princípios arquiteturais: responsabilidade única, acoplamento fraco, coesão alta, herança consciente - AGENTS e README atualizados para refletir novo papel - validar-repositorio.sh: validação local (sem GitHub Actions) - scripts/auditar-agentes.sh: auditoria de consistência entre agentes - .git/hooks/pre-commit: validação automática antes de cada commit
63 lines
2.2 KiB
Bash
Executable file
63 lines
2.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
||
# --------------------------------------------------------------
|
||
# auditar-agentes.sh – auditoria de consistência entre agentes
|
||
# --------------------------------------------------------------
|
||
# 1) Detecta frases duplicadas entre personas
|
||
# 2) Detecta rules com mesmo nome em agentes diferentes
|
||
# 3) Lista rules globais não referenciadas em nenhuma persona
|
||
# --------------------------------------------------------------
|
||
set -euo pipefail
|
||
|
||
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||
cd "$REPO_ROOT"
|
||
|
||
echo "🔍 Auditoria do ecossistema de agentes"
|
||
echo "======================================="
|
||
echo ""
|
||
|
||
# ---- 1) Frases idênticas entre personas ---------------------
|
||
echo "📋 1. Frases idênticas entre personas:"
|
||
dupes=$(grep -h -r "^[A-Z].*" agents/*/persona 2>/dev/null | sort | uniq -c | awk '$1>1 {print " " $0}' || true)
|
||
if [[ -n "$dupes" ]]; then
|
||
echo "$dupes"
|
||
else
|
||
echo " ✅ Nenhuma frase duplicada encontrada."
|
||
fi
|
||
echo ""
|
||
|
||
# ---- 2) Rules com mesmo nome em agentes diferentes ----------
|
||
echo "📋 2. Rules duplicadas entre agentes:"
|
||
dup_rules=$(find agents -type f -path "*/rules/*" -exec basename {} \; 2>/dev/null | sort | uniq -d || true)
|
||
if [[ -n "$dup_rules" ]]; then
|
||
echo " ⚠️ Rules com mesmo nome em agentes diferentes:"
|
||
echo "$dup_rules" | sed 's/^/ /'
|
||
else
|
||
echo " ✅ Nenhuma rule duplicada."
|
||
fi
|
||
echo ""
|
||
|
||
# ---- 3) Rules globais não referenciadas ----------------------
|
||
echo "📋 3. Rules globais não referenciadas em personas:"
|
||
unreferenced=0
|
||
for rule_file in global/rules/*; do
|
||
[ -f "$rule_file" ] || continue
|
||
rule_name=$(basename "$rule_file")
|
||
if ! grep -rq "$rule_name" agents/*/persona 2>/dev/null; then
|
||
echo " ⚠️ $rule_name"
|
||
unreferenced=$((unreferenced + 1))
|
||
fi
|
||
done
|
||
if [[ $unreferenced -eq 0 ]]; then
|
||
echo " ✅ Todas as rules globais são referenciadas."
|
||
fi
|
||
echo ""
|
||
|
||
# ---- 4) Busca por contradições ------------------------------
|
||
echo "📋 4. Padrões de restrição nas personas (verificar contradições manualmente):"
|
||
echo " --- NUNCA ---"
|
||
grep -rn "NUNCA" agents/*/persona 2>/dev/null | sed 's/^/ /' || echo " (nenhum)"
|
||
echo " --- NÃO ---"
|
||
grep -rn "^- NÃO" agents/*/persona 2>/dev/null | sed 's/^/ /' || echo " (nenhum)"
|
||
echo ""
|
||
|
||
echo "✅ Auditoria concluída."
|