post cover

技术热点落地:上下文工程——让 AI Agent 在生产环境稳定运行(2026-05-14)


技术热点落地:上下文工程——让 AI Agent 在生产环境稳定运行(2026-05-14)

适用场景与目标

适用场景:

  • 企业级 AI Agent 已完成 POC,现在需要规模化部署到生产环境
  • AI Agent 输出不稳定、幻觉严重、工具调用错误率居高不下
  • 团队已从 Prompt Engineering 转向更系统化的 AI 工程体系搭建
  • 需要在全球多区域、多云环境部署 AI 应用的企业

核心目标: 本文帮助你从零搭建一套六层上下文体系,实现 AI Agent 在复杂业务场景中的稳定、可控、可观测运行。一周内可出 MVP,一月内可上线生产。


最小可行方案(MVP)步骤

第一步:理解上下文工程 vs Prompt 工程

传统 Prompt Engineering 专注于”怎么说”(措辞、格式、示例),而 Context Engineering 专注于**“在什么时机、为 AI 提供哪些信息”**。

这是质的转变:Prompt 是静态的 instruction,Context 是动态的信息供给系统。

第二步:搭建六层上下文架构(最小可用版)

以下是推荐优先实现的前三层(最容易出效果):

第 1 层:会话记忆(Session Memory)

# 最小实现:用 Redis 存储会话上下文
import redis
import json

r = redis.Redis(host='localhost', port=6379, db=0)

def save_session(user_id: str, role: str, content: str):
    key = f"session:{user_id}"
    entry = json.dumps({"role": role, "content": content})
    r.rpush(key, entry)
    r.expire(key, 3600)  # 1小时后自动清理

def get_session(user_id: str, last_n: int = 10):
    key = f"session:{user_id}"
    entries = r.lrange(key, -last_n, -1)
    return [json.loads(e) for e in entries]

第 2 层:短期记忆(Short-term Knowledge)

# 业务规则短期缓存:敏感操作前的规则校验
from functools import lru_cache
import time

@lru_cache(maxsize=1000, ttl=300)  # 5分钟TTL
def get_user_permissions(user_id: str) -> dict:
    """缓存用户权限,5分钟内不重复查库"""
    return fetch_permissions_from_db(user_id)

def inject_permission_context(user_id: str, action: str) -> str:
    perms = get_user_permissions(user_id)
    allowed = perms.get(action, False)
    return f"[权限检查] 当前用户{user_id}执行{action}{'允许' if allowed else '拒绝']}"

第 3 层:长期知识(Long-term Knowledge)

# 使用向量数据库存储企业知识
# 推荐工具:Qdrant / Milvus / Chroma(轻量级)

from qdrant_client import QdrantClient

client = QdrantClient("localhost", port=6333)
collection_name = "enterprise_knowledge"

def retrieve_knowledge(query: str, top_k: int = 5) -> list[str]:
    results = client.search(
        collection_name=collection_name,
        query_vector=encode_text(query),
        limit=top_k
    )
    return [r.payload["text"] for r in results]

def build_context_prompt(user_query: str) -> str:
    knowledge_chunks = retrieve_knowledge(user_query)
    knowledge_section = "\n".join(f"- {chunk}" for chunk in knowledge_chunks)
    return f"【企业知识库参考】\n{knowledge_section}\n\n【用户问题】{user_query}"

第三步:引入分层 Token 治理

Token 是成本的大头,必须精细控制:

# Token 预算分配策略
TOKEN_BUDGET = {
    "system_prompt": 2000,      # 系统提示词(稳定,可缓存)
    "long_term_knowledge": 4000,  # 长期知识(压缩后注入)
    "short_term_context": 2000,   # 短期上下文(实时构建)
    "session_memory": 2000,        # 会话记忆(最近N轮)
    "output_reserve": 1996,        # 输出预留(总Token=10000)
}

def estimate_tokens(text: str) -> int:
    # 粗略估算:中文约 1.5 tokens/字,英文约 4 chars/token
    return len(text) // 2  # 安全低估

def enforce_token_budget(context_layers: dict) -> str:
    """渐进式注入:优先保留核心层,裁剪低优先级层"""
    combined = ""
    for layer_name, text in context_layers.items():
        budget = TOKEN_BUDGET.get(layer_name, 1000)
        if estimate_tokens(combined) + estimate_tokens(text) > TOKEN_BUDGET["output_reserve"]:
            # 超出预算时截断或降级
            text = text[:budget * 2]  # 粗略截断
        combined += f"\n\n{text}"
    return combined

关键实现细节

主动注入机制(Critical Path)

在敏感操作或异常处理前,自动调取相关历史信息与风险数据:

async def agent_execute_with_context(user_id: str, action: str, params: dict):
    # 主动注入触发条件
    if is_sensitive_action(action):
        # 在执行高风险操作前,自动注入:
        # 1. 用户历史操作记录
        # 2. 相关风险数据
        # 3. 组织级安全规则
        risk_context = await build_risk_context(user_id, action, params)
        params["_injected_context"] = risk_context

    result = await agent.run(...)
    return result

