From 87c5e5439144ddcd03dc0f5f2bafc2e087e6db46 Mon Sep 17 00:00:00 2001 From: 7Sageer <7sageer@djwcb.cn> Date: Wed, 17 Jun 2026 19:32:44 +0800 Subject: [PATCH 1/3] feat(agent-core): record context length before and after micro compaction --- .../record-micro-compaction-context-length.md | 6 ++++++ packages/agent-core/src/agent/compaction/micro.ts | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 .changeset/record-micro-compaction-context-length.md diff --git a/.changeset/record-micro-compaction-context-length.md b/.changeset/record-micro-compaction-context-length.md new file mode 100644 index 000000000..412a15272 --- /dev/null +++ b/.changeset/record-micro-compaction-context-length.md @@ -0,0 +1,6 @@ +--- +"@moonshot-ai/agent-core": patch +"@moonshot-ai/kimi-code": patch +--- + +Record context token length before and after micro compaction. diff --git a/packages/agent-core/src/agent/compaction/micro.ts b/packages/agent-core/src/agent/compaction/micro.ts index da352db69..e08e5e9ce 100644 --- a/packages/agent-core/src/agent/compaction/micro.ts +++ b/packages/agent-core/src/agent/compaction/micro.ts @@ -2,7 +2,10 @@ import type { ContentPart } from '@moonshot-ai/kosong'; import type { Agent } from '..'; import type { ContextMessage } from '../context'; -import { estimateTokensForContentParts } from '../../utils/tokens'; +import { + estimateTokensForContentParts, + estimateTokensForMessages, +} from '../../utils/tokens'; export interface MicroCompactionConfig { keepRecentMessages: number; @@ -65,9 +68,17 @@ export class MicroCompaction { this.apply(nextCutoff); if (previousCutoff !== nextCutoff) { const effect = this.measureEffect(history, nextCutoff); + // Whole-context length before/after trimming, mirroring the + // `tokensBefore`/`tokensAfter` fields on `compaction_finished` so the + // two compaction paths can be compared on the same axis. + const contextTokensBefore = estimateTokensForMessages(history); + const contextTokensAfter = + contextTokensBefore - effect.beforeTokens + effect.afterTokens; this.agent.telemetry.track('micro_compaction_applied', { ...config, ...effect, + contextTokensBefore, + contextTokensAfter, previous_cutoff: previousCutoff, cutoff: nextCutoff, message_count: history.length, From 9bf5c530d6546d6782b8a006846c881a1811a309 Mon Sep 17 00:00:00 2001 From: 7Sageer <7sageer@djwcb.cn> Date: Wed, 17 Jun 2026 19:33:49 +0800 Subject: [PATCH 2/3] test(agent-core): assert context length fields in micro compaction telemetry --- packages/agent-core/test/agent/compaction/micro.test.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/agent-core/test/agent/compaction/micro.test.ts b/packages/agent-core/test/agent/compaction/micro.test.ts index bcdeb327e..033333188 100644 --- a/packages/agent-core/test/agent/compaction/micro.test.ts +++ b/packages/agent-core/test/agent/compaction/micro.test.ts @@ -480,10 +480,15 @@ describe('MicroCompaction', () => { truncatedToolResultCount: 2, beforeTokens: expect.any(Number), afterTokens: expect.any(Number), + contextTokensBefore: expect.any(Number), + contextTokensAfter: expect.any(Number), }); expect(numberProperty(event, 'beforeTokens')).toBeGreaterThan( numberProperty(event, 'afterTokens'), ); + expect(numberProperty(event, 'contextTokensBefore')).toBeGreaterThan( + numberProperty(event, 'contextTokensAfter'), + ); expect(ctx.agent.context.messages).toHaveLength(9); expect(records.filter((record) => record.event === 'micro_compaction_applied')).toHaveLength(1); From 608a811648e9c59a001ae11b12294d7b1b0687b6 Mon Sep 17 00:00:00 2001 From: 7Sageer <7sageer@djwcb.cn> Date: Wed, 17 Jun 2026 20:12:57 +0800 Subject: [PATCH 3/3] chore: drop changeset for telemetry-only change --- .changeset/record-micro-compaction-context-length.md | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .changeset/record-micro-compaction-context-length.md diff --git a/.changeset/record-micro-compaction-context-length.md b/.changeset/record-micro-compaction-context-length.md deleted file mode 100644 index 412a15272..000000000 --- a/.changeset/record-micro-compaction-context-length.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@moonshot-ai/agent-core": patch -"@moonshot-ai/kimi-code": patch ---- - -Record context token length before and after micro compaction.