Это пошаговое руководство проведёт вас от свежей установки AWR до проверенной передачи сессии: установите CLI, инициализируйте проект, начните рабочую сессию и докажите, что сессия-преемник может продолжить с того места, где остановилась первая. Всё можно копировать и запускать; AWR поставляется со своим SQLite.
1. Установите AWR
AWR поставляется как нативные пакеты в npm и PyPI. Оба канала устанавливают один и тот же Rust CLI (awr) и MCP-сервер (awr-mcp); отдельного JavaScript- или Python-SDK нет.
Через npm (требуется Node 22.14 или новее):
npm install -g @originoneai/agent-work-runtime@0.5.1
Или через pip, внутри виртуального окружения (требуется Python 3.9 или новее):
python -m pip install agent-work-runtime==0.5.1
Проверьте оба исполняемых файла:
awr --version
awr-mcp --version
Поддерживаемые платформы: macOS 15+ (arm64 и Intel x64), Linux x64 и arm64 с glibc 2.39 или новее (базовый уровень Ubuntu 24.04) и Windows x64. В Linux сначала проверьте свою glibc:
ldd --version | head -n 1
При установке через npm не отключайте опциональные зависимости — загрузчик разрешает нативный пакет для конкретной платформы. Нет ни установочного скрипта, ни сетевого загрузчика; wheel-пакеты pip встраивают бинарные файлы. Существует третий канал для авторов приложений: закреплённая нативная полезная нагрузка из двух бинарных файлов, которую хост-приложение может встроить, чтобы его пользователям не нужны были Node, Python или Rust во время выполнения.
2. Инициализируйте ваш проект
Инициализация — операция из двух шагов: предпросмотр, затем явное принятие. Ничего не записывается, пока вы не передадите --accept.
AWR_PROJECT=/absolute/path/to/your/project
awr --project "$AWR_PROJECT" init
Прочитайте предпросмотр: он показывает найденный AWR инвентарь — существующие Markdown-реестры задач, YAML-источники, цели — и предлагаемое отображение источников. Существующие файлы никогда не перезаписываются; ваши исходные документы остаются авторитетными. Если предпросмотр выглядит правильно, примите его:
awr --project "$AWR_PROJECT" init --accept
Для пустого проекта укажите его назначение сразу:
awr --project "$AWR_PROJECT" init --goal "Deliver a document portal" --accept
Если ваш Markdown-реестр использует нестандартные слова статусов, сопоставьте их во время инициализации:
awr --project "$AWR_PROJECT" init \
--status-map pending=planned --status-map complete=completed --accept
Затем посмотрите отчёт об организации:
awr --project "$AWR_PROJECT" intake inspect --json
Поле organization.state отчёта говорит, где вы находитесь: ready означает, что хотя бы у одной задачи есть объявленная в источнике цель, критерии приёмки, следующее действие и разрешённые предварительные условия. needs_organization означает, что чего-то не хватает — упорядоченный список actions отчёта подскажет, что добавить в исходные файлы.
3. Начните рабочую сессию
Сессия — единица владения работой в AWR. Эти команды используют небольшой помощник оболочки, чтобы каждый вызов нёс путь к проекту и вывод JSON:
AWR_BIN=$(command -v awr)
AWR_WORK=INTAKE-001 # a task key from your intake report
AWR_AGENT=agent-primary # a label for who is working
AWR_MODEL=your-current-model # a recorded label; AWR does not invoke the model
AWR_NOTES=$(mktemp -d "${TMPDIR:-/tmp}/awr-session.XXXXXX")
awrj() { "$AWR_BIN" --project "$AWR_PROJECT" --json "$@"; }
Проверьте, что исполняемо, затем начните сессию с захватом (владением элементом работы во время выполнения) и текущей ревизией проекта:
awrj ready
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")
Скомпилируйте рабочий контекст — цель, критерии приёмки, записанные факты и историю, собранные в ограниченный пакет:
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 расширьте --budget; при SourceStale выполните awrj 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"
Контрольная точка может фиксировать незавершённую работу; она не является доказательством прохождения тестов или выполнения критериев приёмки.
5. Продолжите работу в новой сессии
Чтобы доказать, что продолжение работает, завершите первую сессию и возобновите работу из неё — тем же путём передачи, который использовал бы новый агент, машина или диалог хоста. Завершение освобождает захват; оно не помечает работу в источнике как завершённую:
AWR_REV=$(awrj status | jq -er '.project_revision')
awrj session end --session "$AWR_SESSION" --outcome incomplete \
--expected-revision "$AWR_REV"
Теперь возобновите. Любой агент — другой или тот же самый позже — создаёт сессию-преемника из предшественницы:
AWR_PREDECESSOR="$AWR_SESSION"
awrj session show "$AWR_PREDECESSOR"
AWR_REV=$(awrj status | jq -er '.project_revision')
awrj session resume --from-session "$AWR_PREDECESSOR" \
--agent successor --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")
Две проверки подтверждают, что передача сработала:
jq -e '.context_ready'завершается с кодом 0: преемник получил записанный контекст предшественника, включая последнюю успешную контрольную точку.- У возобновлённой сессии новый ID — возобновление создаёт новую сессию AWR, а не изменяет старую.
Вы также можете в любое время посмотреть состояние восстановления в режиме только чтения:
awrj recovery inspect --session "$AWR_SESSION"
Работаете внутри чата агента для программирования? Привяжите диалог хоста к сессии AWR, чтобы контрольные точки переживали компактификацию хоста:
awrj client bind --client generic --external-session "myhost:$HOST_CONVERSATION_ID" \
--work "$AWR_WORK" --session "$AWR_SESSION"
AWR не переносит память процесса хоста и не берёт под контроль произвольные существующие процессы — непрерывность возникает из того, что было явно записано.
Куда двигаться дальше
- Концепции — что означают сессии, захваты и контрольные точки.
- Справочник CLI — полная поверхность команд, использованных выше.
- Ежедневный рабочий процесс — этот цикл в повседневной работе.
- Устранение неполадок — когда что-то сообщает о неожиданном.