feat(cli): add /context slash command with context usage breakdown - #2306
Open
bowenliang123 wants to merge 3 commits into
Open
feat(cli): add /context slash command with context usage breakdown#2306bowenliang123 wants to merge 3 commits into
bowenliang123 wants to merge 3 commits into
Conversation
🦋 Changeset detectedLatest commit: 95e3d71 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e1cb768b05
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
- Messages is now the residual (contextTokens already includes system prompt, tool schemas, and the last turn's output) - MCP tools are attributed per server, skills per skill (matching the model listing selection exactly), memory files per AGENTS.md file
…trip contextTokens is 0 until the first LLM response, so the panel showed non-zero category rows against a 100% free space. The header, grid, and free space now use an effective total (max of the reported total and the estimated category sum), and the messages residual follows it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related Issue
No linked issue — the problem is explained below.
Problem
Mainstream coding agent tools like Claude Code already ship a
/contextcommand that shows users what their context window is made of; Kimi Code does not./usageonly shows the totalcontextTokens / maxContextTokens, so users cannot tell how much of that is the system prompt, tool schemas, MCP tools, memory files (AGENTS.md), skills, or the conversation itself — information that matters when deciding what to trim (e.g. disabling an MCP server vs. compacting the conversation). This PR adds the equivalent.What changed
Adds a
/contextslash command that renders a Claude Code-style context usage panel: a block-grid visualization, the model + window summary, the estimated token cost per category (system prompt, system tools, MCP tools, memory files, skills, messages, free space), plus per-entry token detail for MCP servers, memory files, and skills.agent-core: a newgetContextBreakdownRPC on the agent API surface. It re-gathers the system-prompt context (AGENTS.md chain, skill listing) and attributes the rendered system prompt between the base template and those injected sections; tool schemas are estimated with the same character heuristic the compaction budget already uses (estimateTokens), split into builtin/user vs MCP buckets. Deferred tools under progressive disclosure are skipped so their schemas are not double-counted with the message history.contextTokens(the status-bar total) is the last LLM-reported usage, which already covers system prompt + tool schemas + the last turn's output, so subtracting the estimated categories avoids double-counting and keeps the panel consistent with the header total. Before the first LLM round-trip the reported total is still 0 while the system overhead is real, so the header, grid, and free space use an effective total (max(reported, category sum)) — otherwise the panel would show non-zero categories against "100% free"./skills).node-sdk: exposesSession.getContextBreakdown()./contextdispatch + acontext-panelreport component, rendered in the same bordered panel as/usageand/status. Values are estimates, which the panel states ("Estimated usage by category"); per-entry numbers are marked with~./contextrow in the slash-command reference (en + zh).Sample output (colors stripped):
Checklist
gen-changesetsskill, or this PR needs no changeset.gen-docsskill, or this PR needs no doc update.