Ежедневный рабочий процесс

Исходный файл на GitHub

Это руководство проходит воспроизводимую ежедневную рутину с AWR: проверьте состояние проекта, захватите или возобновите задачу, записывайте прогресс, создавайте контрольные точки и передавайте работу так, чтобы вы — или агент — могли продолжить ровно с того места, где всё остановилось.

Прежде чем начать, убедитесь, что ваш проект инициализирован и вы знаете основные концепции (элементы работы, сессии, захваты, контрольные точки) — см. Быстрый старт и Концепции. Та же рутина работает через MCP; см. MCP.

Замечание о версиях: некоторые возможности ниже (представление action и work edit) отражают текущее дерево исходников и могут быть не включены в выпущенный пакет. Выполните awr --help, чтобы увидеть, что поддерживает ваша установка.

1. Начните день: найдите следующее действие

Перед чем-либо ещё выполните проверку статуса:

awr status

awr status и инструмент MCP awr_project_status по умолчанию используют представление action (view="action"). Оно разделяет вашу открытую работу на четыре очереди, с не более чем пятью записями на очередь плюс точные счётчики всего и опущенных:

ОчередьЗначениеЧто вы делаете
currentАктивная или захваченная работа без известного ожидания или блокировкиПродолжите с владеющей сессией или явно возобновите её
readyСтруктура и готовность к захвату проходят обе проверкиПодготовьте контекст и получите владение
waitingОжидание пользователя, неразрешённая запись выполнения или незавершённая зависимостьПолучите ответ или проинспектируйте предварительное условие перед повтором
blockedНедопустимая структура, недоступные зависимости, проблемы источника или явные блокировкиПроинспектируйте указанную работу и устраните причину

Сузьте выбор повторяемыми селекторами — они пересекаются:

awr status --work GUIDE-1 --goal GOAL-1 --milestone M1

Очередь — это навигация, а не авторизация: захваты и проверки завершения по- прежнему обеспечиваются собственными действиями. awr ready сохраняет своё более узкое значение — пригодность для нового захвата — и опускает работу в процессе.

2. Захватите или возобновите задачу

Настройте один раз на оболочку, чтобы каждая команда была привязана к проекту и выводила JSON:

AWR_BIN=/absolute/path/to/awr
AWR_PROJECT=/absolute/path/to/initialized/project
AWR_WORK=EXAMPLE-001
AWR_AGENT=agent-primary
AWR_MODEL=your-current-model
AWR_NOTES=$(mktemp -d "${TMPDIR:-/tmp}/awr-session.XXXXXX")
awrj() { "$AWR_BIN" --project "$AWR_PROJECT" --json "$@"; }

Новая работа, захваченная под новой сессией:

AWR_REV=$(awrj status | jq -er '.project_revision')
awrj session start --work "$AWR_WORK" --agent "$AWR_AGENT" \
  --provider generic --model "$AWR_MODEL" --claim --ttl-ms 3600000 \
  --expected-revision "$AWR_REV" > "$AWR_NOTES/start.json"
AWR_SESSION=$(jq -er '.session.id' "$AWR_NOTES/start.json")

Захват — это владение во время выполнения; он не переписывает статус работы в источнике. Если сессия для работы уже существует, проинспектируйте её через session show и подтвердите владение — другой агент или модель продолжает через session resume в свою собственную сессию.

3. Скомпилируйте ваш контекст

Перед редактированием соберите контекстный пакет для сессии:

awrj context bootstrap --session "$AWR_SESSION" --budget 1000 \
  > "$AWR_NOTES/bootstrap.json"
jq -e '.context.complete' "$AWR_NOTES/bootstrap.json"

awrj context compile --work "$AWR_WORK" --session "$AWR_SESSION" \
  --budget 5000 > "$AWR_NOTES/context.json"
jq -e '.completeness.complete and (.work_context != null)' "$AWR_NOTES/context.json"

Читайте пакет, а не только булево значение. При BudgetExceeded расширьте бюджет или сузьте область; при SourceStale сначала выполните awr source reindex.

4. Работайте, затем создайте контрольную точку

Записывайте то, что действительно произошло — неудачи, недостающий контекст и открытые петли:

AWR_CONTEXT_HASH=$(jq -er '.work_context.context_hash' "$AWR_NOTES/context.json")
AWR_REV=$(awrj status | jq -er '.project_revision')
awrj session checkpoint --session "$AWR_SESSION" --agent "$AWR_AGENT" \
  --context-hash "$AWR_CONTEXT_HASH" \
  --digest "Record the work actually done; do not invent a passing review." \
  --next-action "State the exact next operator or agent action." \
  --open-loop "List every unresolved loop." \
  --expected-project-revision "$AWR_REV" > "$AWR_NOTES/checkpoint.json"

