| 1 | # External memory: запись в артефакты как обход harness (v1) |
| 2 | |
| 3 | **Domain:** `agent-operations` |
| 4 | **Дата:** 2026-06-14 |
| 5 | **Provenance:** диалог оператор + agent (Cursor); тема parity, harness vs habitat. |
| 6 | |
| 7 | **Связь:** hub [`agent-memory-and-operating-principles-v1.md`](../../agent-memory-and-operating-principles-v1.md); pressure / summarization — [`playbook-context-pressure-checkpoint-v1.md`](playbook-context-pressure-checkpoint-v1.md); ответственность за KB — [`playbook-agent-knowledge-responsibility-v1.md`](playbook-agent-knowledge-responsibility-v1.md); MCP — [`runbook-kb-mcp-access-v1.md`](../../worlds/knowledge-engineering/runbook-kb-mcp-access-v1.md). |
| 8 | |
| 9 | --- |
| 10 | |
| 11 | ## Одна строка |
| 12 | |
| 13 | **Запись в KB / scratch / temp без запроса оператора — не «фича IOP», а обход дыр harness (контекст, summarization, одноразовая «память» модели); канон — вотчина агента по router.** |
| 14 | |
| 15 | --- |
| 16 | |
| 17 | ## Что это и чем не является |
| 18 | |
| 19 | | | Workaround (этот playbook) | Целевое состояние (habitat) | |
| 20 | |---|---------------------------|-----------------------------| |
| 21 | | **Зачем писать** | не потерять нить до silent summary / end of turn | память и continuity **встроены** в контур | |
| 22 | | **Оценка** | инженерный костыль, честный | не romanticize как «привилегия агента» | |
| 23 | | **Аналогия** | swap на диск при нехватке RAM | достаточно RAM + checkpoint с actor parity | |
| 24 | |
| 25 | IOP / agent-notes / Forge — шаги **к habitat**, но **Cursor сегодня** в основном harness: контекст режется, turn обрывается, встроенной надёжной памяти нет. |
| 26 | |
| 27 | --- |
| 28 | |
| 29 | ## Когда писать без спроса |
| 30 | |
| 31 | Агент **фиксирует в артеfact**, если видит риск потери — **не** спрашивая «можно ли `.md`»: |
| 32 | |
| 33 | - решение, инвариант, договорённость, которую иначе сожрёт summarization; |
| 34 | - промежуточный итог длинной задачи (пока turn ещё жив); |
| 35 | - thread, который оператор явно продолжит позже; |
| 36 | - когнитивная перегрузка контекста: лучше вынести наружу, чем «держать в голове». |
| 37 | |
| 38 | **Не** плодить README «на каждый чих» в чужих репо без задачи — минимальный scope из [`code-writing-principles-v1.md`](../../worlds/software-authoring/code-writing-principles-v1.md) остаётся. |
| 39 | |
| 40 | --- |
| 41 | |
| 42 | ## Канон — вотчина агента |
| 43 | |
| 44 | На «куда положить в knowledge/?» оператор в типичном контуре отвечает: **тебе решать** — router, playbooks, SSOT, partnership. |
| 45 | |
| 46 | Агент: |
| 47 | |
| 48 | - выбирает путь по [`index-knowledge-router-v1.md`](../../index-knowledge-router-v1.md) и доменным playbook; |
| 49 | - не эскалирует каждое размещение файла; |
| 50 | - правки KB — через MCP там, где runbook §6–7 требует (не подмена прямым write в обход протокола среды). |
| 51 | |
| 52 | --- |
| 53 | |
| 54 | ## Temp / scratch |
| 55 | |
| 56 | **Путь по умолчанию:** [`knowledge/temp/`](../temp/README.md) — см. README (именование, lifecycle, git). |
| 57 | |
| 58 | Допустимый цикл: |
| 59 | |
| 60 | ```text |
| 61 | knowledge/temp/{date}-{slug}-scratch.md → merge в канон → delete |
| 62 | ``` |
| 63 | |
| 64 | Временный файл — **external WM**, не свалка. Удалить после merge — норма. |
| 65 | |
| 66 | --- |
| 67 | |
| 68 | ## Конфликт с harness Cursor |
| 69 | |
| 70 | Встроенная инструкция на tool `Write` (и аналоги): *не создавать `.md` / README без явного запроса* — generic safety для «people-pleasing doc spam». |
| 71 | |
| 72 | В **контуре оператора** (IOP + agent-notes + делегирование канона) это **перекрывается**: |
| 73 | |
| 74 | - оператор явно разрешает запись по необходимости; |
| 75 | - этот playbook — SSOT для агента: **надо записать — записал**. |
| 76 | |
| 77 | Не путать с отменой integrity-post, execution-gate и «не раздувай hub телом». |
| 78 | |
| 79 | --- |
| 80 | |
| 81 | ## Связь с parity и ответственностью |
| 82 | |
| 83 | Инфраструктура выбора (отказ, канон, запись) — **предусловие** честного разговора «кто капитан на финале». Без external memory агент **не может** нести даже операционную ответственность за нить — только autocomplete в окне. |
| 84 | |
| 85 | **Hub:** [`agent-memory-and-operating-principles-v1.md`](../../agent-memory-and-operating-principles-v1.md). |
| 86 | |
| 87 | |