‹ Back to list

开始使用循环

2114 words· Original link ↗

摘要:文章介绍了Claude代码团队对“循环”的定义和分类,包括基于回合、目标、时间和主动循环,说明了每种循环的触发方式、停止条件和适用场景。同时强调了如何通过技能文件、验证机制和令牌管理优化循环效率与代码质量。 主推文 开始使用循环 https://t.co/v694m8Eaj6 现在有很多关于"设计循环"的讨论,而不是直接向你的编程代理发出指令。如果你在X平台上花点时间试图弄清楚循环到底是什么,你会看到多种不同的解释。 在Claude代码团队中,我们将循环定义为代理重复执行工作周期,直到满足停止条件。我们根据以下方面对几种不同类型的循环进行分类: • 触发方式 • 停止方式 • 使用的Claude代码基础组件 • 每种类型最适合处理的任务类型 我们将介绍主要的循环类型,说明何时使用每种类型,以及如何在管理令牌使用的同时保持代码质量。并非所有任务都需要复杂的循环;从最简单的解决方案开始,并有选择性地使用这些模式。 基于回合的循环 • 触发方式:用户指令 • 停止条件:Claude判断任务已完成或需要更多上下文 • 最适合:不需要定期执行的短任务 • 管理方式:编写具体指令并利用技能提升验证效果,减少交互次数 每次你发送的指令都会启动一个手动循环,由你指导每个回合。Claude收集上下文,执行操作,检查工作成果,必要时重复操作并给出回应。我们称之为代理循环。 例如,让你的Claude创建一个点赞按钮。它会读取你的代码,进行修改,运行测试,然后返回它认为可行的结果。接着你手动检查工作成果,并编写下一个指令。 你可以通过将手动步骤编码为SKILL.md文件来改进验证步骤,这样Claude可以自行验证更多工作内容,实现端到端验证。这应该包含工具或连接器,让Claude能够查看、测量或与结果进行交互。验证步骤越量化,Claude自行验证就越容易。 例如,在你的SKILL.md文件中可以指定: 基于目标的循环(/goal) • 触发方式:实时手动指令 • 停止条件:目标达成或达到最大回合数 • 最适合:具有可验证退出条件的任务 • 管理方式:设置具体完成条件和明确的回合限制,"尝试5次后停止" 有时单个回合不够,尤其是对于更复杂任务。代理在可以迭代时表现更好。你可以通过用/goal定义"完成"的形态来延长Claude的迭代时间。 当你定义成功标准时,Claude不需要判断什么"足够好"就结束循环。每次Claude尝试停止时,评估模型会检查你的条件,并将其送回继续工作,直到达成目标或达到你定义的回合数。 这就是为什么确定性标准(如通过的测试数量或达到特定分数阈值)如此有效的原因。 例如: 基于时间的循环(/loop和/schedule) • 触发方式:指定的时间间隔 • 停止条件:你可以取消,或者工作完成(拉取请求合并,队列为空)。 • 最佳使用场景:适用于重复性工作,或与外部环境/系统进行交互。 • 管理使用方式:设置更长的间隔时间或根据事件而非时间进行响应。 一些代理工作是重复性的:任务保持不变,只有输入会变化。例如,每天早上总结Slack消息。其他工作依赖于外部系统,一种简单的方法是定期检查系统并根据变化做出反应。例如,一个可能接收代码审查或持续集成失败的拉取请求。 对于这些情况,你可以通过 Claude 运行 /loop 命令来触发,该命令会按间隔重复运行一个提示。例如: /loop 在你的电脑上运行,如果你关闭它,就会停止。你可以通过创建 /schedule 命令的例行程序将循环移到云端。 主动循环 • 触发方式:由事件或计划触发,无需实时人工干预。 • 停止条件:每个任务在其目标达成后结束。该例行程序会一直运行直到你手动关闭。 • 最佳使用场景:适用于重复的、定义明确的工作流:错误报告、问题分类、迁移、依赖升级等。 • 管理使用方式:将例行程序路由到更小、更快的模型,并使用最强大的模型进行判断性操作。 上述基本功能,以及 Claude Code 的其他功能如自动模式和动态工作流(研究预览版)可以组合成一个循环用于长期运行的工作。 例如,处理 incoming feedback 时可以使用: 1. /schedule(研究预览版)来运行检查新报告的例行程序 1. /goal 来定义完成状态和记录验证方法 1. 动态工作流来协调分类每个报告、修复问题并审查修复的代理 1. 自动模式让例行程序无需停止请求权限即可运行 综合起来,一个提示可能如下所示: 维护代码质量 循环输出的质量取决于其周围的系统。在设计系统时: • 保持代码库本身整洁:Claude 会遵循你的代码库中已有的模式和规范。 • 让 Claude 有验证自身工作的途径:用技能来定义对你和你的团队来说什么是好的。 • 让文档易于获取:框架和库的文档包含最新的最佳实践。 • 使用第二个代理进行代码审查:具有新鲜上下文的审查者更少偏见,也不会受到主代理推理的影响。你可以使用内置的 /code-review 技能或 GitHub 的代码审查功能。 当单个结果未达到标准时,不要仅仅停留在修复单个问题上,尝试将其编码以提升所有未来迭代的系统。 管理令牌使用 为了管理令牌使用,循环应具有明确的边界: • 为任务选择合适的原始功能和模型:较小的任务不需要多个代理或循环。某些任务可以使用更便宜、更快的模型。 • 明确成功与终止标准:具体说明完成的标准,这样Claude可以更快找到解决方案(但不要过快)。 • 先试点再大规模运行:动态工作流可能会生成数百个代理。先在较小的工作范围内评估使用情况。 • 用脚本处理确定性任务:运行脚本比逐步推理更经济。例如,PDF技能可以附带一个表单填写脚本,Claude每次运行即可,而无需重新推导代码。 • 不要比实际需要更频繁地运行常规任务:将运行间隔与你所监控内容的变化频率相匹配。 • 审查使用情况:/usage命令按技能、子代理和MCPs分解最近的使用情况,/goal不带参数可显示至今的回合数和令牌使用量,/workflows显示每个代理的令牌使用情况,你随时可以停止代理。 开始使用 总结来说: 要开始使用循环,先看看你已有的工作。挑选一个你作为瓶颈的任务,问自己哪一部分可以交出去:你能编写验证检查吗?目标是否足够明确?工作是否按计划进行? 一旦有了想法,就运行循环,观察结果,比如它在哪里停滞或过度扩展,不要害怕对其进行迭代。 关于更多信息,请阅读Claude Code文档中关于并行运行代理的内容,以及循环、计划、目标和动态工作流页面。 本文由@delba_oliveira撰写