如何构建一个能从每次循环中学习的 Claude 代码 Agent(内含详细配置)

@zodchiii
英语3周前 · 2026年6月24日
128K
196
35
24
460

TL;DR

本文提供了一份关于为 Claude 代码 Agent 创建学习循环的详细技术指南。通过实现持久化日志和长期经验文件,开发者可以防止 Agent 重复失败的尝试,并帮助它们学习代码库特定的模式。

大多数循环 Agent 都有健忘症。每个周期都从零开始,所以它们会重复尝试同一个修复方法三次,因为没有任何东西记得它已经失败过了。

一个有学习能力的 Agent 会保存一本日志:每次尝试后,它都会写下自己试了什么、是否成功,然后在下次尝试前阅读这本日志。

只需设置一次,循环就不会再重复自己。每个周期都从上一个周期学到的东西开始,而不是从零开始。

以下是完整的设置步骤👇

在深入之前,我每天在 Telegram 频道分享关于 AI 和 Vibe Coding 的笔记:https://t.me/zodchixquant🧠

darkzodchi - inline image

为什么循环会重复自己

普通的循环会反复运行同一个 Agent 处理同一个问题,但 Agent 的记忆会在周期之间重置。它不知道周期 2 已经尝试了周期 4 正准备尝试的事情。

于是它原地打转:换同一个库、回退、再换回去,浪费 Token 重新发现死胡同。循环在运行,却没有学习。

解决方案是跨周期持续存在的记忆:一本 Agent 在每个周期都会写入和读取的日志。

darkzodchi - inline image

文件 1:日志

这就是记忆。一个纯文本文件,Agent 只追加内容,从不覆盖。创建 .claude/loop-journal.md

markdown
1# 循环日志
2仅追加。每次尝试:尝试了什么、结果、教训。
3
4## 任务:修复失败的结账测试
5
6### 尝试 1
7尝试了:给 fetchCart 调用添加了 await。
8结果:仍然失败,同样的错误。
9教训:竞态条件不在 fetchCart 中。需要向上游查看购物车状态。
10
11### 尝试 2
12尝试了:对购物车选择器进行了记忆化。
13结果:现在失败的方式不同了,购物车在首次渲染时是 undefined。
14教训:记忆化改变了时机。真正的问题是初始状态。

日志故意设计得非常简单。每个条目有三行:尝试了什么、发生了什么、以及下次的教训。

“教训”行是关键,它能阻止下一个周期重复相同的尝试。


文件 2:学习循环

这是编排器,也是让循环学习的核心规则:先读取日志。

将以下内容放入 .claude/commands/learn-loop.md

yaml
1---
2description: 运行一个任务循环,每个周期从日志中学习
3argument-hint: <task>
4allowed-tools: Read, Write, Edit, Glob, Grep, Bash
5model: sonnet
6---
7
8任务:$ARGUMENTS
9
10每个周期:
111. 完整读取 .claude/loop-journal.md。注意哪些已经尝试过、学到了什么。绝不重复失败的尝试。
122. 形成一个日志未排除的新假设。
133. 进行修改。运行检查。
144. 追加到日志:你尝试了什么、结果、教训。
155. 如果通过:停止,总结有效的方法。如果失败:回到步骤 1。
166. 最多 6 个周期。
17
18规则:每个周期都必须尝试日志中未出现过的方法。
19如果想不到新方法,就说明并停止。这不是失败,
20而是日志告诉你该找人类介入了。

步骤 1 是整个文章的核心。通过强制 Agent 在行动前先读取自己的历史,每个周期都建立在上一周期的基础上,而不是重新开始。循环积累知识,而不是空转。

文件 3:强制写入

Agent 会在日志记录非强制时跳过它,所以让它自动化。这个钩子提醒 Agent 在每次编辑后记录。添加到 .claude/settings.json

json
1{
2 "hooks": {
3 "PostToolUse": [
4 {
5 "matcher": "Edit|Write",
6 "hooks": [
7 { "type": "command", "command": "test -f .claude/loop-journal.md && echo '提醒:在下一个周期前,请将此尝试及其结果记录到 loop-journal.md 中。'" }
8 ]
9 }
10 ]
11 }
12}

这只是一个提示,不是强制,但很有效。每次修改后,Agent 都会收到提醒,记录它刚刚做了什么,这样日志就能保持最新。边做边写的日志才是准确的。

靠记忆写出来的日志是虚构的。

你实际会看到的

你只需输入一行:

text
1/learn-loop 应用优惠券后结账总金额错误

然后每个周期都基于上一个周期:

