🥰 Thanks you,李宏毅老师!🥰

本文最后更新于 2026年8月17日 晚上

以下内容来自于 NTU 李宏毅 2026 Spring 的课程 [传送门]

背景来自 XHS 小满 Summer


引入

gemma-4-E2B-it 是一个 2B 参数的小模型,将它用于代码修复任务上。

图片 图片
使用 gemma-4-E2B-it 模型驱动 AI Agent

可以看到,gemma-4-E2B-it 模型甚至不知道要读取文件夹下的待修改代码,而是直接自己编写了 parse.pyverify.py。但我们可以通过一定的辅助来告诉它:

图片 图片
加入一定的指示后,AI Agent 可以成功完成任务。

这说明:有时候模型无法完成既定任务,不一定是模型智力的问题,也有可能是我们指令不够完善。

图片
可以从 harness 入手来提升 AI Agent 的性能

Harness

概念内容

图片 图片
图片
从 prompt 到 context 再到 harness,侧重点不同
  • Prompt Engineering:LLM 的本质就是在做文字接龙,所以不同的 input 就会产生不同的 output。
    • 过去的 LLM 性能比较弱,所以同一个问题换一种问法,可能答案天差地别
    • 人们的着力点在于,如何下 prompt 才能让模型发挥性能。由此产生了一堆神秘咒语。
      • 最知名的咒语:think step by step
    • 随着模型性能的增强,这些神奇咒语越来越没有用。
  • Context Engineering:LLM 没有回答正确答案,可能不是能力不行,而是因为模型本身确实没有相关知识。
    • 构造一个系统为 LLM 搜集需要的信息,和 prompt 一并丢给 LLM
    • 可以说是一种更加自动化的 prompt engineering 的方式
  • Harness Engineering:LLM 在执行任务的时,往往不再只是一问一答,而是 多轮对话,而且可能会用到其他 tools 的输出。
    • 如何有效管理这些不同的输入输出,让 LLM 在多轮对话中也能把任务做好,这就是 harness engineering 所考虑的问题。
图片
几种控制 LLM 工作的手段

控制认知框架

Natural Language Harness

首先,我们可以通过用人类语言写成的规则来控制 LLM 的行为。

图片 图片
让 LLM 在做每件事之前都先把提前写好的规则放入 prompt 中

但就像不是每个人都能遵守法律一样,LLM 也有可能不遵守我们写好的规则,这不是具有 100% 强制力的!

下面是一些针对 AGENTS.md 作用的实验。

图片 图片
左图:AGENTS.md 可以影响 LLM 完成任务的速度
右图:AGENTS.md 可以影响 LLM 完成任务的质量
  • 左图:AGENTS.md 可以用更少的时间、更少的 tokens 完成任务(主要体现在 edge case 上)
    • 但这个实验只计算了完成速度,并没有计算任务完成的质量。
  • 右图:统计了 LLM 在不同情况下对任务的完成质量
    • 图例
    • 实验结果
      • 在比较强的模型(Sonnet-4.5)上,AGENTS.md 并没有发挥作用
      • 但在比较弱模型(Qwen3-30B)上,AGENTS.md 的效果比较好。
    • 所以我们写的 AGENTS.md 并不总是会发挥作用
图片
AGENTS.md 不能够太长
  • Claude 曾尝试把所有模型需要知道的知识、所有需要遵守的规则都塞入 AGENTS.md 中,最后发现模型性能大幅下降。
    • 可以理解,因为百科全书式的 AGENTS.md 会大量挤占 context 空间
    • AGENTS.md 应该要像一张地图
      • 告诉模型:如果想知道什么内容,应该去何处寻找。
      • 而不是把所有信息全部塞入 AGENTS.md

限制能力边界

可以通过控制 LLM 调用工具来限制 AI Agent 的行为。

图片
现在的一些 harness 会要求 LLM 在读取/上传文件时,先得到人类的确认(程序硬性要求)
图片 图片
工具除了可以限制模型的能力边界,还会影响模型的能力。

SWE-agent 发现:

  • 给模型不同的工具,会大幅影响模型的能力
  • 适合人类的工具,并不一定适应模型
    • 对搜索的实验:
      • 三个工具
        • 无搜索工具(原生 Linux 命令行工具)
        • 类似浏览器的需要翻页的搜索工具
        • 带摘要的搜索工具
      • 结果:带摘要的最好,翻页式的最差
    • 对编辑的实验:
      • 三个工具
        • 无编辑工具(原生 Linux 命令行工具)
        • 块编辑工具:可以指定修改程序的第几至几行。但模型甚至会出现括号匹配这类低级错误
        • 块编辑 + Linting 工具(Linting 用以检查语法问题,如果有错误则继续修改)
      • 结果:Linting 最好,用原生最差
    • 因此,给 AI Agent 趁手的工具是十分重要的!
图片
AI Agent 更喜欢 Command Line 而不是 GUI!

制定工作流程

图片
Anthropic blog 中的工作流程
  • planner 先规划任务,然后分发给多个 generator
  • generator 在正式生成开始之前,会先生成一个 contract 给 evaluator,看后者是否接受
    • evalutor 如果接受,则 generator 开始生成
    • 这是为了确保 evaluator 在 generator 生成完毕后的审查标准一致
