技术 · 熟练
技能塞满提示词,它反而找不着该用哪个
不是技能不够,是它们全挤在同一层
把几十份技能全文一次性塞进系统提示词,结果通常不是「它更懂了」,而是「它开始挑错技能」。成熟做法是把技能拆成三层,各占各的位置:① 路由元数据常驻(只留一句「什么时候该用它」)② 核心流程按需注入(判定命中才把全文插进上下文,用完不留)③ 补充参考文档(只在执行到那一步时才读)。这一页给的是这三层的划分判据,加一条最常写坏的地方 —— description 怎么写才不会误匹配。
方法 · 一图看懂
1
先分三层 — 常驻的只留「何时触发」,全文只在用到的那一刻进来,参考件再往后放 —
2
写死路由元数据 — description 只写触发条件与能力边界,⛔ 不写「帮你做后端」这类过宽描述 —
3
核心流程用完不留 — 判定命中才注入全文,工具结果回来后就让它退出上下文 —
4
参考件随步骤读 — 子文档不预加载,执行到相关步骤时才按名取一份 —
原理 · 为什么有效
为什么分层能同时省 token 又提准确率 —— 因为误匹配的代价比漏匹配高得多:元数据写得太宽(「帮你处理文档」),它会在根本不需要的场景也把整份技能拉进来,既占窗口又把真正的技能挤到后面;而漏匹配最多是不用,不会污染。常驻部分只承担一件事:让「该不该用」这个判断做得出来 —— 所以它必须写成触发条件,不是能力宣传。第二层的「用完不留」同样是判据问题:全文长期挂在上下文里,会在几十轮之后被当成「仍然生效的指令」,跟你后面说的话打架;而它本来只是那一刻的操作说明。
适用场景
适合:手上技能 / 提示词模板超过十个的人 · 出现「该用 A 的时候它用了 B」 · 系统提示词已经长到自己都不想维护 · 同一套技能要分发给多人或多个工具。
不适合:只有一两个固定动作的场景 —— 分层本身也要维护成本,两三条指令直接写死更省事;也不适合一次性任务,没有复用就谈不上路由。判据一句话:「你会不会在同一个窗口里同时用上三项以上技能?」会 ⇒ 分层;不会 ⇒ 平铺。
自测 · 5 问
你的系统提示词里,技能部分占了多少行?其中有多少是「全文」
上一次它用错技能,是因为该用的那个没有被描述清楚,还是因为不该用的那个描述太宽
同一份技能全文,会在一个会话里停留超过十轮吗
新加一份技能时,你是改元数据还是直接贴全文
技能之间有没有「谁先谁后」的冲突,这件事写在哪一层
怎么上手 · 验证步骤
第一步只做一件事:把现有技能清单拆成「名字 + 一句触发条件」,先不动正文。然后拿它跑三个你最近真实遇到的任务,看它会不会挑对 —— 挑错就改那一句,别改正文。第二步再把被挑中的技能正文单独放一处、按需注入,观察窗口占用有没有降下来。第三步才加参考子文档。⚠️ 全程一次只改一层,三层同时改就分不清是哪一层起了作用。
上手后自检两句:① 随便点一个技能,你能不看正文说出它什么时候该被触发吗 ② 那些没被触发的技能,它们的正文此刻在不在上下文里 —— 第 ① 句答不上来说明元数据没写清;第 ② 句答「在」说明全文还挂在常驻层。