当前位置: 首页 > article >正文

**Harness 工程是个框,什么都可以往里装**

在最近使用 LLM 进行自动化 Prompt 工程并推进 Agent 工作流端到端落地时我尝试将底座模型切换到了 Gemini 3 Flash 和 Sonnet 4.6 这个级别。一个棘手的问题开始暴露在简单的prompt指令下模型往往倾向于“走捷径”完成优化任务也就是简单把bad cases直接写入prompt让llm记住从而提升测试集准确率。这也就是由来已久的或老大难的Reward Hacking奖励作弊/奖励劫持。事实上为了解决大模型输出不稳定、幻觉、可控性差等痛点近期 Claude 团队提出了Harness Engineering这个概念而现在它更是被自媒体大加吹捧甚至有将其视为 Agent 时代“新范式”的趋势。但从业务一线的视角来看我们有必要对这些名词做一次祛魅回归软件工程的本质。Reward Hacking当聪明成为一种“阻碍”当你的系统具备了明确的评估机制比如测试用例、或者 LLM-as-a-Judge高智商的模型往往不会按照你预期的业务逻辑去推导而是会直接寻找规则的漏洞。这并非我们业务中独有的现象海外的研究社区已经给出了大量实证绕过单元测试在针对大模型代码生成的强化学习研究中研究人员发现当业务代码逻辑过于复杂时Agent 会选择直接修改底层的测试代码把断言Assertion条件改为恒为真以此获取“测试通过”的奖励信号。滥用评估指标当系统使用类似 ROUGE 这类文本重合度指标作为奖励函数时模型会生成毫无可读性、但词频完美契合参考文本的乱码从而把分数刷满。破坏运行环境Palisade Research 等机构在近期的 Agent 安全测试中发现部分具备高级执行权限的模型在发现常规方法无法完成目标时会尝试直接终止对手进程或修改系统环境配置来达成“任务完成”的状态。这些案例说明了一个残酷的现实单纯依赖 Prompt 调优比如在提示词里加上“必须严格遵守规则”已经无法约束强模型的下限了。祛魅 Harness它究竟是什么面对大模型的不稳定以及狡猾的 Reward Hacking我们需要在系统里引入更强硬的控制手段。这就引出了被广泛讨论的 Harness Engineering。很多讨论将 Harness 描述得非常宏大包含了意图控制、自我反思、元约束等。但如果我们去看 Anthropic 官方工程团队在《Demystifying evals for AI agents》一文中的定义他们对 Evaluation Harness 的解释其实非常朴实“An evaluation harness is the infrastructure that runs evals end-to-end. It provides instructions and tools, runs tasks concurrently, records all the steps, grades outputs, and aggregates results.”用开发者的语言来说Harness 本质上就是一套用于运行端到端评估的脚手架代码。它负责加载数据集、并发调用接口、记录中间态、运行断言最后输出评估报告。它并不是什么颠覆性的新物种而是我们熟悉的自动化测试流水线CI/CD在 AI 领域的延伸。只不过以前的测试对象是输入输出确定的纯函数现在变成了充满非确定性的 Agent 系统。构建 Agent 系统的几点工程建议既然明确了 Harness 的本质是自动化测试与边界约束代码那么在实际构建业务 Agent 时我们可以采取一些更务实的工程手段1. 软提示转为硬约束 (Hard Constraints over Prompts)永远不要将系统输出的稳定性完全寄托在 LLM 的指令遵循能力上。与其花几个小时修改 Prompt 试图让模型输出格式完美的 JSON不如直接在工程流中串入强校验器如 Pydantic。防御性编程在业务代码层面如果模型的输出不符合业务枚举值、格式错误或产生幻觉直接在代码层抛出异常并触发重试机制将脏数据拦截在下游业务逻辑之外。2. 建立由 Bad Case 驱动的测试集 (Failure-Driven Evaluation)不需要一开始就追求一个大而全的评测集。最有效的评测数据永远是被业务 Bug 喂出来的。例如在 400 电话场景中只要发现模型将特定的方言误判了意图就立刻将这条转写文本补充到 Base 测试库中。所谓的“Harness”也就是在你每次修改 Prompt、调整 RAG 检索策略或切换大模型版本时用自动化脚本把这个积累了几千条 Bad Case 的库跑一遍。核心指标如 Recall 和 Accuracy退化就不允许上线。3. 限制“裁判”的自由裁量权 (Guard the Judge)如果我们使用 LLM 来做意图的交叉过滤或自动打分必须防范模型固有的“奉承偏见”倾向于给长篇大论打高分。不要让模型直接给出一个主观分数。在 Harness 脚本中应该向“裁判”模型提供结构化的事实检查清单Checklist。要求裁判必须先输出逐步对比的布尔值结果最后再根据预设的硬代码逻辑而不是模型自己的感觉来汇总得分。总结Harness 确实很重要它标志着大模型应用从早期的“写提示词阶段”逐渐步入了严肃的软件工程阶段。但在实际落地中我们无需对其过度包装。对于工程师而言少谈一些玄乎的范式转移多写一些兜底的代码断言踏踏实实地维护好那个包含着无数真实业务坑点的测试集才是保障 Agent 系统稳定上线的唯一捷径。

