【开源项目】Learn Claude Code

项目地址Learn Claude Code

Learn Claude Code的作者认为,现在很多的Agent都是伪Agent,都是使用代码编排好了流程。

真的Agent应该将决策权交给大模型,而不是在代码中写死。模型就是Agent,代码只是起到Harness的作用。

Learn Claude Code就是教你怎么搭建Harness代码,由s01-s12来演示。

Learn Claude Code给出Agent就是一个Loop。用户发来请求,由大模型判断是否要调用外部工具,如果需要则调用工具,然后返回结果给大模型,最后由大模型判断下一步要做什么。

所有复杂的机制都叠加在这个永远不变的Loop上,代码作为Harness只做三件事:跑循环,执行工具,像大模型返回结果。

Loop痛点

这个Loop也不是没有问题的,主要有下面四个痛点

1.Context Fade 失忆

大模型在执行多步任务的时候,很可能会丢失进度,造成重复执行已经执行过的任务,跳步,跑偏等等。这个时候上下文会越来越长,系统提示的能力被稀释。(s03、s07)

解决方式:TodoWrite约束

强迫大模型写下计划,同时也要设定约束规则:最多20项,仅1个in_process,连续3轮未更新系统自动提醒。

大模型生成的任务列表要有结构,包括当前任务的状态,依赖哪些前置文件。要想执行一个任务,这个任务必须是pending状态,并且blockedBy为空。

python 复制代码
class TaskManager:
    def __init__(self, tasks_dir: Path):
        self.dir = tasks_dir
        self.dir.mkdir(exist_ok=True)
        self._next_id = self._max_id() + 1

    def create(self, subject, description=""):
        task = {"id": self._next_id, "subject": subject,
                "status": "pending", "blockedBy": [],
                "owner": ""}
        self._save(task)
        self._next_id += 1
        return json.dumps(task, indent=2)

2.Context Pollution 探索垃圾

比如一个用户问了一个问题:这个项目的架构是什么。此时父agent上下文已经有一部分了,如果此时再去分析这个问题,可能会导致上下文不纯净,上下文过长。(s04)

解决方式:Subagent隔离

主进程写代码,子进程读文件探索。完全隔离,保护主进程认知清晰度。

关于这个子task,其实也是一个工具,大模型判断是否需要调用这个工具。

3.知识瓶颈

比如我们想要大模型按照某个特定的工作流来执行某个任务,但是其本身其实不知道怎么执行,因此我们就会给他一个提示,这个提示其实就是skill。(s05)

但是如果我们的skill比较多怎么办,比如有100个,难道要全部加载进去吗?其实不用。

解决方式:Skills渐进式加载

100个预置Skill,按需加载。我们可以写一个总的skill预览表,像目录一样,需要哪个再按需加载即可。

4.上下文爆表

上下文窗口是有限的,因为我们的上下文是不能无限增长的,需要进行压缩提炼。(s06)

解决方式:三层压缩防御

Micro(旧工具结果变占位符)-> Auto(超50K自动摘要)->Manual(主动调用 compact)。

完整的历史上下文保存至硬盘中,信息没有消失,只是移出了活跃上下文。

第一层:Micro(旧工具结果变占位符)

每次调用大模型前默认执行,只保留近三条工具结果,将更早的工具结果替换成工具的名称。

第二层:Auto(超50K自动摘要)

到达条件自动触发摘要,先将所有信息以JSON的格式写入硬盘中。再使用大模型进行摘要,要包括:已完成的工作、当前状态、关键决策。最后用一条message替代messages列表。

第三层:Manual(主动调用 compact)

由模型自行判断是否需要主动调用compact工具,之后执行的过程与第二层一样。

团队协作

真正的团队协作需要三样东西: (1) 能跨多轮对话存活的持久 Agent, (2) 身份和生命周期管理, (3) Agent 之间的通信通道。

Agent之间通过JSONL 收件箱来通信,每个agent都有一个自己的邮箱(一个json文件),每次调用大模型前都要去邮箱中查看是否邮件,如果有就加入上下文中。

只有收发功能是不行的,必须要有双方怎么响应,怎么协调。因此引入了通信协议。

此时的子Agent,你不给他分配工作他不干,属于是踢一脚走一步。因此我们要让子Agent自己扫描任务面板,没人干的活自己领一个。

但是这个也有一个问题,如果两个agent同时改同一个文件,未提交的改动相互污染,根本就回滚不了了。

因此我们使用git worktree创建不同的目录,每个agent都在自己的目录下执行,互不影响。

流程展示

1.用户与Agent对话执行过程

2.Agent_Loop的具体过程

相关推荐
神奇霸王龙3 分钟前
Claude Code 三层架构Subagent并发优化实战
人工智能·ai·架构·agent·ai编程·并发·claude
phltxy9 分钟前
LangGraph智能租房助手实践
大数据·人工智能·python·深度学习·语言模型·langchain
码银24 分钟前
放弃了豆包,我使用Python做了一个桌面宠物
python·microsoft·宠物
测功机之家34 分钟前
国内口碑好的测功机公司找哪家
python·物联网
安逸sgr41 分钟前
Agent经典面试题:Agent 安全问题有哪些?如何防止工具误调用和 Prompt Injection?
人工智能·ai·agent·智能体
xlrqx1 小时前
2026年平顶山家电清洗培训设备是否齐全依据多因素来判断
大数据·python
lkforce1 小时前
Transformer架构下的详细计算流程模拟,精确到数字(单层单头)
人工智能·深度学习·ai·transformer
summer_du1 小时前
Qdrant
人工智能·python
logomister设计公司阿燕1 小时前
华为商标“减法哲学”:极简主义如何成就全球品牌?
python·华为
萧青山1 小时前
2026国标合规:Agent Loop合规设计模式的6种循环架构(GB/Z 185.6+Python)
python·设计模式·agent loop·gb/z 185·国标合规