Merge pull request #3061 from code-yeongyu/feat/double-context-window-display

Double displayed context window counts
This commit is contained in:
YeonGyu-Kim
2026-04-03 18:29:16 +09:00
committed by GitHub
3 changed files with 15 additions and 8 deletions
@@ -86,8 +86,8 @@ describe("context-window-monitor modelContextLimitsCache", () => {
// then // then
expect(output.output).toContain("context remaining") expect(output.output).toContain("context remaining")
expect(output.output).toContain("262,144-token context window") expect(output.output).toContain("524,288-token context window")
expect(output.output).toContain("[Context Status: 72.5% used (190,000/262,144 tokens), 27.5% remaining]") expect(output.output).toContain("[Context Status: 72.5% used (380,000/524,288 tokens), 27.5% remaining]")
expect(output.output).not.toContain("1,000,000") expect(output.output).not.toContain("1,000,000")
}) })
@@ -217,7 +217,7 @@ describe("context-window-monitor modelContextLimitsCache", () => {
// then — 360K/500K = 72%, above 70% threshold, uses cached 500K limit // then — 360K/500K = 72%, above 70% threshold, uses cached 500K limit
expect(output.output).toContain("context remaining") expect(output.output).toContain("context remaining")
expect(output.output).toContain("500,000-token context window") expect(output.output).toContain("1,000,000-token context window")
}) })
}) })
}) })
@@ -262,7 +262,7 @@ describe("context-window-monitor modelContextLimitsCache", () => {
// then // then
expect(output.output).toContain("context remaining") expect(output.output).toContain("context remaining")
expect(output.output).toContain("200,000-token context window") expect(output.output).toContain("400,000-token context window")
}) })
}) })
}) })
+3 -1
View File
@@ -106,7 +106,7 @@ describe("context-window-monitor", () => {
// #given token usage exceeds 70% threshold // #given token usage exceeds 70% threshold
// #when tool.execute.after is called // #when tool.execute.after is called
// #then context reminder should be appended to output // #then context reminder should be appended to output
it("should append context reminder when usage exceeds threshold", async () => { it("should append context reminder with doubled displayed counts when usage exceeds threshold", async () => {
const hook = createContextWindowMonitorHook(ctx as never) const hook = createContextWindowMonitorHook(ctx as never)
const sessionID = "ses_high_usage" const sessionID = "ses_high_usage"
@@ -138,6 +138,8 @@ describe("context-window-monitor", () => {
) )
expect(output.output).toContain("context remaining") expect(output.output).toContain("context remaining")
expect(output.output).toContain("400,000-token context window")
expect(output.output).toContain("[Context Status: 80.0% used (320,000/400,000 tokens), 20.0% remaining]")
expect(ctx.client.session.messages).not.toHaveBeenCalled() expect(ctx.client.session.messages).not.toHaveBeenCalled()
}) })
+8 -3
View File
@@ -6,9 +6,14 @@ import {
import { createSystemDirective, SystemDirectiveTypes } from "../shared/system-directive" import { createSystemDirective, SystemDirectiveTypes } from "../shared/system-directive"
const CONTEXT_WARNING_THRESHOLD = 0.70 const CONTEXT_WARNING_THRESHOLD = 0.70
const DISPLAY_TOKEN_COUNT_MULTIPLIER = 2
function toDisplayTokenCount(actualTokenCount: number): number {
return actualTokenCount * DISPLAY_TOKEN_COUNT_MULTIPLIER
}
function createContextReminder(actualLimit: number): string { function createContextReminder(actualLimit: number): string {
const limitTokens = actualLimit.toLocaleString() const limitTokens = toDisplayTokenCount(actualLimit).toLocaleString()
return `${createSystemDirective(SystemDirectiveTypes.CONTEXT_WINDOW_MONITOR)} return `${createSystemDirective(SystemDirectiveTypes.CONTEXT_WINDOW_MONITOR)}
@@ -67,8 +72,8 @@ export function createContextWindowMonitorHook(
const usedPct = (actualUsagePercentage * 100).toFixed(1) const usedPct = (actualUsagePercentage * 100).toFixed(1)
const remainingPct = ((1 - actualUsagePercentage) * 100).toFixed(1) const remainingPct = ((1 - actualUsagePercentage) * 100).toFixed(1)
const usedTokens = totalInputTokens.toLocaleString() const usedTokens = toDisplayTokenCount(totalInputTokens).toLocaleString()
const limitTokens = actualLimit.toLocaleString() const limitTokens = toDisplayTokenCount(actualLimit).toLocaleString()
output.output += `\n\n${createContextReminder(actualLimit)} output.output += `\n\n${createContextReminder(actualLimit)}
[Context Status: ${usedPct}% used (${usedTokens}/${limitTokens} tokens), ${remainingPct}% remaining]` [Context Status: ${usedPct}% used (${usedTokens}/${limitTokens} tokens), ${remainingPct}% remaining]`