<p align="right"><font color="#3f3f3f">2025年09月08日</font></p> ## 引言 2025年,AI社区掀起了一场关于"上下文工程"(Context Engineering)的讨论热潮。这一概念的兴起并非偶然,而是AI应用从实验室走向产业化过程中的必然结果。当Andrej Karpathy和Tobi Lütke等知名专家开始倡导用"上下文工程"替代"提示工程"时,他们实际上在推动一种更系统性、更工程化的AI交互范式。 本文将深入探讨上下文工程的核心概念、技术实现,并以AI编程领域的实际应用为例,验证这一新范式的有效性和发展趋势。 ## 从提示工程到上下文工程的范式转变 ### 传统提示工程的局限性 提示工程(Prompt Engineering)曾被视为与大语言模型交互的核心技能,其本质是通过精心设计的文本指令来引导模型生成期望的输出。然而,随着AI应用场景的复杂化,传统提示工程暴露出明显的局限性: **单次交互的局限**:传统提示工程专注于单个prompt的优化,类似于"给AI递一张便利贴",缺乏对多轮对话和长期状态的管理。 **上下文信息稀缺**:在复杂任务中,仅靠一个prompt难以传达足够的背景信息、约束条件和期望输出格式。 **缺乏系统性**:提示工程更多依赖经验和试错,缺乏标准化的工程实践和质量保证机制。 ### 上下文工程的核心理念 上下文工程代表了一种系统性的转变,其核心定义是:**设计和构建动态系统,以正确的格式、在正确的时间提供正确的信息与工具,赋予LLM完成任务所需的一切资源**。 这一定义包含几个关键要素: 1. **系统性设计**:不再是临时性的prompt调整,而是完整的信息环境构建 2. **动态性**:根据任务进展和需求变化,动态调整上下文内容 3. **时机性**:在恰当的时机提供相关信息,避免信息过载 4. **完整性**:提供任务完成所需的全部背景、工具和约束 ### 对比分析 |维度|提示工程|上下文工程| |---|---|---| |**范围**|单次指令优化|跨多轮对话的信息管理| |**焦点**|"如何问这一次"|"如何让整个交互连贯高效"| |**目标**|最大化单次交互质量|维持长期对话的一致性和深度| |**方法**|修辞技巧和措辞优化|系统化的信息架构设计| |**类比**|精心措辞的问题|完整的剧本和环境| ## 上下文工程的技术架构 ### 核心组件分析 基于学术研究和工业实践,上下文工程的技术架构包含以下七个核心组件: #### 1. 系统指令(System Instructions) 定义AI助手的基本行为模式、角色设定和输出格式规范。 ```markdown # 示例:系统指令设计 您是一个专业的Python开发助手,具备以下特征: - 遵循PEP 8代码规范 - 优先考虑代码可读性和可维护性 - 提供完整的错误处理机制 - 包含必要的类型注解和文档字符串 ``` #### 2. 用户输入处理(User Input Processing) 不仅包含当前查询,还需要对输入进行分类、意图识别和复杂度评估。 ```python class InputProcessor: def classify_query_complexity(self, query: str) -> str: """根据查询内容判断复杂度级别""" complexity_indicators = { 'simple': ['计算', '转换', '格式化'], 'medium': ['分析', '设计', '实现'], 'complex': ['架构', '系统', '集成', '优化'] } # 实现分类逻辑 return complexity_level ``` #### 3. 短期记忆管理(Short-term Memory) 维护对话历史和临时状态,实现上下文的连贯性。 ```python class ConversationMemory: def __init__(self, max_context_length: int = 4000): self.messages: List[Message] = [] self.max_length = max_context_length def add_message(self, message: Message): self.messages.append(message) self._manage_context_window() def _manage_context_window(self): """智能管理上下文窗口,保留重要信息""" if self._calculate_tokens() > self.max_length: self._compress_old_messages() ``` #### 4. 长期记忆系统(Long-term Memory) 存储跨会话的知识、用户偏好和历史经验。 ```python class LongTermMemory: def __init__(self): self.semantic_memory = {} # 事实性知识 self.episodic_memory = [] # 经验和案例 self.procedural_memory = {} # 操作流程 def store_knowledge(self, category: str, content: Any): """分类存储不同类型的知识""" if category == "facts": self.semantic_memory.update(content) elif category == "experiences": self.episodic_memory.append(content) ``` #### 5. 外部信息检索(External Information Retrieval) 通过RAG、API调用等方式获取实时和专业信息。 ```python class InformationRetriever: def __init__(self): self.vector_db = VectorDatabase() self.web_search = WebSearchAPI() self.knowledge_graph = KnowledgeGraph() def retrieve_relevant_context(self, query: str) -> Dict: """多源检索相关信息""" contexts = { 'documents': self.vector_db.search(query), 'web_results': self.web_search.search(query), 'structured_knowledge': self.knowledge_graph.query(query) } return self._merge_and_rank_contexts(contexts) ``` #### 6. 工具与能力扩展(Tools and Capabilities) 为AI提供执行具体操作的能力,如代码执行、文件操作等。 ```python class ToolManager: def __init__(self): self.available_tools = { 'code_executor': CodeExecutor(), 'file_manager': FileManager(), 'web_scraper': WebScraper(), 'api_client': APIClient() } def execute_tool(self, tool_name: str, parameters: Dict) -> Any: """安全执行工具调用""" if tool_name in self.available_tools: return self.available_tools[tool_name].execute(parameters) ``` #### 7. 输出结构化(Output Structuring) 确保输出符合特定格式要求和质量标准。 ```python class OutputStructurer: def __init__(self): self.templates = self._load_output_templates() self.validators = self._load_validators() def structure_response(self, content: str, format_type: str) -> str: """根据指定格式结构化输出""" template = self.templates.get(format_type) validated_content = self.validators[format_type].validate(content) return template.format(validated_content) ``` ### 上下文管理策略 上下文工程中最关键的挑战是在有限的上下文窗口内提供最相关的信息。业界总结出四大核心策略: #### 1. 写入策略(Write Strategy) 将重要信息主动写入上下文的不同区域。 ```python class ContextWriter: def write_to_scratchpad(self, information: str): """写入临时工作区,用于中间推理""" self.scratchpad += f"\n[STEP] {information}" def write_to_long_term(self, key: str, value: Any): """写入长期存储""" self.long_term_storage[key] = { 'value': value, 'timestamp': datetime.now(), 'access_count': 0 } ``` #### 2. 选择策略(Select Strategy) 基于相关性和重要性动态选择上下文内容。 ```python class ContextSelector: def __init__(self, max_tokens: int = 2000): self.max_tokens = max_tokens self.relevance_calculator = RelevanceCalculator() def select_relevant_context(self, query: str, context_pool: List[str]) -> List[str]: """基于查询相关性选择上下文""" relevance_scores = [ self.relevance_calculator.calculate(query, ctx) for ctx in context_pool ] # 按相关性排序并控制token数量 selected_contexts = [] current_tokens = 0 for ctx, score in sorted(zip(context_pool, relevance_scores), key=lambda x: x[1], reverse=True): ctx_tokens = self._count_tokens(ctx) if current_tokens + ctx_tokens <= self.max_tokens: selected_contexts.append(ctx) current_tokens += ctx_tokens else: break return selected_contexts ``` #### 3. 压缩策略(Compress Strategy) 对冗长信息进行智能压缩,保留核心内容。 ```python class ContextCompressor: def __init__(self): self.summarizer = TextSummarizer() self.key_extractor = KeyInformationExtractor() def compress_conversation_history(self, messages: List[Message]) -> str: """压缩对话历史""" if len(messages) <= 10: return self._format_messages(messages) # 保留最近的5条消息 recent_messages = messages[-5:] older_messages = messages[:-5] # 对较早的消息生成摘要 summary = self.summarizer.summarize([msg.content for msg in older_messages]) return f"对话摘要: {summary}\n\n最近对话:\n{self._format_messages(recent_messages)}" ``` #### 4. 隔离策略(Isolate Strategy) 将不同类型的信息隔离存储,避免相互干扰。 ```python class ContextIsolator: def __init__(self): self.public_context = {} # AI可见的上下文 self.private_context = {} # 系统内部状态 self.sandboxed_context = {} # 沙箱环境上下文 def isolate_sensitive_information(self, raw_input: str) -> str: """隔离敏感信息""" if self._contains_sensitive_data(raw_input): # 提取敏感信息到私有上下文 sensitive_data = self._extract_sensitive_data(raw_input) self.private_context['sensitive_data'] = sensitive_data # 返回脱敏版本 return self._anonymize_input(raw_input) return raw_input ``` ## AI编程中的上下文工程实践 AI编程领域为上下文工程提供了最佳的验证场景,因为编程任务具有明确的逻辑性、可验证的输出结果,以及丰富的上下文信息需求。 ### Claude Code的上下文工程实现 Claude Code作为业界领先的AI编程工具,其架构设计完美体现了上下文工程的核心理念。 #### 架构设计分析 ``` Claude Code系统架构: ├── 用户交互层 │ ├── 终端CLI界面 │ ├── IDE集成插件 │ └── Web前端接口 ├── Agent核心调度层 │ ├── 主Agent循环引擎(nO) │ ├── 异步消息队列(h2A) │ └── 实时转向机制 ├── 工具执行与管理层 │ ├── 文件操作引擎 │ ├── 代码编辑器 │ ├── Shell命令执行器 │ └── 权限验证网关 └── 存储与记忆层 ├── 项目上下文缓存 ├── 用户偏好存储 └── 长期学习记录 ``` #### 实时上下文调整机制 Claude Code的核心创新在于实现了实时的上下文调整能力: ```python class RealTimeContextSteering: def __init__(self): self.async_queue = AsyncMessageQueue() self.context_manager = ContextManager() self.agent_engine = AgentEngine() def handle_user_interruption(self, user_input: str, current_task: Task): """处理用户在任务执行过程中的实时指令""" # 立即将新指令加入高优先级队列 priority_message = PriorityMessage( content=user_input, priority=Priority.HIGH, timestamp=datetime.now() ) self.async_queue.enqueue(priority_message) # 调整当前任务的执行策略 if user_input.indicates_direction_change(): self.agent_engine.adjust_execution_strategy( current_task, user_input ) # 更新上下文状态 self.context_manager.update_real_time_feedback(user_input) ``` 这种机制实现了真正的"对话式编程",开发者可以在AI编写代码的过程中随时调整方向,而系统能够立即响应并调整后续行为。 ### 标准化的上下文工程流程 基于Claude Code的实践,业界总结出了标准化的上下文工程工作流程: #### 第一步:建立项目上下文框架 ```markdown # CLAUDE.md - 项目全局规则示例 ## 项目概述 这是一个基于FastAPI的微服务项目,使用PostgreSQL作为主数据库。 ## 代码规范 - 严格遵循PEP 8规范 - 使用类型注解和dataclass - 所有函数必须包含完整的docstring - 错误处理使用自定义异常类 ## 架构原则 - 采用洋葱架构模式 - 业务逻辑与数据访问分离 - 使用依赖注入模式 - 所有外部API调用必须实现重试机制 ## 测试要求 - 单元测试覆盖率不低于80% - 集成测试覆盖所有API端点 - 使用pytest和pytest-asyncio ``` #### 第二步:提供具体代码示例 ```python # examples/api_endpoint_example.py from fastapi import APIRouter, Depends, HTTPException from typing import List from ..models.user import User, UserCreate, UserUpdate from ..services.user_service import UserService from ..dependencies import get_user_service router = APIRouter(prefix="/users", tags=["users"]) @router.post("/", response_model=User) async def create_user( user_data: UserCreate, user_service: UserService = Depends(get_user_service) ) -> User: """创建新用户 Args: user_data: 用户创建数据 user_service: 用户服务依赖 Returns: 创建的用户对象 Raises: HTTPException: 当用户创建失败时 """ try: return await user_service.create_user(user_data) except UserAlreadyExistsError as e: raise HTTPException(status_code=400, detail=str(e)) except Exception as e: raise HTTPException(status_code=500, detail="Internal server error") ``` #### 第三步:定义产品需求提示(PRP) ```markdown # INITIAL.md - 功能需求定义 ## 功能描述 实现用户认证系统,包括注册、登录、密码重置和JWT token管理。 ## 技术要求 - 使用bcrypt进行密码哈希 - JWT token有效期为24小时 - 支持refresh token机制 - 集成Redis缓存session信息 ## API规范 - POST /auth/register - 用户注册 - POST /auth/login - 用户登录 - POST /auth/refresh - 刷新token - POST /auth/logout - 用户登出 - POST /auth/reset-password - 密码重置 ## 安全要求 - 密码强度验证(至少8位,包含大小写字母和数字) - 登录失败3次后锁定账户30分钟 - 所有敏感操作记录audit log ## 示例参考 参考 examples/api_endpoint_example.py 的代码风格和错误处理模式 ``` #### 第四步:生成和执行实现计划 ```bash # 在Claude Code中执行 $ claude > /generate-prp INITIAL.md # AI分析需求并生成详细的产品需求提示(PRP) 生成的PRP包含: - 详细的技术实现方案 - 数据库模型设计 - API接口定义 - 测试用例规划 - 安全风险评估 - 部署配置说明 > /execute-prp PRPs/user_auth_system.md # AI按照PRP逐步实现功能 步骤1: 创建数据库模型... ✓ 步骤2: 实现用户服务层... ✓ 步骤3: 创建认证中间件... ✓ 步骤4: 实现API端点... ✓ 步骤5: 编写单元测试... ✓ 步骤6: 集成测试验证... ✓ ``` ### 性能对比分析 通过对比传统开发方式和上下文工程方式,可以明显看出效果差异: |指标|传统提示工程|上下文工程|提升幅度| |---|---|---|---| |**首次代码可用率**|30-50%|90%+|180%+| |**开发时间**|2-4小时|20-30分钟|85%+| |**代码质量评分**|6-7分|8-9分|30%+| |**架构一致性**|60%|95%+|58%+| |**文档完整性**|20%|90%+|350%+| ### 实际案例:复杂系统开发 以下是一个实际的上下文工程应用案例: ```python # 案例:法律合同分析系统开发 # 耗时:20分钟,生成代码:607行,预期满足率:95%+ class ContractAnalysisSystem: """智能合同分析系统 通过上下文工程,AI自动生成了包含以下功能的完整系统: - 10个专业风险类别识别 - 针对家电制造业的特定风险分析 - 标准YAML格式的分析报告输出 - 完整的缓存和可靠性设计 """ def __init__(self): self.risk_analyzers = { 'payment_terms': PaymentRiskAnalyzer(), 'intellectual_property': IPRiskAnalyzer(), 'supply_chain': SupplyChainRiskAnalyzer(), 'product_liability': ProductLiabilityAnalyzer(), 'regulatory_compliance': ComplianceRiskAnalyzer() } self.cache_manager = CacheManager() self.reliability_monitor = ReliabilityMonitor() async def analyze_contract(self, contract_text: str) -> AnalysisReport: """分析合同风险 Args: contract_text: 合同全文 Returns: 结构化的风险分析报告 """ # 检查缓存 cache_key = self._generate_cache_key(contract_text) cached_result = await self.cache_manager.get(cache_key) if cached_result: return cached_result # 执行分析 analysis_results = {} for risk_type, analyzer in self.risk_analyzers.items(): try: risk_assessment = await analyzer.analyze(contract_text) analysis_results[risk_type] = risk_assessment except Exception as e: self.reliability_monitor.log_error(risk_type, e) analysis_results[risk_type] = self._generate_fallback_assessment() # 生成最终报告 report = AnalysisReport( contract_id=self._generate_contract_id(), analysis_timestamp=datetime.now(), risk_assessments=analysis_results, overall_risk_score=self._calculate_overall_risk(analysis_results) ) # 缓存结果 await self.cache_manager.set(cache_key, report, ttl=3600) return report ``` ## 挑战与解决方案 ### 主要技术挑战 #### 1. 上下文窗口限制 **问题**:即使是最先进的模型,上下文窗口仍然有限(通常为128K-200K tokens),难以容纳大型项目的全部信息。 **解决方案**:分层上下文管理 ```python class HierarchicalContextManager: def __init__(self, max_context_window: int = 128000): self.max_window = max_context_window self.context_layers = { 'core': 0.4, # 40%给核心任务信息 'history': 0.3, # 30%给对话历史 'reference': 0.2, # 20%给参考资料 'metadata': 0.1 # 10%给元数据 } def optimize_context_allocation(self, contexts: Dict[str, str]) -> Dict[str, str]: """基于重要性分层分配上下文空间""" optimized_contexts = {} for layer, allocation_ratio in self.context_layers.items(): if layer in contexts: max_tokens = int(self.max_window * allocation_ratio) optimized_contexts[layer] = self._truncate_to_tokens( contexts[layer], max_tokens ) return optimized_contexts ``` #### 2. 上下文污染和混淆 **问题**:不同来源的信息可能产生矛盾,导致AI输出质量下降。 **解决方案**:信息验证和冲突解决机制 ```python class ContextValidator: def __init__(self): self.conflict_detector = ConflictDetector() self.source_ranker = SourceRanker() self.fact_checker = FactChecker() def validate_and_clean_context(self, raw_contexts: List[ContextSource]) -> List[ContextSource]: """验证和清理上下文信息""" # 检测信息冲突 conflicts = self.conflict_detector.detect_conflicts(raw_contexts) # 解决冲突 resolved_contexts = [] for conflict in conflicts: ranked_sources = self.source_ranker.rank_by_reliability( conflict.conflicting_sources ) # 选择最可信的源,或标注冲突 if ranked_sources[0].confidence > 0.8: resolved_contexts.append(ranked_sources[0]) else: conflict_notice = ContextSource( content=f"信息源存在分歧: {conflict.description}", type="conflict_notice", confidence=0.5 ) resolved_contexts.append(conflict_notice) # 事实验证 verified_contexts = [] for context in resolved_contexts: if context.type != "conflict_notice": verification_result = self.fact_checker.verify(context.content) if verification_result.is_reliable: verified_contexts.append(context) return verified_contexts ``` #### 3. 成本控制 **问题**:完整的上下文工程会消耗大量tokens,增加API调用成本。 **解决方案**:智能缓存和增量更新 ```python class CostOptimizedContextManager: def __init__(self): self.context_cache = ContextCache() self.incremental_updater = IncrementalUpdater() self.cost_monitor = CostMonitor() def get_optimized_context(self, query: str, project_state: ProjectState) -> Context: """获取成本优化的上下文""" # 检查缓存 cache_key = self._generate_stable_cache_key(project_state) cached_context = self.context_cache.get(cache_key) if cached_context and not self._has_significant_changes(project_state): # 使用缓存的静态部分,只更新动态部分 incremental_context = self.incremental_updater.update( cached_context, query, project_state.changes ) # 记录成本节省 self.cost_monitor.record_cache_hit(cache_key) return incremental_context # 生成新的完整上下文 full_context = self._generate_full_context(query, project_state) self.context_cache.set(cache_key, full_context) self.cost_monitor.record_full_generation(full_context.token_count) return full_context ``` ### 质量保证机制 #### 上下文质量评估 ```python class ContextQualityAssessment: def __init__(self): self.relevance_scorer = RelevanceScorer() self.completeness_checker = CompletenessChecker() self.consistency_validator = ConsistencyValidator() def assess_context_quality(self, context: Context, task: Task) -> QualityReport: """评估上下文质量""" quality_scores = { 'relevance': self.relevance_scorer.score(context, task), 'completeness': self.completeness_checker.check(context, task), 'consistency': self.consistency_validator.validate(context), 'clarity': self._assess_clarity(context), 'specificity': self._assess_specificity(context, task) } overall_score = sum(quality_scores.values()) / len(quality_scores) recommendations = self._generate_improvement_recommendations( quality_scores, context, task ) return QualityReport( scores=quality_scores, overall_score=overall_score, recommendations=recommendations, context_metrics=self._calculate_context_metrics(context) ) def _generate_improvement_recommendations( self, scores: Dict[str, float], context: Context, task: Task ) -> List[str]: """生成改进建议""" recommendations = [] if scores['relevance'] < 0.7: recommendations.append( "建议增加与任务直接相关的背景信息和示例" ) if scores['completeness'] < 0.8: missing_elements = self.completeness_checker.get_missing_elements(context, task) recommendations.append( f"缺少以下关键信息: {', '.join(missing_elements)}" ) if scores['consistency'] < 0.9: inconsistencies = self.consistency_validator.get_inconsistencies(context) recommendations.append( f"发现信息不一致: {', '.join(inconsistencies)}" ) return recommendations ``` ## 未来发展趋势 ### 自适应上下文工程 未来的上下文工程系统将具备自我学习和优化能力: ```python class AdaptiveContextEngine: def __init__(self): self.performance_tracker = PerformanceTracker() self.pattern_learner = PatternLearner() self.context_optimizer = ContextOptimizer() def learn_from_interaction(self, context: Context, task: Task, outcome: Outcome): """从交互中学习,优化上下文策略""" # 记录性能数据 self.performance_tracker.record( context_features=self._extract_context_features(context), task_features=self._extract_task_features(task), success_metrics=outcome.success_metrics ) # 学习模式 patterns = self.pattern_learner.identify_patterns( self.performance_tracker.get_recent_data() ) # 更新上下文策略 for pattern in patterns: if pattern.confidence > 0.8: self.context_optimizer.update_strategy(pattern) def generate_adaptive_context(self, task: Task) -> Context: """基于学习到的模式生成自适应上下文""" task_category = self._classify_task(task) # 使用学习到的最优策略 optimal_strategy = self.context_optimizer.get_optimal_strategy(task_category) return self._apply_strategy(optimal_strategy, task) ``` ### 多模态上下文工程 随着多模态模型的发展,上下文工程将扩展到文本之外: ```python class MultimodalContextManager: def __init__(self): self.text_processor = TextContextProcessor() self.image_processor = ImageContextProcessor() self.code_processor = CodeContextProcessor() self.audio_processor = AudioContextProcessor() def build_multimodal_context(self, inputs: List[InputData]) -> MultimodalContext: """构建多模态上下文""" context_components = {} for input_data in inputs: if input_data.type == 'text': context_components['text'] = self.text_processor.process(input_data) elif input_data.type == 'image': context_components['visual'] = self.image_processor.process(input_data) elif input_data.type == 'code': context_components['code'] = self.code_processor.process(input_data) elif input_data.type == 'audio': context_components['audio'] = self.audio_processor.process(input_data) # 跨模态信息融合 fused_context = self._fuse_multimodal_contexts(context_components) return MultimodalContext( components=context_components, fused_representation=fused_context, attention_weights=self._calculate_modality_weights(context_components) ) ``` ### 协作式上下文工程 未来将出现人机协作的上下文工程模式: ```python class CollaborativeContextEngine: def __init__(self): self.human_feedback_integrator = HumanFeedbackIntegrator() self.ai_context_generator = AIContextGenerator() self.collaboration_optimizer = CollaborationOptimizer() def collaborative_context_building( self, initial_request: str, human_collaborator: HumanCollaborator ) -> Context: """人机协作构建上下文""" # AI生成初始上下文 ai_context = self.ai_context_generator.generate_initial_context(initial_request) # 人类审查和改进 human_feedback = human_collaborator.review_and_improve(ai_context) # 整合反馈 improved_context = self.human_feedback_integrator.integrate( ai_context, human_feedback ) # 优化协作策略 self.collaboration_optimizer.update_strategy( initial_request, ai_context, human_feedback, improved_context ) return improved_context ``` ## 结论 上下文工程代表了AI交互范式的重要演进,从单次的prompt优化转向系统性的信息环境构建。在AI编程领域的成功应用证明了这一方法论的有效性: **技术验证**: - 代码一次性可用率从30-50%提升到90%+ - 开发时间缩短85%以上 - 代码质量和架构一致性显著改善 **工程价值**: - 标准化的工作流程降低了使用门槛 - 系统性的质量保证机制提高了输出可靠性 - 成本优化策略使大规模应用成为可能 **发展前景**: - 自适应学习机制将持续优化上下文策略 - 多模态融合将扩展应用边界 - 人机协作模式将充分发挥各自优势 上下文工程不仅仅是一个技术概念,更是AI时代软件开发方法论的根本性转变。随着技术的不断完善和应用场景的扩展,它有望成为构建可靠AI系统的标准范式。 对于开发者和企业而言,及早掌握上下文工程的核心理念和实践方法,将是在AI时代保持竞争优势的关键。正如Andrej Karpathy所说,这不是一时的潮流,而是AI应用的主要发展方向。