第十七章 超越编程:Harness Engineering 的普适性
核心命题:前十六章的论述以代码工程为主要场景。但 Harness Engineering 解决的问题——将概率性智能导向可靠输出——并不局限于编程领域。本章将视角从代码工程扩展到整个知识工作:通过三个非编程领域的案例,检验 Harness 的核心构件(System Prompt、Context、Plan、Tool、Hook)和设计原则(Q/T/C 三轴约束、三流分离、人类监督的最优位置)在多大程度上是领域无关的。结论是:Harness Engineering 的结构性需求源于 LLM 的不确定性本质,而非代码任务的特殊性——任何将 Agent 部署到真实世界高影响场景的领域,都面临相同的约束设计问题。
17.1 为什么 Harness Engineering 此刻成为可能
Harness Engineering 成为显性工程实践,需要三个条件同时成立:
条件一:能力阈值。工具足够强大,能在不被逐步明确编程的情况下,完成复杂的、语义丰富的任务。这一阈值大约在 2022-2023 年前后被 LLM 跨越——在此之前,“AI Agent”在绝大多数真实任务上都需要过多的人工辅助才能交付价值,Harness 的边际收益不足以形成实践基础。条件一缺失时,问题不是”约束设计得好不好”,而是”根本没有一个能在松散指令下产出有用结果的能力体可供约束”。
条件二:复杂度阈值。工具的能力已经复杂到无法用传统测试手段完全验证,需要专门的约束架构。一个确定性函数不需要 Harness;一个行为是概率性的、可以自主使用外部工具的 Agent,如果没有 Harness,就像一匹没有缰绳的马——能力越强,风险越不可控。条件二是 Harness 工程的必要性来源——若工具行为可被穷举测试覆盖,传统软件工程方法已经够用。
条件三:可驾驭窗口。工具的能力尚未超过人类对其行为的理解和约束能力。如果 Agent 的推理已超越人类的评估范围,Harness 将无法被有意义地设计——我们会陷入 §18.1 描述的”评估者-能力差距问题”的极端形式。条件三是 Harness 工程的可行性前提——人类必须仍能识别”什么是好的输出”,否则约束架构将退化为对不可观测目标的盲目猜测。
三个条件的同时性:能力阈值给出”为什么现在才开始”,复杂度阈值给出”为什么不能用旧方法”,可驾驭窗口给出”为什么现在还来得及”。三者必须同时成立——任一条件缺失,Harness Engineering 都不会作为显性工程实践存在。这一组合在历史上是窄窗口而非常态。
窗口的时限性:这三个条件不会永远同时成立。随着 Agent 能力继续增长,条件三的有效性将被持续检验——这正是 §18.4 和 §18.5 要正视的问题。Harness Engineering 在这个窗口内的工程积累,包括度量方法、约束模式、人机协作框架,将成为未来阶段无论如何演化都需要的基础设施。
这三个条件是领域无关的——它们描述的是 LLM 作为工具的成熟度,而非任何特定应用场景的特征。这正是 Harness Engineering 超越编程的结构性基础:任一知识工作领域,只要其工具达到了同一组合的成熟度,就会面临同一组结构性约束设计问题。
17.2 从代码到知识工作:三个具体案例
以下三个案例展示:当 Harness 的核心构件被迁移到非编程领域时,它们的结构角色保持不变,只是具体形态因领域而异。
案例 A:学术文献综述 Agent
场景:博士生需在两周内为新课题完成一份覆盖近五年主流方法的文献综述初稿。任务包含从数据库检索、按主题聚类、提取每篇的核心贡献与局限、识别研究空白、到生成结构化综述的完整链条。手工执行通常需要数百小时,且容易在文献筛选阶段引入主观偏差。
| 代码工程中的概念 | 文献综述中的等价物 |
|---|---|
| 测试套件 | 文献覆盖完整性检查、引用准确性验证 |
| 不可逆副作用 | 将错误结论引入综述、遗漏重要文献 |
| Linter | 引用格式自动校验、参考文献一致性检查 |
| Code Review | 同行学者对综述质量的审阅 |
Q/T/C 工作点:偏向质量轴(学术严谨性是底线,捏造引用 / 错误归因将直接损害研究者声誉),其次是时间(投稿 deadline 通常硬性),成本最不敏感(API 调用相对人工时间几乎可忽略)。这一权重决定了 Harness 应在准确性验证上投入冗余预算,而非压缩调用次数。
Harness 核心设计点:Plan 承担搜索策略的显式规划——先固化检索关键词与数据库范围(避免 Agent 在执行中漂移搜索方向),再分批系统化筛选文献,最后综合写作;Tool 集仅开放只读检索接口与本地草稿写入,禁止任何外部发布动作;Hook 承担两层验证——计算型(引用格式合规、DOI 可解析、参考文献编号一致)和语义型(每条引用的原文段落是否真的支持所述结论,由独立 LLM-as-judge 抽检);System Prompt 约束学术诚信边界——不捏造引用、不歪曲原文、对不确定的归因必须显式标注”需人工核对”。最危险的失败模式是 Agent 流畅地编造一个看似合理但不存在的参考文献,Hook 必须在提交前拦截。
案例 B:法律合同审查 Agent
场景:企业法务部门每周需审查数十份采购、服务、保密类商业合同。核心任务是识别对己方不利的条款(赔偿上限、争议管辖、知识产权归属、终止条件等)、检查与适用法规及公司政策的一致性、对每处风险给出标注与建议措辞。一份典型合同人工逐条精读约需 1-3 小时,企业的瓶颈在于资深律师的有限带宽,而非合同数量本身。
| 代码工程中的概念 | 法律审查中的等价物 |
|---|---|
| 解空间约束 | 适用法规和判例的明确限定 |
| 权限治理 | Agent 可以标记问题,不可以自主修改合同条款 |
| 操作集设计 | 标注风险条款、提取关键条件、生成审查报告 |
| 不可逆操作 | 合同签署、法律意见出具 |
Q/T/C 工作点:质量与时间双高敏感——错过一个不利条款可能导致诉讼或重大损失,但合同审查也常处于商务谈判的时间窗口内。成本轴上的关键不是 API 费用而是律师注意力这一稀缺资源——Harness 的优化目标是最大化”每单位律师注意力捕获的真实风险数”。
人类监督的最优位置:法律判断不可外包——“这个条款是否对我方不利”是依赖业务上下文与谈判筹码的价值判断,不是模式匹配。但信息收集(识别相关法规与判例)、格式检查(条款编号、引用格式、定义一致性)、初步风险标注可以由 Agent 完成。Agent 将律师从信息搜集中解放出来,使人类注意力集中在真正需要法律判断力的节点上——这正是第十五章”人在环上”框架在法律领域的直接映射。
成本核算与 Harness 边界:资深律师的审查时间是最昂贵的资源。Agent 辅助后,律师的工作从”逐条阅读”变为”审阅 Agent 标注的风险条款 + 验证 Agent 的法规引用”——同样的审查质量,人工时间显著减少。但 Harness 的设计必须遵守一条硬边界:所有具有法律效力的输出(最终审查意见、对客户的建议、合同签署)必须经过律师签名,Agent 的输出永远是”草案”或”标注”,不是”结论”。这条边界由 Tool 集和 Hook 共同强制实现——Agent 没有任何能直接发出最终意见的接口。
案例 C:医疗决策支持 Agent
场景:门诊医生在面对一位多病共存的复杂患者时,需快速整合患者既往史、当前用药清单、最新化验结果、相关临床指南,给出鉴别诊断建议或处方调整方案。Agent 的角色是辅助医生缩短信息整合时间——例如自动比对新处方与现有用药的潜在冲突、提示与最新临床指南不一致的诊疗路径,但不直接面向患者出具任何医嘱。
| 代码工程中的概念 | 医疗决策中的等价物 |
|---|---|
| 安全性约束 | 患者安全——任何错误推荐都有直接的人身后果 |
| 帕累托工作点 | 强烈偏向质量轴——宁可速度慢、成本高,不可质量低 |
| Human on the Loop | 医生不是”成本”而是”必要节点”——最终决策权不可委托 |
| Hook 设计 | 药物交互检查(计算型)、诊断一致性评估(语义型) |
Q/T/C 工作点:质量轴极端主导——单次低质量输出可能是不可逆的人身伤害。这与法律案例的”质量+时间”权重不同:在医疗场景中,时间从不应被用来换取质量。成本轴在临床医学中也常退居末位——多花一次 LLM 调用与因误诊导致的代价完全不可比。
Harness 设计的保守性原则:在生命关键场景中,Q/T/C 的权重分配与代码工程截然不同。代码工程中可以容忍偶尔的低质量输出(通过测试回归修复);医疗场景中单次低质量输出可能是不可逆的伤害。这意味着:升级阈值应极低(§11.4 中 极高,几乎所有非最高置信度的判断都应升级到医生确认),自动化程度应极保守(Agent 永远不直接执行处方下发),人类介入密度应远高于其他场景。Hook 必须包含基于权威药典的硬规则层(药物相互作用、剂量上限、禁忌症)作为不可绕过的安全网——这一层不依赖 LLM 的语义判断,它是”绝对优先于模型的规则”。
17.3 人类监督最优位置的跨域不变量
第十五章在代码工程场景中分析了人类监督的最优介入节点——杠杆最高的时刻,单位注意力产生最大价值仲裁收益的位置。三个案例揭示了一个跨域不变量:最优介入节点总是在不可逆性最高、方向性影响最大的决策点前,而非均匀分布在执行过程中。
这一普适性有直接的工程推论:Harness Engineering 在任何领域的首要任务,是识别该领域任务结构中的”不可逆性拓扑”——哪些操作是真正难以撤回的、哪些决策会锁定后续所有路径——然后在这些节点前建立人类介入接口。代码工程中是数据库删除和代码推送,法律领域中是合同签署和法律意见出具,医疗领域中是用药决策和手术方案确认。形式不同,结构相同。
跨域 Harness 设计的第一步清单:
- 识别不可逆操作:列出该领域中一旦执行就难以撤回的操作,按不可逆程度排序
- 映射操作集:将领域任务分解为 Agent 可执行的操作,按风险分级(§10.1 的四级分类直接适用)
- 定义目标的可形式化程度:哪些质量标准可以自动验证?哪些必须依赖人类语义判断?
- 确定 Q/T/C 权重:该领域的帕累托工作点在三轴上的偏好——医疗偏质量,客服偏时间,研究偏成本
- 设计人类介入点:在不可逆操作前和方向性决策前设置强制介入,其余位置按信任度动态调整
17.4 Harness 作为组织能力:积累的力量
在组织层面,Harness 不只是技术配置,而是将集体经验转化为系统能力的机制。但更重要的是:Harness 能力的积累是时间不可逆的——一个团队今天在特定任务上迭代出的 Harness,明天就成为它相对于同行的结构性优势,而这个优势随时间以指数方式拉大。
正在积累优势的团队特征:不把 AI 工具当作自动化替代品(输入→输出),而当作需要被驾驭的能力体(System Prompt、Context 策略、Hook 架构都需要持续迭代);每一次失败都是 Harness 的改进机会;Skill 库在积累,迭代成本在下降。
尚未建立积累的团队特征:每次任务都从”怎么写 Prompt”开始,没有跨任务积累;当 Agent 出问题时,解法是”换个更好的模型”而非”改进约束架构”;把 Harness 工程理解为”提示词优化”的高级版。
积累的窗口效应:当 Harness Engineering 的方法论成熟、最优实践被标准化后,早期积累者与后来者之间的差距会固化为先发优势。这不仅仅是代码工程领域的竞争——在法律、医疗、金融、教育等每一个 Agent 将深入的知识工作领域,最先建立起领域特定 Harness 体系的团队,都将获得难以被追赶的结构性优势。Harness Engineering 超越编程的意义,不仅在于技术的普适性,更在于组织能力积累的普适性。
章末案例剖析:法律合同审查 Agent 的 Harness 演化
案例中的数据(运行次数、检出率、token 消耗等)均为基于作者工程实践的说明性示例,旨在量化呈现跨域 Harness 设计中的结构性差异。
延续 §17.2 的案例 B。一家中型企业法务团队尝试为商业合同审查部署 Agent,期望减少资深律师在标准化条款审查上的时间投入。三个版本的演化清晰展示了”领域不变 vs 形态变化”的双重特征。
v1:仅 System Prompt 版本
症状:将一份涵盖审查要点的 Prompt 直接交给基础模型,输入合同全文,输出”审查报告”。在 50 份合同的内部抽测中:约 30% 的报告引用了不存在的法条编号;遗漏了多份合同中”赔偿上限”与”管辖法院”两类典型不利条款;偶发地以肯定语气给出”该合同对我方有利”的整体结论——这正是律师永远不应让 Agent 单独做出的判断。
根因:三类失败精确对应 LLM 的三种结构性不确定性(Ch01)——分布外填充(捏造法条)、分布偏移(合同模板与训练分布不一致导致风险条款被忽视)、自信度误校准(对超出其能力的整体性法律判断给出过强语气)。仅靠 System Prompt 无法约束这些行为,因为它缺少反馈节点(Hook)与操作集边界(Tool 治理)。
Q/T/C 评估:质量不可接受,时间收益(律师从数小时缩短到数十分钟)被验证成本完全抵消——律师必须从头核对每一处法条,反而比直接审查更慢。工作点完全偏离了帕累托前沿。
v2:加入 Hook 与只读 Tool 集
修复:
- Tool 治理:Agent 仅能调用三类只读接口——内部法规检索库、判例库、公司既往合同模板库;没有任何写入或外发权限。
- Pre-Hook:每条法条引用必须先在内部法规检索库中校验存在性,未命中即拒绝输出该引用。
- Post-Hook(计算型):报告生成后自动检查——条款编号是否连续、定义是否一致、引用格式是否合规。
- Post-Hook(语义型):独立 LLM-as-judge 抽检每条”风险标注”是否在原文中有对应支撑段落。
- System Prompt 收紧:禁止输出整体性结论(“对我方有利/不利”),仅允许逐条标注与建议措辞,最终判断显式标注为”待律师确认”。
Q/T/C 评估(说明性示例):在同样 50 份合同上,捏造法条的发生率从约 30% 降至接近 0(被 Pre-Hook 拦截);不利条款遗漏率显著下降(粗略量级从约 25% 降至 5% 以下)。律师工作模式转变为”审阅 Agent 的标注 + 抽样核验”,单份合同的律师投入时间下降到 v1 的约 1/3。质量可接受,工作点首次进入可用区间。
v3:引入 Skill 沉淀与人机分工接口
演化:v2 已可用,但每次新合同类型出现(例如跨境数据处理协议)都要重新调试 Prompt 与 Hook 规则。团队引入第十三章 Skill 机制——将每一类合同的”典型风险点 + 验证策略 + 律师反馈过的真实案例”沉淀为可调用的领域 Skill,按合同类型自动加载。
关键设计点:
- 识别不可逆性拓扑(§17.3 第一步清单的应用):审查报告的最终签发是不可逆操作;Agent 在签发前的所有动作都允许律师介入修订,签发本身永远由律师执行。
- 人类介入点定位:律师介入位置从”逐条阅读”转移到”审阅 Agent 标注的高风险条款 + 验证 Agent 引用的法规与判例”,单位注意力捕获的真实风险数大幅提升。
- Skill 反馈回路:律师在审阅过程中对 Agent 标注的修正(误报、漏报、措辞不当)被结构化记录,每月汇总进 Skill 库的更新。
Q/T/C 评估(说明性示例):相比 v1,律师在同等审查质量下的人工时间下降 60-70%;同时,因为 Skill 库在持续积累,新合同类型的冷启动成本随时间显著下降——这正是 §17.4 描述的”积累优势”在单一团队内的微观体现。
案例总结:
三版本的演化同时印证了本章三个核心论点。论点一(领域不变性):v1→v2→v3 的演化路径在结构上与第七章代码工程的 v1→v3 演化完全同构——单凭 System Prompt 不够,必须引入 Hook 与 Tool 治理,再叠加跨任务的 Skill 积累。论点二(不可逆性拓扑优先):v3 的关键飞跃不是模型变强,而是显式识别了”签发”这一不可逆操作并把人类介入点精确放在它之前。论点三(积累窗口):Skill 库的引入使该法务团队相对于尚未启动 Harness 工程的同行,建立了随时间扩大的结构性优势——这一优势的形成机制与代码工程团队完全一致,只是载体换成了”合同审查 Skill 库”而非”代码评审 Hook 链”。
形式不同,结构相同。这正是 Harness Engineering 超越编程的最深含义——下一章我们将正视:当三个条件中的”可驾驭窗口”被未来的能力增长持续侵蚀时,今天积累的这些工程经验,是否仍能继续指导我们。