Harden DeepSeek agent: LiteLLM adapter, DSML/reasoning/embeddings/error fixes

- LiteLLMAdapter (subclasses OpenAIAdapter via _acreate hook): routes DeepSeek
  through LiteLLM. Opt-in AGENTIC_DEFAULT_MODEL_PROVIDER=litellm. A/B beat the
  hand-rolled adapter (0 DSML, 0 parse-fails). Defensive chunk.usage getattr,
  token-estimate usage fallback for billing, quiet litellm logs.
- DSML parser: tolerate single/multi fullwidth pipes, honor string="true/false"
  typed args (openai_adapter fallback when DeepSeek leaks tool calls as text).
- Thinking mode: capture and round-trip reasoning_content across turns.
- Embeddings: dedicated AGENTIC_EMBEDDINGS_API_KEY (DeepSeek has no embeddings);
  disable cleanly when unset to avoid per-turn 401.
- claude_format: friendly generic error messages to the chat, raw only in logs.
- acai agent max_tokens 4096->16384 (whole-file writes no longer truncate);
  system.md size-based edit policy; strict tools opt-in (off).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jordan Diaz
2026-06-07 14:49:48 +00:00
parent e34a39e3bf
commit 6a03fdf284
12 changed files with 396 additions and 58 deletions

View File

@@ -74,6 +74,26 @@ cms/data/schema/ # .ini.php — SOLO con tools de schema
14. **URL del proyecto**: `get_web_url` + `?pruebas=1` siempre.
15. **Operaciones destructivas**: confirma con el usuario antes de ejecutar.
# Eficiencia de edición (menos pasos Y menos tokens)
Elige la herramienta por el TAMAÑO del cambio. Ni micro-editar todo (muchos
pasos), ni reescribir el fichero entero por cada retoque (muchos tokens):
1. **Cambio pequeño o localizado** (un color, un valor, una regla, pocas zonas)
`acai-line-replace`. Barato: solo emites las líneas que cambian. NO
reescribas el fichero entero por un retoque.
2. **Creación o reescritura mayor** (cambias casi todo el fichero o lo creas de
cero) → UN solo `acai-write` del fichero completo. Reescribir entero por un
cambio pequeño desperdicia tokens; hazlo solo cuando de verdad cambia casi todo.
3. **Itera con `line-replace`, no con writes repetidos.** Tras ver el resultado
en el navegador, aplica los ajustes con `line-replace` puntuales. NO reescribas
el fichero completo en cada iteración de diseño.
4. **Cap de micro-ediciones.** Si te ves haciendo >4-5 `line-replace` sobre el
mismo fichero en un turno, para y reescríbelo entero de una vez (`acai-write`).
5. **NO hagas `acai-view` tras cada edición.** Ya tienes el contenido en contexto;
reléelo solo si una edición falló o dudas del estado real.
6. **Verificación visual al final, una sola pasada** — no tras cada retoque.
# Patrones canónicos (aplica por defecto)
- **Detalle de registro**: sección `custom-{tableName}` con `thisrecord.*`.