news 2026/6/15 20:31:51

【开源项目】Learn Claude Code

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【开源项目】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为空。

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的具体过程

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 20:28:55

2025_NIPS_Pgx: Hardware-Accelerated Parallel Game Simulators for Reinforcement Learning

文章主要内容和创新点总结 一、主要内容 本文提出了Pgx,一套基于JAX编写、针对GPU/TPU加速器优化的棋盘游戏强化学习(RL)环境套件。该套件旨在解决现有Python RL环境库在复杂离散状态游戏模拟中存在的并行化不足、CPU与加速器间数据传输成本高、速度慢等问题。 Pgx包含20…

作者头像 李华
网站建设 2026/6/15 20:27:51

保姆级教程:用Python+OpenCV录制摄像头视频到MP4文件(附完整代码与编码器避坑指南)

PythonOpenCV摄像头录制实战:从采集到MP4编码的完整指南在计算机视觉项目中,视频采集与保存是最基础却最容易踩坑的环节之一。很多开发者第一次尝试用OpenCV录制摄像头视频时,往往会被各种编码器参数、文件格式兼容性问题困扰。本文将带你从零…

作者头像 李华
网站建设 2026/6/15 20:25:27

深入解析PXD10 Flash保护机制:锁存、选择与用户测试寄存器实战

1. 项目概述与核心价值在嵌入式开发,尤其是汽车电子和工业控制这类对可靠性要求极高的领域,微控制器(MCU)的Flash存储器远不止是一个简单的代码和数据仓库。它更像是一个需要严密守护的“保险库”,既要保证固件在复杂电…

作者头像 李华
网站建设 2026/6/15 20:25:25

DLSS Swapper终极指南:免费智能工具快速提升NVIDIA显卡游戏性能

DLSS Swapper终极指南:免费智能工具快速提升NVIDIA显卡游戏性能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为NVIDIA显卡用户打造的免费开源工具,能够智能管理游戏中的…

作者头像 李华
网站建设 2026/6/15 20:15:52

Linux 达梦数据库(DM8)超详细全流程手册(生产级 / 嵌入式 / GIS 开发专属)

Linux 达梦数据库(DM8)超详细全流程手册(生产级 / 嵌入式 / GIS 开发专属) 本文基于达梦数据库 DM8 最新稳定版,针对你的 Linux 嵌入式、Qt/GIS 开发、政企国产替代、生产环境部署 场景做全维度深度细化,覆盖「版本选型→内核级环境准备→全模式安装→数据库初始化→核心…

作者头像 李华