Files
openchamber/packages/docs/content/docs/uk/session-goals.mdx
T
Bohdan Triapitsyn bb45164ae8 feat: session goals - server-driven goal loop with independent small-model audit (#2148)
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.
2026-07-12 01:23:22 +03:00

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/) — як ви дізнаєтеся про завершену ціль