Arm the target button in the composer and the next prompt becomes a goal: the server keeps the session working toward it (idle tick -> small-model audit -> continuation) until the objective is verifiably complete, blocked, or out of budget — even with the UI closed. Server (packages/web/server/lib/session-goal): - event-driven loop on the global SSE hub; goal state lives in session.metadata.openchamber.goal (merge-safe patches, stale-write guard by goal id), so it survives restarts and syncs to every client for free - the small-model audit (objective + last assistant turn only, language pinned to the objective) is the sole termination authority; blocked needs 3 consecutive verdicts, audit outages tolerate one unaudited continuation then stop the goal as resumable-blocked - hard stops: optional token budget, auto-continuation cap (Resume grants a fresh allowance), turn errors; user abort pauses the goal instead of blocking it, and resuming over an aborted tail nudges immediately - token accounting as a snapshot of the latest turn (input + cache.read + output), goal-relative via a creation baseline and segmented across compactions; a compaction summary skips the audit and continues - continuations reuse the session's own provider/model/agent/variant UI: - three-mode target button (arm / disarm / manage dialog), informational goal strip with inline pause/resume and an Evaluating indicator, sidebar state glyph, objective length counter (2000-char server clamp), read-only completed goals - goal entry points: composer (sessions and drafts), start-new-session- from-answer dialog, plan implement dialog (plan content becomes the objective), scheduled tasks (Run as goal + budget) - Settings -> Chat -> Goal: feature toggle + default token budget with three-layer parity (web server, client persistence, VS Code bridge); VS Code renders goal state but hides the entry points (the loop runs in the web server only) Notifications: per-turn "ready" notifications are suppressed while a goal is active; settling sends one final notification (desktop, web-push, APNs generic titles with the session name as body) honoring the completion toggle. Error/question/permission notifications are untouched. Docs: user guide (session-goals) in all 9 locales + sidebar entry, scheduled-tasks cross-reference, server module DOCUMENTATION.md.
74 lines
5.9 KiB
Plaintext
74 lines
5.9 KiB
Plaintext
---
|
|
title: Objetivos de sesión
|
|
description: Convierte un prompt en un objetivo hacia el que el agente trabaja automáticamente.
|
|
---
|
|
|
|
# Objetivos de sesión
|
|
|
|
Un objetivo convierte un solo prompt en una línea de meta. En lugar de empujar al agente con "continúa" tras cada respuesta, defines el objetivo una vez — y OpenChamber mantiene la sesión trabajando hacia él automáticamente, comprobando el progreso con un auditor independiente después de cada turno. Sigue funcionando incluso mientras no estás.
|
|
|
|
## Iniciar un objetivo
|
|
|
|
1. Pulsa el botón de diana en el compositor. Se ilumina — el modo objetivo está armado.
|
|
2. Escribe tu prompt y envíalo. Ese mensaje se convierte en el objetivo.
|
|
|
|
Funciona igual en una sesión existente y en un borrador de sesión nueva: arma la diana, escribe el primer mensaje, envía — la nueva sesión arranca con el objetivo ya activo.
|
|
|
|
### Más formas de iniciar un objetivo
|
|
|
|
- **Desde una respuesta del agente**: en el diálogo "Start new session from this answer", marca **Ejecutar como objetivo** — la respuesta se entrega como una tarea que la nueva sesión ejecuta hasta completarla (combínalo con **Create worktree** para una ejecución aislada).
|
|
- **Desde un plan**: al implementar un plan guardado en una sesión o worktree nuevos, marca **Ejecutar como objetivo** en el diálogo. El objetivo lleva el contenido del plan, así que el auditor juzga el progreso contra el plan real.
|
|
- **Según un horario**: marca **Ejecutar como objetivo** en una [tarea programada](/scheduled-tasks/) para que las ejecuciones recurrentes persigan su prompt hasta completarlo.
|
|
|
|
## Escribe un objetivo autocontenido
|
|
|
|
El auditor de progreso solo ve tu objetivo y la última respuesta del agente — no el historial del chat. Redacta el mensaje-objetivo de forma que alguien sin el contexto de la conversación entienda cómo es el estado final.
|
|
|
|
- Bien: "Añade tests para el módulo de exportación y haz que toda la suite pase."
|
|
- No tan bien: "Arréglalo" o "Continúa con esa idea."
|
|
|
|
Para pequeños ajustes contextuales no necesitas un objetivo — envía un mensaje normal.
|
|
|
|
## Cómo funciona
|
|
|
|
Cuando el agente se detiene y la sesión queda en silencio un momento, OpenChamber:
|
|
|
|
1. Pide a un modelo pequeño y barato que audite el último turno contra el objetivo: ¿seguir, hecho o atascado?
|
|
2. Si el veredicto es "seguir", envía un prompt de continuación y el agente retoma el trabajo.
|
|
3. Si el objetivo se ha logrado de forma verificable, el objetivo se completa y recibes una notificación.
|
|
4. Si el agente está realmente atascado (necesita tu intervención), el objetivo se detiene como bloqueado — pero solo después de que el auditor lo diga tres veces seguidas, así que un tropiezo puntual nunca termina el objetivo.
|
|
|
|
También hay topes de seguridad: un presupuesto de tokens opcional, un límite de continuaciones automáticas y una parada ante errores de turno. Si el contexto de la sesión se compacta a mitad del trabajo, el objetivo simplemente continúa — chocar con la ventana de contexto es prueba de que el trabajo no había terminado.
|
|
|
|
### Detener y reanudar
|
|
|
|
- El **botón de detener** aborta el turno en curso y pausa el objetivo — tu "para" explícito siempre gana al bucle.
|
|
- **Pausar** en la franja del objetivo hace lo mismo desde el otro lado: pausa el objetivo y detiene el turno en curso.
|
|
- Mientras está pausado, chatea con normalidad — el bucle no interfiere.
|
|
- **Reanudar** rearma el bucle: en una sesión inactiva el empujón de continuación sale de inmediato; si el agente está trabajando, el bucle se reengancha en su siguiente pausa.
|
|
|
|
## Observar y gestionar
|
|
|
|
- La franja sobre el compositor muestra la última nota de progreso, el estado y el uso de tokens, con un botón de pausar/reanudar integrado. Cuando el agente se ha detenido y el objetivo sigue activo, la franja muestra un **Evaluando…** giratorio — es la ventana de silencio y la auditoría en marcha.
|
|
- El botón de diana permanece encendido mientras el objetivo corre (azul), se vuelve verde al completarse y rojo cuando está bloqueado o sin presupuesto. Púlsalo para abrir el diálogo del objetivo: edita el objetivo o el presupuesto, o elimínalo. Un objetivo completado es de solo lectura — elimínalo y arma uno nuevo.
|
|
- En la barra lateral de sesiones aparece una pequeña diana junto a la fecha de la sesión, coloreada según el estado del objetivo.
|
|
|
|
## Notificaciones
|
|
|
|
Mientras un objetivo está activo, las notificaciones por turno de "agente listo" se suprimen — solo harían eco de las continuaciones del propio bucle. Cuando el objetivo se resuelve (completado, bloqueado o presupuesto alcanzado) recibes una única notificación final, en el escritorio y como push móvil. Obedece el mismo ajuste de "notificar al completar"; las solicitudes de permisos, las preguntas y las notificaciones de error siguen funcionando con normalidad.
|
|
|
|
## Presupuesto de tokens
|
|
|
|
En **Ajustes → Chat → Objetivo** puedes definir un presupuesto de tokens predeterminado para nuevos objetivos. Al alcanzarlo, el objetivo se detiene como "presupuesto alcanzado" en lugar de gastar más — puedes subir el presupuesto y reanudar desde el diálogo del objetivo.
|
|
|
|
## Ten en cuenta
|
|
|
|
- El bucle del objetivo corre en el servidor de OpenChamber, no en tu pestaña del navegador. Cierra la pestaña, bloquea el teléfono — el agente sigue trabajando y recibirás una notificación cuando el objetivo termine. El servidor (app de escritorio o proceso `openchamber`) debe seguir en marcha.
|
|
- Los objetivos usan el proveedor y modelo de tu propia sesión, incluidas las llamadas del auditor — nada sale hacia proveedores que no uses ya.
|
|
- Un objetivo por sesión a la vez.
|
|
|
|
## Relacionado
|
|
|
|
- [Tareas programadas](/scheduled-tasks/) — ejecutar un prompt según un horario; activa allí "Ejecutar como objetivo" para que la ejecución programada persiga su prompt hasta completarlo
|
|
- [Notificaciones](/notifications/) — cómo te enteras de un objetivo terminado
|