Перейти к содержимому
FRGEPLAN

forgeplan_release

Удаляет файл клейма по адресу .forgeplan/claims/<id>.yaml. По умолчанию вызов отказывается работать, если клейм держит другой агент - передайте force: true (escape hatch оркестратора), чтобы переопределить после краша суб-агента. Отсутствие клейма - no-op (идемпотентно). Удерживает workspace-lock на время записи, чтобы конкурентные claim/release-вызовы не могли чередоваться.

Категория: Multi-agent

  • Работник заканчивает артефакт и освобождает слот для следующего раунда диспатча.
  • Работник упал / превысил TTL - оркестратор force-релизит с agent: null, force: true.
  • Ошибочный клейм: агент схватил не тот ID, немедленно релизит для повтора.
  • Уборка в конце сессии: пройтись по активным клеймам и снять каждый перед выходом.
ИмяТипОбязательноОписание
idstringyesID артефакта, чей клейм снять.
agentstringnoИдентичность агента (должна совпадать с держателем, если не задано force: true). По умолчанию - clientInfo MCP-вызывающего.
forceboolno (default false)Force-release независимо от держателя - override оркестратора для упавших суб-агентов.

Источник схемы: crates/forgeplan-mcp/src/types.rs::ReleaseParams

{
"id": "PRD-057",
"released": true,
"force": false,
"_next_action": "Released claim on `PRD-057`."
}

Сбой, когда не держатель и без force:

{
"ok": false,
"error": "claim held by worker-2, not you",
"_next_action": "Use `force: true` (orchestrator override) if the holder has crashed."
}

Работник релизит после работы:

{ "id": "PRD-057" }

Оркестратор подбирает упавшего суб-агента:

{ "id": "RFC-012", "force": true }

Явная идентичность для shell-driven оркестраторов:

{ "id": "SPEC-018", "agent": "worker-2" }
  1. forgeplan_dispatch → бакеты на агента.
  2. forgeplan_claim → работник лочит голову своего бакета.
  3. Работник делает работу с артефактом / кодом.
  4. forgeplan_release → освободить слот.
  5. Оркестратор пере-диспатчит.

forgeplan release <id> - те же семантики.