autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
38 lines (37 loc) • 1.17 kB
JavaScript
/**
* TokenBudget — Token 预算控制
*
* token 估算统一使用 shared/token-utils(CJK 感知),
* 用于确保 .mdc 文件不超出 Cursor 上下文预算。
*/
import { estimateTokens } from '../../shared/token-utils.js';
export { estimateTokens };
/** 默认预算配置 */
export const BUDGET = {
CHANNEL_A_MAX: 800, // Always-On Rules 最大 token (8→15条扩容)
CHANNEL_B_MAX_PER_FILE: 750, // Smart Rules 每个主题文件最大 token
CHANNEL_B_MAX_PATTERNS: 5, // Smart Rules 每个主题最多模式数
CHANNEL_A_MAX_RULES: 15, // Always-On Rules 最多规则数 (8→15扩容)
};
/**
* 按 token 预算截断内容行
* @param lines 内容行
* @param budget token 上限
* @returns }
*/
export function truncateToTokenBudget(lines, budget) {
const kept = [];
let tokensUsed = 0;
let dropped = 0;
for (const line of lines) {
const lineTokens = estimateTokens(line);
if (tokensUsed + lineTokens <= budget) {
kept.push(line);
tokensUsed += lineTokens;
}
else {
dropped++;
}
}
return { kept, dropped, tokensUsed };
}