图片 图片
Ralph Loop:横冲直撞地产生一连串 feedback
把每一个 round 压缩为一个 summary 供后续使用
  • 对于 LLM 来说,生成是容易的,所以我们只需根据 feedback 一路生成下去就能提升回答质量
    • 此处的 evaluator 可以是一个 LLM,也可以是 compiler 等等
    • 潜在问题:每轮对话都会产生 output 和 feedback,这会迅速挤占 context 容量
      • 解决方法:采用类似 context engineering 中的手段,把每一个 round 压缩为一个 summary 供后续使用。
图片 图片
不同的 LLM 适合不同的 harness
  • 不同的 LLM 可能会适合不同的 harness
    • Anthropic 写道,
      • Claude Sonnet 比较适合 summary 类型的 harness
      • Claude Opus 就无需上述 summary 类型的 harness,直接使用单线程的 harness 即可
    • 因此,harness 不是万用的,应该根据不同 LLM 的能力和特性,可以自行拆解组装!
  • 根据 feedback 来改变 LLM 生成内容的行为也可以理解为一种广义的学习
    • 严格意义上的学习往往伴随模型参数的变化
    • feedback 可以视作是基于 “文本梯度”“学习”
图片 图片
选用什么东西作为 feedback 也是有学问的
  • 让 LLM 编写代码生成模拟磁场的动画,LLM 往往可以生成可以执行(无报错)的代码,但并不符合物理常识。
    • 加一个对最终输出的检查步骤,可以提高生成质量。
  • 右图:
    • 问题设置:有一些基因和目标,让 LLM 尝试改变一些基因然后达成想要的目标(性状等等)
    • 不同的区块代表不同的目标,分数越高代表效果越好
    • 图例
      • 紫色(ICBR-EF 4.6):给 LLM 最完整的 feedback
      • 橙色(Zero-shot 4.6):完全不给 LLM feedback
      • 红色(Random FB):给 LLM 随机 feedback(可能正确、可能错误)
    • 可以看到:紫 > 橙 > 红,这说明 feedback 对 LLM 的输出是有影响的。

过度责备 AI Agent 可能有害

很多时候人们使用 LLM 都是多轮对话的,实质上是扮演了上述 workflow 中 evaluator 的角色。

图片 图片
Anthropic 通过 steering vector 技术证明:过度责备 AI Agent 可能是有害的
  • steering vector 技术
    • 例如:给 LLM 输入一个快乐的故事,然后将其中的 representation 拿出来做平均,得到 happy vector
图片 图片
左图:计算句子与不同情绪向量的相似度
右图:让模型去解一个几乎不可能完成的任务,监控模型情绪的变化。

图片 图片
“模型情绪”并非表征性(只是出现这个情绪,不会对后续输出造成影响)的,而是功能性的
图片
LLM 的本质是文字接龙,说到底,辱骂 LLM 会污染上下文

Life-long AI Agent

图片
如何让 AI Agent 成为人类一辈子的伙伴
图片 图片
Claude Code:让 AI Agent 在空闲时间整理自己过去的记忆(就像睡眠做梦一样)

好的 AI Agent 应该能够持续学习

图片
我们只能得到一些容易取得的 feedback 来训练模型
图片 图片
左图:可以通过 SKILL.md 来实现自我进化
右图:能否通过 harness 来更新 LLM 的参数?

如果只更新 SKILL.md 等内容,我们的 AI Agent 的能力上限是被锁死的 —— 能更新 LLM 的参数才可以提高上限

图片
LLM 如何知道哪句话是可以用于学习的 feedback?
图片 图片
论文的方法:事后诸葛亮
  • 如何区分哪些是指令,哪些是 feedback?
    • 例如,“很好,继续”就是指令;而 compiler 的输出就可以作为 feedback
  • 方法:事后诸葛亮
    • 假设
      • 1:输入
      • 2:输出
      • 3:可能是普通指令,也可能是环境的 feedback
    • 我将 prompt 改为 3 + 1(把 3 放到 1 前面输入),LLM 的输出变为 22^\prime
      • 如果 22^\prime22 之间的差距很大,则说明 3 确实起到了 feedback 的效果!
    • 如果 3 经上面步骤确认为 feedback,我们就把 22^\prime 当作 ground truth 微调 LLM
图片
使用上述方法,是可以用 feedback 训练模型的
图片
还有一种最简单的 feedback 是没有 feedback

如果没有环境给予 feedback,LLM 事实上也可以通过自己的思考做对。

测评 AI Agent 的能力

图片 图片
自动化地测评 LLM 的困难

在自动化测评的时候,一般我们会选用 AI 和 AI 对话。但人类的行为往往与 AI 不同:人类说话简短,AI 倾向于把话说详细、全面——因此用 AI 来测评 AI 会高估其分数。

图片 图片
左图:重做 tau-bench 实验,虚线为人类基准
右图:LLM 往往高估了 customer 和 Agent 互动的分数

重做之后发现:如果测评时用聪明的 LLM 会导致分数虚高。

自主更新 harness

图片
能否让 harness 实现自主更新?
图片
让 Opus 来教 Haiku 去刷 PinchBench
图片 图片
实验表明:聪明 AI 确实可以指导笨 AI

AI Agent Lec 04
http://dbqdss.github.io/2026/08/17/个人学习笔记/AI Notes/Agent/AI Agent 入门/AI Agent-Lec04/
作者
失去理想的獾
发布于
2026年8月17日
许可协议