text
1周期 1
2 日志:空
3 尝试了:在应用优惠券后重新计算总金额。失败,少了税费。
4 记录了:优惠券在税费之前应用,应该之后应用。
5
6周期 2
7 日志:周期 1 说优惠券应在税费之后
8 尝试了:将优惠券移到税费之后。失败,大额优惠券导致负数。
9 记录了:折扣没有下限。需要限制为商品总金额。
10
11周期 3
12 日志:2 条教训,均已应用
13 尝试了:将折扣上限设为商品总金额。通过。
14
153 个周期完成,0 次重复。日志保存以备下次使用。

注意周期 2 没有重复周期 1 的错误,日志排除了它。而且日志会持续存在,所以下次出现优惠券相关的错误时,Agent 会从已经学到的所有知识开始。

升级:跨所有任务的记忆

到目前为止,日志只在一个任务内学习。更大的收益是让记忆跨越所有任务,这样 Agent 就不会在每个新功能上犯同一类错误。

再添加一个永久文件 .claude/lessons.md,用来保存值得永远保留的模式:

markdown
1# 教训(永久)
2Agent 通过艰难方式学到的模式。在任何任务之前阅读。
3
4## 本代码库
5- 数据库中日期始终使用 UTC,仅在 UI 层使用本地时间。
6- 测试中认证中间件运行两次,每个文件只模拟一次。
7- 永远不要信任缓存后的用户对象,它会滞后一个请求。
8
9## 通用反应
10- 单独测试通过但组合测试失败 = 共享状态。
11- 重构后出现 "undefined is not a function" = 导出的对象被移动了。
12- 金钱计算:使用整数分,永远不要使用浮点数。每次都是。

然后在循环命令的顶部附近添加一行:

text
10. 在做任何事情之前先读取 .claude/lessons.md。这些是
2 从以往任务中学到的永久规则。预先应用它们。

现在,当循环发现某条教训不是一次性问题时,Agent 会将其从任务日志提升到 lessons.md。

下一个任务,即使几周后,也会直接利用这些内置知识。

日志是短期记忆,lessons.md 是长期记忆:这就是“学习一个任务”的 Agent 与“学习整个代码库”的 Agent 之间的区别。

如何写出真正有用的教训

模糊的教训比没有更糟,因为它只会增加噪音,而不会阻止重复。格式决定了日志是让下一个循环更智能,还是只是更长。

糟糕的教训:

text
1日期有点问题。

好的教训:

text
1尝试了:直接比较时间戳。失败,时区导致偏差。
2教训:数据库存储 UTC,输入是本地时间。在比较前先转换。
3症状:在日期测试中发现相差几小时。

好的教训包含三样东西:尝试了什么、真正的原因、以及下次能识别出这个问题的症状。

第三部分让它变得可复用。当三周后 Agent 看到“日期测试中相差几小时”,它会直接跳到时区修复。

只有未来某个周期能通过模式匹配利用的教训,才值得写下来。

常见错误

覆盖日志。 如果每个周期都替换文件而不是追加,就会丢失历史记录,循环再次遗忘。始终只追加。全部价值就在于积累。

记录了尝试,但没有记录教训。 “尝试了 X,失败了”告诉下一个周期发生了什么,但没有告诉它应该做什么不同。“教训”行才是防止重复的关键。没有它,日志只是日记,不是指南。

让日志无限制增长。 30 次尝试后,日志本身会膨胀上下文。一旦任务解决,将其条目归档到单独的文件中,并清空活跃日志重新开始。

在最后而不是开始读取日志。 有些 Agent 勤于记录,但只在卡住时才检查日志。每个周期都必须先读取,否则记忆毫无作用。

从不将教训提升到永久。 如果所有内容都留在任务日志中,Agent 在每个新功能上都会重新学习代码库的特性。将重复出现的模式提升到 lessons.md,否则你就在为学习同一件事两次而付费。

12 分钟设置

2 分钟:创建 .claude/loop-journal.md,使用三行条目格式。

2 分钟:创建 .claude/lessons.md,用于永久性的跨任务模式。

3 分钟:在 .claude/commands/learn-loop.md 中创建学习循环,包含“先读取教训”步骤。

2 分钟:在 settings.json 中添加日志记录提醒钩子。

3 分钟:对一个真正的错误运行 /learn-loop,观察每个周期如何跳过上一个周期已排除的方法。

Agent 并没有变得更聪明。它只是不再遗忘。一个会记忆的循环,胜过每个周期都在重复的循环。

感谢阅读!

我每天在 Telegram 频道分享关于 AI、金融和 Vibe Coding 的笔记:https://t.me/zodchixquant

darkzodchi - inline image
一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章