1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| class ContextManager {
constructor(maxTokens = 4000) {
this.maxTokens = maxTokens;
this.messages = [];
}
addMessage(role, content) {
this.messages.push({ role, content });
this.truncate();
}
truncate() {
const totalTokens = this.estimateTokens(this.messages);
while (totalTokens > this.maxTokens) {
// 移除最早的消息,保留系统提示
this.messages.splice(1, 1);
}
}
estimateTokens(messages) {
return messages.reduce((sum, m) =>
sum + m.content.length / 4, 0
);
}
}
|