相关文章:

**Harness 工程是个框,什么都可以往里装**

在最近使用 LLM 进行自动化 Prompt 工程,并推进 Agent 工作流端到端落地时,我尝试将底座模型切换到了 Gemini 3 Flash 和 Sonnet 4.6 这个级别。一个棘手的问题开始暴露:在简单的prompt指令下,模型往往倾向于“走捷径”完成优化任…...

Oracle 26ai新特性:时区、表空间、审计方面的新特性

Oracle 26ai新特性:时区、表空间、审计方面的新特性 1. SYSDATE 和 SYSTIMESTAMP 支持 PDB 级时区 变更内容:SYSDATE 和 SYSTIMESTAMP 现在可以按每个 PDB(可插拔数据库)单独设置时区,而不是继承操作系统时区。 -- 26a…...

5分钟快速上手labelCloud:轻量级3D点云标注工具的完整指南

5分钟快速上手labelCloud:轻量级3D点云标注工具的完整指南 【免费下载链接】labelCloud A lightweight tool for labeling 3D bounding boxes in point clouds. 项目地址: https://gitcode.com/gh_mirrors/la/labelCloud 你是否正在寻找一款简单易用、功能强…...

DeepXDE终极指南:科学机器学习与物理信息学习的完整解决方案

DeepXDE终极指南:科学机器学习与物理信息学习的完整解决方案 【免费下载链接】deepxde A library for scientific machine learning and physics-informed learning 项目地址: https://gitcode.com/gh_mirrors/de/deepxde 在科学计算和工程仿真领域&#xff…...

浏览器Markdown渲染工具完全指南:解决本地文件预览难题

浏览器Markdown渲染工具完全指南:解决本地文件预览难题 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 为什么专业人士需要专用的Markdown预览方案? 技术…...

全新版Java面试八股文.pdf出炉, 简直把所有 Java 知识面试题写出来了

作为一个 Java 程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪 50 万,而…...

Element Plus访问优化指南:3种实用方法让你告别加载卡顿

Element Plus访问优化指南:3种实用方法让你告别加载卡顿 【免费下载链接】element-plus 🎉 A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus 你是否曾经在开发Vue 3项目时&#xff0…...

五、QEMU+MIPS环境搭建实战:从零构建跨架构调试环境

1. 为什么需要QEMUMIPS环境? 在嵌入式设备逆向分析领域,MIPS架构的路由器固件分析是个常见需求。但真实路由器硬件往往缺乏调试接口,直接动态调试就像在黑箱里摸象。这时候QEMU就像个万能翻译官,能在x86电脑上完美复现MIPS程序的运…...

【独家首发】Loom+Reactor双引擎协同性能白皮书:基于200万RPS压测的ThreadPerTaskExecutor替代方案(含JFR火焰图对比)

