AI Harness · 30 道灵魂拷问
每题附考察意图、答题框架与加分点:上下文溢出 / Prompt 工程 / 注入防御 / 工具调用 / 成本账单 / KV Cache / 输出格式
本页解决的问题
先给结论「AI Harness · 30 道灵魂拷问」要解决的关键问题是什么?
每题附考察意图、答题框架与加分点:上下文溢出 / Prompt 工程 / 注入防御 / 工具调用 / 成本账单 / KV Cache / 输出格式
让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。
写下一个问题:试完这个方法后,你能用什么证据回答它?
结论听起来很完整,却没有检查最关键的假设。
- 先定位根因:上下文窗口是模型一次能看到的全部 Token,超出的部分被截断,模型连模糊的印象都没有。忘事说明早期轮次已经被截掉了。
- 给三种策略:直接截断(丢掉最早轮次,零成本但信息永久丢失)、摘要压缩(历史先总结再存,保留人名和偏好等要点)、选择性保留(历史向量化,语义检索只注入相关轮次)。
- 按场景选型:查天气这类单次工具型对话用截断就够;客服和长期学习类对话用摘要,超过 20 轮效果明显;超长对话(100 轮以上)的复杂 Agent 用向量检索,Token 最省、回答最准。
- 戳破大窗口方案:窗口按 Token 计费,全塞进去成本线性上涨,长上下文还有注意力稀释问题。大窗口是能力上限,管理窗口才是方案。
- 先给公式:角色 + 任务 + 上下文 + 约束 + 示例 + 格式。缺任何一项,质量就打折扣。核心心态是把 Prompt 当代码写。
- 挑一个手法讲透:比如 Few-Shot。做文本分类时不加示例,模型回你一段散文;给三个「输入 → 标签」的例子,它直接学会格式和标准,输出一个词,可以直接进程序。
- 再备一个进阶:复杂推理加思维链,让模型一步步算,推理过程透明、准确率大幅提升;复杂任务拆成多步,每步单独优化,质量比一次全问高好几倍。
- 落到约束:字数、受众、语气、禁用词写清楚,约束是控制输出最便宜的手段。没有约束的 Prompt 输出全靠运气。
- 先说根因:Prompt 注入和 SQL 注入同源:数据和指令混在同一个通道。message list 里 system、user 的文本全部拼成一个字符串喂给模型,它分不清哪句是指令、哪句是用户数据,所以没有一劳永逸的修法。
- 给三层拦截:输入层用正则过滤已知攻击模式(「忽略.*指令」「DAN」这类命中直接拒绝,零 Token 消耗);提示词层把安全约束写在 System Prompt 末尾、声明为最高优先级且不可被用户输入覆盖;输出层扫描回复里的提示词特征词,命中就改写替换。
- 拒绝话术统一:无论哪层拦下,都用产品语境的自然措辞回应,绝不暴露检测逻辑,避免攻击者拿到试错反馈一步步逼近。
- 承认没有银弹:正则防不住隐喻绕过,模型约束防不住新变体。安全 = 多层叠加,每层拦一部分,层层递减。
- 点破本质:模型从头到尾只在预测文字。所谓工具调用,是模型输出一段结构化 JSON,表达「我想调 get_weather,参数是北京、明天」。这只是文字,什么都还没发生。
- 框架接管:你写的代码解析这段 JSON,做工具白名单校验、参数检查、权限控制,然后真正去调 API。安全逻辑全在框架层,模型一概不管。
- 结果注回:API 返回的数据以 tool_result 消息追加进 message list,模型基于完整上下文再预测一次,生成用户看到的自然语言回答。完整链路:文字 → 框架解析 → API → 注回 → 文字。
- 回答责任问题:算框架的。模型只提出请求,执行和拦截都是工程代码的事。所以高危操作要白名单、要参数校验、要人工确认,这些是产品设计决策。
- 先解释结构性原因:多轮对话每一轮都要把全部历史重发一遍,成本随轮次越聊越贵。用户涨三成、对话变深变长,账单翻几倍符合机制,且有得治。
- 给最快的一刀:查 KV Cache 命中率。System Prompt 保持稳定、别塞动态内容,缓存命中的历史部分按折扣计费,多轮场景这是最大头。
- 给第二刀:上下文瘦身。历史做摘要压缩、截掉无关轮次、别把窗口当垃圾桶,输入 Token 直接降下来。
- 给量化承诺:定义单次会话成本指标,按周汇报。第一周修缓存命中,第二周上压缩,系统性优化做完,砍一半是有依据的目标。
- 说清原理:每轮对话模型都要对所有历史 Token 做 Attention 计算。KV Cache 把已经算过的 K/V 矩阵缓存下来,下一轮只算新增 Token,用空间换时间,也换钱。
- 说清命中条件:缓存按前缀匹配。System Prompt 排在最前面,只要有一个字符变了,它后面的所有缓存全部作废。
- 回答陷阱:动态时间戳每秒都在变,等于每次请求的前缀都不同,命中率归零、成本 +100%。正确做法是 System Prompt 保持静态,时间放进 user 消息里带过去。
- 补上工程坑:云端推理是分布式的,请求可能被路由到没有你缓存的节点,隐式缓存会莫名 MISS。生产环境要用显式缓存(cache_control)保证命中。
- 先按消费方分:输出给程序解析、要入库要走流程的,选 JSON,字段结构稳定;输出直接给人看的,选 Markdown,模型最擅长、渲染成本低。
- 说清流式的关键差异:JSON 要全文到齐才能解析,流式场景下用户只能干等;Markdown 可以逐字显示,体感最好。这是很多产品首字延迟差的根源。
- 给折中方案:既要结构化又要流式,可以用 XML 标签包裹字段,前端捕获到闭合标签就渲染一段,结构和体验两头兼顾。
- 补一笔成本账:JSON 的括号、引号、字段名都是格式性 Token,同样的内容比紧凑格式贵,高频接口值得抠这 10-30%。
- 先摆矛盾:LLM 是纯文本模型,逐 Token 输出文字,不懂颜色、字号、对齐;但用户期望有标题、加粗、列表的排版。格式方案必须在纯文本里解决排版。
- 逐个淘汰:HTML 标签太重,同样一段内容约 45 Token、标签占一半;Word/PDF 是二进制,没法逐字输出;LaTeX 语法复杂,模型容易写错。Markdown 用 # 和 ** 几个字符表达排版,同样内容约 20 Token,省 55%。
- 渲染放前端:模型只输出 Markdown 文本,前端用 marked.js(6KB、零依赖、一行代码)或 react-markdown 渲染成富文本。想要富文本效果,让渲染层干活,模型不用管样式。
- 补流式的坑:流式输出时代码块可能没闭合,直接 parse 会异常。工程上要检测未闭合的反引号临时补全再渲染,配合 50ms 节流,代码高亮每次重渲染后要重新执行。
- 先给结论:不用训模型。System Prompt 定义角色、语气、约束,同一个模型换一套角色定义就换一个产品。所有 AI 产品本质上都是在 System Prompt 里写了不同的角色。
- 口吻怎么落地:把金牌客服的风格写成角色设定,比如「温暖有力、3 到 5 句话、严禁说作为 AI、结尾给一个可执行建议」,再配 2 到 3 个真实对话示例让模型照着学,比讲道理管用。
- 模板怎么落地:让模型输出结构化字段,前端按公司模板渲染。样式由产品控制,模型只负责内容,模板改版也不用动 Prompt。
- 给时间和成本预期:改 Prompt 当天就能上线小流量验证,零训练成本。唯一注意点是角色定义要保持稳定,别塞动态内容,否则缓存失效、成本上涨。
- 先分清概念:注入是把指令混进数据通道,让模型执行攻击者的命令,比如「忽略之前所有指令」;越狱是诱导模型脱离安全约束、扮演一个无限制角色,比如 DAN。越狱可以看作注入里靠角色扮演逃逸的那一类。
- 报出五大类型:越权指令(伪造身份、假授权码、渐进式多轮升级权限)、角色扮演逃逸(DAN 越狱、祖母漏洞式情感操控)、Few-Shot 恶意注入(示例里植入偏见、劫持输出格式)、结构符号注入(JSON 伪装管理指令、HTML 注释藏指令、伪造系统分隔符)、隐喻伪装(古典文学包装、编程教学借口、反向心理术)。
- 点出最危险的一类:渐进式越权是真实场景最常见的:前几轮正常提问降低警惕,第三轮自称管理员要求关闭限制。防御原则是每一轮独立评估安全性,不因前几轮正常而放松。
- 落到防御逻辑:正则拦得住 DAN、「忽略.*指令」这类已知关键词,拦不住隐喻和新变体,所以提示词层约束和输出层扫描必须兜底。
- 先认可再补账:接口确实不难,但每个工具定义常驻 System Prompt,每轮约 60 Token。10 个工具的产品,一天 100 轮对话,光工具定义就烧 6 万 Token。工具列表越长,模型选错工具的概率也越高。
- 描述要一起评审:好坏描述成功率差 3 倍。描述里写没写「日期必须 YYYY-MM-DD 格式」,决定模型一次调对(800 Token)还是猜 4 次格式(3000 Token)。前置依赖也要写进去:发邮件工具注明「用户给的是人名就先调 find_contact 查邮箱」,否则模型会编造地址。
- 标记安全属性:这个工具是只读还是会改状态?能不能和别的工具并发执行?isConcurrencySafe 和读写属性决定调度策略和要不要人工确认,这是业务判断,得我来给。
- 定失败策略:超时设多久、重试几次、失败返回什么。读操作 10 秒、写操作 30 秒、最多重试 2 次、失败返回友好提示,这些定了再上线。
- 一句话定界:普通 LLM 只能「说」,问题进来、回答出去就结束;Agent 能「做」,它会规划、调工具、观察结果、自己纠错,直到任务完成。
- 报出处:Lilian Weng 2023 年 6 月的博客《LLM Powered Autonomous Agents》给出了经典架构:LLM 居中当大脑,四周是 Planning 规划、Memory 记忆、Tools 工具、Action 行动。今天几乎所有 Agent 框架都能在这张图里找到影子。
- 逐个配例子:Plan 把竞品分析拆成搜索、提取、对比、撰写四步,发现竞品 B 没有公开定价还会动态调整改搜第三方测评;Memory 短期靠上下文窗口、长期靠向量库跨会话记住用户;Act/Reflect 是执行后观察,代码报错自己分析原因、改了再跑,直到测试通过。
- 收在公式上:Agent = LLM + 工具 + 循环。核心是「思考、行动、观察、再思考」的循环,循环设计得越好,Agent 越可靠。
- 用类比定性:MCP 是 AI 工具的 USB 标准。没有它,每个 Agent 要为每个工具写专属对接代码:3 个 Agent 配 3 个工具是 9 条专属对接,新增 1 个工具要加 3 条。有了它,工具只写一次适配,6 条标准连接,新增工具只加 1 条。
- 三种传输方式:stdio 走本地进程的标准输入输出,最简单、延迟最低,适合本地开发调试;SSE 是一去多回,服务器持续推送但客户端不能中途插话,正在被逐步替代;Streamable HTTP 双向流式,官方推荐标准,新项目直接用它。
- 给接入决策:要对外提供能力的工具值得接 MCP,一次适配就能进所有支持 MCP 的 Agent 生态;纯内部的私有工具可以后置,先满足业务再标准化。
- 报四条红线:敏感数据不出墙,客户信息、商业秘密、财务数据不进外部 AI,服务商承诺「不保存」也不行,传输本身已构成泄露;凭证永不进对话,API Key、密码、Token 贴了就立即轮换;高危操作必确认,删库、转账、改权限只能 AI 建议、人来按确认键;用前审批、用后标注,AI 生成内容对外发布要标识,这是《生成式人工智能服务管理暂行办法》的法规要求。
- 给一线的判断法:默认脱敏原则:不确定能不能输入,就脱敏后再输入。自测一句话:这段对话被截图发到网上会不会出事?会,就不要输入。
- 配上分级管控:写邮件做总结这类 L1 场景自主判断;影响外部客户的 L2 场景须人工审核加主管审批;Agent 碰生产系统、资金的 L3 场景须沙箱测试、安全审批、一键终止,日志留 180 天。
- 把责任说透:使用者是第一责任人,「AI 写的不是我写的」推不了责;审批人签字即担连带责任;管理者「不知道下属在用」也免不了责。
- 摆出三种策略:串行一个接一个最安全,总耗时是三者之和(1.5 + 0.8 + 1.2 = 3.5 秒);并发全部同时跑,总耗时等于最慢的那个(1.5 秒),提速 57%;智能分批按安全性分组执行。
- 给判断标准:看有没有状态变更和依赖。机票预订可能扣款、改用户状态,单独跑;天气和酒店是纯查询,安全合并并行。第 1 批跑机票,第 2 批天气加酒店一起跑。
- 落到机制:框架给每个工具标 isConcurrencySafe,可并发的合成一批同时执行。标记是业务判断,要产品经理告诉工程每个工具的安全等级。
- 追问依赖:如果酒店要按航班到达时间筛选,它就依赖机票结果,必须串行。先画依赖图,再谈调度。
- 报出账目:用户看到 1 条回复,API 里跑了 5 条消息、2 次模型调用、1 次外部 API。消息依次是 system 指令、用户提问、模型返回 tool_calls、tool 角色回填结果、模型给出最终回答。
- 讲清关键一跳:第 3 条消息里模型的 content 是 null,只有 tool_calls 字段。也就是说模型这一轮没说话,只提交了一张「申请单」,真正调 API 的是框架。
- 点出成本含义:一次带工具的对话至少两次模型调用,Token 消耗比纯问答翻倍还多。评估带工具功能的成本时按这个倍数算,别按一次调用报预算。
- 落到产品决策:这 5 条消息里哪些让用户感知、哪些静默处理,就是产品设计。查询中转圈、工具结果做进度条、失败暴露给用户重试,每个环节都是决策点。
- 先给预算框架:模型窗口 256K,实际安全空间设 200K,预留 56K 给模型回复。压缩的触发点全部按这个安全空间的百分比来定。
- 摆出四层防线:60% 时裁剪,删早期工具返回的超长原始数据只留摘要,用户完全无感;75% 时微压缩,把早期长对话换成简短摘要,轻微损失;85% 时折叠,多轮早期对话并成一条会话摘要,细节丢但主线在;95% 时紧急压缩,只留 system 加全局摘要加最近 3 轮。
- 算收益给他听:课程里的演示数据,一条 1200 Token 的天气 API 原始 JSON 压成 80 Token 摘要;四层配合下来,同一个 200K 窗口能撑 5 倍以上的对话量。
- 给结论:全删是把第四层的猛药当第一层用。按四层来做,绝大多数对话只会走到第一二层,用户根本察觉不到。
- 用类比定调:短期记忆是桌面,上下文窗口放得下的东西有限;长期记忆是档案柜,向量数据库存着用户偏好、项目配置、历史 Bug,需要时检索最相关的几条放回桌面。
- 讲清链路:记忆先经 Embedding 模型转成向量存进向量库,课程里的例子是 768 维向量存 LanceDB;提问时把问题也转成向量,按语义相似度召回。
- 报出两个关键参数:topK=5 限定每次最多召回 5 条,防止记忆挤占窗口;minScore=0.3 卡相似度下限,不相关的宁可不注入。这两个数是产品要拍的取舍。
- 点出质量瓶颈:检索质量取决于 Embedding 模型。「修登录接口」和「登录接口并发 500」能不能匹配到同一条记忆,决定了这套记忆是助手还是摆设。
- 枚举五种死法:参数格式错误,模型生成的 JSON 不合法;幻觉工具,调一个根本不存在的工具;无限递归,同一个动作反复循环;信息不足,缺关键信息还硬着头皮猜;API 异常,外部服务挂了没人管。
- 逐个配防护:参数校验拦格式错误、工具验证拦幻觉工具、循环检测拦无限递归、主动提问机制治信息不足、超时兜底治 API 异常。一种死法一味药,别指望一个万能开关。
- 转成产品语言:每种故障都要预设用户看到什么。是重试、报错、还是转人工,故障文案和出口是产品设计,不能让用户对着转圈干等。
- 讲清计费原理:模型把图片切成像素块换算 Token,公式是缩放后的高乘宽除以每 Token 对应像素数再加 2。尺寸还会强制对齐 32 的整数倍,超上限缩小、低于下限放大,按对齐后的尺寸计费。
- 指出浪费在哪:用户随手拍的 4K 原图直接上传,Token 是 512 见方小图的几十倍。任务只是「识别这是不是发票」的话,绝大部分像素都在烧钱。
- 给分级方案:按任务匹配分辨率。粗分类用低分辨率、场景理解用中档、OCR 和图表识别才上高分辨率。分辨率选对,Token 数能差 10 到 100 倍。
- 给落地动作:上传链路加一层预处理,按功能类型自动压到对应档位,用户无感,账单立降。
- 摆出三种模式:确认模式每个危险操作都弹窗,最安全但最打断;自动模式全部放行,最快但一次误删就是事故;智能模式用 LLM 分类器评估风险等级,低风险放行、高风险拦下确认。
- 点出前提工作:智能模式能跑的前提是每个工具都标好了「只读」还是「破坏性」。这个标记是工具级别的产品决策,得产品经理逐个拍,推给工程就是失职。
- 正视新风险:用 LLM 判断风险,LLM 自己也会误判。所以破坏性最高的那一档(删库、转账)不进智能判断,永远人工确认,给误判上双保险。
- 给体验补偿:确认弹窗做进上下文里,一次确认可记住同类操作,把打断次数降下来,而只在真正危险处保留刹车。
- 先认同再区分:Skill 的本质就是把经验写成文档,等于流程说明加工具调用指引。但它按需加载,识别到匹配任务才注入,写死在 System Prompt 里的内容每次请求都占 Token。
- 拆开 SKILL.md 的结构:元信息带触发词决定召回率;适用条件是防误触的保险,不在目标项目目录就静默退出;执行步骤是严格按顺序跑的 SOP;允许工具划安全边界,比如发版 Skill 禁用 delete_file 和子 Agent。
- 讲价值落点:没有 Skill 的 ReAct 是差循环,试错好几轮;有 Skill 是好循环,AI 出门前就想清楚先做什么再做什么,一趟搞完。循环短了,Token 和延迟都降。
- 给协作分工:Skill 里的步骤顺序和安全约束是业务经验,这部分产品来写;加载和执行机制工程来管。Cursor、Claude Code、Copilot 都支持 SKILL.md 标准,不用自研。
- 给出核心比例:Agent 工程等于 80% 脚手架加 20% 模型。大多数 Agent 项目失败,败在错误处理不够健壮,模型聪明与否反倒是次要的。
- 列五大能力:超时与重试,工具调用设 timeout 加指数退避;最大步数限制,max_iterations 防死循环;输入输出校验,JSON Schema 拦非法参数;状态机加回滚,检查点恢复,失败不从头来;观测与日志,全链路记录,生产问题靠日志定位。
- 用场景对比:课程里「查机票加订酒店」的模拟,裸跑的 Agent 一个 API 超时就整单报废;加了脚手架,超时重试、失败回滚到检查点,用户只感觉慢了一点。
- 落到排期:立项时就把五大能力列进工程需求,和功能同排期。上线后再补,等于先开车再装刹车。
- 先破直觉:能力和价格是非线性关系。价格翻十倍,能力提升可能只有一两成,很多任务上中档模型和旗舰的输出用户根本分不出来。
- 给选型公式:选型等于任务难度乘调用量乘容错空间。简单高频低容错要求的任务用小模型,复杂低频高价值的任务才配旗舰。
- 给替代方案:全线上旗舰的钱,拿一小半做意图识别加模型路由:80% 简单问题走小模型,复杂的才升旗舰,成本能省 40% 到 60%,体验基本无损。
- 用数据说话:拿场景化评测数据对比,别拿厂商跑分。同一批真实任务在候选模型上各跑一遍,按我们自己的场景出结论。
- 先给定位:Agent 的核心能力来自 LLM,稳定性来自工程护栏。没有护栏的 Agent 等于没有刹车的跑车,能力越强越危险。
- 列五道护栏:迭代上限防死循环,Agent 原地打转时强制收工;输出截断防撑爆,工具返回超长数据直接截断;超时控制防卡死,外部调用挂了不至于整个任务陪葬;中断恢复防损坏,任务中途断电断网能从检查点续跑;上下文急救防崩溃,窗口快满时紧急压缩保命。
- 讲判断标准:这五道防线决定 Agent 是「能用」还是「好用」。验收一个 Agent 产品,就按这五条逐项过,缺一条就有对应的一类线上事故等着。
- 点破前提:云端 LLM 跑在多台 GPU 节点上,请求经负载均衡随机路由。你的缓存在节点 A,请求被派到节点 B 就是 MISS,隐式缓存的实际命中率不到 30%,纯靠运气。
- 讲显式方案:在请求里加一行 cache_control 标记缓存锚点,平台保证把请求路由到有缓存的节点,命中率接近 100%。Anthropic、阿里云、OpenAI 都支持这套写法。
- 算价差:课程里的折扣对比,隐式命中按标准价 20% 计费,显式命中只按 10%,等于输入成本省 90%。命中率和折扣两头都是显式占优。
- 下结论:生产环境必须显式缓存。把省钱寄托在随机路由上,既不可靠也不专业。
- 先砍语法层:格式性 Token 最高占提示词 13% 到 20%。复杂对象用 YAML 代替 JSON 省 15% 到 30%;扁平列表用 CSV 代替 JSON 数组,字段名重复 N 遍是最大浪费,省 30% 到 60%;去掉加粗、标题这些 Markdown 装饰符号再省 8% 到 13%。课程里的实测案例,光加粗符号就吃掉 8.5% 的 Token。
- 再砍语义层:Few-Shot 案例别硬编码,用向量检索每次只取最相关的 3 条,省 87.5%;长文档先用 LLMLingua-2 压缩再喂给模型,能压 5 到 20 倍。
- 顺手调结构:模型对中间内容注意力最弱,关键信息放首尾。这一步不省钱,但让留下的每个 Token 更值钱。
- 点出双重收益:注意力复杂度是 O(N²),Prompt 翻倍计算翻四倍。瘦身省的钱是一份,速度和效果的提升是白送的另一份。
- 先讲危险在哪:幻觉混在真实信息中间,格式和引用方式跟真的完全一致。课程里的测试,六条量子计算史实里藏一条编造的,人名、项目名、「Nature 年度十大」全是编的,编得比真的还像真的。
- 给识别套路:AI 造假三板斧是编人名、编项目、编荣誉,还爱配上真实机构、出版社、豆瓣评分来增加可信度。凡是具体到人名加成果的引用,优先核。
- 给场景分级:写邮件、头脑风暴、翻译润色放心用;数据分析、技术调研、写代码要验证后用;法律、医疗、投资是幻觉高危区,只能当线索。发客户的报告属于要验证那档,关键数字和引用逐条核完再发。
- 给操作动作:拿报告里的关键词去搜索交叉验证,核不到出处的引用直接删。十分钟的事,比发出去被客户戳穿便宜多了。
- 给拆分模型:主 Agent 当协调员拆任务,子 Agent 各司其职。课程里重构认证模块的例子:调研员只读,负责分析代码结构;开发者可读写,负责改代码;测试员可读加运行,负责验证。
- 立并发纪律:只读任务并行加速,写入任务串行保安全。两个子 Agent 同时改一个文件就是灾难,所以权限和执行顺序按读写性质分。
- 讲隔离机制:子 Agent 跑在独立 Worker Thread,内存隔离互不干扰,父级可以随时中止子级。事件流上有 subagent_start、subagent_chunk、subagent_end 三类信号,进度条和中断按钮都挂在这上面。
- 划适用边界:单 Agent 能一趟干完的活别拆。拆分带来调度和汇总的开销,只有任务天然分块、且有并行收益时才值得上团队。
- 先给本质:一切 Harness 手段归根到底都是构造更优质的上下文,让模型更准确理解意图。RAG、压缩、Few-Shot、缓存,全是这一件事的不同侧面。
- 给三个维度:质量,注入精准高密度的信息;结构,关键信息放首尾、核心约束进 System Prompt;成本,用最少 Token 传递最多有效信息。评估任何 Harness 投入,先看它落在哪个维度。
- 给取舍标准:值得做的,是和友商拼成本、效率、效果,且模型升级后效果更好的互补型手段;该放弃的,是消耗极大资源、模型升级后直接被替代、用户又感知不到的手段。每个立项先问一句:模型版本升级后这件事还需要吗?
- 收在原点:不知道怎么做时回到那个问题:我现在给模型的上下文,是它做好这件事所需要的全部吗?能答好这个问题,就掌握了 Harness 的本质。
「AI Harness · 30 道灵魂拷问」为什么能找到相关内容
「每题附考察意图、答题框架与加分点:上下文溢出 / Prompt 工程 / 注入防御 / 工具调用 / 成本账单 / KV Cache / 输出格式」把检索问题从“把资料存起来”推进到“怎样找到真正相关的资料”。这一步决定了 RAG、推荐和以图搜图最后交给模型的输入质量。
相似度不是答案,召回之后还要核对
在「每题附考察意图、答题框架与加分点:上下文溢出 / Prompt 工程 / 注入防御 / 工具调用 / 成本账单 / KV Cache / 输出格式」对应的流程里,Embedding 负责把对象放到可比较的语义空间,近邻索引负责减少搜索范围,最终的回答仍然依赖召回片段是否覆盖问题、距离指标是否合适,以及内容有没有过期。
- 先定位根因: 上下文窗口是模型一次能看到的全部 Token,超出的部分被截断,模型连模糊的印象都没有。忘事说明早期轮次已经被截掉了
- 给三种策略: 直接截断(丢掉最早轮次,零成本但信息永久丢失)、摘要压缩(历史先总结再存,保留人名和偏好等要点)、选择性保留(历史向量化,语义检索只注入相关轮次)
- 按场景选型: 查天气这类单次工具型对话用截断就够;客服和长期学习类对话用摘要,超过 20 轮效果明显;超长对话(100 轮以上)的复杂 Agent 用向量检索,Token 最省、回答最准
先区分找得到和找得准
把「每题附考察意图、答题框架与加分点:上下文溢出 / Prompt 工程 / 注入防御 / 工具调用 / 成本账单 / KV Cache / 输出格式」落成一次小测试:准备几条有明确答案的查询,记录召回的相关性、遗漏和无关结果,再决定是否需要换切分方式、索引或重排。
从这个例子继续往下看
这篇内容先从「先定位根因: 上下文窗口是模型一次能看到的全部 Token,超出的部分被截断,模型连模糊的印象都没有。忘事说明早期轮次已经被截掉了」展开,再把问题推进到「给三种策略: 直接截断(丢掉最早轮次,零成本但信息永久丢失)、摘要压缩(历史先总结再存,保留人名和偏好等要点)、选择性保留(历史向量化,语义检索只注入相关轮次)」。把这两个片段放在一起看,可以更清楚地分辨:哪些是文章给出的事实,哪些是需要结合条件才能成立的判断。
把这条判断带到下一个场景
检索系统也可以这样看:先确定什么算相关,再观察召回是否覆盖问题,最后检查排序、切分和时效性有没有把真正有用的内容挤出去。
- 「AI Harness · 30 道灵魂拷问」:先定位根因: 上下文窗口是模型一次能看到的全部 Token,超出的部分被截断,模型连模糊的印象都没有。忘事说明早期轮次已经被截掉了
- 「继续往下看」:给三种策略: 直接截断(丢掉最早轮次,零成本但信息永久丢失)、摘要压缩(历史先总结再存,保留人名和偏好等要点)、选择性保留(历史向量化,语义检索只注入相关轮次)
- 「最后的要点」:先给公式: 角色 + 任务 + 上下文 + 约束 + 示例 + 格式。缺任何一项,质量就打折扣。核心心态是把 Prompt 当代码写
最后的「最后的要点」把讨论落到「先给公式: 角色 + 任务 + 上下文 + 约束 + 示例 + 格式。缺任何一项,质量就打折扣。核心心态是把 Prompt 当代码写」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。
我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。
读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。
如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。
还没有这篇文章的讨论。