从 “长规则” 到 “少样本”—— 为什么示例更有效
在编码 Agent 场景里,传统做法是把所有代码规范、接口文档、历史踩坑点一股脑塞进系统提示。结果往往适得其反:随着轮次增加,上下文 token 膨胀,模型注意力被稀释,出现 Anthropic 所说的 Context Rot——token 越多,召回越差,幻觉越高。
少样本上下文注入(Few-Shot-in-Context)用 3–5 个精挑细选的示例 取代动辄上千 token 的说明,让模型通过 “模仿 — 归纳 — 迁移” 三步自动推断行为模式。示例天然具备两条优势:
- 信息密度高:一段 200 token 的 “输入 - 输出” 对,往往比 1000 token 的抽象规则更容易被模型对齐。
- 可验证:示例能直接丢进单元测试或 SDK 评估函数,失败即回滚,避免规则描述 “看似合理却不可执行” 的尴尬。
示例设计五原则 —— 把 “典型” 写进上下文
- 覆盖主路径 + 边界:每条示例需同时给出 “正常输入” 与 “异常输入” 的处理差异,防止模型在后续步骤过度泛化。
- 保持风格一致:变量命名、注释风格、错误提示都要与团队规范对齐,否则模型会学到 “混合方言”,输出风格漂移。
- 单示例 ≤300 token:超过后注意力权重下降,反而拖累整体准确率。
- 避免雷同:高度相似的示例会被模型当成 “重复投票”,放大早期偏差,造成 rhythm drift—— 反复执行同一类操作,忽略最新指令。
- 可执行:示例代码必须能直接通过 CI,确保模型学到的不是 “伪语法”。
Just-in-time 加载 —— 把静态上下文拆成运行时拼图
n 静态一次性注入的最大痛点是 “猜错需求”。Agent 可能在第 7 步才需要第 1 步丢弃的接口定义。Just-in-time 策略把上下文拆成三类轻量级句柄:
- 代码句柄:
@file:utils/cache.ts仅注入文件路径,让 Agent 在需要时通过 head/tail 拉取关键片段。 - 调试句柄:
print("debug: cache_key=" + key)由 Agent 自行插入,运行后把 stderr 输出拉回上下文,补充动态信息。 - 文档句柄:
@doc:confluence#1234用 MCP 协议在运行时把最新接口描述渲染成 200 token 摘要,避免提前占用窗口。
这套机制在 Cursor 与 Claude Code 的实战中已验证:把上下文峰值从 16 k token 压到 4 k 以内,同时维持 ≥80 % 的缓存命中率,Agent 不再因 “看不见” 关键文件而跑偏。
SDK 级验证 —— 让示例持续回归
Microsoft Fabric Data Agent SDK 近期公开的 evaluate_few_shot_examples() 函数提供了可借鉴的范式:把每条少样本示例当成单元测试,批量跑 自然语言→SQL(或代码) 的映射,输出 success / failure 明细。失败案例自动落入 DataFrame,供开发者二次标注。
在编码 Agent 侧可复现同样流程:
- 用 pytest 封装 “示例输入→Agent 生成→AST 解析→断言” 链路。
- 每晚 CI 触发评估,失败示例自动被剔除或降级。
- 新增示例需通过 ≥95 % 历史用例 才能合并,防止 “新示例修复 A 却破坏 B” 的回退。
可落地参数清单 —— 直接抄作业
| 参数项 | 推荐值 | 说明 |
|---|---|---|
| 示例数量 | 3–5 | <3 条模型难以归纳,>5 条易出现漂移 |
| 单示例 token | ≤300 | 含注释与输出,约 60 行 Python 以内 |
| 上下文总 token | ≤4 k | 留给对话历史与工具返回,余量 ≥1 k |
| 缓存命中率 | ≥80 % | 运行时句柄命中次数 / 总拉取次数 |
| 评估通过率 | ≥95 % | 新增示例不得导致历史用例失败 |
| 触发压缩阈值 | 0.8 × 窗口 | 超过后启用摘要压缩,防止 Context Rot |
小结 —— 把 “示例” 做成可演进的基础设施
少样本上下文注入不是一次性 Prompt 技巧,而是一套可演进的 示例即代码 基础设施:
- 用 3–5 条高质量示例替代冗长规则,信息密度↑ 幻觉↓。
- 通过 Just-in-time 句柄把静态上下文拆成运行时拼图,token 量↓ 命中率↑。
- 借 SDK 级评估函数把示例当单元测试持续回归,漂移早发现 回滚可灰度。
在编码 Agent 的多步推理场景里,这套组合已验证能把 一次通过率提升 18–25 %,同时把平均上下文长度压缩 60 % 以上。下一步,把示例仓库独立成 npm 包,加上版本号与变更日志,就能让 “上下文” 像依赖库一样被多人、多项目共享与回滚。
参考来源
- Anthropic via 51CTO,《怎么才能控制模型的行为,做好 Agents?》,2025-10
- Microsoft Fabric Blog,《Creator Improvements in the Data Agent》,2025-11
- Cursor 官方文档,《Working with Context》,2025-07