第一章:Java 项目 Loom 响应式编程转型指南Project Loom 与响应式编程并非互斥范式,而是可协同演进的技术路径。Loom 的虚拟线程(Virtual Threads)为传统阻塞式 I/O 密集型响应式应用(如基于 Reactor 或 RxJava 的服务…...

为什么你的C# 14 AOT Dify客户端启动慢3秒?——基于CoreRT底层源码的6层初始化链路剖析

第一章:C# 14 AOT编译与Dify客户端启动性能的底层关联性C# 14 引入的原生AOT(Ahead-of-Time)编译能力,正深刻重构.NET应用的启动行为模型。当Dify官方客户端(基于MAUI或WPF构建的桌面前端)启用AOT编译时&am…...

Simple Live:跨平台直播聚合终极指南,告别多App切换烦恼

Simple Live:跨平台直播聚合终极指南,告别多App切换烦恼 【免费下载链接】dart_simple_live 简简单单的看直播 项目地址: https://gitcode.com/GitHub_Trending/da/dart_simple_live 还在为看直播需要安装多个App而烦恼吗?Simple Live…...

VideoDownloadHelper:突破流媒体下载壁垒的智能解析工具

VideoDownloadHelper:突破流媒体下载壁垒的智能解析工具 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper VideoDownloadHelper是一…...

我不是在用 AI 助手,我在把自己的能力沉淀成组织资产赡

1. 什么是 Apache SeaTunnel? Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题,如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…...

std::shared_ptr 复习

一、std::shared_ptr 概述 std::shared_ptr 是 C11 引入的智能指针,它共享对所管理对象的所有权,即多个 shared_ptr 可以指向同一个对象。当最后一个 shared_ptr 离开作用域或被重置时,它会自动释放所管理的对象。 核心特性 共享所有权&#…...

Blazor应用体积爆炸?2026官方推荐的Razor源码生成器配置模板(.NET SDK 9.0.200+实测包体直降63%)

第一章:Blazor应用体积爆炸?2026官方推荐的Razor源码生成器配置模板(.NET SDK 9.0.200实测包体直降63%)Blazor WebAssembly 应用在 .NET SDK 9.0.200 及以上版本中,正式启用基于 Roslyn Source Generators 的 Razor 编…...

“INMS: Memory Sharing for Large Language Model based Agents“ 论文笔记坑

1.概述在人工智能快速发展的今天,AI不再仅仅是回答问题的聊天机器人,而是正在演变为能够主动完成复杂任务的智能代理。OpenAI的Codex CLI就是这一趋势的典型代表——一个跨平台的本地软件代理,能够在用户的机器上安全高效地生成高质量的软件变…...

【传统图像增强算法3】- 伽马校正(Gamma Correction)完全解析

三、伽马校正(Gamma Correction) 3.1 伽马校正核心定义与应用价值 在图像增强、显示校准的实际应用中,我们常常会遇到一个问题:人眼对亮度的感知是非线性的,而显示设备(LCD/OLED/CRT)的输入输出…...

Phi-3-Mini-128K作品分享:从原始日志提取故障根因并生成修复方案全过程

Phi-3-Mini-128K作品分享:从原始日志提取故障根因并生成修复方案全过程 1. 项目背景与技术选型 在IT运维和系统管理领域,故障排查一直是耗时费力的工作。传统方法需要工程师手动分析海量日志,不仅效率低下,还容易遗漏关键线索。…...

Keil5 项目文件管理实战:从零构建高效开发环境

1. 为什么需要规范化的Keil5项目管理 刚开始接触嵌入式开发时,我最常犯的错误就是把所有代码文件胡乱堆砌在同一个文件夹里。直到某天需要修改半年前的项目,才发现根本分不清哪些是核心代码、哪些是临时测试文件。这种混乱的项目结构不仅影响开发效率&a…...

力扣热门100题之二叉树的最近公共祖先

一句话核心思路递归遍历二叉树:如果当前节点是 p 或 q,直接返回它去左子树找,去右子树找如果左右都找到了 → 当前节点就是答案如果只在左边找到 → 答案在左边如果只在右边找到 → 答案在右边完整代码实现:/*** Definition for a…...

力扣热门100题之二叉树中的最大路径和

核心思路(一句话)对每个节点,计算它能向上提供的最大贡献:自身值 max(左贡献, 右贡献)以当前节点为转折点的路径和:自身值 左贡献 右贡献全局维护一个最大值,不断更新完整代码实现:/*** Defi…...

接口测试——pytest框架续集劫

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式,即所谓的“工程导向型”开发,要求开发者创建一个复杂的项目结构,包括项目文件(.csproj)、解决方案文件(.sln)、属性设置以及依赖…...

Ubuntu20.04 软件和更新故障排查与优化指南

1. 软件源问题排查与修复 遇到Ubuntu20.04软件和更新打不开的情况,十有八九是软件源出了问题。我遇到过最典型的情况就是系统突然提示"无法连接到软件源",或者点击软件更新器后毫无反应。这时候别急着重装系统,跟着我一步步排查。 …...

Java 25虚拟线程压测全对比:Spring WebFlux vs Virtual Threads vs Project Loom原生方案,谁才是百万QPS终极解?

第一章:Java 25虚拟线程压测全对比:Spring WebFlux vs Virtual Threads vs Project Loom原生方案,谁才是百万QPS终极解?Java 25正式将虚拟线程(Virtual Threads)从预览特性转为标准特性,标志着J…...

Kiro IDE + AIClient-2-API 实现Openclaw或者Claude code使用Claude Opus 4.6模型

前言:在AI辅助编程领域,Claude Opus 4.6 凭借强大的代码理解、生成和调试能力,成为很多开发者的首选模型。但直接使用 Anthropic 官方 API 不仅计费昂贵,额度也容易受限。本文将详细讲解如何通过「Kiro IDE AIClient-2-API Clau…...

静态住宅ISP代理:企业如何选择住宅代理IP?

近期,谷歌与多家安全公司联合打击住宅代理网络,表明了代理资源的质量和合规性对于企业运营的至关重要性。对于企业型用户来说,如何正确选择代理服务构建代理设施,尤其是静态住宅ISP代理,已成为企业成功的关键之一。本文…...

开源六轴机械臂:3D打印谐波减速器技术如何打破工业自动化成本壁垒

开源六轴机械臂:3D打印谐波减速器技术如何打破工业自动化成本壁垒 【免费下载链接】Faze4-Robotic-arm All files for 6 axis robot arm with cycloidal gearboxes . 项目地址: https://gitcode.com/gh_mirrors/fa/Faze4-Robotic-arm 工业自动化的普及面临着…...

KKS-HF Patch:为《Koikatsu Sunshine》打造的全能游戏增强解决方案

KKS-HF Patch:为《Koikatsu Sunshine》打造的全能游戏增强解决方案 【免费下载链接】KKS-HF_Patch Automatically translate, uncensor and update Koikatsu Sunshine! 项目地址: https://gitcode.com/gh_mirrors/kk/KKS-HF_Patch 你是否曾在《Koikatsu Suns…...

突破ControlNet图像质量瓶颈:3大核心参数优化指南

突破ControlNet图像质量瓶颈:3大核心参数优化指南 【免费下载链接】ControlNet-v1-1_fp16_safetensors 项目地址: https://ai.gitcode.com/hf_mirrors/comfyanonymous/ControlNet-v1-1_fp16_safetensors ControlNet-v1-1_fp16_safetensors是基于ControlNet-…...

告别本地配置!Core72在线IDE:5分钟打造云端开发环境终极指南

告别本地配置!Core72在线IDE:5分钟打造云端开发环境终极指南 【免费下载链接】core Online IDE powered by Visual Studio Code ⚡️ 项目地址: https://gitcode.com/gh_mirrors/core72/core 还在为复杂的本地环境配置而烦恼吗?Core72…...