上下文工程:让Agent真正用好记忆与知识

news2026/4/29 23:49:15
拥有记忆和检索能力只是 Agent 智能化的第一步。如何在有限的上下文窗口内高效地组织、筛选和利用这些信息才是决定 Agent 实际表现的关键——这正是上下文工程Context Engineering所要解决的问题。什么是上下文工程当我们为 Agent 赋予记忆模块MemoryTool和知识检索能力RAG之后一个新的挑战随之出现Agent 可能面对数量庞大、来源各异的候选信息但 LLM 的上下文窗口是有限的。如何从海量候选中挑选出最有价值的内容以最紧凑、最清晰的方式送入模型直接决定了最终回答的质量。上下文工程就是系统性地解决给模型看什么、怎么看这一问题的方法论。核心目标用尽可能少、但高信号密度的 tokens最大化获得期望结果的概率。这个目标包含两层含义少 减少噪声信息、冗余内容对宝贵 token 预算的占用。密 送入上下文的每一个 token都应对模型的推理和输出产生正向贡献。主要手段实现上述目标通常依赖三类核心手段压缩整合 对信息进行摘要、去重在不损失关键语义的前提下缩短长度。结构化笔记 以机器可解析、人类可阅读的格式记录任务状态与关键结论便于后续按需检索。子代理架构 将复杂任务分解给多个子 Agent每个子 Agent 只处理与自身任务强相关的上下文从源头上控制上下文规模。GSSC上下文构建的四阶段流水线GSSC 是一套完整的上下文构建流水线将上下文的生命周期划分为四个阶段Gather汇集→ Select选择→ Structure结构化→ Compress压缩。每个阶段各司其职共同保证最终进入模型的上下文既完整又精炼。第一阶段Gather多源信息汇集Gather 阶段的目标是广撒网——从所有可能的信息源中汇集候选信息形成待筛选的信息池。信息源及其优先级优先级信息源说明最高系统指令Agent 的角色定义、行为准则不参与后续评分直接保留高记忆检索从 MemoryTool 中检索与当前任务相关的历史记忆高RAG 检索从知识库中检索相关知识片段中历史对话近期对话轮次提供当前任务的对话上下文低自定义信息包用户或系统注入的额外上下文信息工程最佳实践容错机制 每个外部信息源都应包裹try-catch确保单个源失败如 RAG 服务超时、记忆库连接异常不会中断整体流程Agent 可以在信息不完整的情况下降级运行。优先级处理 系统指令拥有最高优先级在后续所有阶段中均不被压缩或丢弃。历史限制 对话历史只保留有限的最近几条如最近 10 轮避免长对话将上下文窗口填满使当前任务相关信息无处安放。第二阶段Select智能信息选择Select 是整个流水线的核心直接决定了最终上下文的信息质量。它的目标是从 Gather 阶段汇集的候选信息中智能筛选出最有价值的内容。执行步骤分离系统指令 将系统指令从候选池中单独提取优先保留不参与评分竞争。计算系统指令占用的 token 确认系统指令消耗的预算得到剩余可分配的 token 上限。为其余候选信息计算综合分数 综合相关性与新近性两个维度为每条候选信息打分。按分数降序排序 分数越高信息越值得被优先纳入。贪心填充 按分数从高到低依次选入直至 token 总量达到预设上限。工程实践要点评分机制 综合分数 α × 相关性得分 β × 新近性得分其中权重 α、β 可针对不同任务场景进行配置。例如对于需要历史追溯的分析任务可以适当降低新近性权重对于实时对话场景则可提高新近性权重。贪心算法 贪心策略在实践中被证明是效率与效果的良好平衡点——在不遍历所有组合的前提下近似找到 token 预算内的最优信息子集。最低相关性过滤 通过min_relevance参数设定相关性阈值低于阈值的信息即使 token 预算仍有余量也会被过滤掉避免噪声信息混入上下文。第三阶段Structure结构化输出经过 Select 筛选后我们手中拥有的是一批高质量的信息碎片。Structure 阶段的任务是将这些碎片组织成结构清晰、模型易于理解的上下文。标准模板结构[Role Policies] 明确 Agent 的角色定位与行为准则。 例如你是一位专注于代码审查的工程助手回答时需优先考虑安全性和可维护性。 [Task] 当前轮次需要完成的具体任务描述。 例如审查以下 Python 函数指出潜在的性能瓶颈。 [State] Agent 当前所处的状态与背景信息。 例如当前处于重构项目第二阶段已完成数据层改造正在处理业务逻辑层。 [Evidence] 从外部信息源RAG、记忆库等检索到的证据信息。 例如相关文档片段、过去处理类似问题的记忆等。 [Context] 历史对话记录与相关记忆。 例如最近 5 轮对话摘要以及与当前任务相关的历史决策记录。 [Output] 期望的输出格式与要求。 例如以 Markdown 列表形式输出每条问题附上严重等级P0/P1/P2和修改建议。结构化的核心优势可读性 清晰的分区让模型和人类都能快速定位信息降低理解成本。可调试性 当 Agent 输出出现问题时开发者可以快速定位是哪个分区的信息导致了偏差大幅降低排查成本。可扩展性 需要接入新的信息源时只需在模板中新增对应分区不影响现有结构符合开闭原则。第四阶段Compress兜底压缩在某些极端情况下——例如任务背景极为复杂或系统指令本身就占用了大量 token——即使经过 Select 的精挑细选结构化后的上下文依然可能超出模型的 token 上限。此时Compress 阶段作为兜底机制介入。设计原则保持结构完整性Compress 的压缩不是一刀切地截断而是以分区为单位进行压缩。即使 token 预算极度紧张也要尽量保留每个分区的核心信息确保模型对整体任务结构的感知不受损。优化建议动态调整 token 预算 根据任务复杂度动态调整max_tokens。简单的问答任务可使用较小预算涉及多步骤推理或长文档分析的复杂任务则适当增加预算上限。升级相关性计算方式 在生产环境中将基于关键词重叠的简单相似度计算替换为向量相似度如使用 Embedding 模型可以显著提升语义检索质量使 Select 阶段就能更精准地筛选信息从而减少对 Compress 的依赖。缓存机制 对于内容稳定的系统指令和知识库文档引入缓存机制如 Anthropic 的 Prompt Caching避免每次请求都重复计算 token 占用同时降低推理成本。监控与日志 记录每次上下文构建的关键统计信息如命中信息条数、各信息源的 token 占比、被过滤的信息数量、最终 token 使用率等为后续参数调优提供数据支撑。A/B 测试 对于关键超参数如相关性权重 α、新近性权重 β、min_relevance阈值通过 A/B 测试在真实任务上寻找最优配置而非仅凭经验拍定。NoteTool长时程任务的结构化外部记忆对于持续数小时乃至数天的长时程任务——如大型代码重构、持续的研究调研、多阶段项目管理——Agent 需要一种能够跨对话轮次持久化、结构化地记录任务状态和关键结论的机制。这正是NoteTool的定位。设计理念NoteTool 相比传统的 MemoryTool是一种更轻量、更人类友好的记录方式。它的核心特点包括结构化记录 采用 YAML 头部 Markdown 正文的混合格式既适合机器解析也方便人类直接阅读和编辑。版本友好 纯文本格式天然支持 Git 等版本控制工具可以完整追踪笔记内容的演化历史。低开销 无需依赖复杂的向量数据库或关系型数据库轻量的文件系统操作即可支撑日常的状态追踪需求。灵活分类 通过type和tags字段支持多维度的笔记组织与检索满足不同类型任务信息的管理需求。存储格式1. 笔记文件格式每条笔记是一个独立的 Markdown 文件由 YAML 头部元数据和 Markdown 正文内容两部分组成--- id: note_20250119_153000_0 title: 项目进展 - 第一阶段 type: task_state tags: [refactoring, phase1, backend] created_at: 2025-01-19T15:30:00 updated_at: 2025-01-19T15:30:00 --- # 项目进展 - 第一阶段 ## 完成情况 已完成数据模型层的重构主要改动包括 1. 统一了实体类的命名规范 2. 引入了类型提示提升代码可维护性 3. 优化了数据库查询性能 ## 测试覆盖 - 单元测试覆盖率85% - 集成测试覆盖率70% ## 下一步计划 1. 重构业务逻辑层 2. 解决依赖冲突问题 3. 提升集成测试覆盖率至 85%2. 索引文件NoteTool 在本地维护一个notes_index.json文件用于在无需逐一读取文件的情况下快速检索和管理笔记1 2 3 4 5 6 7 8 9 10 11 { note_20250119_153000_0 : { id : note_20250119_153000_0 , title : 项目进展 - 第一阶段 , type : task_state , tags : [ refactoring , phase1 , backend ] , created_at : 2025-01-19T15:30:00 , updated_at : 2025-01-19T15:30:00 , file_path : ./notes/note_20250119_153000_0.md } }索引文件的主要作用包括快速检索 按 type、tags、时间范围等条件过滤无需全量读取笔记内容。元数据管理 集中管理所有笔记的结构化元数据。完整性校验 对比索引与实际文件检测是否存在孤立文件或索引缺失的情况。核心操作NoteTool 提供七类核心操作覆盖笔记的完整生命周期操作说明create创建新笔记生成唯一 ID 并更新索引read按 ID 读取笔记的完整内容update更新笔记正文或元数据自动更新updated_atsearch按关键词、type、tags 等条件检索笔记list列出所有笔记或按条件过滤后的笔记列表summary对笔记内容进行摘要生成高层次概览delete删除笔记文件并从索引中移除最佳实践1. 合理的笔记分类为笔记选择合适的type是高效检索的前提。推荐的笔记类型体系如下task_state 记录阶段性进展与当前状态是最常用的类型。conclusion 记录经过验证的重要结论与发现供后续任务引用。blocker 记录当前阻塞问题优先级最高应在上下文构建时优先纳入。action 记录明确的下一步行动计划驱动任务向前推进。reference 记录重要的参考资料、文档链接或外部信息。2. 定期清理与归档笔记不应只增不减定期维护同样重要已解决的blocker将其 type 更新为conclusion并记录解决方案。已过期的action及时删除或标记为completed。利用tags进行版本管理如为某个里程碑版本的笔记统一打上v1.0标签完成后加上archived。3. 与 GSSC 的配合NoteTool 需要与前述的上下文构建流水线紧密配合才能发挥最大价值在每轮对话的 Gather 阶段将相关笔记作为一类信息源纳入候选池。在 Select 阶段根据笔记类型赋予差异化的优先级分数blockeractionconclusionreference。限制每轮纳入的笔记数量上限防止历史笔记堆积导致上下文过载。4. 人机协作NoteTool 的纯文本格式天然支持人工干预笔记是标准 Markdown 格式开发者或用户可以直接在文本编辑器中手动修改无需通过 API。使用 Git 对笔记目录进行版本控制完整追踪 Agent 的思维演化过程也便于在出现问题时回滚到历史状态。在关键里程碑节点安排人工审核 Agent 自动生成的笔记确保其准确性与完整性。5. 自动化工作流扩展NoteTool 作为结构化的持久化存储可以作为更多自动化工作流的基础定期触发summary操作生成项目进度的摘要报告。基于笔记内容自动生成项目周报或 Release Notes。将笔记内容同步推送至外部协作工具如 Notion、Confluence实现 Agent 工作过程的透明化。TerminalTool即时文件访问的安全桥梁在处理涉及本地文件系统的任务时Agent 面临一个效率困境如果将所有相关文件预先加载进上下文会严重消耗 token 预算但如果什么都不加载遇到需要文件内容时又无从下手。TerminalTool提供了一种优雅的解决方案——即时Just-in-Time, JIT上下文Agent 不在任务开始时预加载所有文件而是在需要时按需探索和检索将文件访问的时机和粒度控制权交还给 Agent 自身。为什么需要 TerminalTool在真实工程场景中有大量任务需要实时、轻量级地访问文件系统而又不适合预先建立完整索引代码审查与调试 Agent 需要按需查看特定文件的具体内容而非批量加载整个代码库。日志分析 实时查看最新的日志片段而非预加载可能数 GB 的日志文件。文档撰写 在撰写过程中随时查阅相关配置文件或接口文档的当前内容。这类场景的共同特点是访问模式难以预测、所需文件随任务动态变化这使得预先索引和向量化的方案显得笨重且低效。多层安全机制允许 Agent 执行命令是一个强大但潜在危险的能力。TerminalTool 通过四层安全机制将风险控制在可接受范围内命令白名单 只允许执行预定义的安全命令集合如文件查看、文本搜索、目录导航等拒绝一切非白名单命令从根本上杜绝执行高危操作的可能。工作目录限制 将命令执行的范围严格限定在预设的工作目录内防止 Agent 越权访问系统敏感目录如/etc、/root。超时控制 为每次命令执行设定最大运行时间避免因意外的长时间运行命令如误触发大规模文件搜索导致 Agent 阻塞。输出大小限制 对命令输出的大小进行截断防止巨型文件内容直接撑满上下文窗口确保 Agent 能够正常处理返回结果。核心能力命令执行_execute_commandTerminalTool 的底层能力负责在安全机制的约束下执行白名单内的命令并将标准输出stdout和标准错误stderr结构化地返回给 Agent。目录导航cd支持 Agent 在工作目录范围内自由切换当前路径配合ls、cat、grep等常用命令使 Agent 能够像人类工程师一样探索项目结构、按需查阅文件内容。总结上下文工程是 Agent 系统走向生产可用的必经之路。本文介绍的三个核心组件共同构成了一套完整的上下文管理体系GSSC 流水线解决了如何在每一轮对话中动态构建高质量上下文的问题通过汇集、选择、结构化、压缩四个阶段将海量候选信息蒸馏为精炼的模型输入。NoteTool 解决了如何在跨轮次的长时程任务中持久化和管理关键信息的问题以轻量、人类友好的方式为 Agent 提供结构化的外部记忆。TerminalTool 解决了如何在不预加载所有信息的前提下安全地按需访问文件系统的问题以 JIT 上下文的理念最大化 token 预算的利用效率。三者相辅相成NoteTool 产生的结构化笔记通过 GSSC 的 Gather 和 Select 阶段按需注入上下文TerminalTool 提供的即时文件访问能力则补充了静态知识库和记忆检索之外的动态信息维度。将这三者有机整合才能构建出真正具备长期记忆、实时感知与高效推理能力的生产级 Agent 系统。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2555086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…