mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 17:00:50 +00:00
fix(agents): prevent Bedrock replay death loop on empty assistant content (#71627)
* fix(agents): prevent Bedrock replay death loop on empty assistant content Fixes #71572 * docs: document Bedrock replay repair (#71627) (thanks @openperf) * fix(diagnostics): share diagnostic event state across sdk graphs --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
This commit is contained in:
@@ -8,11 +8,12 @@ title: "Transcript hygiene"
|
||||
---
|
||||
|
||||
This document describes **provider-specific fixes** applied to transcripts before a run
|
||||
(building model context). These are **in-memory** adjustments used to satisfy strict
|
||||
provider requirements. These hygiene steps do **not** rewrite the stored JSONL transcript
|
||||
on disk; however, a separate session-file repair pass may rewrite malformed JSONL files
|
||||
by dropping invalid lines before the session is loaded. When a repair occurs, the original
|
||||
file is backed up alongside the session file.
|
||||
(building model context). Most of these are **in-memory** adjustments used to satisfy
|
||||
strict provider requirements. A separate session-file repair pass may also rewrite
|
||||
stored JSONL before the session is loaded, either by dropping malformed JSONL lines or
|
||||
by repairing persisted turns that are syntactically valid but known to be rejected by a
|
||||
provider during replay. When a repair occurs, the original file is backed up alongside
|
||||
the session file.
|
||||
|
||||
Scope includes:
|
||||
|
||||
@@ -24,6 +25,7 @@ Scope includes:
|
||||
- Thought signature cleanup
|
||||
- Image payload sanitization
|
||||
- User-input provenance tagging (for inter-session routed prompts)
|
||||
- Empty assistant error-turn repair for Bedrock Converse replay
|
||||
|
||||
If you need transcript storage details, see:
|
||||
|
||||
@@ -132,6 +134,15 @@ external end-user instructions.
|
||||
- Tool result pairing repair and synthetic tool results.
|
||||
- Turn validation (merge consecutive user turns to satisfy strict alternation).
|
||||
|
||||
**Amazon Bedrock (Converse API)**
|
||||
|
||||
- Empty assistant stream-error turns are repaired to a non-empty fallback text block
|
||||
before replay. Bedrock Converse rejects assistant messages with `content: []`, so
|
||||
persisted assistant turns with `stopReason: "error"` and empty content are also
|
||||
repaired on disk before load.
|
||||
- Replay filters OpenClaw delivery-mirror and gateway-injected assistant turns.
|
||||
- Image sanitization applies through the global rule.
|
||||
|
||||
**Mistral (including model-id based detection)**
|
||||
|
||||
- Tool call id sanitization: strict9 (alphanumeric length 9).
|
||||
|
||||
Reference in New Issue
Block a user