Несколько вещей, которые нужно понимать о контрольных точках:

  • --agent — это заявление вызывающего. Не совпадающее с сессией отклоняется с рекомендацией по возобновлению; совпадающее остаётся непроверенным — CLI не может аутентифицировать реальную модель за меткой. Если его опустить, происхождение записывается как undeclared.
  • Выжимка и хеш контекста — ваши утверждения. Используйте реальный последний использованный хеш; сохранённая контрольная точка не доказывает проверенный контекст, проходящие тесты или завершённую работу.
  • Для защиты по ревизии используйте project_revision верхнего уровня из session show, а не session.revision. При конфликте проинспектируйте промежуточные изменения перед повтором.
  • Контрольная точка никогда не переписывает следующее действие, подкреплённое источником. Чтобы изменить контракт, отредактируйте авторитетный источник.

5. Исправляйте мелкие поля без ручного редактирования YAML

Когда исходный план требует небольшой правки — скажем, источник говорит «Draft the guide», а реальный следующий шаг — «Review the conclusion» — просмотрите правку предварительно:

awr --json work edit GUIDE-1 --request-key guide-next-1 --actor writer \
  --reason 'Clarify the review step' --next-action 'Review the conclusion'

Ответ показывает место в источнике, старое и новое значения и отпечатки, с которыми принимать. Проверьте их, затем повторите команду, добавив:

--accept --source-fingerprint SOURCE_FINGERPRINT \
--expected-preview PREVIEW_FINGERPRINT --expected-revision REVISION

Поддерживаемые поля: --title, --summary, --priority и --next-action. После неопределённого ответа проверьте host status --key guide-next-1; правка поля никогда не меняет владение, жизненный цикл или верификацию.

6. Завершите сессию — или передайте её

Когда вы заканчиваете на день:

AWR_REV=$(awrj status | jq -er '.project_revision')
awrj session end --session "$AWR_SESSION" --outcome incomplete \
  --expected-revision "$AWR_REV"

Завершение освобождает захват; оно не завершает работу в источнике. Ваша контрольная точка из шага 4 — то, что позволяет работе возобновиться чисто.

7. Продолжите с того места, где остановились вы (или агент)

Позже — или от другого агента — возобновите из сессии-предшественника:

AWR_PREDECESSOR=the-recorded-awr-session-id
awrj session show "$AWR_PREDECESSOR"
AWR_REV=$(awrj status | jq -er '.project_revision')
awrj session resume --from-session "$AWR_PREDECESSOR" \
  --agent "$AWR_AGENT" --provider generic --model "$AWR_MODEL" \
  --budget 5000 --expected-revision "$AWR_REV" > "$AWR_NOTES/resume.json"
jq -e '.context_ready' "$AWR_NOTES/resume.json"
AWR_SESSION=$(jq -er '.resumed.session.id' "$AWR_NOTES/resume.json")

Возобновление создаёт новую сессию AWR; оно не переключает нативный чат вашего хоста. Затем скомпилируйте контекст снова (шаг 3) и продолжайте. После компактификации хоста, если та же сессия AWR всё ещё активна, просто скомпилируйте снова — приберегите session resume для реальной передачи.

Чтобы сравнить план с последним записанным, проверьте объект progress, предоставляемый status --view action и work show KEY:

  • source_next_action — авторитетный текст из исходного плана, с его указателем места, ревизией источника и свежестью.
  • latest_checkpoint_next_action — самая последняя контрольная точка для этой точной работы, ветки и владения, или null, если её нет.
  • differs_from_source — истинно, когда текст контрольной точки расходится с источником. Наблюдение, а не проблема: сохранение прогресса никогда не изменяет исходный контракт и не устанавливает завершение.

Текст прогресса ограничен 240 символами (помечается truncated); используйте work show KEY и session show SESSION для полного текста.

Когда что-то идёт не так

  • Неопределённый ответ на сохранение → проверьте host status --key REQUEST_KEY; используйте host recover только для проинспектированной ожидающей операции.
  • Конфликт ревизий → прочитайте status для текущей project_revision и повторите с ней.
  • Подозрительная контрольная точка → прочитайте полную запись через session show SESSION; прерванное сохранение без квитанции о завершении — не контрольная точка восстановления.

О других режимах отказа см. Устранение неполадок. О словаре этой рутины см. Концепции.