Skip to content

Commit 6d3819f

Browse files
author
marce
committed
feat(academic-audit): InteractionLogger, AcademicAuditTrail e TokenEconomyMonitor v1.0
1 parent 21a7808 commit 6d3819f

7 files changed

Lines changed: 1026 additions & 0 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{"type": "session_start", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.650725+00:00", "version": "1.0.0", "paradigm": "", "level": 1}
2+
{"type": "paradigm_set", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.653739+00:00", "paradigm": "Pragmatista (mista)"}
3+
{"type": "interaction", "session_id": "SESSION-20260524-161634-3C6F", "interaction_id": "INT-0001", "timestamp": "2026-05-24T16:16:34.655653+00:00", "query": "PIB do Brasil em 2023", "response_summary": "PIB per capita: US$ 10,043.62 (World Bank WDI)", "routing": {"domain": "economic", "source": "WorldBankAnalyzer", "confidence": 0.67, "fallback_used": false, "fallback_chain": []}, "tokens": {"estimated_input": 800, "estimated_output": 300, "context_size": 200000, "efficiency_ratio": 0.0, "level": 2}, "pipeline_stage": "SEEKER", "decision_path": ["parse_intent", "route_economic", "wbgapi_fetch"], "paradigm": "Pragmatista (mista)", "hash": "7b51d4b265d38e1e"}
4+
{"type": "interaction", "session_id": "SESSION-20260524-161634-3C6F", "interaction_id": "INT-0002", "timestamp": "2026-05-24T16:16:34.662222+00:00", "query": "artigos sobre IA", "response_summary": "", "routing": {"domain": "", "source": "", "confidence": 0.0, "fallback_used": false, "fallback_chain": []}, "tokens": {"estimated_input": 0, "estimated_output": 0, "context_size": 200000, "efficiency_ratio": 0.0, "level": 2}, "pipeline_stage": "SEEKER", "decision_path": [], "paradigm": "Pragmatista (mista)", "hash": "8014fe2d3456cbf2"}
5+
{"type": "decision", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.663240+00:00", "interaction_id": "INT-0002", "decision": "Fonte primaria: arXiv", "rationale": "Cobertura superior a Semantic Scholar", "context": "", "stage": ""}
6+
{"type": "artifact", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.664244+00:00", "artifact_type": "article_draft", "artifact_path": "artigo_v1.md", "metadata": {"words": 3500}}
7+
{"type": "paradigm_set", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.666243+00:00", "paradigm": "Pragmatista (mista)"}
8+
{"type": "decision", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.670287+00:00", "interaction_id": "INT-0002", "decision": "Paradigma definido: Pragmatista (mista)", "rationale": "Escolha consciente do pesquisador", "context": "AcademicAuditTrail.set_paradigm", "stage": "AcademicAuditTrail.set_paradigm"}
9+
{"type": "artifact", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.671301+00:00", "artifact_type": "paragraph", "artifact_path": "P01", "metadata": {"text_length": 67}}
10+
{"type": "artifact", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.672304+00:00", "artifact_type": "paragraph", "artifact_path": "P02", "metadata": {"text_length": 76}}
11+
{"type": "decision", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.673303+00:00", "interaction_id": "INT-0002", "decision": "Evidência vinculada: 10.1038/s41524-017-0032-0 → P01", "rationale": "IA generativa na ciencia dos materiais", "context": "record_evidence", "stage": "record_evidence"}
12+
{"type": "decision", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.677501+00:00", "interaction_id": "INT-0002", "decision": "Evidência vinculada: arXiv:2301.12345 → P01", "rationale": "Survey de LLMs", "context": "record_evidence", "stage": "record_evidence"}
13+
{"type": "decision", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.679013+00:00", "interaction_id": "INT-0002", "decision": "Evidência vinculada: 10.1596/978-1-4648-1328-8 → P02", "rationale": "World Bank P&D investment data", "context": "record_evidence", "stage": "record_evidence"}
14+
{"type": "artifact", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.682561+00:00", "artifact_type": "audit_report", "artifact_path": "C:\\Users\\marce\\.config\\opencode\\.evolve\\audit-trails\\audit-SESSION-20260524-161634-3C6F.json", "metadata": {}}
15+
{"type": "session_end", "session_id": "SESSION-20260524-161634-3C6F", "timestamp": "2026-05-24T16:16:34.686596+00:00", "total_interactions": 2, "paradigm": "Pragmatista (mista)", "level": 2, "log_file": "C:\\Users\\marce\\.config\\opencode\\.evolve\\audit-logs\\session-SESSION-20260524-161634-3C6F.jsonl"}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"session_id": "SESSION-20260524-161634-3C6F",
3+
"paradigm": "Pragmatista (mista)",
4+
"timestamp": "2026-05-24T16:16:34.680544+00:00",
5+
"summary": {
6+
"paragraphs": 2,
7+
"sources": 3,
8+
"total_evidence": 3
9+
},
10+
"citation_map": {
11+
"10.1038/s41524-017-0032-0": [
12+
"P01"
13+
],
14+
"arXiv:2301.12345": [
15+
"P01"
16+
],
17+
"10.1596/978-1-4648-1328-8": [
18+
"P02"
19+
]
20+
},
21+
"paragraphs": {
22+
"P01": {
23+
"tsac_score": 0,
24+
"tsac_violations": [],
25+
"evidence_count": 2,
26+
"peer_reviewed": true
27+
},
28+
"P02": {
29+
"tsac_score": 0,
30+
"tsac_violations": [],
31+
"evidence_count": 1,
32+
"peer_reviewed": false
33+
}
34+
}
35+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Relatório de Economia de Tokens
2+
3+
**Nível**: 2 — Standard Paper/Q1-Q2
4+
**Modo economia**: Sim
5+
6+
## Consumo
7+
8+
| Métrica | Valor |
9+
|---------|-------|
10+
| Interações | 5 |
11+
| Tokens entrada | 4,000 |
12+
| Tokens saída | 1,500 |
13+
| Tokens totais | 5,500 |
14+
| Orçamento | 200,000 |
15+
| Restante | 194,500 (2.8%) |
16+
| Eficiência (out/in) | 0.38 |
17+
| Médio in/interação | 800 |
18+
| Médio out/interação | 300 |
19+
20+
## Economias Estimadas
21+
22+
| Estratégia | Tokens Economizados |
23+
|-----------|-------------------:|
24+
| Contexto em chinês (+40%) | 1,600 |
25+
| Progressive disclosure (25%) | 1,000 |
26+
| MCP Lazy Init (10%) | 400 |
27+
| **Total estimado** | **3,000** |
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# academic-audit: Auditoria Acadêmica Caixa Branca com Rastreamento Minucioso
2+
3+
**Status**: v1.0.0 | **Categoria**: system | **Tipo**: Auditoria + Logging
4+
5+
## Descrição
6+
7+
Sistema completo de auditoria acadêmica caixa branca que registra **todas** as interações do pesquisador com o ecossistema OpenCode, fornecendo rastreabilidade minuciosa de cada afirmação → evidência → decisão. Compatível com protocolo TSAC (87 palavras banidas), padrões Qualis A1 e paradigmas epistemológicos múltiplos.
8+
9+
## Componentes
10+
11+
| Módulo | Arquivo | Função |
12+
|--------|---------|--------|
13+
| **InteractionLogger** | `interaction_logger.py` | Logging caixa branca de todas as interações (JSONL imutável) |
14+
| **AcademicAuditTrail** | `academic_audit_trail.py` | Trilha de auditoria: parágrafo → evidência → fonte |
15+
| **TokenEconomyMonitor** | `token_economy_monitor.py` | Monitor de consumo de tokens por nível (1/2/3) |
16+
17+
## Uso Rápido
18+
19+
```python
20+
from interaction_logger import get_logger
21+
from academic_audit_trail import AcademicAuditTrail
22+
from token_economy_monitor import TokenEconomyMonitor
23+
24+
# Iniciar sessão
25+
logger = get_logger()
26+
logger.set_paradigm("Pragmatista (mista)")
27+
logger.set_level(2) # Standard Paper
28+
29+
# Trilha de auditoria
30+
trail = AcademicAuditTrail()
31+
trail.set_paradigm("Pragmatista (mista)")
32+
33+
# Registrar parágrafo + evidência
34+
trail.record_paragraph("P12", "A IA generativa tem transformado...")
35+
trail.record_evidence("P12", "10.1038/s41524-017-0032-0",
36+
claim="IA generativa na ciência dos materiais",
37+
source_type="doi", confidence=0.95)
38+
39+
# Verificar TSAC
40+
trail.run_tsac_check("P12")
41+
42+
# Gerar relatório
43+
report = trail.generate_audit_report(format="markdown")
44+
trail.save()
45+
46+
# Monitor de tokens
47+
monitor = TokenEconomyMonitor(level=2)
48+
monitor.record_usage("INT-0001", estimated_input=500, estimated_output=200)
49+
print(monitor.get_efficiency_report())
50+
51+
# Fechar sessão
52+
logger.close_session()
53+
```
54+
55+
## Estratégias de Economia de Tokens (3 Níveis)
56+
57+
| Nível | Nome | Agentes | Orçamento/Sessão | Economia |
58+
|:-----:|------|:------:|:----------------:|:--------:|
59+
| 1 | Magnum/Tese/Qualis A1 | 43 | 500K tokens | Nenhuma (rigor máximo) |
60+
| 2 | Standard Paper/Q1-Q2 | 20 | 200K tokens | Exigida |
61+
| 3 | Short Communication | 10 | 50K tokens | Máxima |
62+
63+
## Protocolo TSAC
64+
65+
Lista de 87 palavras banidas detectadas automaticamente. Exemplos: "crucial", "essencialmente", "notavelmente", "fundamentalmente", "intrinsecamente".
66+
67+
## Rastreabilidade
68+
69+
Cada interação gera um registro JSONL imutável com:
70+
- `session_id` único
71+
- `interaction_id` sequencial
72+
- Hash SHA-256 para integridade
73+
- Timestamp UTC-3
74+
- Roteamento completo (domínio, fonte, confiança)
75+
- Decisões do pipeline
76+
77+
## Arquivos
78+
79+
- `interaction_logger.py` — Logger caixa branca (append-only JSONL)
80+
- `academic_audit_trail.py` — Trilha de auditoria acadêmica
81+
- `token_economy_monitor.py` — Monitor de economia de tokens

0 commit comments

Comments
 (0)