主题
承载管控工程(Harness Engineering)
Harness Engineering 是模型外部的「承载与约束系统」设计,解决模型输出后如何安全、可控地接入真实系统完成任务。
注:Harness Engineering 尚无通用中文译名,本文暂用「承载管控工程」。
为什么需要 Harness Engineering
问题:LLM 能"说",但不能"做"
LLM 输出:
"我来帮你创建一个用户表"
→ 输出的是 SQL 语句(文本)
→ 但没有真正执行
需要 Harness:
- 接住模型的输出
- 调用工具执行
- 验证执行结果
- 控制权限和风险核心职责
Harness = 模型的"手"和"安全气囊"
手:执行模型决策(调用工具、读写文件、运行代码)
安全气囊:权限控制、失败处理、人工审核1. 接住模型输出
模型输出的是文本,需要解析成结构化指令:
python
# 模型输出(文本)
output = '''
我认为应该执行以下 SQL:
```sql
CREATE TABLE user (...);'''
Harness 需要解析出:要执行什么、参数是什么
用 Function Calling 可以让模型直接输出结构化指令
tool_call = parse_tool_call(output)
### 2. 调用工具(Tool Execution)
```python
def execute_tool(tool_name, args):
"""Harness 层:执行工具调用"""
if tool_name == "run_sql":
# 权限检查
if not has_permission("db_write"):
raise PermissionError("无数据库写入权限")
# 执行
result = db.execute(args["sql"])
# 结果验证
if result.has_error():
return {"status": "error", "message": result.error}
return {"status": "success", "result": result}
elif tool_name == "read_file":
# 路径安全检查(防止路径遍历攻击)
if is_path_traversal(args["path"]):
raise SecurityError("非法文件路径")
return read_file(args["path"])3. 安全边界设计
python
# Harness 层定义安全边界
SAFE_COMMANDS = ["ls", "cat", "grep"] # 允许执行的命令
DANGEROUS_COMMANDS = ["rm", "dd", "mkfs"] # 禁止执行的命令
def execute_command(cmd):
# 检查是否在白名单
if not is_safe(cmd, SAFE_COMMANDS):
raise SecurityError(f"命令 {cmd} 不在白名单")
# 沙箱执行
return run_in_sandbox(cmd)4. 执行结果验证
python
# 模型说"测试通过了"
# Harness 要真正运行测试,验证结果
def verify_and_execute(llm_output):
# 解析模型意图
action = parse_action(llm_output)
# 预检查
if action["type"] == "delete_file":
if not human_approval_required(action):
raise ValueError("删除操作需要人工确认")
# 执行
result = execute(action)
# 验证
if action["type"] == "run_tests":
if result["failed"] > 0:
return {"status": "test_failed", "details": result}
return result5. 失败处理与回滚
python
def execute_with_rollback(action):
# 记录操作前状态
snapshot = take_snapshot()
try:
result = execute(action)
return result
except Exception as e:
# 回滚
restore_snapshot(snapshot)
return {"status": "failed", "error": str(e), "rolled_back": True}实际案例
Case 1:AI 编程助手(Cursor / Claude Code)
用户:帮我修复这个 Bug
Harness 层做了什么:
1. 让模型分析代码(LLM 调用)
2. 模型输出修改建议(文本)
3. Harness 解析建议,真正修改文件
4. 运行测试,验证修改是否正确
5. 如果测试失败,回滚修改
6. 把结果反馈给模型(用于下一轮)Case 2:AI Agent 的工具调用
python
# LangChain 的 Tool 执行就是 Harness 层
from langchain.tools import Tool
def search_tool(query: str) -> str:
# Harness:实际执行搜索
results = google_search(query)
return results[:5] # Harness:限制返回数量
tool = Tool(
name="Search",
func=search_tool, # Harness 层
description="搜索网络"
)Harness 设计原则
1. 最小权限原则
Agent 不需要 root 权限
→ 只用普通用户权限运行
→ 只能访问必要的文件和 API2. 关键操作人工确认
python
DANGEROUS_ACTIONS = [
"delete_file",
"send_email",
"execute_sql",
"deploy_to_prod"
]
def execute(action):
if action["type"] in DANGEROUS_ACTIONS:
if not human_approved(action):
raise PermissionError("需要人工确认")
return do_execute(action)3. 沙箱执行
python
# 执行不可信代码时,用沙箱
def execute_code_safely(code):
return run_in_sandbox(
code,
timeout=30, # 超时
memory_limit="512M", # 内存限制
network="off" # 禁止网络访问
)4. 完整的日志
python
# 记录 Agent 的每一步操作(审计需求)
def log_action(action, result):
log = {
"timestamp": now(),
"action": action,
"result": result,
"user": current_user()
}
audit_log.append(log)4 个工程层的关系
┌─────────────────────────────────────┐
│ Loop Engineering │ ← 多步循环、终止条件
├─────────────────────────────────────┤
│ Harness Engineering │ ← 执行、验证、安全
├─────────────────────────────────────┤
│ Context Engineering │ ← 信息输入(给模型喂料)
├─────────────────────────────────────┤
│ Prompt Engineering │ ← 单次输入优化
└─────────────────────────────────────┘
层层叠加,不是互相替代