async def build_risk_context(user_id: str, action: str, params: dict) -> str:
    history = await get_user_action_history(user_id, limit=5)
    risk_rules = await get_action_risk_rules(action)
    return f"[风险上下文]\n历史操作:{history}\n风险规则:{risk_rules}"

五层防御机制(生产级必须)

层级机制实现方式
L1权限隔离RBAC + AI 工具调用白名单
L2空跑校验Dry-run 模式验证参数
L3人工审批敏感操作先发飞书审批卡片
L4规则校验正则 + 业务规则引擎双重校验
L5强制回滚操作结果对比,异常自动回退
# L2 空跑校验示例
async def dry_run_validation(tool_name: str, params: dict) -> bool:
    dry_result = await agent.execute(
        tool_name,
        params,
        dry_run=True  # 不实际执行,只验证
    )
    if not dry_result.valid:
        raise PermissionError(f"参数校验失败: {dry_result.errors}")
    return True

常见坑与规避清单

坑 1:上下文无限膨胀(Context Explosion)

现象: AI 输出质量随对话轮数增加而急剧下降。 根因: 会话记忆层不断累积,超出模型上下文窗口。 规避:

# 错误:累积全部历史
all_history = get_session(user_id, last_n=1000)  # ❌

# 正确:滑动窗口 + 摘要压缩
def get_compressed_session(user_id: str) -> str:
    recent = get_session(user_id, last_n=10)
    if len(recent) > 5:
        summary = agent.summarize("\n".join([r["content"] for r in recent]))
        return f"[前序摘要] {summary}\n\n[最近对话]\n" + "\n".join([r["content"] for r in recent[-3:]])
    return "\n".join([r["content"] for r in recent])

坑 2:向量检索返回无关上下文(噪声注入)

现象: RAG 召回的知识片段与问题不相关,AI 被误导。 规避: 在召回后加一层”相关性再排序”(Re-ranker):

# 使用交叉编码器做精准重排
from sentence_transformers import CrossEncoder

reranker = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')

def rerank_results(query: str, chunks: list[str], top_k: int = 3) -> list[str]:
    pairs = [(query, chunk) for chunk in chunks]
    scores = reranker.predict(pairs)
    ranked = sorted(zip(chunks, scores), key=lambda x: x[1], reverse=True)
    return [chunk for chunk, _ in ranked[:top_k]]

坑 3:Token 预算分配不合理导致核心信息被截断

现象: AI 在关键操作时突然”失忆”,忘记安全规则。 规避: 固定系统提示词(System Prompt)在 Token 预算的最前部,且不参与动态裁剪:

SYSTEM_PROMPT_TOKEN_LIMIT = 2000  # 固定不变
# 构建最终 prompt:
final_prompt = f"<system>{SYSTEM_PROMPT}</system>\n<context>{dynamic_context}</context>\n<user>{user_input}</user>"

坑 4:多云环境上下文不一致

现象: 用户在 AWS 环境的上下文切换到阿里云后丢失。 规避: 统一上下文存储层使用云厂商无关的 Redis Cluster 或独立 Qdrant 服务,不要绑定在单一云的内网服务上。


成本/性能/维护权衡

成本维度

方案月均成本(参考)适用规模
Redis + 本地向量库¥500~2000< 100 并发 Agent
Qdrant Cloud¥2000~8000100~1000 并发
自建 Milvus 集群¥10000+企业级大规模

优化建议: 初期用 Redis + Chroma 本地版先跑通,验证 ROI 后再迁移到云向量服务。

性能维度

  • 向量检索延迟:Qdrant < 50ms(P99),Chroma 本地 < 20ms
  • 上下文注入延迟:< 100ms(用户无感知)
  • Session 读取延迟:Redis < 5ms(P99)

维护维度

模块维护难点推荐方案
向量知识库数据更新后需重建索引使用增量索引 + 定时全量重建
Token 预算多模型切换时预算需调整统一 Token 计算服务
上下文过期长期未交互用户的上下文清理Redis TTL + 主动归档到 OSS

一周内可执行行动清单

Day 1-2:搭建基础上下文三层

  • 部署 Redis(docker 一键启动)
  • 实现 Session Memory 存储与读取
  • 配置企业知识的向量数据库(Chroma)
  • 跑通一次完整的上下文注入闭环

Day 3-4:实现 Token 治理 + 敏感操作防御

  • 接入 Token 计算服务(估算 budget)
  • 实现 Dry-run 校验
  • 配置飞书审批 Webhook(敏感操作人工确认)
  • 灰度验证:让 10% 流量先走新架构

Day 5-7:监控 + 迭代

  • 埋点:每次 Agent 调用的上下文大小、Token 消耗、输出质量评分
  • 上线 Dashboard(推荐:Grafana + Prometheus)
  • 收集 3 天数据后做第一轮优化(调整 Token 分配比例)
  • 撰写运维手册(上下文缓存命中率、安全规则更新流程)

延伸阅读

一句话总结: 从 Prompt Engineering 到 Context Engineering,是 AI 应用从”调模型”到”做系统”的本质跨越。上下文工程做得好,AI Agent 在生产环境的稳定性至少提升一个数量级。