AI Agent的持续学习
AI Agent的持续学习
AI Agent的持续学习 AI Agent的持续学习 Modified April 8 原文链接:https://x.com/hwchase17/status/2040467997022884194 关于 AI 中持续学习的大多数讨论都聚焦于一件事:更新模型权重。但对于 AI 智能体来说,学习可以发生在三个不同层次上:模型、harness 和上下文。理解这三者的区别,会改变你构建可随时间持续改进系统的思路。 智能体系统的三大主要层次是: • Model:模型权重本身。 • Harness:包裹在模型外层、为该智能体所有实例提供能力的 harness。这指的是驱动智能体的代码,以及始终属于 harness 一部分的任何指令或工具。 • Context:位于 harness 之外、可用于配置 harness 的额外上下文(指令、技能)。 示例 1: 把它映射到像 Claude Code 这样的编码智能体: • Model:claude sonnet 等 • Harness:Claude Code • User context:CLAUDE.md、/skills、mcp.json 示例 2: 把它映射到 OpenClaw: • Model:many • Harness:Pi + 其他一些脚手架 • Agent context:SOUL.md、来自 clawhub 的 skills 当我们谈论持续学习时,大多数人会立刻跳到模型层。但实际上,一个 AI 系统可以在这三个层次上都发生学习。 模型层的持续学习 当大多数人谈论持续学习时,他们最常指的就是这一层:更新模型权重。 更新这一层的技术包括 SFT、RL(例如 GRPO)等。 这里的一个核心挑战是灾难性遗忘:当模型在新数据或新任务上被更新后,它往往会在先前掌握的内容上出现退化。这仍然是一个开放的研究问题。 当人们确实为某个特定的智能体系统训练模型时(例如,你可以把 OpenAI 的 codex 模型看作是为他们的 Codex 智能体训练的),他们基本上都是针对整个智能体系统来做这件事。理论上,你可以做得更细粒度一些(例如,你可以为每个用户都准备一个 LoRA),但在实践里,这大多仍然是在智能体层面完成的。 Harness 层的持续学习 如前所述,harness 指的是驱动智能体的代码,以及始终属于 harness 一部分的任何指令或工具。 随着 harness 变得越来越流行,已经出现了几篇讨论如何优化 harness 的论文。 最近的一篇是 Meta Harness: End to End Optimization of Model Harnesses。 其核心思想是:智能体运行在一个循环之中。你先让它跑一批任务,然后对这些任务进行评估。接着把所有这些日志存进文件系统。然后再运行一个 coding agent,让它查看这些 traces,并提出对 harness 代码的修改建议。 与模型的持续学习类似,这通常也是在智能体层面完成的。理论上,你也可以把它做得更细粒度一些(例如,为每个用户学习一套不同的代码 harness)。 Context 层的持续学习 “Context” 位于 harness 之外,可以用来配置 harness。Context 包括指令、技能,甚至工具。这也常常被称作 memory。 harness 内部其实也存在同类型的上下文(例如,harness 可能有基础 system prompt、skills)。二者的区别在于,它究竟是 harness 的组成部分,还是配置的一部分。 对 context 的学习可以发生在若干不同层次上。 在智能体层面,也可以学习 context:智能体拥有持久化的 “memory”,并会随着时间推移更新自己的配置。一个很好的例子是 OpenClaw,它有自己的 SOUL.md,并且会随着时间推移不断更新。 更常见的是在租户层面进行 context 学习(用户、组织、团队等)。在这种情况下,每个租户都会拥有自己的一份 context,并且这份 context 会随着时间推移不断更新。例子包括 Hex 的 Context Studio、Decagon 的 Duet、Sierra 的 Explorer。 你也可以把这些方式混合起来使用。所以,你完全可以拥有一个智能体,同时具备智能体级 context 更新、用户级 context 更新,以及组织级 context 更新。 这些更新可以通过两种方式完成: • 事后通过离线任务完成。与 harness 更新类似,对最近的一批 traces 运行分析,提取洞察并更新 context。这就是 OpenClaw 所说的 dreaming。 • 在智能体执行主任务的热路径中完成。智能体可以自行决定(或者用户可以提示它)在处理核心任务的同时更新它的 memory。 这里还需要考虑另一个维度:memory 更新究竟有多显式。是用户在提示智能体去记住某件事,还是智能体基于 harness 自身的核心指令来进行记忆? 对比 Traces 是核心 所有这些流程都由 traces 驱动,也就是智能体执行过什么的完整执行路径。LangSmith 是我们的平台,它的功能之一就是帮助收集 traces。 然后,你可以用这些 traces 做很多不同的事情。 如果你想更新模型,你可以收集 traces,然后与像 Prime Intellect 这样的团队合作,训练你自己的模型。 如果你想改进 harness,你可以使用 LangSmith CLI 和 LangSmith Skills,让 coding agent 能访问这些 traces。这种模式正是我们在终端基准测试中优化Deep Agents(我们开源的、与模型无关的通用基础框架)的方式。 如果你想让 context 随时间推移而学习(无论是在智能体、用户还是组织层面),那么你的 agent harness 就需要支持这一点。Deep Agents 作为我们首选的 harness,已经以可用于生产的方式支持了这件事。可以查看那里的文档,里面有如何实现用户级 memory、后台学习等示例。 原文链接:https://x.com/hwchase17/status/2040467997022884194 原文链接:https://x.com/hwchase17/status/2040467997022884194 关于 AI 中持续学习的大多数讨论都聚焦于一件事:更新模型权重。但对于 AI 智能体来说,学习可以发生在三个不同层次上:模型、harness 和上下文。理解这三者的区别,会改变你构建可随时间持续改进系统的思路。 智能体系统的三大主要层次是: • Model:模型权重本身。 • Harness:包裹在模型外层、为该智能体所有实例提供能力的 harness。这指的是驱动智能体的代码,以及始终属于 harness 一部分的任何指令或工具。 • Context:位于 harness 之外、可用于配置 harness 的额外上下文(指令、技能)。 示例 1: 把它映射到像 Claude Code 这样的编码智能体: • Model:claude sonnet 等 • Harness:Claude Code • User context:CLAUDE.md、/skills、mcp.json 示例 2: 把它映射到 OpenClaw: • Model:many • Harness:Pi + 其他一些脚手架 • Agent context:SOUL.md、来自 clawhub 的 skills 当我们谈论持续学习时,大多数人会立刻跳到模型层。但实际上,一个 AI 系统可以在这三个层次上都发生学习。 模型层的持续学习 当大多数人谈论持续学习时,他们最常指的就是这一层:更新模型权重。 更新这一层的技术包括 SFT、RL(例如 GRPO)等。 这里的一个核心挑战是灾难性遗忘:当模型在新数据或新任务上被更新后,它往往会在先前掌握的内容上出现退化。这仍然是一个开放的研究问题。 当人们确实为某个特定的智能体系统训练模型时(例如,你可以把 OpenAI 的 codex 模型看作是为他们的 Codex 智能体训练的),他们基本上都是针对整个智能体系统来做这件事。理论上,你可以做得更细粒度一些(例如,你可以为每个用户都准备一个 LoRA),但在实践里,这大多仍然是在智能体层面完成的。 Harness 层的持续学习 如前所述,harness 指的是驱动智能体的代码,以及始终属于 harness 一部分的任何指令或工具。 随着 harness 变得越来越流行,已经出现了几篇讨论如何优化 harness 的论文。 最近的一篇是 Meta Harness: End to End Optimization of Model Harnesses。 其核心思想是:智能体运行在一个循环之中。你先让它跑一批任务,然后对这些任务进行评估。接着把所有这些日志存进文件系统。然后再运行一个 coding agent,让它查看这些 traces,并提出对 harness 代码的修改建议。 与模型的持续学习类似,这通常也是在智能体层面完成的。理论上,你也可以把它做得更细粒度一些(例如,为每个用户学习一套不同的代码 harness)。 Context 层的持续学习 “Context” 位于 harness 之外,可以用来配置 harness。Context 包括指令、技能,甚至工具。这也常常被称作 memory。 harness 内部其实也存在同类型的上下文(例如,harness 可能有基础 system prompt、skills)。二者的区别在于,它究竟是 harness 的组成部分,还是配置的一部分。 对 context 的学习可以发生在若干不同层次上。 在智能体层面,也可以学习 context:智能体拥有持久化的 “memory”,并会随着时间推移更新自己的配置。一个很好的例子是 OpenClaw,它有自己的 SOUL.md,并且会随着时间推移不断更新。 更常见的是在租户层面进行 context 学习(用户、组织、团队等)。在这种情况下,每个租户都会拥有自己的一份 context,并且这份 context 会随着时间推移不断更新。例子包括 Hex 的 Context Studio、Decagon 的 Duet、Sierra 的 Explorer。 你也可以把这些方式混合起来使用。所以,你完全可以拥有一个智能体,同时具备智能体级 context 更新、用户级 context 更新,以及组织级 context 更新。 这些更新可以通过两种方式完成: • 事后通过离线任务完成。与 harness 更新类似,对最近的一批 traces 运行分析,提取洞察并更新 context。这就是 OpenClaw 所说的 dreaming。 • 在智能体执行主任务的热路径中完成。智能体可以自行决定(或者用户可以提示它)在处理核心任务的同时更新它的 memory。 这里还需要考虑另一个维度:memory 更新究竟有多显式。是用户在提示智能体去记住某件事,还是智能体基于 harness 自身的核心指令来进行记忆? 对比 Traces 是核心 所有这些流程都由 traces 驱动,也就是智能体执行过什么的完整执行路径。LangSmith 是我们的平台,它的功能之一就是帮助收集 traces。 然后,你可以用这些 traces 做很多不同的事情。 如果你想更新模型,你可以收集 traces,然后与像 Prime Intellect 这样的团队合作,训练你自己的模型。 如果你想改进 harness,你可以使用 LangSmith CLI 和 LangSmith Skills,让 coding agent 能访问这些 traces。这种模式正是我们在终端基准测试中优化Deep Agents(我们开源的、与模型无关的通用基础框架)的方式。 如果你想让 context 随时间推移而学习(无论是在智能体、用户还是组织层面),那么你的 agent harness 就需要支持这一点。Deep Agents 作为我们首选的 harness,已经以可用于生产的方式支持了这件事。可以查看那里的文档,里面有如何实现用户级 memory、后台学习等示例。