Состояние на диске — переживёт любое сжатие
«State that survives compression — because it's outside the conversation.»
Чем Task отличается от TodoWrite?
TodoManager из s03 тоже хранит список задач — но только в памяти. Как только auto_compact из s06 срабатывает и messages[] заменяется summary, состояние TodoManager исчезает вместе с контекстом (потому что оно в памяти).
Task в s07 другой: каждая задача — это файл .tasks/task_42.json. Сожмите контекст, перезапустите процесс, замените агента — пока файлы на диске, задачи живут.
# .tasks/task_12.json { "id": 12, "subject": "Refactor auth middleware", "description": "Extract JWT logic to shared module", "status": "pending", "blockedBy": [8, 11], # задачи #8 и #11 должны быть завершены сначала "owner": "" }
Правило выбора: временные задачи (нужны только сейчас) — используйтеtodo; постоянные задачи (нужны между сессиями, с зависимостями) — используйтеtask.
blockedBy · как работает граф зависимостей
blockedBy — список id задач, которые должны быть completed, прежде чем текущая задача станет исполняемой.
Элегантная деталь реализации в s07: при завершении задачи она автоматически убирается из списка blockedBy всех других задач.
def _clear_dependency(self, completed_id: int): # Scan every task, remove completed_id from their blockedBy for f in self.dir.glob("task_*.json"): task = json.loads(f.read_text()) if completed_id in task.get("blockedBy", []): task["blockedBy"].remove(completed_id) self._save(task)
Поэтому агенту не нужна отдельная таблица «что разблокировалось» — достаточно пройти по .tasks/ и найти записи с status=="pending" and not blockedBy.
Интерактивный граф зависимостей
Виджет ниже: 5 задач с зависимостями. Нажмите «complete» и наблюдайте, как blockedBy обновляется автоматически, а задачи становятся исполняемыми (зелёная подсветка).
Переживёт ли task сжатие контекста?
В s06 мы видели, как auto_compact заменяет messages[] на summary. Но задачи не пострадают — они на диске. Проверим: создадим 5 задач, сожмём диалог, потом агент снова сканирует .tasks/ и продолжает работу.