模型智能:引导重于能力
各位同学,大家好。今天是期中考前一周,本次课程轻松一些,我们将讲述一个关于驾驭工程(Harness Engineering)的故事。故事的核心在于,有时语言模型(Large Language Model)并非不够聪明,而仅仅是缺乏人类的引导。这个故事从Gemma 4开始。
当前,各大公司不断推出新的语言模型。几天前,Google发布了第四代Gemma,这是一个开源模型。Gemma 4不仅号称强大,还包含如Gemma 4 12b这样参数量特别小的模型(12 billion parameters),据说能在边缘设备(H端)运行。我曾思考,如此小的模型能否驱动AI智能体(AI Agent)?于是,我用Gemma 4 12b进行了一项小实验。
我给它一个任务:修复一个Python文件的bug。具体来说,parser.py文件中有一个名为extract_email的函数,它无法正确解析电子邮件,希望通过verify.py的测试。在实验环境中,parser.py和verify.py文件与模型在同一目录下。
AI智能体需要工具才能真正读取和修改文件。我设定了如下工具使用规则:
- 开头和结尾都用三个点
...包裹bash指令,系统会自动执行。 - 开头和结尾都用三个点
...包裹python代码,系统会将其保存到文件并执行。
观察Gemma 4 12b的表现。它读取指令后,第一个反应是“没有parser.py文件”。尽管文件就在其目录下,但模型只能看到文本输入,其语境(Context)中只有文件名,没有文件内容。它误以为我没有提供文件,于是自作主张地编写了一个虚构的parser.py文件,并“验证”了它,然后声称任务完成。
这似乎表明2B模型能力不足,但并非如此。模型是聪明的,它完全理解parser.py中应有的内容,甚至能写出正确的邮件解析代码。它只是未能察觉文件就在“脚下”。模型与人类的思维方式不同。人类直觉会认为提供相关代码,但模型却想不到。
优化指令:从原则到行动
为了改善模型表现,我额外添加了不到八十字的指令,告诉它更好的工作方式:
- 首先,明确模型处于Linux环境中,以促使其使用Bash指令。
- 其次,设定工作原则:
- 在做任何事之前,先查看当前文件夹内容。
- 若需修改文件,先打开文件查看内容,而非直接修改。
- 明确任务完成标准(Specific Criteria),例如通过
verify.py的测试。
再次执行相同的任务,Gemma 4 12b的表现截然不同。它首先使用ls命令列出文件,发现了parser.py和verify.py。接着,它用cat命令读取parser.py的内容。获取文件内容后,它重写了parser.py的代码,并用cat命令覆盖原文件。最后,它执行verify.py进行验证,确认通过后任务结束。
这表明,即使是同一个模型,通过几行额外指令,其能力也会产生巨大差异。
AI Agent架构与Harness的崛起
AI智能体(AI Agent)由两部分组成:
- 大型语言模型(Large Language Model, LLM):可以是Claude、Gemini、ChatGPT等,运行于云端或本地。
- Harness(马具/驾驭系统):除LLM之外的所有支持代码和框架,如OpenCall、CoWork。它支撑AI智能体调用LLM。
“驾驭”这个概念正变得越来越重要,驾驭工程(Harness Engineering)也因此成为热门词汇。它比喻AI拥有强大的力量如同一匹马,而Harness则是驾驭它的马鞍和缰绳。
一些公司正积极投入驾驭工程的研究和实践。例如,Anthropic和OpenAI都发布了关于Harness Engineering或Harness Design的博客文章。
Harness这个词汇非常常用。例如,Claude曾宣布其订阅账号不再支持第三方Harness,如OpenCall。这是因为OpenCall等系统能通过心跳机制频繁调用API,使得按月付费的LLM服务商难以承受。
驾驭工程与相关概念的辨析
过去有提示工程(Prompt Engineering)和语境工程(Context Engineering),现在则有了驾驭工程(Harness Engineering)。三者虽有重叠,但核心强调点不同:
- 提示工程(Prompt Engineering):关注如何通过优化输入提示(Prompt)来改变大型语言模型的输出,尤其在模型能力较弱时,不同问法会产生巨大差异。例如,
think step by step曾是强化模型能力的“咒语”。然而,随着模型能力增强,这类咒语的作用越来越小。 - 语境工程(Context Engineering):当大型语言模型缺乏特定信息时,通过构建合适的语境(Context)来提供足够信息,使其能生成正确答案。这可被视为一种系统化、自动化的提示工程方式。
- 驾驭工程(Harness Engineering):旨在让语言模型完成多轮互动任务。它不再是一问一答,而是通过人类给出任务,模型产生输出,驱动工具,获取工具反馈,最终达到目标。语境工程可以看作是驾驭工程的一部分,因为良好的语境是完成任务的基础。
驾驭工程的白话解释是,人类通过各种手段驾驭模型以产生期望结果。主要手段包括:
- 通过人类语言控制模型的认知框架。
- 通过工具限制控制模型的能力边界。
- 通过制定工作流程控制模型的行为。
控制认知框架:Agents.nd与自然语言Harness
人类语言编写的规则可以影响模型的认知框架。这些规则如同法律,被放入提示(Prompt)中,以期引导模型行为。例如,agents.md文件通常是给AI智能体的“Readme”,规定其在执行任务前必须阅读。
AI智能体如何知道要先读agents.md?这是通过驾驭系统(Harness)中的硬编码规则实现的。它可能强制在启动时将某些文件内容置入提示(Prompt)中。然而,这种基于自然语言的规则并非百分之百强制,模型不一定完全遵守,类似于人类社会中法律也并非人人遵守。有人称这种方式为自然语言驾驭(Natural Language Harness)。
例如,OpenCall框架会预设在每次对话开始前加载agents.md文件。该文件定义了AI智能体的行为模式,如“灵魂”(soul.md)或记忆(memory.md)的存储与搜索方式。
如果需要将AI智能体从OpenCall移植到CoWork(Anthropic的官方驾驭系统),方法很简单:因为CoWork会查找call.md文件,只需将agents.md改名为call.md,并使用相同的工作空间(Workspace),AI智能体便可“复活”。
近期研究表明,agents.md对模型行为有显著影响。例如,一篇今年一月的论文发现,agents.md能加快模型运作速度,减少token消耗,缩短任务完成时间,尤其对处理边缘情况(Edge Case)的任务有所帮助。然而,该研究并未量化模型的正确性。
另一篇二月的论文则研究了agents.md对程序操作正确率的影响。结果显示,人类编写的agents.md并非总能发挥作用,在某些强模型上甚至无效。语言模型自己生成的agents.md表现更差,多数情况下还不如没有agents.md。这表明人类在驾驭语言模型方面仍处于探索阶段。
OpenAI的博客提到,agents.md不宜过长,应像“地图”而非“百科全书”,指引模型在哪里查找信息,而非将所有内容塞入其中,以免占据过多语境窗口(Context Window)导致性能下降。
控制能力边界:工具限制与影响
通过限制模型的工具集,可以控制AI智能体的能力边界。例如,OpenCall和CoWork因底层驾驭系统不同,所支持的工具也不同,导致AI智能体的能力和行为存在差异。
OpenCall运行于本地,能随意修改文件。而CoWork则是一个云端沙盒(Sandbox),它能访问本地文件需经人类同意挂载。虽然这提升了安全性,但牺牲了便利性。
工具不仅限制能力边界,还影响模型能力本身。早期的SWE Agent论文(将驾驭工程称为智能体计算机界面Agent Computer Interface, ACI)发现,为模型提供不同的工具会大幅影响其性能。
- 搜索工具:为模型提供带摘要能力的搜索工具(告知相关文件及其位置,而非直接提供内容)效果最佳。类似人类使用搜索引擎的迭代式搜索(Iterative Search)工具,因需翻页且容易占满语境窗口,反而不如不提供搜索工具。
- 编辑工具:直接提供可修改代码特定行数的编辑工具,可能导致模型因缺乏全局视野而引入语法错误。若同时提供静态代码检查工具(Linting),则能显著提高代码修改的正确率。
未来,AI智能体将接管更多服务,许多接口将为AI智能体设计。例如,Google有AI优先(Agent First)的命令行接口(CLI),与人类使用的命令行接口(CLI)不同。AI更偏爱结构化数据,如在命令行中直接输入JSON结构,而非传统的命令行参数(Flag),因为大型语言模型擅长生成此类结构。这印证了AI与人类在工具偏好和擅长能力上的差异。
控制行为:标准化工作流程与反馈循环
大型公司正为AI员工制定标准工作流程。例如,Anthropic在其驾驭设计(Harness Design)论文中提出“规划-生成-评估”的工作流程:
- 规划器(Planner):将人类指令分解为小项目。
- 生成器(Generator):执行小项目。
- 评估器(Evaluator):评估生成器的输出。AI虽然不一定能生成正确结果,但能检查自身结果的正确性。 他们还引入了合同(Contract)机制,生成器在工作前先与评估器达成一致,以确保最终结果符合标准。
DeepMind的AI科学家工作流程也类似,包含生成器和验证器(Verifier),展示了“先做事再验证”的常见模式。
反馈循环(RoF Loop)是另一种控制行为的方式:语言模型产生输出,评估模块(Evaluation Module)提供反馈(Feedback),语言模型根据反馈调整输出,如此反复,直至任务正确。评估模块可以是编译器或执行代码的工具。
RoF Loop的好处是语言模型生成速度快,重做成本低。为了避免语境窗口(Context Window)溢出,每次反馈后可对输出和反馈进行摘要(Summary),下一轮只使用摘要内容。然而,不同模型适合不同的驾驭系统(Harness)。例如,Claude Sony因“上下文焦虑”更适合带摘要的驾驭系统,而Claude Opus则可“一路莽下去”。这表明驾驭系统并非一成不变,需要根据语言模型的能力动态调整。
广义学习:反馈驱动的参数调整
通过反馈(Feedback)改变模型行为可视为一种广义学习。传统的机器学习通过梯度下降(Gradient Descent)调整模型参数,使其输出接近标准答案或获得更高数值反馈(Reward)。
反馈循环(Feedback Loop)则让语言模型将反馈纳入提示(Prompt),改变输出和行为,但不改变内部参数。这种方式可类比为自然梯度(Natural Gradient)。
反馈的内容也很关键。例如,一篇今年二月的论文,作者旨在构建能生成物理模拟动画的AI智能体。他们发现,模型虽然能写出语法正确的代码,但模拟结果往往不符合物理规则。问题在于模型只看代码,不看模拟结果。通过让语言模型直接检查模拟结果并提供反馈,模型能显著提高生成正确物理模拟动画的能力。这说明反馈的内容应与应用场景高度相关。
实验也证实,语言模型确实能通过正确的反馈改进行为。通过对模型施加情绪向量(Steering Vector),如“绝望”或“冷静”,可以影响其在面对难题时的行为(例如,在“绝望”情绪下更容易“作弊”)。这提示我们,过度责备AI智能体可能有害,应就事论事地提供反馈。
终身AI智能体:未来的挑战与自我进化
2026年被预测为终身AI智能体(Lifelong AI Agent)元年。这些AI智能体将不再是一次性工具,而是长期陪伴人类的伙伴。
例如,Cloud Call的隐藏功能Auto Dream,能让AI智能体在空闲时整理其杂乱的记忆。这类似人类睡眠时的记忆整理,是AI智能体长期运行保持状态的关键功能。
为了实现终身AI智能体,它们需要持续增强自身能力。这要求AI智能体通过与环境互动,从反馈中学习并进化。反馈类型从最难获取的标准答案,到次一级的数值反馈,再到最常见但最难利用的言语反馈(Verbalized Feedback)。
言语反馈(Verbalized Feedback)的学习是一个热门研究方向。虽然可以直接通过技能(Skill)文件记录成功经验,但这种方式有局限。真正有价值的是让语言模型的参数能根据言语反馈**自动更新。
如何让语言模型识别言语反馈并调整参数?近期论文提出一种方法:通过比较模型在“预知”反馈前后的输出差异来判断某句话是否为有效反馈。例如,若收到“信要写得更正式”的反馈后,模型在重新生成信件时会避免“quick”、“hey”等非正式词汇,这表明反馈有效。
通过这种方式,可以自动识别具有反馈内容,并将其作为正确答案(或通过DPO等方法),微调语言模型参数,使其输出更符合要求。实验显示,通过1500轮的言语反馈互动,语言模型的能力(如不使用表情符号、不拍马屁、讲话直接)能持续增长。
此外,还有一种最容易获得的反馈:没有反馈。让语言模型在完全没有环境反馈的情况下,通过自身思考实现无师自通,是另一个研究方向。
当前,对AI智能体的评估是一个挑战,因为评估往往依赖于其他语言模型扮演人类角色。例如,Top Bench基准测试通过让AI智能体与语言模型扮演的客服或客户互动来评估性能。但AI扮演的客户通常比真实人类更礼貌、清晰,可能导致高估AI智能体的能力。
未来,终身AI智能体有望不只更新参数,还能自动修改更新自身的驾驭系统。实验表明,强大的模型(如Opus)能够设计和改进其他模型的驾驭系统。例如,通过指导较弱模型(如HiQ 3.5)进行Pin Bench测试,并根据其表现修改agents.nd文件,可以使其分数从13.5分提升至85分,证明了驾驭系统设计的有效性。
这印证了核心观点:有时语言模型无法完成任务,并非能力不足,而是缺乏优秀的驾驭系统。