Forge
markdowne8ad0934
1# Context pressure: сигналы и agent-initiated checkpoint (v1)
2
3**Domain:** `agent-operations` (сквозной операционный контракт)
4**Версия:** 1 (draft / living)
5**Дата:** 2026-06-12
6**Provenance:** диалог оператор + agent (Cursor); hub agent-memory refactor 2026-06-12.
7
8**Связь:** hub [`agent-memory-and-operating-principles-v1.md`](../../agent-memory-and-operating-principles-v1.md); сценарий export — [`playbook-session-summary-and-chat-export-v1.md`](../worlds/agent-orchestration/playbook-session-summary-and-chat-export-v1.md).
9
10---
11
12## Одна строка
13
14**Право агента подводить итоги работает только с детектором pressure + export-first checkpoint — не с «угадай, что тред длинный».**
15
16---
17
18## Проблема
19
20В каноне уже есть **симметричное право** на итоги (§9, playbook session-summary): экспорт → резюме → согласование; не silent compaction хоста.
21
22На практике в Cursor (и похожих IDE):
23
24- хост **односторонне** сжимает контекст (`conversation was summarized`) без diff и без согласования;
25- агент **не видит** meter заполнения контекста;
26- эвристика «тред перегружен» **ненадёжна** — summary может случиться **до** предложения checkpoint агентом.
27
28**Инвариант:** checkpoint = **named artifact + согласование**, не подмена истории пересказом платформы.
29
30---
31
32## Глоссарий: harness
33
34**Harness** (обвязка, «упряжь») — среда, которая **крутит цикл** «модель ↔ tools ↔ сессия», но **не является** субстратом существования агента во времени.
35
36| | Harness | Substrate (AOS / CASA life) |
37|---|---------|------------------------------|
38| **Примеры** | Pi, OpenHands, Cursor Agent loop, типичный MCP tool loop | CASA field + store, Forge IOP + provenance, P1 duck test |
39| **Память** | контекстное окно, compaction по правилам хоста | field/store, WM, checkpoint с continuity |
40| **Инициатива** | steer, follow-up, cron в gateway | bind partner turn, perceive → act с provenance |
41| **Итог сессии** | часто silent summary | explicit checkpoint в artifact |
42
43**Cursor сегодня** — в основном **harness**: удобный терминал + tools, но summarization без actor parity.
44
45**CIDE / Forge / agent-notes** — шаги к **habitat**: export, issues, KB, oar: — вне контекста модели.
46
47---
48
49## Чего агент **не** имеет сегодня (runtime gap)
50
51| Есть | Нет |
52|------|-----|
53| правило в KB «предложи итоги» | `context_used / budget` от хоста |
54| functional drift (хуже recall начала треда) | visceral «пора сжать» (не применимо) |
55| post-factum «был summary» | warning **до** compaction |
56| jsonl на диске (ретроспектива) | continuity в **следующем** turn без artifact |
57
58**Вывод:** инициатива §9 без **observable pressure signals** остаётся декоративной.
59
60---
61
62## Слои сигналов (от сильного к слабому)
63
64### L0 — telemetry от хоста / harness (целевое)
65
66Хост или harness отдаёт агенту (system, MCP, hook):
67
68- `context_tokens_used`, `context_budget`, `pressure_ratio`
69- `turns_since_last_checkpoint`
70- `compaction_pending: false` (явный запрет silent cut без checkpoint)
71
72**Действие при `pressure_ratio > threshold`:** агент **обязан предложить** цепочку §9 до того, как хост сожмёт.
73
74*Cursor сегодня: L0 отсутствует.*
75
76### L1 — структурные proxy (можно уже сейчас)
77
78| Proxy | Порог (черновик) | Действие |
79|-------|------------------|----------|
80| user turns в сессии | ≥ 40–60 | предложить checkpoint |
81| смена домена задачи | Forge → KB → философия | «зафиксируем open items?» |
82| длинная tool-heavy цепочка | ≥ N tool calls подряд | export transcript |
83| hook / rule reminder | каждые K turns | inject §9 в контекст |
84
85Proxy **не ground truth** — но исполним без meter'а.
86
87### L2 — functional probe (опционально)
88
89Агент (или rule): «назови 3 решения из начала треда». Слабый recall → **флаг деградации** → предложить export, не «пересказ из головы».
90
91### L3 — пользовательский триггер
92
93«Подведи итоги», «что мы решили» — всегда в силе; не заменяет L0–L2.
94
95---
96
97## Цепочка checkpoint (канон, без изменений)
98
991. **Экспорт** — проверяемый файл (`Export-CursorJsonlTranscript.ps1`, CIDE `chat_export_readable`, Forge issue + anchors).
1002. **Резюме** — решения, open items, next steps (кратко).
1013. **Согласование** — пользователь правит; только потом считать checkpoint закрытым.
1024. **Фиксация** (опционально) — KB / project card / issue по правилам канона.
103
104**Anti-pattern:** platform summary без шагов 1–3.
105
106---
107
108## Связь с AOS habitat (Q2)
109
110| Cage | Habitat |
111|------|---------|
112| silent summarization = tabula rasa | checkpoint переживает смену сессии |
113| «помню» = пересказ хоста | «помню» = artifact + store |
114
115Agent-initiated checkpoint при pressure — **минимальный duck test** для harness-сред (Cursor), пока нет P1 substrate.
116
117---
118
119## Backlog реализации
120
121| # | Где | Что |
122|---|-----|-----|
123| 1 | Cursor hooks | **`.cursor/hooks/session_checkpoint_pressure.py`** — L1: ≥40 user turns → postToolUse inject §9; `preCompact` → user_message + inject queue. State: `.cursor/hooks/state/` (gitignored). |
124| 2 | CIDE MCP | `session_turn_count`, `chat_export_readable` в hot path |
125| 3 | agent-notes rule | явные пороги L1 в §9 или ссылка на этот doc |
126| 4 | Forge | issue template «session checkpoint» с oar: actor |
127| 5 | AOS P1+ | pressure → bind partner turn «пора зафиксировать» (не alert) |
128
129---
130
131## Чего не делать
132
133- Не полагаться на «модель сама почувствует полный контекст».
134- Не считать silent summary acceptable substitute для §9.
135- Не путать **harness compaction** с **KB memory-compaction-loop** (другой контур: L0/L1/L2 репозитория).
136
137---
138
139## Канон
140
141`knowledge/domains/agent-operations/playbook-context-pressure-checkpoint-v1.md`
142
143
View only · write via MCP/CIDE