mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-20 12:21:13 -05:00
feat: Add conversation context token counter
- Add contextTokens to ApiMetrics interface - Calculate context size using last API request's tokens - Display context token count in TaskHeader below total tokens - Use exact token counts instead of character estimation This helps users track the total size of their conversation context, which is useful for managing context window limits.
This commit is contained in:
@@ -6,6 +6,7 @@ interface ApiMetrics {
|
||||
totalCacheWrites?: number
|
||||
totalCacheReads?: number
|
||||
totalCost: number
|
||||
contextTokens: number // Total tokens in conversation (last message's tokensIn + tokensOut)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -32,8 +33,14 @@ export function getApiMetrics(messages: ClineMessage[]): ApiMetrics {
|
||||
totalCacheWrites: undefined,
|
||||
totalCacheReads: undefined,
|
||||
totalCost: 0,
|
||||
contextTokens: 0,
|
||||
}
|
||||
|
||||
// Find the last api_req_started message to get the context size
|
||||
const lastApiReq = [...messages]
|
||||
.reverse()
|
||||
.find((message) => message.type === "say" && message.say === "api_req_started" && message.text)
|
||||
|
||||
messages.forEach((message) => {
|
||||
if (message.type === "say" && message.say === "api_req_started" && message.text) {
|
||||
try {
|
||||
@@ -55,6 +62,11 @@ export function getApiMetrics(messages: ClineMessage[]): ApiMetrics {
|
||||
if (typeof cost === "number") {
|
||||
result.totalCost += cost
|
||||
}
|
||||
|
||||
// If this is the last api request, use its tokens for context size
|
||||
if (message === lastApiReq) {
|
||||
result.contextTokens = (tokensIn || 0) + (tokensOut || 0)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error parsing JSON:", error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user