Github 原文:shareAI-lab/learn-claude-code
Harness 层: 循环 — 模型与真实世界的第一道连接。
问题
你提出了一个问题给大模型:“帮我读取下我的目录下有哪些文件,并且执行XXX.py”。OK,模型能输出一条 bash 命令,但输出完了就停了,它不会自己跑,也不会看到结果后继续推理。
当然,你可以手动跑一遍,把输出粘贴回对话框,让它接着干。下一个命令出来,你再跑一遍、再贴回去,就像在 2023 年我们是用 chat gpt 写代码一样。
每一个来回,你都在做中间层,而把它自动化,就是这一章要做的事。
解决方案
图片中的工具也只有一个 Bash 工具作为示例。
本质上也就是一个 while True 循环,模型调用工具就继续,不调用就停。整个过程只有两个信号:
| 信号 | 含义 | 循环动作 |
|---|---|---|
stop_reason == "tool_use" | 模型举手说”我要用工具” | 执行 → 结果喂回去 → 继续 |
stop_reason != "tool_use" | 模型说”我做完了” | 退出循环 |
工作原理
📍 原文在这里开始利用 Python 代码来讲解原理,我这里为方便,不会使用代码,只介绍思路和逻辑,不说技术,如果你对技术感兴趣,可以查看:https://github.com/shareAI-lab/learn-claude-code/blob/main/s01_agent_loop/README.md#%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86
其实这部分并不复杂,简单来说就是有一个循环,如果你稍微懂一点代码就知道就是个最基础的 if 循环。
条件判断的基准就是模型是否要求调用工具,如果要调用,那么就让模型去调用对应的工具,然后把调用工具后的结果输出后追加到用户的提问后,也就是回到最开始用户提问后交给 AI 的时候,但是这一次除了用户的问题,还多了上一次调用后 AI 调用工具后的结果,这时候再次执行之前的条件判断,如果模型认为不需要调用工具了,OK,循环结束,进入下一步骤或是直接输出。
如果文字还是不好理解,我这里用 AI 出了一个小漫画,你可以通过这种方式理解到底是怎么回事。
