数据截至 (上游 commit 4ac938ddecce)
上下文工程 —— 系统提示怎么拼、上下文怎么省
30 秒导读: 每次调模型,Hermes 都要往请求里塞一大坨东西——身份、行为守则、项目里的
AGENTS.md、技能索引、记忆快 照、几十个工具的 JSON schema、整段对话历史。这章讲这坨东西是怎么攒出来的,以及攒到装不下时按什么顺序往外扔。
本章接着 一轮对话是怎么跑完的 往下讲:主循环负责"发请求、收响应、跑工具",本章负责"请求里那段最长的文本从哪来"。技能内容本身怎么被创造和策展,见 自我进化闭环。
1. 先建立直觉:一次请求里到底有什么
把模型的上下文窗口当成一块固定大小的白板。每轮对话,Hermes 要在白板上写四类东西:
| 写什么 | 谁产生的 | 会不会随轮次变长 |
|---|---|---|
| 系统提示 | 本章第 2-4 节讲的拼装流程 | 不会——一场会话内逐字不变 |
| 工具 schema | 工具注册表导出的 JSON | 不会,但可能被"延迟披露"缩小(第 6.1 节) |
| 对话历史 | 用户消息 + 助手回复 + 工具结果 | 会,而且是主要膨胀源 |
| 本轮新增 | 最新用户消息、刚跑完的工具输出 | 单条可能极大(读了个 5 万行文件) |
白板写满了会怎样?提供方直接返 400。所以"上下文工程"这个词在 Hermes 里落地成两件具体的工程活: