fix(coding-agent): avoid retrying successful overflow compaction
closes #5720
This commit is contained in:
@@ -1824,8 +1824,17 @@ export class AgentSession {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Case 1: Overflow - LLM returned context overflow error
|
||||
// Case 1: Overflow - LLM returned context overflow error, or reported usage exceeded
|
||||
// the configured window. A successful response over the configured window should compact
|
||||
// but must not retry: the assistant answer already completed and agent.continue() cannot
|
||||
// continue from an assistant message.
|
||||
if (sameModel && isContextOverflow(assistantMessage, contextWindow)) {
|
||||
const willRetry = assistantMessage.stopReason !== "stop";
|
||||
|
||||
if (!willRetry) {
|
||||
return await this._runAutoCompaction("overflow", false);
|
||||
}
|
||||
|
||||
if (this._overflowRecoveryAttempted) {
|
||||
this._emit({
|
||||
type: "compaction_end",
|
||||
@@ -1846,7 +1855,7 @@ export class AgentSession {
|
||||
if (messages.length > 0 && messages[messages.length - 1].role === "assistant") {
|
||||
this.agent.state.messages = messages.slice(0, -1);
|
||||
}
|
||||
return await this._runAutoCompaction("overflow", true);
|
||||
return await this._runAutoCompaction("overflow", willRetry);
|
||||
}
|
||||
|
||||
// Case 2: Threshold - context is getting large
|
||||
|
||||
Reference in New Issue
Block a user