从上下文到驾驭:信息到位了,但 AI 还是不可控

场景:信息正确,执行翻车

让我们从一个真实的故事开始:

背景:公司部署了一个基于 RAG 的技术文档问答系统。这个系统工作得非常好——当用户问"如何配置 Redis 集群?“时,它能准确地从技术文档中检索出相关信息,并给出详细的配置步骤。

问题:当用户问"删除 test 目录下的临时文件"时,系统检索到了正确的技术文档,但执行时却错误地删除了整个项目的核心代码。

结果:技术知识传递完美无误,但执行结果 catastrophic。

这个场景揭示了一个关键问题:Context Engineering 解决了知识问题,但没有解决执行问题。

问题本质

两个维度的挑战

Context Engineering 给了模型正确的信息,但没有控制模型如何处理这些信息。这带来了两个关键的挑战维度:

1. 安全维度(What NOT to do)

  • 权限边界:模型应该做什么,不应该做什么
  • 安全红线:绝对禁止的操作
  • 合规要求:法律法规和公司政策

2. 可靠维度(How to verify)

  • 结果验证:如何判断执行结果是否正确
  • 错误检测:发现执行异常的机制
  • 修正能力:出现问题时的补救措施

知识 vs 执行的差异

维度Context Engineering执行挑战
目标提供正确信息控制正确执行
难点信息检索和整合行为约束和验证
关注点信息质量行为安全性
方法优化上下文设计约束系统

工具调用能力的成熟

从 2023 年开始,AI 系统的工具调用能力经历了快速演进,这直接推动了工程范式的转变。

OpenAI Function Calling(2023年6月)

OpenAI 在 2023 年 6 月首次正式推出 Function Calling 功能:

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# OpenAI Function Calling 示例
import openai

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "What's the weather like in Boston?"}
    ],
    functions=[
        {
            "name": "get_current_weather",
            "description": "Get the current weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {"type": "string"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                },
                "required": ["location"]
            }
        }
    ],
    function_call="auto"
)

这个突破性进展让模型能够:

  • 理解工具用途:通过函数描述理解工具的功能
  • 参数解析:自动提取用户意图中的参数
  • 执行协调:按需调用外部工具

ReAct 模式(2022-2023年)

Yao 等人在 ICLR 2023 上提出的 ReAct(Reasoning + Acting)模式:

mermaid
flowchart TB
    A[用户问题] --> B[思考]
    B --> C{需要工具吗?}
    C -->|是| D[调用工具]
    C -->|否| E[直接回答]
    D --> F[观察结果]
    F --> B
    E --> G[最终回答]

ReAct 的核心创新:

  • 推理循环:思考-行动-观察的完整闭环
  • 工具编排:多工具的有序调用
  • 结果整合:将工具结果整合成最终答案

Toolformer(2023年11月)

Schick 等人在 NeurIPS 2023 上提出的 Toolformer:

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Toolformer 自主学习使用工具
class Toolformer:
    def __init__(self, model, tools):
        self.model = model
        self.tools = tools
    
    def learn_tool_usage(self, training_data):
        # 1. 识别需要工具的场景
        tool_needs = self.identify_tool_needs(training_data)
        
        # 2. 自主学习调用模式
        for need in tool_needs:
            tool_call = self.model.generate_tool_call(need)
            self.tools.execute(tool_call)
            
            # 3. 将结果整合到训练数据
            enhanced_data = self.integrate_results(tool_call, training_data)
        
        return enhanced_data

Toolformer 的革命性意义:

  • 自主学习:模型自己学会何时使用工具
  • 工具库扩展:不依赖预定义的工具列表
  • 上下文感知:根据对话动态选择工具

AutoGPT(2023年3月)

