agentleFS
liushikuan63liushikuan63/Qoder-Optimization/skills/injected-context-slimming/SKILL.md

injected-context-slimming

Skill2 starsChanged 11 days agoMITView on GitHub

每轮注入文件(AGENTS.md / MEMORY.md / 索引领航类长文)的无损瘦身流水线:先量化再动手 → 备份 → 只压叙述不删判据 → 覆盖断言逐条证明没丢 → 双侧同写验收。触发词:阅读压力、上下文太大、AGENTS 太长、MEMORY 超行、规则文件瘦身、压缩规则、注入体积、降 token、超红线转索引。不用于:技能描述瘦身(→skill-description-route-cue-rewrite)、技能降量(→skill-trim-with-capability-transfer)、两侧记忆不一致(→memory-bank-divergence-repair)。

The file

Files
SKILL.md

注入文件无损瘦身

适用

每会话/每轮被整份注入的文件需要降体积,但不能靠"感觉精简":手工压缩会静默丢阈值、命令或硬禁止词。本技能的核心是「覆盖断言」——把旧文件的可检验要素抽出来,逐条断言新文件仍在。

红线参考:AGENTS.md 目标 ≤160 行 / 硬线 190;MEMORY.md ≤200 行(超了客户端只加载一部分,条目会静默丢)。判据以本机 rules-weekly-audit.js 实测为准。

0. 先量化,再决定动不动

wc -l -c ~/.qoder/AGENTS.md ~/.qoder/memory/MEMORY.md

再按节统计体积,找出真正的大户,别平均用力:

node -e "const t=require('fs').readFileSync(process.argv[1],'utf8');t.split(/^### /m).slice(1).map(s=>[Buffer.byteLength(s),s.split('\n')[0]]).sort((a,b)=>b[0]-a[0]).slice(0,8).forEach(([n,h])=>console.log(n,h))" ~/.qoder/AGENTS.md

1. 备份

node ~/.qoder/scripts/backup-file.js <文件>

2. 四类内容分开处置

类型处置判据
叙述(引子 / 历史轶事 / 举例)删或压成半句删掉后能否改变任何一次执行决策?不能就删
重复条款(同一规则出现在多处)合并为一处 + 互引每节只保留一个"真源句"
结构性说明(维护口径 / 拓扑 / 操作手册)整块迁出成独立文件,主文件留一行指针迁出后信息仍可检索到
条目描述按语义重写,禁止截首句或按固定字数截断保留触发词、条件、否定及不适用范围;长度只是辅助约束
判据本身(阈值 / 命令 / 硬禁止词 / 例外清单)一律保留见第 3 步断言

顺序遵循文件自身的层级优先级:最低优先级先转索引(技能流程与记忆 → 领域细则 → 本文件主题细则只压叙述)。

3. 覆盖断言(这一步不能省)

写一个一次性脚本,从旧文件提取要素,断言新文件仍在:

  1. 反引号标识(脚本名 / 路径 / 命令 / 开关)
  2. 数字 + 单位(3 份、7 天、200 行、10GB、30 秒…)
  3. 硬词计数(禁止 / 不得 / 绝不 / 一律 / 必须 / 红线)
  4. 章节标题集合
const o=fs.readFileSync(OLD,'utf8'), n=fs.readFileSync(NEW,'utf8');
const codes=[...new Set([...o.matchAll(/`([^`\n]{1,80})`/g)].map(m=>m[1]))];
const miss=codes.filter(c=>!n.includes(c));

对每个缺失项逐条归因:是"该补回的引用"还是"有意删除的轶事/过期数字",并把归因写进汇报。硬词计数下降必须能解释到具体句子。

决策语义复核

关键词、数字和章节相同不证明无损。逐条核对旧/新文本的主体、动作、对象、条件、否定、例外、优先级、授权和完成状态;为每条受影响规则选择相同场景,分别写出旧文和新文允许的动作,两者必须一致。

  • 正例:已获本地修改授权,只读远端状态;压缩前后都不允许推送。
  • 负例:把“未批准不得推送;本地修改可继续”改成“本地修改不得继续;未批准可推送”,硬词和动作仍在但许可反转,必须拒绝。
  • 删除反例:删去“不适用于生产环境”后即使其余触发词、数字全部保留,也必须拒绝。
  • 未能复核的情景标为未验证;不宣称覆盖断言证明所有模型语义。正文被迁出时必须验证按需入口能找到全文。

4. 结构校验(也能失败)

  • 标题唯一(复制粘贴时常出现两个同名 H1)
  • 粗体成对:每行 ** 计数为偶数
  • 行数 ≤ 红线;无未完成占位标记
  • 悬空指针 0:索引里每个 ](x.md) 都能在磁盘找到
  • 指针数不减少:条目数 == 唯一引用数(除非明确说明删了哪条)

5. 双侧同写与收口

仅向已确认存在且获准修改的客户端写入,逐个备份并核对编辑前哈希;单端不创建另一侧。只读审阅不执行写入或备份。实际客户端根目录记为 <客户端目录>。

bash <客户端目录>/scripts/sync-global-config.sh --check
bash <客户端目录>/scripts/sync-memory.sh
node <客户端目录>/scripts/rules-weekly-audit.js --read-only

双端时比较两侧候选与现役内容哈希;单端仅验证该侧内容和按需引用完整性,不要求“两侧相等”。

规则类改动再跑相关自测;scripts/*.test.js 全量一遍最稳。

坑

  • node -e 里写含反斜杠的正则会被 shell 吃掉:补丁脚本落盘成 .cjs 再跑。
  • 批量替换 **…** 会写出 **从**最低**…** 这种坏嵌套:替换后断言每行 ** 成对。
  • 压缩描述会砍掉路由线索:整句触发词是检索的强信号,拆成散词就不认;宁可长也不能删。
  • 超 200 行是静默故障:客户端截断后不给任何提示,索引条目会"存在但检索不到"。
  • 只做二方 diff 会误判:有旧版本留底时优先三方比对(旧基线 / 本机 / 新文件)。

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.