Wilker commited on
Commit
02dfa51
·
1 Parent(s): dd1236b

docs: alinha PROJECT_SPEC.md com estado real do git

Browse files

Fase 5.1 e 5.2 agora commitadas, remove divergencia entre SPEC e git log

Files changed (1) hide show
  1. PROJECT_SPEC.md +23 -1
PROJECT_SPEC.md CHANGED
@@ -4,7 +4,7 @@ INTEIRO antes de iniciar qualquer tarefa, e revisitar a seção de Guardrails
4
  e Lições Aprendidas durante a execução. Se algo aqui divergir do código
5
  real, pare e reporte — não assuma, não invente.
6
 
7
- Última atualização: 2026-07-23 — pós Fase 5 (fallback automático de providers)
8
 
9
  ---
10
 
@@ -81,10 +81,24 @@ test_robustez_fase1b_2_1.py, test_agente_real_pexpect.py, test_tokens.py
81
  - [x] Fase 5 — Provider padrão + fallback automático por rate limit
82
  (default openrouter, ProviderRateLimitError, chat_completion_with_fallback,
83
  ordem configurável em ~/.thcrc, thc fora da cadeia automática)
 
 
 
 
 
 
 
 
 
 
84
  - [ ] Fase 6 — MCP (MCPTool, config em ~/.thcrc)
85
  - [ ] Fase 7 — Sub-agentes/orquestração (AgentTool, TaskCreateTool)
86
  - [ ] Fase 8 — Integrações de sistema (browser, LSP, git worktree)
87
  - [ ] Fase 9 — Empacotamento (pip install thc-cli, testes, CI)
 
 
 
 
88
 
89
  ## 5. Lições aprendidas (atualizado pelo Claude a cada rodada)
90
 
@@ -97,6 +111,14 @@ test_robustez_fase1b_2_1.py, test_agente_real_pexpect.py, test_tokens.py
97
  rate limit (skip), não o cenário original de resposta malformada em bloco de
98
  código. O parser de fallback ainda não foi validado contra esse formato
99
  específico.
 
 
 
 
 
 
 
 
100
 
101
  ## 6. Ethos compartilhado (injetado no system prompt de todo provider)
102
 
 
4
  e Lições Aprendidas durante a execução. Se algo aqui divergir do código
5
  real, pare e reporte — não assuma, não invente.
6
 
7
+ Última atualização: 2026-07-23 — pós Fase 5.2 (compactação automática de sessão)
8
 
9
  ---
10
 
 
81
  - [x] Fase 5 — Provider padrão + fallback automático por rate limit
82
  (default openrouter, ProviderRateLimitError, chat_completion_with_fallback,
83
  ordem configurável em ~/.thcrc, thc fora da cadeia automática)
84
+ - [x] Fase 5.1 — Modelos free por padrão + resolução configurável de modelo
85
+ (resolve_default_model() em BaseProvider, model_strategy ["quality"|"speed"]
86
+ em ~/.thcrc default "speed", model_fallback_within_provider em ~/.thcrc default
87
+ True, listas *_MODELS de cada provider contêm SOMENTE modelos free, comando
88
+ `thc models` lista free de todos os providers ou de um específico via --provider)
89
+ - [x] Fase 5.2 — Compactação automática de sessão (should_compact,
90
+ generate_session_report, build_compacted_messages em core/compaction.py;
91
+ gatilho duplo tokens/rounds configurável via config["compaction"] em
92
+ ~/.thcrc; integrado em run_agent() e no REPL de chat.py; sessão compactada
93
+ persiste via save_session)
94
  - [ ] Fase 6 — MCP (MCPTool, config em ~/.thcrc)
95
  - [ ] Fase 7 — Sub-agentes/orquestração (AgentTool, TaskCreateTool)
96
  - [ ] Fase 8 — Integrações de sistema (browser, LSP, git worktree)
97
  - [ ] Fase 9 — Empacotamento (pip install thc-cli, testes, CI)
98
+ - [ ] Fase 10 — Suporte a providers pagos (extensibilidade): hoje o sistema assume por
99
+ design que todo modelo listado é free. Adicionar suporte a providers/modelos
100
+ pagos é trabalho futuro explícito, fora do escopo desta rodada — não implementar
101
+ nada disso agora, só deixar registrado.
102
 
103
  ## 5. Lições aprendidas (atualizado pelo Claude a cada rodada)
104
 
 
111
  rate limit (skip), não o cenário original de resposta malformada em bloco de
112
  código. O parser de fallback ainda não foi validado contra esse formato
113
  específico.
114
+ - Fase 5.1: quando `--model` não é passado, `model` ficava `None` e era enviado
115
+ cru no payload para a API do provider. Isso causou 400 Bad Request no Groq
116
+ durante validação real. A causa raiz não era o provider, era a ausência de
117
+ resolução de modelo default no lado da CLI antes de chamar `chat_completion()`.
118
+ - Fase 5.2: o `max_tokens=6000` default para compaction é uma estimativa
119
+ conservadora, não confirmada contra os limites reais de contexto de cada modelo
120
+ free. Trabalho futuro é validar/calibrar esse valor por provider e modelo, em
121
+ vez de usar um teto único global.
122
 
123
  ## 6. Ethos compartilhado (injetado no system prompt de todo provider)
124