Context, is Control

From Prompt Engineering to Harness Engineering in Agent Management

Netflix 的「Context, not Control」曾经是最有影响力的管理理念之一。

它的核心假设很简单:给聪明人足够的上下文,他们会用你没想到的方式达成目标。你不需要控制过程,只需要提供信息、方向、约束。人的判断力、创造力、直觉——这些是 context 之外的东西,也是 Control 管不到的东西。

但这个理念套到 Agent 上,假设崩塌了。

为什么对人成立,对 Agent 不成立

人有 context 之外的东西:

  • 价值观:即使没人看着,也会做「对的事」
  • 直觉:能从模糊信息中感知到危险信号
  • 经验迁移:能把 A 项目的教训用到 B 项目
  • 主动补位:发现 spec 没写的地方,自己补上
  • 反脆弱:遇到意外情况,能临场发挥

Agent 没有这些。你给的 prompt、tools、constraints 就是它的全部。它不会「超出预期」,只会精确执行你喂给它的东西。你给了什么 context,它就是什么 output。

换句话说: 对人来说,Context 和 Control 是两个独立的杠杆;对 Agent 来说,它们是同一个东西。

这不是管理哲学的偏好,是技术事实。

从 Prompt Engineering 到 Harness Engineering

当 Context = Control,管理 Agent 的核心能力就不再是「会写 prompt」,而是「会设计运行环境」。

我把这个能力叫做 Harness Engineering

Harness 这个词,在工程里是「线束」「约束装置」的意思——它既传递信号,又限制边界。比 Prompt 准确得多,因为 Prompt 只是输入侧的一段文本,而 Harness 是整个运行时系统。

Prompt Engineering              Harness Engineering
─────────────────               ─────────────────────
关注输入                         关注全链路
单轮对话                         持续运行
文本指令                         运行时环境
依赖模型能力                     依赖系统设计

一个 Harness 包含六个组件:

┌─────────────────────────────────────────────────┐
│                   Harness                        │
│                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │ 目标定义  │  │ 工具边界  │  │ 状态约束  │      │
│  │ Goal      │  │ Tools     │  │ State     │      │
│  └──────────┘  └──────────┘  └──────────┘      │
│                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │ 反馈循环  │  │ 兜底机制  │  │ 评估标准  │      │
│  │ Feedback  │  │ Fallback  │  │ Eval      │      │
│  └──────────┘  └──────────┘  └──────────┘      │
│                                                  │
└─────────────────────────────────────────────────┘
组件定义例子
Goal可验证的目标描述「本周完成 3 个 KR 的进度更新,准确率 > 90%」
Tools能调什么 API,不能碰什么可以读 OKR 系统,不能修改组织架构
State什么数据可见,什么隔离只能看到本部门数据,不能跨部门查询
Feedback执行后怎么验证每次更新后自动 diff,人工确认后才提交
Fallback出错怎么办超时 30s 自动中止,异常时通知人类接管
Eval什么算成功数据一致性 > 95%,人工干预率 < 10%

案例:季度 OKR 追踪中的 Harness 设计

用一个真实场景来说明 Harness 的价值。

任务:Agent 协助团队进行季度 OKR 追踪,每周自动采集项目进度、对比目标、生成周报、推送给主管。

这个任务跨越 12 周,涉及多个角色(IC、主管、VP)、多个系统(项目管理、文档、数据看板),是一个典型的长周期任务。

没有 Harness 的情况

Week 1: Agent 采集数据,生成周报,一切正常
Week 3: Agent 忘了 Week 1 的约束(「关注留存,不关注增长」),
        开始报告 DAU 增长数据
Week 5: 项目系统显示 75% 进度(缓存),看板显示 42%(实时),
        Agent 报告「进展顺利」
Week 7: VP 加了新约束(「缩减预算」),Agent 没有检测到
        与已有 KR 的语义冲突
Week 9: 累积误差导致周报完全偏离实际,主管花 2 小时手动修正

每一步都不是「大错」,但 9 周下来,误差累积到不可用。这是长周期任务的典型失败模式——不是崩溃,而是 漂移

有 Harness 的情况

from dataclasses import dataclass, field
from enum import Enum
from typing import Optional


class ConstraintPriority(Enum):
    HARD = "hard"        # 违反即中止
    SOFT = "soft"        # 违反时警告
    INFORMATIONAL = "info"


@dataclass
class HarnessConstraint:
    """Harness 中的一条约束"""
    name: str
    description: str
    priority: ConstraintPriority
    check_fn: str  # 可执行的检查逻辑
    source: str    # 约束来源(谁定的)
    created_at: str


@dataclass
class HarnessConfig:
    """Agent 运行时的 Harness 配置"""
    goal: str
    constraints: list[HarnessConstraint] = field(default_factory=list)
    allowed_tools: list[str] = field(default_factory=list)
    blocked_tools: list[str] = field(default_factory=list)
    feedback_interval: int = 1  # 每 N 次执行后触发反馈
    fallback_on_timeout_sec: int = 30
    eval_metrics: dict[str, float] = field(default_factory=dict)
    human_escalation_threshold: float = 0.3


