← ClaudeAtlas

context-budgetlisted

基于 L0/L1/L2 分层摘要的上下文预算控制(受 OpenViking 启发)。从 `.agent/references/` 中按 L0 关键词筛选、L1 排序、最后才加载 L2 全文,将注入量控制在模型上下文窗口的 40% 以内。零额外 token(前端启发式),输出 context-manifest.json + retrieval trajectory。
Kucell/cortex-agent · ★ 1 · AI & Automation · score 74
Install: claude install-skill Kucell/cortex-agent
# 上下文预算控制 (Context Budget Skill) — L0/L1/L2 版 ## 目标 在 `/start-task` 的规划阶段,从 `.agent/references/` 中按层级选择最相关的上下文文档,将注入量控制在模型上下文窗口的 40% 以内。 ## 为什么升级到 L0/L1/L2 v0 的纯启发式算法对全量文档打分,无 L0/L1 摘要时需要在 budget 内逐个 keyword 匹配全文,导致大型项目 references/ > 50 时打分成本急剧上升。 受 OpenViking `viking://` 三层载荷启发,cortex-agent 引入 L0/L1: | 层 | 大小 | 用途 | 何时加载 | |---|---|---|---| | L0 abstract | ~100 tokens | 一句话摘要 | 总是加载(filter) | | L1 overview | ~2k tokens | 章节结构 + 关键段落 | 候选命中后加载(rerank) | | L2 detail | 全量 | 完整原文 | 预算允许 + 分数 ≥ 7 时加载 | L0/L1 摘要由 `scripts/build-l0l1.js` 离线生成(基于 frontmatter + 首段 + 标题大纲,**零 LLM 调用**),可作为 PostCommit hook 自动刷新。 ## 选择算法 ### Step 1:读取上下文索引 读取 `.agent/context-index.json`,获取所有 module 的元数据: - `l0` / `l1` 摘要(可选,没有时回退到 `summary`) - `l0_tokens` / `l1_tokens` / `l2_tokens` - `keywords` / `module_path` / `dependencies` 如果 `context-index.json` 不存在或为空,提示用户先运行 `/scan-project` + `build-l0l1.js --all`。 ### Step 2:L0/L1 关键词匹配 ``` score = L0 命中数 × 1 + L1 命中数 × 1 + 关键词命中数 × 0.5 路径前缀命中额外 +5 ``` > **关键差异(vs v0)**:v0 是全量文本匹配;v1 优先在 L0(~100 tokens)上匹配,未命中再扫 L1(~2k tokens),L2 仅在分数 ≥ 7 且预算允许时加载。**整轮打分成本近似 O(L0_sum),与 references/ 数量解耦**。 ### Step 3:依赖图扩展 对评分 ≥ 7 的模块,读取 `dependencies`,将直接依赖模块纳入候选集(分数设为 6)。 ### Step 4:分层预算分配 **预算计算**: - 总预算 = llm-window × 40% - 固定开销 = system(3000) + rules(5000) - 可用预算 = 总预算 - 固定开销 **分层策略**: | Tier | 分数 | 处理方式 | |---|---|---| | Tier 1 | ≥ 7 | 加载 L2 全文 | | Tier 2 | 4-6 | 加载 L1 概览(~2k tokens)而非 L2 | | Tier 3 | 1-3 | 仅 L0 一句话(~100 tokens) | Greedy 填充:按分数降序,分数相同