业务上下文工程:让AI真正懂业务的关键 这两年做 AI 应用最常听到的抱怨已经从“模型能力不够”变成了“模型对我们业务一无所知”。你给客服场景接了大模型回答很流畅但用户一问“我这单能不能退”它只会复述退款政策的前两句你把公司知识库做成 RAG检索回来的片段看着相关拼到 Prompt 里之后却前言不搭后语你让 AI Agent 自动处理售后工单它能调用工具却不知道退款超过一万元必须走人工复核。问题不在模型而在业务上下文。Odyssey Framework 这个项目标题把这件事说得很直白——Give AI the business context it needs给 AI 它真正需要的业务上下文。这也是我判断未来一段时间 AI 应用工程的主战场所在模型能力会继续内卷但真正决定业务效果的是你能不能把企业里的数据和规则变成 AI 能连贯理解、动态组合、不越权限的上下文。1. 为什么模型变强之后业务上下文反而成了瓶颈1.1 先看三个最常见的翻车现场第一个翻车现场是客服场景。企业已经把产品说明书、售后政策、常见问题全部导入了知识库也做了向量化模型调用也正常。用户问“订单延迟了能补偿吗”模型检索出来的内容可能是“订单发货时效为 48 小时”但它没有结合用户等级、订单金额、延迟天数、补偿规则上限来判断。结果就是模型回答得“正确但无用”。第二个翻车现场是内部自动化场景。你让 AI Agent 去生成合同、提交申请、汇总周报。Agent 能获取代码工具、数据库接口、文件系统但不知道公司规定“金额超过五万元需要法务审批”“客户名称必须与营业执照一致”“附件命名不能包含特殊符号”。于是 Agent 把任务执行完了但每一步都踩在流程红线附近。第三个翻车现场是知识库问答场景。RAG 检索出来的片段单独看都对但拼在一起没有业务逻辑顺序。比如用户问“报销流程是什么”系统检索到“发票要求”“审批节点”“财务打款时间”但没有一个统一的业务上下文告诉模型这些片段之间的先后关系是什么哪个环节是前置条件哪个环节是例外处理。这三个场景有一个共同点模型本身没有做错什么错的是它拿到的上下文不完整、不准确、不及时。1.2 上下文缺失带来的三种代价把上下文问题拆开看至少会带来三种代价。第一种是准确率上不去。模型没有足够的业务事实就只能靠“泛化能力”猜测。猜测在通用话题上偶尔能蒙对在业务规则上几乎必然出错因为企业规则不是通过互联网训练数据天然学会的。第二种是合规风险难以控制。很多业务场景里AI 不应该知道所有信息也不能回答所有问题。离职员工的权限、未公开的价格策略、内部审批门槛这些都需要通过上下文边界来控制。如果上下文没有权限概念模型就会出现“知道太多”和“答了不该答的”问题。第三种是流程断裂。Agent 或工作流应用需要的不只是“知识片段”还需要“当前任务做到哪一步”“这个客户上次处理结果是什么”“下一步允许执行什么动作”。这些动态状态如果不在上下文里Agent 就只能靠 Prompt 临时描述一旦任务拉长它就会遗忘或重复执行。1.3 为什么不能靠“多塞文字”粗暴解决有人会想既然上下文不够那就把文档全部塞进 Prompt 里。这个思路在小规模测试里能成立但进入真实业务后会快速失效。首先是模型输入窗口有限。一个大项目可能有几千份合同模板、几百条审批规则、几十个产品线信息不可能全量塞入。强行塞入也会造成注意力分散模型更容易忽略关键信息。其次是知识时效性问题。业务规则会变价格表会变库存状态会变。如果上下文是静态导入的今天刚更新的政策模型明天还在用旧版本回答。第三是不同角色、不同用户应该看到不同上下文。一线客服能看到退款标准但不能看成本毛利率普通员工能看规章制度但不能看薪酬数据和战略文件。上下文不能是一份全量的企业百科而应该是按场景、按权限、按任务动态裁剪出来的。所以业务上下文工程需要被当成一个独立问题来处理而不是 Prompt 里顺手拼一下的辅助工作。Odyssey Framework 这类以业务上下文为中心的框架切入的正是这个位置。2. Odyssey Framework 这类框架真正在做的是上下文工程2.1 它和 RAG、Prompt 工程、Agent 编排的区别这不是一个替代关系而是一层更靠近业务语义的中间层。RAG 解决的是“怎么找到相关内容”。它擅长从文档库里召回和问题相关的片段但召回结果未必符合业务规则也未必按照业务逻辑组织。Prompt 工程解决的是“怎么把指令写清楚”。它可以告诉模型“你是客服助手”“回答要简洁”但它本身不解决数据的动态拉取、权限过滤和规则更新。Agent 编排解决的是“怎么让 AI 调用工具完成任务”。它负责计划、调用、观察、反思但同样需要一份稳定的业务上下文来决定每一步做什么。Odyssey Framework 这一类框架更像是在 RAG、Prompt、Agent 之上加了一层“上下文服务”。它统一回答几个问题当前业务场景是什么这个用户是谁有哪些规则必须遵守哪些数据可以访问当前任务已经推进到哪一步哪些信息已经过期需要更新。模型不需要自己在长篇文档里翻规则框架把决策所需的事实、规则和边界组装好再交给模型。2.2 关键变化上下文从“临时拼装”变成“一等公民”过去我们写 AI 应用上下文是散落的。一部分写在系统 Prompt 里一部分靠 RAG 临时检索一部分靠前端传参一部分靠模型自己记忆。到了业务复杂度上升的时候这些散落的上下文之间经常互相矛盾。把上下文做成“一等公民”意思是它应该有明确的数据模型、生命周期、更新机制和访问控制。数据模型决定了上下文里有哪些实体比如用户、订单、产品、政策、审批单。生命周期决定了上下文什么时候创建、什么时候更新、什么时候失效。更新机制决定了当数据库里的订单状态变化时AI 下一次调用时能不能看到新状态。访问控制决定了谁能看到哪些信息。这不是某一个 Prompt 技巧能实现的而是一个工程结构问题。2.3 一个业务上下文组装示例为了理解这个概念可以先看一个简化示例。假设我们要让 AI 处理一笔退款申请框架要组装出来的上下文可能长这样{ scene: customer_service_refund, user: { id: U10001, level: VIP, locale: zh-CN }, business_object: { order_id: SO20250101-008, status: pending_refund, amount: 1999, payment_channel: wechat }, rules: [ VIP 用户可发起 24 小时内无理由退款, 退款必须由用户本人发起, 金额超过 1000 元的退款需要人工复核 ], knowledge: [ 微信渠道退款通常 1-3 个工作日到账, 用户等级不同退款审核优先级不同 ], constraints: [ 不得承诺退款百分之百通过, 不得透露内部审核标准, 用户情绪激烈时转接人工 ], state: { attempts: 1, last_response: 已引导用户提供订单号, need_human_review: true } }这个结构里不只是文档片段而是把用户身份、业务对象、规则、知识、边界约束、任务状态组合成了一个整体。模型拿到这样一段上下文比拿到十几页文档再自己找重点要可靠得多。当然这只是一个示意结构不是某个框架的官方协议。实际落地时字段命名、组装顺序、哪些字段动态获取都要结合具体业务调整。2.4 从“死知识”到“活上下文”传统知识库是静态的存进去什么就是什么。企业在项目初期很热情把文档全部导入但三个月后文档更新变慢上下文开始过期模型回答的质量也跟着下滑。真正的业务上下文应该是活的。订单状态变更是活的库存数量是活的客户等级是活的审批状态是活的。框架能做好的事情之一就是把这些动态数据和规则组合起来而不是用一批静态文本应付所有问题。这也能解释为什么现在很多团队会把业务上下文框架和 Agent 结合使用Agent 负责“怎么做”上下文框架负责“在当前条件下应该知道什么”。两者合起来才更像一个能持续完成工作的数字员工。3. 落地业务上下文管理至少要打通五个模块很多人以为引入框架就是写一个“上下文拼接函数”然后在调用模型之前执行一遍。真实落地会复杂很多。从工程实践看至少要打通五个模块。3.1 接入模块把业务对象变成结构化上下文第一个模块是接入。它解决的是“数据从哪来、如何变成结构化对象”。常见数据源包括业务数据库、CRM 系统、ERP 系统、知识库文档、表格、API 接口、实时日志。如果不做结构化直接把数据库字段塞给模型模型的负担会非常大。比如订单表有几十个字段很多字段对判断退款请求没有帮助。框架要做的是按场景选择字段把它们重组成业务对象并补充必要的标签和说明。这里可以先从高频业务对象入手比如订单、客户、产品、工单、合同、审批单每一个对象定义清楚标识、属性、状态和关联关系。对象定义得越清晰后续组装上下文就越简单。3.2 规则模块把散落的企业制度变成模型可执行约束第二个模块是规则。企业制度通常写在 PDF 或 Wiki 里但模型不擅长把 PDF 里的自然语言直接转换成每一步执行逻辑。规则模块要把“金额超过一万元需要总监审批”这种描述变成明确的判断条件和动作。规则可以分为三类硬性限制不能做比如“不允许承诺退款一定能通过”。条件分支如果满足什么条件则执行什么动作比如“订单已发货且超过七天仅支持退货不支持退款”。优先级规则多条规则同时命中的时候哪条优先比如“用户等级规则优先于普通促销规则”。规则模块是整个上下文工程里最容易被低估的部分。很多项目有知识库却没有规则库结果模型“知道相关制度”但不知道怎么执行。3.3 状态模块让 AI 记住多轮任务推进到哪一步第三个模块是状态。之前的上下文侧重“一开始就知道什么”但真实业务是动态的。用户上一句说“我要投诉”中间补充订单号最后又问“什么时候能解决”。AI 必须在整个对话过程中维护状态。Agent 场景更需要状态。一个自动处理报销的 Agent先读取发票再校验抬头然后发起审批最后通知用户。如果中途失败它需要知道已经完成到哪一步、下一步从哪里重试。实现状态模块时可以给每个会话或任务分配一个 context_id在各个步骤之间传递并把状态数据持久化到 Redis 或数据库中。这样模型在每次调用时都能拿到最新的任务进度而不是靠上下文窗口硬撑。3.4 权限模块上下文必须遵守数据边界第四个模块是权限。这一点在业务场景里非常关键尤其是企业内部应用。权限不是“模型能不能调用某个接口”而是“模型在生成回答时能不能把某些信息放进上下文”。例如一个普通员工提问“公司去年利润多少”即使系统里有这个数字也不应该出现在给这个员工的上下文里。一个客服处理投诉时可以知道客户的订单信息但不应知道客户的身份证号。权限模块可以按角色、部门、数据字段、操作类型做四级控制。最简单的方式是每次组装上下文前先通过权限服务对业务对象做字段过滤再交给模型。宁可少给也不要多给。3.5 评估模块上下文质量需要持续衡量第五个模块是评估。上下文质量直接影响模型输出质量但很多团队上线后才发现问题。评估可以从几个维度做完整性模型需要的字段是否都出现在上下文里。准确性数据是否来自当前库里最新值。一致性不同来源的规则是否存在冲突。时效性知识、规则、状态是否已经更新。最小性是否有多余信息干扰模型判断。建议每天随机抽取一定比例的历史对话把模型实际拿到的上下文打印出来做人工抽查。很多问题只有回到上下文日志里才能看出来。可以把这五个模块理解成一张对照表模块核心能力常见失效表现落地建议接入模块数据转换为结构化业务对象字段缺失、数据格式混乱先覆盖高频业务对象规则模块制度转成可执行约束模型只答知识不执行规则区分硬限制、条件分支、优先级状态模块多轮对话和任务进度管理重复提问、Agent 任务中断使用 context_id 管理会话状态权限模块数据按角色和字段过滤越权回答、泄露敏感信息组装前做字段级过滤评估模块上下文质量和时效检查知识过时但无感知记录上下文日志并定期抽查4. 从单点跑到生产建议按四步走4.1 第一步先拿一条真实业务场景跑通最小闭环不要一开始就接所有系统、所有文档。选一条最痛、最频繁、最容易评估的业务场景比如“售后退款咨询”或“销售合同生成”把数据、规则、状态、权限都围绕这一条场景搭起来。这一步的目标不是完美而是让模型“第一次在完整业务上下文里作答”。判断标准很简单给测试人员一组真实业务问题看 AI 回答是否开始遵守内部规则而不是只看“语句流不流畅”。4.2 第二步把上下文对象版本化和来源化业务上下文一旦被模型使用就会变成事实依据。因此必须知道每一个字段来自哪里、什么时候更新、由哪个系统提供。建议给每个业务对象增加元信息比如 source、updated_at、version。这样做的价值在排查阶段会充分体现。AI 答错了可以通过上下文日志看到它拿到的订单金额是旧版本还是新版本规则用的是 V2 还是 V3。没有来源和版本排查就只能靠猜。4.3 第三步在接口边界做切片、缓存和降级生产环境要面对流量。每来一次请求都实时查库、实时拼装上下文响应时间和数据库压力都扛不住。建议在接口边界做三层处理切片按业务场景预定义不同的上下文模板而不是一个通用模板应对所有请求。缓存低频变化的基础规则和知识可以本地缓存比如定价规则、退款政策、用户等级说明。降级数据库或外部系统不可用时使用上一次成功缓存的上下文并在输出里隐藏可能过时的信息。缓存需要设置合理的过期时间尤其是订单状态、库存数量这类动态数据不能缓存超过可容忍的时间窗口。4.4 第四步加全链路日志和人工反馈回路生产环境里上下文工程不是上线就结束。必须把每次模型调用时实际拿到的上下文记录下来包括检索命中的知识片段、动态拼装的字段、当时使用的规则版本、最终模型输出结果。有了日志才能做三件事回答质量回归测试规则更新后用历史问题集重新跑一遍确认没有踩坏旧逻辑。越权检测定期扫描日志看有没有把敏感字段拼进低权限角色的上下文中。人工反馈用户对 AI 回答点击“有帮助/无帮助”后要把反馈关联到当时的上下文版本。实际落地中这第四步最容易拖延但它恰恰决定了这个框架能不能长期维护。很多项目死掉不是因为第一次跑不通而是因为跑通之后没有反馈闭环三个月后上下文明显过期却没有人发现。5. 排查链路上下文方案不生效时先看哪一层5.1 先按六层顺序排查有团队会问我们已经按照框架做了上下文拼接为什么回答还是不对这时候不要急着调 Prompt更不要换模型先按下面顺序排查。第一层是输入。用户问题是否完整前端是否传了必要参数。很多问题是用户问题里的关键订单号没传进来导致后续检索和拼装全部没有锚点。第二层是检索。如果使用 RAG要确认检索到的内容到底是不是用户问题真正需要的是不是把不相关文档也拼进去了。检索质量不好后续上下文再好也没用。第三层是组装。检查拼装逻辑里是不是漏了字段规则优先级有没有被覆盖权限过滤有没有误伤。组装层最容易出“逻辑正确但结果不符合预期”的问题。第四层是模型。同一个上下文不同模型的表现差异很大。有的模型擅长长文本规则提取有的模型容易被多余信息干扰。可以换一个模型做 A/B 验证。第五层是输出。模型输出是否正确解析有没有被后处理逻辑截断有没有输出格式转换错误。有些问题是上下文没问题但输出解析层丢掉了内容。第六层是更新。确认知识库、规则库、数据库里的数据是否已经更新到当前版本。如果源系统数据本来就是旧的上下文服务再正确也救不回来。5.2 常见异常表现与处理思路异常表现可能原因处理思路AI 回答与规则相反规则没有进入上下文检查规则模块是否按场景加载AI 提供已过期信息知识缓存过期时间过长减少知识缓存时间或加版本标记不同请求回答不一致上下文字段没有固定顺序采用统一模板固定字段顺序Agent 重复执行同一动作状态模块未持久化使用 context_id 保存任务进度低权限用户问到敏感数据权限过滤没有在组装层生效增加字段级权限过滤并加日志Prompt 越改越差上下文冲突而不是提示不清检查多路规则和知识字段是否互相矛盾5.3 性能与成本上下文不是越全越好另一个容易忽略的问题是上下文长度。上下文越长模型推理成本越高响应延迟也越长而且过长反而可能降低准确率。给上下文做“最小充分”是一条好原则只放与当前业务场景直接相关的字段和规则。不要为了让模型表现得更聪明把整个产品手册都塞进去。一个可参考的做法是上下文模板中信息分两级一级是核心决策字段必须出现二级是延伸背景只有用户追问时才加载。通过这种分级方式可以同时兼顾常见问题响应速度和冷门问题覆盖深度。6. 适合谁不适合谁以及它替代不了的部分6.1 适合先从这类框架受益的团队最适合的团队是那些已经跑通了大模型基本对话但卡在“业务效果不稳定”阶段的团队。它们通常已有知识库或业务系统也做了一些 Prompt 调优但发现模型输出离可上线还有距离。如果你的业务具备以下特征上下文工程会很有价值规则比知识更重要比如金融、政务、法务、医疗、人力资源。同一套系统要服务不同角色需要权限差异。任务链路长需要多轮状态跟踪比如客服售后、项目管理、审批流。知识变化快比如价格、政策、产品配置经常更新。6.2 什么情况下先别急着上框架如果只是做一个 Demo 或学习项目上下文可以先用硬编码和 Prompt 临时处理。这时候引入完整框架反而会增加维护负担。如果业务本身没有太多结构化和规则比如闲聊型助手、纯内容创作工具业务上下文框架的收益不会太明显。如果你的核心问题其实是模型能力不足比如需要复杂数学推理、代码生成或长时间逻辑规划那先换一个更强的模型可能比做上下文工程更直接。6.3 这个方向替代不了什么上下文工程能提高 AI 与业务环境的一致性但它不能替代业务梳理。你不可能让框架自动理解一个公司都没有梳理清楚的管理制度。它也不能替代数据治理。如果源数据质量很差重复、缺失、冲突严重上下文框架只会把问题更快地暴露给模型。它更不能替代对人的判断。AI 可以帮你起草合同、生成回复、执行流程但重大决策的最终责任仍然在人身上。框架可以降低风险但不能消灭风险。6.4 长期判断上下文工程会成为 AI 应用的基本功从模型竞赛到数据竞赛再到上下文工程竞赛这是 AI 应用落地的一个自然演进。模型本身会越来越强但每个企业的业务上下文只会越来越复杂。谁能把上下文整理得准确、动态、安全谁就能让 AI 在自己业务里真正发挥作用。Odyssey Framework 这种命名和定位其实代表了一个新的共识AI 不能只靠一个聪明的大脑它还需要一份懂业务的“入职手册”。这份手册不是一次性文档而是伴随业务持续更新、按场景自动组装、按权限严格控制的活系统。如果你正在做 AI 应用我建议你先别急着换更强的模型也别把时间全花在调 Prompt 上。找一条最核心的业务场景把一个最小的业务上下文闭环搭出来记录下它带来的变化。这个动作做得越早你越能理解为什么“给 AI 业务上下文”这件事比大多数参数调优都更值得投入。