@dataclass
class HarnessCheckpoint:
    """周期性快照,防止长程漂移"""
    week: int
    constraint_violations: int
    drift_score: float  # 0.0 = 无漂移, 1.0 = 完全偏离
    human_corrections: int
    action: str  # "continue" | "recalibrate" | "escalate"


def run_weekly_check(config: HarnessConfig, checkpoint: HarnessCheckpoint) -> str:
    """每周检查 Harness 健康度"""
    if checkpoint.drift_score > 0.5:
        return "escalate: drift too high, human review required"
    if checkpoint.constraint_violations > 0:
        for c in config.constraints:
            if c.priority == ConstraintPriority.HARD:
                return f"halt: hard constraint '{c.name}' violated"
    if checkpoint.human_corrections > 3:
        return "recalibrate: too many manual corrections, prompt needs update"
    return "continue"

# generated by hugo AI

这段代码的核心不是技术实现,而是 把管理意图编码为可执行约束

当 Week 3 Agent 试图报告 DAU 增长数据时,Harness 中的约束检查器发现它违反了 focus_area: retention 这条 hard constraint,直接拦截。

当 Week 5 两个数据源不一致时,Harness 的 feedback loop 检测到 diff 超过阈值,触发人工确认而不是自动报告。

当 Week 7 VP 添加新约束时,Harness 的 constraint registry 自动检查语义冲突,标记出「缩减预算」与「增加广告投放」的矛盾,推送给主管裁决。

对比

指标无 Harness有 Harness
Week 9 周报准确率38%91%
人工干预次数(总计)1 次(Week 9 集中修正 2h)4 次(每次 5min)
约束遗忘率60% by Week 70%(持久化存储)
数据源冲突检测自动检测 + 告警
主管信任度Week 5 后不再信任持续可用

关键差异不在于 Agent 的模型能力——同一个模型,Harness 设计不同,结果天差地别。

Harness 的三个设计原则

原则一:约束优先于指令

不要告诉 Agent「你应该做 X」,而是定义「你不能做非 X」。

 "请关注用户留存相关的指标"
 constraint: metric_focus = "retention"
   check: every output must contain retention_metric
   on_violation: reject and retry

指令是建议,约束是围栏。Agent 会漂移,但围栏不会。

原则二:状态外置,不依赖 Agent 记忆

长周期任务中,Agent 的 context window 会被新信息挤出旧约束。解法是把状态持久化到 Harness 层:

Agent Memory (unreliable)          Harness State (reliable)
───────────────────────            ────────────────────────
"CEO 说要关注留存"                  constraints.yaml:
   3 周后被挤出 context window       - name: focus_area
                                      value: retention
                                      priority: hard
                                      source: CEO
                                      created: 2026-Q2-W1

每次执行前,Harness 把当前有效的约束注入 Agent context。不靠记忆,靠系统。

原则三:可观测性不是可选项

每个 Agent 执行周期都应该产出可审计的 trace:

[2026-Q2-W5] OKR Tracking Run
├── Input: 3 data sources (project_mgmt, docs, dashboard)
├── Constraint Check: 7 constraints evaluated
   ├──  focus_area: retention (pass)
   ├──  data_freshness: < 24h (pass)
   └── ⚠️ budget_constraint: conflict detected
├── Drift Score: 0.12 (within tolerance)
├── Output: weekly_report_v5.md
├── Human Review: not required (drift < threshold)
└── Action: auto-published to team channel

没有 trace,你就不知道 Agent 是「做对了」还是「碰巧没做错」。这两者的区别在 Week 9 会暴露无遗。

一个反直觉的发现

Harness 越完善,Agent 的自主空间反而越大。

这听起来矛盾,但逻辑很清楚:当约束、反馈、兜底都系统化之后,你不需要在 prompt 里事无巨细地指导 Agent 每一步该怎么做。你可以给出一个粗粒度的目标,让 Harness 来保证边界。

Prompt: "更新本周 OKR 进度,生成周报"
Harness: [200 lines of constraints, checks, fallbacks]

这又有点像「Context, not Control」了——只不过这个 context 不是「给人看的一段话」,而是「给机器执行的整个运行时」。

写在最后

「Context, not Control」没有过时。它对人的管理依然成立。

但 Agent 不是人。Agent 没有 context 之外的东西。你给的就是全部,没给的就是没有。

所以: Context, is Control.

这不是管理哲学的倒退,而是工程范式的升级。管理 Agent 不再是「沟通」问题,而是「系统设计」问题。你的核心能力不是写一段好的 prompt,而是构建一个好的 Harness。

从 Prompt Engineering 到 Harness Engineering——这是 AI 时代管理者需要完成的第一次范式转移。


你有没有在 Agent 使用中遇到过「长程漂移」的问题?你的 Harness 是怎么设计的?欢迎讨论。


See also