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
8.8 KiB
Plaintext
74 lines
8.8 KiB
Plaintext
---
|
|
title: Цілі сесії
|
|
description: Перетворіть промпт на ціль, до якої агент рухається автоматично.
|
|
---
|
|
|
|
# Цілі сесії
|
|
|
|
Ціль перетворює один промпт на фінішну пряму. Замість підштовхувати агента словом «продовжуй» після кожної відповіді, ви ставите ціль один раз — і OpenChamber автоматично веде сесію до неї, перевіряючи прогрес незалежним аудитором після кожного ходу. Робота триває, навіть поки вас немає поруч.
|
|
|
|
## Як розпочати ціль
|
|
|
|
1. Натисніть кнопку-мішень у полі вводу. Вона засвітиться — режим цілі увімкнено.
|
|
2. Напишіть промпт і надішліть. Це повідомлення стане формулюванням цілі.
|
|
|
|
Це працює однаково і в наявній сесії, і в чернетці нової: увімкніть мішень, напишіть перше повідомлення, надішліть — нова сесія почнеться вже з активною ціллю.
|
|
|
|
### Інші способи розпочати ціль
|
|
|
|
- **З відповіді агента**: у діалозі «Start new session from this answer» позначте **Run as goal** — відповідь передається як завдання, яке нова сесія виконує до завершення (комбінуйте з **Create worktree** для ізольованого запуску).
|
|
- **З плану**: виконуючи збережений план у новій сесії чи worktree, позначте **Run as goal** у діалозі. Формулюванням цілі стане зміст плану, тож аудитор судитиме прогрес за самим планом.
|
|
- **За розкладом**: позначте **Run as goal** у [запланованому завданні](/scheduled-tasks/), щоб регулярні запуски доводили промпт до завершення.
|
|
|
|
## Формулюйте ціль самодостатньо
|
|
|
|
Аудитор прогресу бачить лише ваше формулювання цілі та останню відповідь агента — без історії чату. Тому пишіть повідомлення-ціль так, щоб людина без контексту розмови зрозуміла, як виглядає завершений стан.
|
|
|
|
- Добре: «Додай тести для модуля експорту й доведи весь тестовий набір до зеленого стану.»
|
|
- Не дуже: «Виправ це» або «Продовжуй з тією ідеєю.»
|
|
|
|
Для дрібних контекстних уточнень ціль не потрібна — просто надішліть звичайне повідомлення.
|
|
|
|
## Як це працює
|
|
|
|
Коли агент зупиняється і сесія трохи затихає, OpenChamber:
|
|
|
|
1. Просить малу, дешеву модель оцінити останній хід відносно цілі: продовжувати, готово чи глухий кут?
|
|
2. Якщо вердикт «продовжувати» — надсилає промпт продовження, і агент береться за роботу знову.
|
|
3. Якщо ціль перевірено досягнута — вона завершується, а ви отримуєте сповіщення.
|
|
4. Якщо агент справді застряг (потрібна ваша участь), ціль зупиняється як заблокована — але лише після того, як аудитор скаже це тричі поспіль, тож разова заминка ніколи не завершує ціль.
|
|
|
|
Є й жорсткі запобіжники: опційний бюджет токенів, ліміт автоматичних продовжень і зупинка при помилці ходу. Якщо контекст сесії стиснеться посеред роботи, ціль просто продовжиться — впертися у вікно контексту означає, що робота не завершена.
|
|
|
|
### Зупинка і відновлення
|
|
|
|
- **Кнопка стоп** обриває поточний хід і призупиняє ціль — ваше явне «стоп» завжди сильніше за цикл.
|
|
- **Pause** на смужці цілі робить те саме з іншого боку: призупиняє ціль і зупиняє поточний хід.
|
|
- Поки ціль на паузі, спілкуйтеся як завжди — цикл не втручається.
|
|
- **Resume** знову вмикає цикл: на сесії у простої промпт продовження летить негайно; якщо агент саме працює — цикл тихо підхопиться на його наступній паузі.
|
|
|
|
## Спостереження і керування
|
|
|
|
- Смужка над полем вводу показує останню нотатку прогресу, статус і використання токенів, а також кнопку призупинення/відновлення. Коли агент зупинився, а ціль активна, смужка показує обертовий **Оцінювання…** — це вікно тиші та робота аудитора.
|
|
- Кнопка-мішень світиться, поки ціль працює (синім), стає зеленою при завершенні та червоною, коли ціль заблокована чи вичерпала бюджет. Натисніть її, щоб відкрити діалог цілі: відредагувати формулювання чи бюджет або видалити ціль. Завершена ціль лише для читання — видаліть її, а тоді вмикайте нову.
|
|
- У бічній панелі сесій біля дати сесії з'являється маленька мішень, забарвлена за станом цілі.
|
|
|
|
## Сповіщення
|
|
|
|
Поки ціль активна, сповіщення «агент готовий» після кожного ходу придушені — вони лише повторювали б продовження самого циклу. Коли ціль завершується (готово, заблоковано чи вичерпано бюджет), натомість приходить одне фінальне сповіщення — на десктопі та мобільним пушем. Воно поважає те саме налаштування «сповіщати про завершення»; запити дозволів, питання та сповіщення про помилки працюють як завжди.
|
|
|
|
## Бюджет токенів
|
|
|
|
У **Налаштування → Чат → Ціль** можна задати типовий бюджет токенів для нових цілей. Досягнувши бюджету, ціль зупиняється як «бюджет вичерпано» замість витрачати більше — можна підняти бюджет і відновити її з діалогу цілі.
|
|
|
|
## Варто знати
|
|
|
|
- Цикл цілі працює в сервері OpenChamber, а не у вкладці браузера. Закрийте вкладку, заблокуйте телефон — агент працює далі, а коли ціль завершиться, прийде сповіщення. Сервер (десктопна апка або процес `openchamber`) має залишатися запущеним.
|
|
- Цілі використовують провайдера й модель самої сесії, включно з викликами аудитора — нічого не йде до провайдерів, якими ви не користуєтесь.
|
|
- Одна ціль на сесію за раз.
|
|
|
|
## Дивіться також
|
|
|
|
- [Заплановані завдання](/scheduled-tasks/) — запуск промпта за розкладом; увімкніть там «Виконати як ціль», щоб запланований запуск довів промпт до завершення
|
|
- [Сповіщення](/notifications/) — як ви дізнаєтеся про завершену ціль
|