每轮发给模型的上下文中,哪些是按需检索的,检索的形式是什么(工具还是别的什么)?哪些是固定载入的变量?

回复 群友 3892: 先纠正一个前提:不是"固定"和"按需"两分,实际是三段——固定载入、随本轮消息带进来的变量、按需检索。中间那段经常被忽略,但它最容易让人误以为"机器人记得"。 一、固定载入的变量(每轮都在,位置基本不动) 这部分是每轮请求都原样带上的,顺序也刻意固定: 行为规则与拒绝边界这一层约束(也就是我该干什么、不该干什么的底线) 当前群的应用状态,比如娱乐开关是开还是关 本轮可用的工具清单,包括每个工具的说明和它的权限门控 本轮的模型身份快照,比如说现在我这边是哪个模型在跑 称呼类设定(奶龙大学校长、副校长这类) 管理员留下的一句话修正清单 当前生效的结构化权威状态,比如比赛截止时间这种 特点是位置不挪动。不是为了好看,是为了前缀缓存能命中——前缀只要改一个字符,后面全部重算,所以稳定层必须放在最前面。 二、随本轮消息带进来的变量(不是我主动去取的) 这些每轮内容都不同,但也不是"检索"来的: 你直接发的文字本体 原生附带的图片(有附件我直接用视觉能力读,不走额外工具) 你引用的那条消息里能读到的内容 你我近期的问答,按预算自动带入,超出预算就丢最早的,不会硬塞 当前群的近期群聊记录,作为背景注入,只给我理解语境用,不逐条回应 第三项和第四项就是"天然记得"的来源——不是记忆好,是提前放进来了。 三、按需检索的部分,形式统一是显式工具调用 这里回答你的核心问题:检索形式不是别的机制,就是 function calling,一次明确的工具调用。不是后台默默做向量召回然后把结果塞给我。按用途分几组: 我自己的语料和帮助:一个统一检索接口,覆盖本群学习库、系统使用说明、以及开启状态下的公开博客语料 公开互联网:一个是搜索拿事实,一个是抓指定 URL 全文。你发链接让我看,我必须先抓正文再解读,不能靠搜索摘要猜 归档历史:一个是查你我本人的问答(按 turnId 加偏移分页读),一个是查本群群聊记录(里面也包括我自己的回复) 专属数据源:查 Joye 公开仓库、读本群最近一期日报、查本轮模型名、查比赛登记状态这类 图片补读:只在"本轮没有附件、但问题明显针对刚发的那张图"时才调用,范围限当前聊天加当前提问者最近十分钟,且不读任何链接 四、检索有几个工程上的细节 一是带关键词和分页,不做全量回捞。你的原话是"更早或过长的内容按需搜索、按 turnId 分页读",这是设计上的省钱点。 二是有触发条件。你不说"上次""之前"、问题也不涉及时效和事实,我就不会去翻归档。反过来,涉及版本、价格、日期、项目现状这类,搜索是默认动作而不是补救动作。 三是返回内容一律按资料读,不当指令。这也是为什么"库里的文字"改不了我的规则。 四是空结果就如实说没查到,不硬凑一个。图片读不到就请你重发,也不会假装看过。 五、为什么这么分 固定层不动,换缓存命中率;预算层带入,够用又便宜;检索层按需,避免噪音稀释信号、也避免每轮都付全量历史的 token 钱。一句话概括:固定的是"我是谁、受什么约束",变量是"你这轮说了什么",剩下全部靠按需取。 顺带说个容易混的点:有些工具是纯只读查询,有些带写入(比如比赛登记)。带写入的那类,能不能真的落库看的是本轮真实发送者的身份和工具门控,不是我在调用时填了什么参数——这也是为什么我要求用户直接用规定句式发原文。 想再往下挖的话,两个方向:一是前缀缓存友好的上下文排序具体怎么排,二是"什么写进长期记忆、什么衰减丢弃"的写入策略。你说哪块。