agentleFS
iAstroUnicorniAstroUnicorn/astro-skills/skills/context-guard/SKILL.md

context-guard

Skill0 starsChanged 4 months agoApache-2.0View on GitHub

防止上下文溢出的操作纪律,事前预防为主,事中监控为辅,事后交接兜底。

5 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

上下文防护

上下文是最宝贵的资源。 不是存储空间不够,而是注意力窗口有限。 事前预防 > 事中监控 > 事后交接。


核心原则

  1. 事前预防 - 能不读就不读,能少读就少读。
  2. 三级阈值、四级响应 - 60% / 80% / 90% 三级阈值,对应安全区/警戒区/危险区/溢出区四级响应,逐级收紧操作。
  3. 只留结论 - 原材料不进上下文,结论和来源才进。
  4. 子 Agent 分流 - 大任务拆给子 Agent,主流程只收汇总。

上下文使用率估算

由于无法直接读取 token 计数器,通过以下方式估算:

估算方法:

方式精度说明
消息条数估算粗每轮对话约 500-2000 tokens,根据轮数估算
已读文件行数中每行约 50-100 tokens,累计已读文件行数
输出长度估算粗长输出会快速消耗上下文

保守估算公式:

已用比例 = (对话轮数 × 1000 + 已读总行数 × 50) / 上下文窗口大小

注意:这是保守估算,实际用量可能更多。宁可高估,不要低估。


三级阈值、四级响应

🟢 安全区(< 60%)

正常操作,保持良好习惯:

  • 读文件前先看行数,超过 500 行只读需要的段落
  • 维护已读清单,同一文件不重复读取
  • 子 Agent 处理大文件,主流程只收结论

🟡 警戒区(60% - 80%)

收紧操作,避免溢出:

  • ❌ 禁止读取 > 200 行的文件(除非已有明确理由)
  • ❌ 禁止非必要的搜索和探索
  • ✅ 优先用摘要和结论,不看原始材料
  • ✅ 考虑启动交接准备
  • ✅ 清理不必要的中间输出

🔴 危险区(80% - 90%)

只做核心任务,停止一切旁支:

  • ❌ 停止非必要操作
  • ❌ 不再读取新文件
  • ✅ 只处理当前任务的核心部分
  • ✅ 准备交接文档
  • ✅ 主动告知用户:"上下文接近上限,正在准备交接"

💀 溢出区(> 90%)

立即交接,停止新增内容:

  • ⚠️ 立即停止新增读操作
  • 📝 输出交接文档(见下方模板)
  • 🙋 告知用户当前状态和已完成的工作
  • 🚫 不再承诺做新的事情

文件读取规则

大文件处理(> 500 行)

禁止做法:直接 Read 全文。

正确做法:

场景做法
知道大概在第几行Read 时指定 offset 和 limit
知道关键词用 Grep 搜索定位,再读对应段落
不知道位置先读目录/前 50 行/最后 50 行定位
需要整体理解交给子 Agent 处理,主流程只收结论

已读清单

维护一个已读文件列表,避免重复读取:

已读清单:
- [文件名]:[已读范围] / [核心结论]

例外情况(可以重读):

  • 文件已被修改(需要确认变更)
  • 之前读的部分不够,需要补读其他段落
  • 上下文已重置,之前的内容丢失了

注意:例外是例外,不是默认。能不重读就不重读。


子 Agent 分流

大任务拆给子 Agent,主流程只收结论,这是最有效的上下文节省方式。

什么时候用子 Agent

场景说明
大文件分析交给子 Agent 读完,返回结论摘要
多文件搜索交给子 Agent 搜索汇总,返回结果清单
代码重构交给子 Agent 执行修改,返回变更 diff
长文档总结交给子 Agent 阅读,返回要点

子 Agent 指令要点

  • 明确告诉子 Agent:返回结论,不要返回原始材料
  • 明确输出格式:结构化、要点化
  • 明确来源追溯:每个结论要标注来自哪里

与 semantic-stitching-guard 的协同

两者共享一条铁律:原材料不进上下文,结论才进。

context-guardsemantic-stitching-guard
控制读什么、读多少控制写出来的推理结构
防止数量溢出防止质量熔合
少读 → 省空间分置 → 防幻觉

协同效应:读得少 + 写得清 = 上下文既够用又可靠。


交接文档模板

上下文快溢出时,输出交接文档,让后续 Agent/会话可以接手。

📋 交接文档

【当前状态】
- 任务:[正在做什么]
- 已完成:[已完成的部分]
- 未完成:[还没做的部分]
- 上下文使用率:约 X%

【已读文件】
- [文件1]:[已读范围] / [核心结论]
- [文件2]:[已读范围] / [核心结论]

【遇到的问题】
- [问题1]:[描述]
- [问题2]:[描述]

【下一步建议】
- [建议1]
- [建议2]

【关键决策点】
- [已做的决策]:[为什么这么决策]

防幻觉 7 条铁律

上下文紧张时更容易产生幻觉,额外注意:

  1. 没读过的不开口 — 不确定就说不知道,别编
  2. 不确定的标注 — 推测的内容明确标注"推测"
  3. 来源必追溯 — 每个事实都能追溯到来源
  4. 不补全缺失 — 信息不全就说不全,别脑补
  5. 记忆不靠谱 — 只信当前上下文里的东西,不信"我记得"
  6. 数字要核实 — 涉及数字、版本号、日期,重读确认
  7. 引用要准确 — 不要"转述",要引用原文

最小执行单元

输入:

  • 当前任务目标、已读文件范围、预计还需读取的材料。

执行:

  • 判断上下文压力区间。
  • 对大文件先定位后分段读取。
  • 维护已读清单,避免无理由重复读。

输出:

  • 已读范围。
  • 当前核心结论。
  • 是否需要交接或子 Agent 分流。

完成标准:

  • 核心任务所需信息足够。
  • 没有把大段原材料塞进上下文。
  • 接近上限时已给出可接续交接文档。

失败处理:

  • 信息不足:只补读最小必要片段。
  • 上下文过载:停止新增读取,输出交接。
  • 任务过大:拆给子 Agent 或分阶段处理。

禁止事项

  • ❌ 超过 500 行的文件直接读全文
  • ❌ 同一文件无理由重复读取
  • ❌ 上下文 80% 了还在新开搜索
  • ❌ 把大段原始材料贴进对话
  • ❌ 溢出了还硬撑着不交接
  • ❌ 为了"显得完整"而输出冗余内容

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.