AutoGPT 标志着第一个自主 Agent 框架的出现:

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# AutoGPT 的自主执行模式
class AutoAgent:
    def __init__(self, name, objective):
        self.name = name
        self.objective = objective
        self.tasks = []
        self.completed_tasks = []
    
    def generate_plan(self):
        # 1. 将目标分解为任务
        self.tasks = self.decompose_objective(self.objective)
        
        # 2. 生成执行计划
        plan = self.create_execution_plan(self.tasks)
        return plan
    
    def execute_plan(self):
        # 3. 自主执行任务序列
        for task in self.tasks:
            if task not in self.completed_tasks:
                result = self.execute_task(task)
                self.completed_tasks.append((task, result))
        
        return self.evaluate_completion()

新需求的出现

从"能回答"到"能执行"的转变

随着工具调用能力的成熟,AI 系统的关注点发生了根本性转变:

阶段关注点关键问题
早期能否回答“Does it work?”
Prompt Engineering如何回答得好“How to make it better?”
Context Engineering知道什么信息“What should it know?”
Agent Era能否正确执行Can it act safely?

执行场景的复杂性

现代 AI Agent 面临的执行场景越来越复杂:

1. 文件系统操作

python
1
2
3
4
5
# 文件操作的风险
file_operations = {
    "safe": ["read_file", "list_directory", "create_file"],
    "dangerous": ["delete_directory", "modify_system_file", "execute_script"]
}

2. 网络访问

python
1
2
3
4
5
# 网络操作的风险
network_operations = {
    "safe": ["fetch_public_data", "send_api_request"],
    "dangerous": ["access_internal_system", "modify_database", "exfiltrate_data"]
}

3. 代码执行

python
1
2
3
4
5
# 代码执行的风险
code_execution = {
    "safe": ["run_python_code", "execute_query"],
    "dangerous": ["system_command", "eval_user_input", "import_untrusted_module"]
}

安全与可靠的矛盾

在追求 AI 执行能力的同时,我们面临两难处境:

需求:AI 需要足够的能力来完成复杂任务 风险:能力越强,潜在破坏越大 挑战:如何在能力与安全之间找到平衡

核心认知转变

从信息优化到行为控制

Context Engineering 的核心是优化信息流,而驾驭工程的核心是控制行为流:

优化方向Context EngineeringHarness Engineering
关注点信息质量行为约束
方法提供正确信息设计安全机制
目标知识准确执行安全
评估信息相关度行为可靠性

人类主控 vs AI 执行

核心理念:Human Steer, Agent Execute

  • Human Steer:人类设定目标、定义约束、监控过程
  • Agent Execute:AI 在约束框架内自主执行
python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Human Steer, Agent Execute 示例
class ControlledAgent:
    def __init__(self, human_constraints):
        self.constraints = human_constraints
        self.execution_context = None
    
    def execute_task(self, task):
        # 1. 人类定义的任务和约束
        if not self.validate_task_constraints(task):
            return "Task violates constraints"
        
        # 2. AI 在约束框架内执行
        self.execution_context = self.setup_execution_context(task)
        
        # 3. 执行过程中持续监控
        result = self.monitor_execution(task)
        
        # 4. 结果验证和报告
        return self.validate_and_report(result)

工程范式的演进

1
2
3
Prompt Engineering → Context Engineering → Harness Engineering
   优化语言          优化信息             控制行为
"如何说对"         "知道什么"            "如何行动"

这个演进反映了 AI 系统从语言模型行动系统的转变。

预告:驾驭工程的核心解决方案

Context Engineering 发现了执行问题的存在,但没有提供完整的解决方案。下一篇文章将详细介绍Harness Engineering,它是专门为解决 AI 执行安全性和可靠性而设计的工程范式。

Harness Engineering 的核心包括:

  1. 工具注入系统:安全的工具调用机制
  2. 状态管理系统:任务执行的状态跟踪
  3. 验证循环系统:执行结果的验证和修正
  4. 约束分层系统:多层次的执行约束

这些系统共同构成了 AI Agent 的"安全缰绳”,让 AI 从"会回答"进化到"能安全地执行"。

驾驭工程不是要限制 AI 的能力,而是要确保 AI 的能力得到负责任的、可控制的发挥。这标志着 AI 工程化进程进入了一个新的阶段。